!function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=211)}([function(module,exports,__webpack_require__){var factory;window,factory=function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var a=t[r]={i:r,l:!1,exports:{}};return e[r].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(r,a,function(t){return e[t]}.bind(null,a));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s="./lib/index.ts")}({"./lib/application.ts": /*!****************************!*\ !*** ./lib/application.ts ***! \****************************/ /*! exports provided: SNApplication */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNApplication", function() { return SNApplication; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _challenges__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./challenges */ "./lib/challenges.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _services__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./services */ "./lib/services/index.ts");\n/* harmony import */ var _services_api_messages__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./services/api/messages */ "./lib/services/api/messages.ts");\n/* harmony import */ var _services_api_session_manager__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./services/api/session_manager */ "./lib/services/api/session_manager.ts");\n\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** How often to automatically sync, in milliseconds */\n\nvar DEFAULT_AUTO_SYNC_INTERVAL = 30000;\n/** The main entrypoint of an application. */\n\nvar SNApplication = /*#__PURE__*/function () {\n /**\n * @param environment The Environment that identifies your application.\n * @param platform The Platform that identifies your application.\n * @param namespace A unique identifier to namespace storage and\n * other persistent properties. Defaults to empty string.\n * @param crypto The platform-dependent implementation of SNPureCrypto to use.\n * Web uses SNWebCrypto, mobile uses SNReactNativeCrypto.\n * @param swapClasses Gives consumers the ability to provide their own custom\n * subclass for a service. swapClasses should be an array of key/value pairs\n * consisting of keys \'swap\' and \'with\'. \'swap\' is the base class you wish to replace,\n * and \'with\' is the custom subclass to use.\n * @param skipClasses An array of classes to skip making services for.\n */\n function SNApplication(environment, platform, deviceInterface, crypto, namespace, swapClasses, skipClasses) {\n _classCallCheck(this, SNApplication);\n\n this.eventHandlers = [];\n this.services = [];\n this.streamRemovers = [];\n this.serviceObservers = [];\n this.managedSubscribers = [];\n /** True if the result of deviceInterface.openDatabase yields a new database being created */\n\n this.createdNewDatabase = false;\n /** True if the application has started (but not necessarily launched) */\n\n this.started = false;\n /** True if the application has launched */\n\n this.launched = false;\n /** Whether the application has been destroyed via .deinit() */\n\n this.dealloced = false;\n\n if (!deviceInterface) {\n throw \'Device Interface must be supplied.\';\n }\n\n if (!environment) {\n throw \'Environment must be supplied when creating an application.\';\n }\n\n if (!platform) {\n throw \'Platform must be supplied when creating an application.\';\n }\n\n if (!crypto) {\n throw \'Crypto has to be supplied when creating an application.\';\n }\n\n this.environment = environment;\n this.platform = platform;\n this.namespace = namespace || \'\';\n this.deviceInterface = deviceInterface;\n this.crypto = crypto;\n this.swapClasses = swapClasses;\n this.skipClasses = skipClasses;\n this.constructServices();\n }\n /**\n * The first thing consumers should call when starting their app.\n * This function will load all services in their correct order.\n */\n\n\n _createClass(SNApplication, [{\n key: "prepareForLaunch",\n value: function () {\n var _prepareForLaunch = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(callback) {\n var _this = this;\n\n var databaseResult;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setLaunchCallback(callback);\n _context.next = 3;\n return this.deviceInterface.openDatabase().catch(function (error) {\n _this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].LocalDatabaseReadError, error);\n\n return undefined;\n });\n\n case 3:\n databaseResult = _context.sent;\n this.createdNewDatabase = (databaseResult === null || databaseResult === void 0 ? void 0 : databaseResult.isNewDatabase) || false;\n _context.next = 7;\n return this.migrationService.initialize();\n\n case 7:\n _context.next = 9;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].PreparingForLaunch_0);\n\n case 9:\n _context.next = 11;\n return this.storageService.initializeFromDisk();\n\n case 11:\n _context.next = 13;\n return this.protocolService.initialize();\n\n case 13:\n _context.next = 15;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].ReadyForLaunch_05);\n\n case 15:\n this.started = true;\n _context.next = 18;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].Started);\n\n case 18:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function prepareForLaunch(_x) {\n return _prepareForLaunch.apply(this, arguments);\n }\n\n return prepareForLaunch;\n }()\n }, {\n key: "setLaunchCallback",\n value: function setLaunchCallback(callback) {\n this.challengeService.sendChallenge = callback.receiveChallenge;\n }\n /**\n * Runs migrations, handles device authentication, unlocks application, and\n * issues a callback if a device activation requires user input\n * (i.e local passcode or fingerprint).\n * @param awaitDatabaseLoad\n * Option to await database load before marking the app as ready.\n */\n\n }, {\n key: "launch",\n value: function () {\n var _launch = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var _this2 = this;\n\n var awaitDatabaseLoad,\n launchChallenge,\n response,\n databasePayloads,\n loadPromise,\n _args3 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n awaitDatabaseLoad = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;\n this.launched = false;\n _context3.next = 4;\n return this.challengeService.getLaunchChallenge();\n\n case 4:\n launchChallenge = _context3.sent;\n\n if (!launchChallenge) {\n _context3.next = 13;\n break;\n }\n\n _context3.next = 8;\n return this.challengeService.promptForChallengeResponse(launchChallenge);\n\n case 8:\n response = _context3.sent;\n\n if (response) {\n _context3.next = 11;\n break;\n }\n\n throw Error(\'Launch challenge was cancelled.\');\n\n case 11:\n _context3.next = 13;\n return this.handleLaunchChallengeResponse(response);\n\n case 13:\n if (!this.storageService.isStorageWrapped()) {\n _context3.next = 16;\n break;\n }\n\n _context3.next = 16;\n return this.storageService.decryptStorage();\n\n case 16:\n _context3.next = 18;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].StorageDecrypted_09);\n\n case 18:\n _context3.next = 20;\n return this.apiService.loadHost();\n\n case 20:\n _context3.next = 22;\n return this.sessionManager.initializeFromDisk();\n\n case 22:\n this.historyManager.initializeFromDisk();\n this.launched = true;\n _context3.next = 26;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].Launched);\n\n case 26:\n _context3.next = 28;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].Launched_10);\n\n case 28:\n _context3.next = 30;\n return this.syncService.getDatabasePayloads();\n\n case 30:\n databasePayloads = _context3.sent;\n _context3.next = 33;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].LoadingDatabase_11);\n\n case 33:\n if (!this.createdNewDatabase) {\n _context3.next = 36;\n break;\n }\n\n _context3.next = 36;\n return this.syncService.onNewDatabaseCreated();\n\n case 36:\n /**\n * We don\'t want to await this, as we want to begin allowing the app to function\n * before local data has been loaded fully. We await only initial\n * `getDatabasePayloads` to lock in on database state.\n */\n loadPromise = this.syncService.loadDatabasePayloads(databasePayloads).then( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!_this2.dealloced) {\n _context2.next = 2;\n break;\n }\n\n throw \'Application has been destroyed.\';\n\n case 2:\n _context2.next = 4;\n return _this2.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].LoadedDatabase_12);\n\n case 4:\n _this2.beginAutoSyncTimer();\n\n return _context2.abrupt("return", _this2.syncService.sync({\n mode: _services__WEBPACK_IMPORTED_MODULE_13__["SyncModes"].DownloadFirst\n }));\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n })));\n\n if (!awaitDatabaseLoad) {\n _context3.next = 40;\n break;\n }\n\n _context3.next = 40;\n return loadPromise;\n\n case 40:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function launch() {\n return _launch.apply(this, arguments);\n }\n\n return launch;\n }()\n }, {\n key: "handleLaunchChallengeResponse",\n value: function () {\n var _handleLaunchChallengeResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(response) {\n var wrappingKey, value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!response.challenge.types.includes(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode)) {\n _context4.next = 9;\n break;\n }\n\n wrappingKey = response.artifacts.wrappingKey;\n\n if (wrappingKey) {\n _context4.next = 7;\n break;\n }\n\n value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n _context4.next = 6;\n return this.protocolService.computeWrappingKey(value.value);\n\n case 6:\n wrappingKey = _context4.sent;\n\n case 7:\n _context4.next = 9;\n return this.protocolService.unwrapRootKey(wrappingKey);\n\n case 9:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function handleLaunchChallengeResponse(_x2) {\n return _handleLaunchChallengeResponse.apply(this, arguments);\n }\n\n return handleLaunchChallengeResponse;\n }()\n }, {\n key: "beginAutoSyncTimer",\n value: function beginAutoSyncTimer() {\n var _this3 = this;\n\n this.autoSyncInterval = this.deviceInterface.interval(function () {\n _this3.syncService.log(\'Syncing from autosync\');\n\n _this3.sync();\n }, DEFAULT_AUTO_SYNC_INTERVAL);\n }\n }, {\n key: "handleStage",\n value: function () {\n var _handleStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(stage) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, service;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context5.prev = 3;\n _iterator = this.services[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context5.next = 12;\n break;\n }\n\n service = _step.value;\n _context5.next = 9;\n return service.handleApplicationStage(stage);\n\n case 9:\n _iteratorNormalCompletion = true;\n _context5.next = 5;\n break;\n\n case 12:\n _context5.next = 18;\n break;\n\n case 14:\n _context5.prev = 14;\n _context5.t0 = _context5["catch"](3);\n _didIteratorError = true;\n _iteratorError = _context5.t0;\n\n case 18:\n _context5.prev = 18;\n _context5.prev = 19;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 21:\n _context5.prev = 21;\n\n if (!_didIteratorError) {\n _context5.next = 24;\n break;\n }\n\n throw _iteratorError;\n\n case 24:\n return _context5.finish(21);\n\n case 25:\n return _context5.finish(18);\n\n case 26:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function handleStage(_x3) {\n return _handleStage.apply(this, arguments);\n }\n\n return handleStage;\n }()\n /**\n * @param singleEvent Whether to only listen for a particular event.\n */\n\n }, {\n key: "addEventObserver",\n value: function addEventObserver(callback, singleEvent) {\n var _this4 = this;\n\n var observer = {\n callback: callback,\n singleEvent: singleEvent\n };\n this.eventHandlers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["removeFromArray"])(_this4.eventHandlers, observer);\n };\n }\n }, {\n key: "addSingleEventObserver",\n value: function addSingleEventObserver(event, callback) {\n var filteredCallback = /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(firedEvent) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (firedEvent === event) {\n callback(event);\n }\n\n case 1:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n return function filteredCallback(_x4) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n return this.addEventObserver(filteredCallback, event);\n }\n }, {\n key: "notifyEvent",\n value: function () {\n var _notifyEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(event, data) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, observer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context7.prev = 3;\n _iterator2 = this.eventHandlers.slice()[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context7.next = 18;\n break;\n }\n\n observer = _step2.value;\n\n if (!(observer.singleEvent && observer.singleEvent === event)) {\n _context7.next = 12;\n break;\n }\n\n _context7.next = 10;\n return observer.callback(event, data || {});\n\n case 10:\n _context7.next = 15;\n break;\n\n case 12:\n if (observer.singleEvent) {\n _context7.next = 15;\n break;\n }\n\n _context7.next = 15;\n return observer.callback(event, data || {});\n\n case 15:\n _iteratorNormalCompletion2 = true;\n _context7.next = 5;\n break;\n\n case 18:\n _context7.next = 24;\n break;\n\n case 20:\n _context7.prev = 20;\n _context7.t0 = _context7["catch"](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context7.t0;\n\n case 24:\n _context7.prev = 24;\n _context7.prev = 25;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 27:\n _context7.prev = 27;\n\n if (!_didIteratorError2) {\n _context7.next = 30;\n break;\n }\n\n throw _iteratorError2;\n\n case 30:\n return _context7.finish(27);\n\n case 31:\n return _context7.finish(24);\n\n case 32:\n this.migrationService.handleApplicationEvent(event);\n\n case 33:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[3, 20, 24, 32], [25,, 27, 31]]);\n }));\n\n function notifyEvent(_x5, _x6) {\n return _notifyEvent.apply(this, arguments);\n }\n\n return notifyEvent;\n }()\n /**\n * Whether the local database has completed loading local items.\n */\n\n }, {\n key: "isDatabaseLoaded",\n value: function isDatabaseLoaded() {\n return this.syncService.isDatabaseLoaded();\n }\n }, {\n key: "savePayload",\n value: function () {\n var _savePayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload) {\n var dirtied;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n dirtied = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_9__["CopyPayload"])(payload, {\n dirty: true,\n dirtiedDate: new Date()\n });\n _context8.next = 3;\n return this.modelManager.emitPayload(dirtied, _Payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].LocalChanged);\n\n case 3:\n _context8.next = 5;\n return this.syncService.sync();\n\n case 5:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function savePayload(_x7) {\n return _savePayload.apply(this, arguments);\n }\n\n return savePayload;\n }()\n /**\n * Finds an item by UUID.\n */\n\n }, {\n key: "findItem",\n value: function findItem(uuid) {\n return this.itemManager.findItem(uuid);\n }\n /**\n * Returns all items.\n */\n\n }, {\n key: "allItems",\n value: function allItems() {\n return this.itemManager.items;\n }\n /**\n * Finds an item by predicate.\n */\n\n }, {\n key: "findItems",\n value: function findItems(predicate) {\n return this.itemManager.itemsMatchingPredicate(predicate);\n }\n /**\n * Finds an item by predicate.\n */\n\n }, {\n key: "getAll",\n value: function getAll(uuids) {\n return this.itemManager.findItems(uuids);\n }\n /**\n * Takes the values of the input item and emits it onto global state.\n */\n\n }, {\n key: "mergeItem",\n value: function () {\n var _mergeItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(item, source) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n return _context9.abrupt("return", this.itemManager.emitItemFromPayload(item.payloadRepresentation(), source));\n\n case 1:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function mergeItem(_x8, _x9) {\n return _mergeItem.apply(this, arguments);\n }\n\n return mergeItem;\n }()\n /**\n * Creates a managed item.\n * @param needsSync Whether to mark the item as needing sync. `add` must also be true.\n */\n\n }, {\n key: "createManagedItem",\n value: function () {\n var _createManagedItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(contentType, content) {\n var needsSync,\n override,\n item,\n _args10 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n needsSync = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : false;\n override = _args10.length > 3 ? _args10[3] : undefined;\n _context10.next = 4;\n return this.itemManager.createItem(contentType, content, needsSync, override);\n\n case 4:\n item = _context10.sent;\n return _context10.abrupt("return", item);\n\n case 6:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function createManagedItem(_x10, _x11) {\n return _createManagedItem.apply(this, arguments);\n }\n\n return createManagedItem;\n }()\n /**\n * Creates an unmanaged item that can be added later.\n * @param needsSync Whether to mark the item as needing sync. `add` must also be true.\n */\n\n }, {\n key: "createTemplateItem",\n value: function () {\n var _createTemplateItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(contentType, content) {\n var item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.itemManager.createTemplateItem(contentType, content);\n\n case 2:\n item = _context11.sent;\n return _context11.abrupt("return", item);\n\n case 4:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function createTemplateItem(_x12, _x13) {\n return _createTemplateItem.apply(this, arguments);\n }\n\n return createTemplateItem;\n }()\n /**\n * Creates an unmanaged item from a payload.\n */\n\n }, {\n key: "createItemFromPayload",\n value: function createItemFromPayload(payload) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(payload);\n }\n /**\n * Creates an unmanaged payload from any object, where the raw object\n * represents the same data a payload would.\n */\n\n }, {\n key: "createPayloadFromObject",\n value: function createPayloadFromObject(object) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_9__["CreateMaxPayloadFromAnyObject"])(object);\n }\n /**\n * @returns The date of last sync\n */\n\n }, {\n key: "getLastSyncDate",\n value: function getLastSyncDate() {\n return this.syncService.getLastSyncDate();\n }\n }, {\n key: "getSyncStatus",\n value: function getSyncStatus() {\n return this.syncService.getStatus();\n }\n /**\n * @param isUserModified Whether to change the modified date the user\n * sees of the item.\n */\n\n }, {\n key: "setItemNeedsSync",\n value: function () {\n var _setItemNeedsSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(item) {\n var isUserModified,\n _args12 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n isUserModified = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : false;\n return _context12.abrupt("return", this.itemManager.setItemDirty(item.uuid, isUserModified));\n\n case 2:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function setItemNeedsSync(_x14) {\n return _setItemNeedsSync.apply(this, arguments);\n }\n\n return setItemNeedsSync;\n }()\n }, {\n key: "setItemsNeedsSync",\n value: function () {\n var _setItemsNeedsSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(items) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt("return", this.itemManager.setItemsDirty(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(items)));\n\n case 1:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function setItemsNeedsSync(_x15) {\n return _setItemsNeedsSync.apply(this, arguments);\n }\n\n return setItemsNeedsSync;\n }()\n }, {\n key: "deleteItem",\n value: function () {\n var _deleteItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.itemManager.setItemToBeDeleted(item.uuid);\n\n case 2:\n return _context14.abrupt("return", this.sync());\n\n case 3:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function deleteItem(_x16) {\n return _deleteItem.apply(this, arguments);\n }\n\n return deleteItem;\n }()\n }, {\n key: "deleteItemLocally",\n value: function () {\n var _deleteItemLocally = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n this.itemManager.removeItemLocally(item);\n\n case 1:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function deleteItemLocally(_x17) {\n return _deleteItemLocally.apply(this, arguments);\n }\n\n return deleteItemLocally;\n }()\n }, {\n key: "emptyTrash",\n value: function () {\n var _emptyTrash = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return this.itemManager.emptyTrash();\n\n case 2:\n return _context16.abrupt("return", this.sync());\n\n case 3:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function emptyTrash() {\n return _emptyTrash.apply(this, arguments);\n }\n\n return emptyTrash;\n }()\n }, {\n key: "getTrashedItems",\n value: function getTrashedItems() {\n return this.itemManager.trashedItems;\n }\n }, {\n key: "setDisplayOptions",\n value: function setDisplayOptions(contentType, sortBy, direction, filter) {\n this.itemManager.setDisplayOptions(contentType, sortBy, direction, filter);\n }\n }, {\n key: "getDisplayableItems",\n value: function getDisplayableItems(contentType) {\n return this.itemManager.getDisplayableItems(contentType);\n }\n /**\n * Inserts the input item by its payload properties, and marks the item as dirty.\n * A sync is not performed after an item is inserted. This must be handled by the caller.\n */\n\n }, {\n key: "insertItem",\n value: function () {\n var _insertItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17(item) {\n var insertedItem;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.itemManager.insertItem(item);\n\n case 2:\n insertedItem = _context17.sent;\n _context17.next = 5;\n return this.itemManager.changeItems([insertedItem.uuid]);\n\n case 5:\n return _context17.abrupt("return", this.findItem(item.uuid));\n\n case 6:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function insertItem(_x18) {\n return _insertItem.apply(this, arguments);\n }\n\n return insertItem;\n }()\n /**\n * Saves the item by uuid by finding it, setting it as dirty if its not already,\n * and performing a sync request.\n */\n\n }, {\n key: "saveItem",\n value: function () {\n var _saveItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(uuid) {\n var item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n item = this.itemManager.findItem(uuid);\n\n if (item) {\n _context18.next = 3;\n break;\n }\n\n throw Error(\'Attempting to save non-inserted item\');\n\n case 3:\n if (item.dirty) {\n _context18.next = 6;\n break;\n }\n\n _context18.next = 6;\n return this.itemManager.changeItem(uuid);\n\n case 6:\n _context18.next = 8;\n return this.syncService.sync();\n\n case 8:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function saveItem(_x19) {\n return _saveItem.apply(this, arguments);\n }\n\n return saveItem;\n }()\n /**\n * Mutates a pre-existing item, marks it as dirty, and syncs it\n */\n\n }, {\n key: "changeAndSaveItem",\n value: function () {\n var _changeAndSaveItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(uuid, mutate) {\n var isUserModified,\n payloadSource,\n syncOptions,\n _args19 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n isUserModified = _args19.length > 2 && _args19[2] !== undefined ? _args19[2] : false;\n payloadSource = _args19.length > 3 ? _args19[3] : undefined;\n syncOptions = _args19.length > 4 ? _args19[4] : undefined;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isString"])(uuid)) {\n _context19.next = 5;\n break;\n }\n\n throw Error(\'Must use uuid to change item\');\n\n case 5:\n _context19.next = 7;\n return this.itemManager.changeItems([uuid], mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined, payloadSource);\n\n case 7:\n _context19.next = 9;\n return this.syncService.sync(syncOptions);\n\n case 9:\n return _context19.abrupt("return", this.findItem(uuid));\n\n case 10:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function changeAndSaveItem(_x20, _x21) {\n return _changeAndSaveItem.apply(this, arguments);\n }\n\n return changeAndSaveItem;\n }()\n /**\n * Mutates pre-existing items, marks them as dirty, and syncs\n */\n\n }, {\n key: "changeAndSaveItems",\n value: function () {\n var _changeAndSaveItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20(uuids, mutate) {\n var isUserModified,\n payloadSource,\n syncOptions,\n _args20 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n isUserModified = _args20.length > 2 && _args20[2] !== undefined ? _args20[2] : false;\n payloadSource = _args20.length > 3 ? _args20[3] : undefined;\n syncOptions = _args20.length > 4 ? _args20[4] : undefined;\n _context20.next = 5;\n return this.itemManager.changeItems(uuids, mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined, payloadSource);\n\n case 5:\n _context20.next = 7;\n return this.syncService.sync(syncOptions);\n\n case 7:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function changeAndSaveItems(_x22, _x23) {\n return _changeAndSaveItems.apply(this, arguments);\n }\n\n return changeAndSaveItems;\n }()\n /**\n * Mutates a pre-existing item and marks it as dirty. Does not sync changes.\n */\n\n }, {\n key: "changeItem",\n value: function () {\n var _changeItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(uuid, mutate) {\n var isUserModified,\n _args21 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n isUserModified = _args21.length > 2 && _args21[2] !== undefined ? _args21[2] : false;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isString"])(uuid)) {\n _context21.next = 3;\n break;\n }\n\n throw Error(\'Must use uuid to change item\');\n\n case 3:\n _context21.next = 5;\n return this.itemManager.changeItems([uuid], mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined);\n\n case 5:\n return _context21.abrupt("return", this.findItem(uuid));\n\n case 6:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function changeItem(_x24, _x25) {\n return _changeItem.apply(this, arguments);\n }\n\n return changeItem;\n }()\n /**\n * Mutates a pre-existing items and marks them as dirty. Does not sync changes.\n */\n\n }, {\n key: "changeItems",\n value: function () {\n var _changeItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22(uuids, mutate) {\n var isUserModified,\n _args22 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n isUserModified = _args22.length > 2 && _args22[2] !== undefined ? _args22[2] : false;\n return _context22.abrupt("return", this.itemManager.changeItems(uuids, mutate, isUserModified ? _Models_core_item__WEBPACK_IMPORTED_MODULE_5__["MutationType"].UserInteraction : undefined));\n\n case 2:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function changeItems(_x26, _x27) {\n return _changeItems.apply(this, arguments);\n }\n\n return changeItems;\n }()\n }, {\n key: "getItems",\n value: function getItems(contentType) {\n return this.itemManager.getItems(contentType);\n }\n }, {\n key: "notesMatchingSmartTag",\n value: function notesMatchingSmartTag(smartTag) {\n return this.itemManager.notesMatchingSmartTag(smartTag);\n }\n /** Returns an item\'s direct references */\n\n }, {\n key: "referencesForItem",\n value: function referencesForItem(item, contentType) {\n var references = this.itemManager.referencesForItem(item.uuid);\n\n if (contentType) {\n references = references.filter(function (ref) {\n return (ref === null || ref === void 0 ? void 0 : ref.content_type) === contentType;\n });\n }\n\n return references;\n }\n /** Returns items referencing an item */\n\n }, {\n key: "referencingForItem",\n value: function referencingForItem(item, contentType) {\n var references = this.itemManager.itemsReferencingItem(item.uuid);\n\n if (contentType) {\n references = references.filter(function (ref) {\n return (ref === null || ref === void 0 ? void 0 : ref.content_type) === contentType;\n });\n }\n\n return references;\n }\n }, {\n key: "findTagByTitle",\n value: function findTagByTitle(title) {\n return this.itemManager.findTagByTitle(title);\n }\n }, {\n key: "findOrCreateTag",\n value: function () {\n var _findOrCreateTag = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23(title) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n return _context23.abrupt("return", this.itemManager.findOrCreateTagByTitle(title));\n\n case 1:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function findOrCreateTag(_x28) {\n return _findOrCreateTag.apply(this, arguments);\n }\n\n return findOrCreateTag;\n }()\n }, {\n key: "getSmartTags",\n value: function getSmartTags() {\n return this.itemManager.getSmartTags();\n }\n }, {\n key: "getNoteCount",\n value: function getNoteCount() {\n return this.itemManager.noteCount;\n }\n /**\n * Begin streaming items to display in the UI. The stream callback will be called\n * immediately with the present items that match the constraint, and over time whenever\n * items matching the constraint are added, changed, or deleted.\n */\n\n }, {\n key: "streamItems",\n value: function streamItems(contentType, stream) {\n var _this5 = this;\n\n var observer = this.itemManager.addObserver(contentType, function (changed, inserted, discarded, source) {\n var all = changed.concat(inserted).concat(discarded);\n stream(all, source);\n });\n /** Push current values now */\n\n var matches = this.itemManager.getItems(contentType);\n\n if (matches.length > 0) {\n stream(matches);\n }\n\n this.streamRemovers.push(observer);\n return function () {\n observer();\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["removeFromArray"])(_this5.streamRemovers, observer);\n };\n }\n /**\n * Set the server\'s URL\n */\n\n }, {\n key: "setHost",\n value: function () {\n var _setHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24(host) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n return _context24.abrupt("return", this.apiService.setHost(host));\n\n case 1:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function setHost(_x29) {\n return _setHost.apply(this, arguments);\n }\n\n return setHost;\n }()\n }, {\n key: "getHost",\n value: function () {\n var _getHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee25() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n return _context25.abrupt("return", this.apiService.getHost());\n\n case 1:\n case "end":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function getHost() {\n return _getHost.apply(this, arguments);\n }\n\n return getHost;\n }()\n }, {\n key: "getUser",\n value: function getUser() {\n if (!this.launched) {\n throw \'Attempting to access user before application unlocked\';\n }\n\n return this.sessionManager.getUser();\n }\n }, {\n key: "getUserVersion",\n value: function () {\n var _getUserVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee26() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n return _context26.abrupt("return", this.protocolService.getUserVersion());\n\n case 1:\n case "end":\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function getUserVersion() {\n return _getUserVersion.apply(this, arguments);\n }\n\n return getUserVersion;\n }()\n /**\n * Returns true if there is an upgrade available for the account or passcode\n */\n\n }, {\n key: "protocolUpgradeAvailable",\n value: function () {\n var _protocolUpgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee27() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n return _context27.abrupt("return", this.protocolService.upgradeAvailable());\n\n case 1:\n case "end":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function protocolUpgradeAvailable() {\n return _protocolUpgradeAvailable.apply(this, arguments);\n }\n\n return protocolUpgradeAvailable;\n }()\n /**\n * Returns true if there is an encryption source available\n */\n\n }, {\n key: "isEncryptionAvailable",\n value: function () {\n var _isEncryptionAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee28() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n return _context28.abrupt("return", !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(this.getUser()) || this.hasPasscode());\n\n case 1:\n case "end":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function isEncryptionAvailable() {\n return _isEncryptionAvailable.apply(this, arguments);\n }\n\n return isEncryptionAvailable;\n }()\n /**\n * @returns An array of errors, if any.\n */\n\n }, {\n key: "upgradeProtocolVersion",\n value: function () {\n var _upgradeProtocolVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee29() {\n var hasPasscode, hasAccount, types, challenge, response, passcode, value, _value, password, changeResponse;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee29$(_context29) {\n while (1) {\n switch (_context29.prev = _context29.next) {\n case 0:\n hasPasscode = this.hasPasscode();\n hasAccount = !this.noAccount();\n types = [];\n\n if (hasPasscode) {\n types.push(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n }\n\n if (hasAccount) {\n types.push(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].AccountPassword);\n }\n\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_6__["Challenge"](types, _challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeReason"].ProtocolUpgrade);\n _context29.next = 8;\n return this.challengeService.promptForChallengeResponse(challenge);\n\n case 8:\n response = _context29.sent;\n\n if (response) {\n _context29.next = 11;\n break;\n }\n\n return _context29.abrupt("return");\n\n case 11:\n if (hasPasscode) {\n /* Upgrade passcode version */\n value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n passcode = value.value;\n }\n\n if (!hasAccount) {\n _context29.next = 23;\n break;\n }\n\n /* Upgrade account version */\n _value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].AccountPassword);\n password = _value.value;\n _context29.next = 17;\n return this.changePassword(password, password, passcode, {\n validatePasswordStrength: false\n });\n\n case 17:\n changeResponse = _context29.sent;\n\n if (!(changeResponse === null || changeResponse === void 0 ? void 0 : changeResponse.error)) {\n _context29.next = 20;\n break;\n }\n\n return _context29.abrupt("return", [changeResponse.error]);\n\n case 20:\n if (!passcode) {\n _context29.next = 23;\n break;\n }\n\n _context29.next = 23;\n return this.changePasscode(passcode);\n\n case 23:\n case "end":\n return _context29.stop();\n }\n }\n }, _callee29, this);\n }));\n\n function upgradeProtocolVersion() {\n return _upgradeProtocolVersion.apply(this, arguments);\n }\n\n return upgradeProtocolVersion;\n }()\n }, {\n key: "noAccount",\n value: function noAccount() {\n var user = this.getUser();\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(user);\n }\n /**\n * @returns\n * .affectedItems: Items that were either created or dirtied by this import\n * .errorCount: The number of items that were not imported due to failure to decrypt.\n */\n\n }, {\n key: "importData",\n value: function () {\n var _importData = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee30(data, password) {\n var awaitSync,\n decryptedPayloads,\n validPayloads,\n affectedUuids,\n promise,\n affectedItems,\n _args30 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee30$(_context30) {\n while (1) {\n switch (_context30.prev = _context30.next) {\n case 0:\n awaitSync = _args30.length > 2 && _args30[2] !== undefined ? _args30[2] : false;\n _context30.next = 3;\n return this.protocolService.payloadsByDecryptingBackupFile(data, password);\n\n case 3:\n decryptedPayloads = _context30.sent;\n validPayloads = decryptedPayloads.filter(function (payload) {\n return !payload.errorDecrypting;\n }).map(function (payload) {\n /* Don\'t want to activate any components during import process in\n * case of exceptions breaking up the import proccess */\n if (payload.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Component && payload.safeContent.active) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_9__["CopyPayload"])(payload, {\n content: _objectSpread({}, payload.safeContent, {\n active: false\n })\n });\n } else {\n return payload;\n }\n });\n _context30.next = 7;\n return this.modelManager.importPayloads(validPayloads);\n\n case 7:\n affectedUuids = _context30.sent;\n promise = this.sync();\n\n if (!awaitSync) {\n _context30.next = 12;\n break;\n }\n\n _context30.next = 12;\n return promise;\n\n case 12:\n affectedItems = this.getAll(affectedUuids);\n return _context30.abrupt("return", {\n affectedItems: affectedItems,\n errorCount: decryptedPayloads.length - validPayloads.length\n });\n\n case 14:\n case "end":\n return _context30.stop();\n }\n }\n }, _callee30, this);\n }));\n\n function importData(_x30, _x31) {\n return _importData.apply(this, arguments);\n }\n\n return importData;\n }()\n /**\n * Creates a JSON string representing the backup format of all items, or just subItems\n * if supplied.\n */\n\n }, {\n key: "createBackupFile",\n value: function () {\n var _createBackupFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee31(subItems, intent) {\n var returnIfEmpty,\n _args31 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee31$(_context31) {\n while (1) {\n switch (_context31.prev = _context31.next) {\n case 0:\n returnIfEmpty = _args31.length > 2 && _args31[2] !== undefined ? _args31[2] : false;\n return _context31.abrupt("return", this.protocolService.createBackupFile(subItems, intent, returnIfEmpty));\n\n case 2:\n case "end":\n return _context31.stop();\n }\n }\n }, _callee31, this);\n }));\n\n function createBackupFile(_x32, _x33) {\n return _createBackupFile.apply(this, arguments);\n }\n\n return createBackupFile;\n }()\n }, {\n key: "isEphemeralSession",\n value: function isEphemeralSession() {\n return this.storageService.isEphemeralSession();\n }\n }, {\n key: "lockSyncing",\n value: function lockSyncing() {\n this.syncService.lockSyncing();\n }\n }, {\n key: "unlockSyncing",\n value: function unlockSyncing() {\n this.syncService.unlockSyncing();\n }\n }, {\n key: "sync",\n value: function () {\n var _sync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee32(options) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee32$(_context32) {\n while (1) {\n switch (_context32.prev = _context32.next) {\n case 0:\n return _context32.abrupt("return", this.syncService.sync(options));\n\n case 1:\n case "end":\n return _context32.stop();\n }\n }\n }, _callee32, this);\n }));\n\n function sync(_x34) {\n return _sync.apply(this, arguments);\n }\n\n return sync;\n }()\n }, {\n key: "isOutOfSync",\n value: function () {\n var _isOutOfSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee33() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee33$(_context33) {\n while (1) {\n switch (_context33.prev = _context33.next) {\n case 0:\n return _context33.abrupt("return", this.syncService.isOutOfSync());\n\n case 1:\n case "end":\n return _context33.stop();\n }\n }\n }, _callee33, this);\n }));\n\n function isOutOfSync() {\n return _isOutOfSync.apply(this, arguments);\n }\n\n return isOutOfSync;\n }()\n }, {\n key: "resolveOutOfSync",\n value: function () {\n var _resolveOutOfSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee34() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee34$(_context34) {\n while (1) {\n switch (_context34.prev = _context34.next) {\n case 0:\n return _context34.abrupt("return", this.syncService.resolveOutOfSync());\n\n case 1:\n case "end":\n return _context34.stop();\n }\n }\n }, _callee34, this);\n }));\n\n function resolveOutOfSync() {\n return _resolveOutOfSync.apply(this, arguments);\n }\n\n return resolveOutOfSync;\n }()\n }, {\n key: "setValue",\n value: function () {\n var _setValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee35(key, value, mode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee35$(_context35) {\n while (1) {\n switch (_context35.prev = _context35.next) {\n case 0:\n return _context35.abrupt("return", this.storageService.setValue(key, value, mode));\n\n case 1:\n case "end":\n return _context35.stop();\n }\n }\n }, _callee35, this);\n }));\n\n function setValue(_x35, _x36, _x37) {\n return _setValue.apply(this, arguments);\n }\n\n return setValue;\n }()\n }, {\n key: "getValue",\n value: function () {\n var _getValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee36(key, mode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee36$(_context36) {\n while (1) {\n switch (_context36.prev = _context36.next) {\n case 0:\n return _context36.abrupt("return", this.storageService.getValue(key, mode));\n\n case 1:\n case "end":\n return _context36.stop();\n }\n }\n }, _callee36, this);\n }));\n\n function getValue(_x38, _x39) {\n return _getValue.apply(this, arguments);\n }\n\n return getValue;\n }()\n }, {\n key: "removeValue",\n value: function () {\n var _removeValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee37(key, mode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee37$(_context37) {\n while (1) {\n switch (_context37.prev = _context37.next) {\n case 0:\n return _context37.abrupt("return", this.storageService.removeValue(key, mode));\n\n case 1:\n case "end":\n return _context37.stop();\n }\n }\n }, _callee37, this);\n }));\n\n function removeValue(_x40, _x41) {\n return _removeValue.apply(this, arguments);\n }\n\n return removeValue;\n }()\n /**\n * Deletes all payloads from storage.\n */\n\n }, {\n key: "clearDatabase",\n value: function () {\n var _clearDatabase = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee38() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee38$(_context38) {\n while (1) {\n switch (_context38.prev = _context38.next) {\n case 0:\n return _context38.abrupt("return", this.storageService.clearAllPayloads());\n\n case 1:\n case "end":\n return _context38.stop();\n }\n }\n }, _callee38, this);\n }));\n\n function clearDatabase() {\n return _clearDatabase.apply(this, arguments);\n }\n\n return clearDatabase;\n }()\n /**\n * Allows items keys to be rewritten to local db on local credential status change,\n * such as if passcode is added, changed, or removed.\n * This allows IndexedDB unencrypted logs to be deleted\n * `deletePayloads` will remove data from backing store,\n * but not from working memory See:\n * https://github.com/standardnotes/desktop/issues/131\n */\n\n }, {\n key: "rewriteItemsKeys",\n value: function () {\n var _rewriteItemsKeys = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee39() {\n var itemsKeys, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee39$(_context39) {\n while (1) {\n switch (_context39.prev = _context39.next) {\n case 0:\n itemsKeys = this.itemManager.itemsKeys();\n payloads = itemsKeys.map(function (key) {\n return key.payloadRepresentation();\n });\n _context39.next = 4;\n return this.storageService.deletePayloads(payloads);\n\n case 4:\n _context39.next = 6;\n return this.syncService.persistPayloads(payloads);\n\n case 6:\n case "end":\n return _context39.stop();\n }\n }\n }, _callee39, this);\n }));\n\n function rewriteItemsKeys() {\n return _rewriteItemsKeys.apply(this, arguments);\n }\n\n return rewriteItemsKeys;\n }()\n /**\n * Gives services a chance to complete any sensitive operations before yielding\n * @param maxWait The maximum number of milliseconds to wait for services\n * to finish tasks. 0 means no limit.\n */\n\n }, {\n key: "prepareForDeinit",\n value: function () {\n var _prepareForDeinit = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee40() {\n var maxWait,\n promise,\n _args40 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee40$(_context40) {\n while (1) {\n switch (_context40.prev = _context40.next) {\n case 0:\n maxWait = _args40.length > 0 && _args40[0] !== undefined ? _args40[0] : 0;\n promise = Promise.all(this.services.map(function (service) {\n return service.blockDeinit();\n }));\n\n if (!(maxWait === 0)) {\n _context40.next = 7;\n break;\n }\n\n _context40.next = 5;\n return promise;\n\n case 5:\n _context40.next = 9;\n break;\n\n case 7:\n _context40.next = 9;\n return Promise.race([promise, Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["sleep"])(maxWait)]);\n\n case 9:\n case "end":\n return _context40.stop();\n }\n }\n }, _callee40, this);\n }));\n\n function prepareForDeinit() {\n return _prepareForDeinit.apply(this, arguments);\n }\n\n return prepareForDeinit;\n }()\n }, {\n key: "submitValuesForChallenge",\n value: function submitValuesForChallenge(challenge, values) {\n return this.challengeService.submitValuesForChallenge(challenge, values);\n }\n }, {\n key: "setChallengeCallbacks",\n value: function setChallengeCallbacks(_ref3) {\n var challenge = _ref3.challenge,\n onValidValue = _ref3.onValidValue,\n onInvalidValue = _ref3.onInvalidValue,\n onComplete = _ref3.onComplete,\n onCancel = _ref3.onCancel;\n return this.challengeService.setChallengeCallbacks(challenge, onValidValue, onInvalidValue, onComplete, onCancel);\n }\n }, {\n key: "cancelChallenge",\n value: function cancelChallenge(challenge) {\n this.challengeService.cancelChallenge(challenge);\n }\n /**\n * Destroys the application instance.\n */\n\n }, {\n key: "deinit",\n value: function deinit() {\n clearInterval(this.autoSyncInterval);\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.serviceObservers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var uninstallObserver = _step3.value;\n uninstallObserver();\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = this.managedSubscribers[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var uninstallSubscriber = _step4.value;\n uninstallSubscriber();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = this.services[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var service = _step5.value;\n service.deinit();\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n this.deviceInterface.deinit();\n this.deviceInterface = undefined;\n this.crypto = undefined;\n this.createdNewDatabase = false;\n this.services.length = 0;\n this.serviceObservers.length = 0;\n this.managedSubscribers.length = 0;\n this.streamRemovers.length = 0;\n this.clearServices();\n this.dealloced = true;\n this.started = false;\n }\n /**\n * Returns the wrapping key for operations that require resaving the root key\n * (changing the account password, signing in, registering, or upgrading protocol)\n * Returns empty object if no passcode is configured.\n * Otherwise returns {cancled: true} if the operation is canceled, or\n * {wrappingKey} with the result.\n * @param passcode - If the consumer already has access to the passcode,\n * they can pass it here so that the user is not prompted again.\n */\n\n }, {\n key: "getWrappingKeyIfNecessary",\n value: function () {\n var _getWrappingKeyIfNecessary = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee41(passcode) {\n var challenge, response, value, wrappingKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee41$(_context41) {\n while (1) {\n switch (_context41.prev = _context41.next) {\n case 0:\n if (this.hasPasscode()) {\n _context41.next = 2;\n break;\n }\n\n return _context41.abrupt("return", {});\n\n case 2:\n if (passcode) {\n _context41.next = 11;\n break;\n }\n\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_6__["Challenge"]([_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode], _challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeReason"].ResaveRootKey);\n _context41.next = 6;\n return this.challengeService.promptForChallengeResponse(challenge);\n\n case 6:\n response = _context41.sent;\n\n if (response) {\n _context41.next = 9;\n break;\n }\n\n return _context41.abrupt("return", {\n canceled: true\n });\n\n case 9:\n value = response.getValueForType(_challenges__WEBPACK_IMPORTED_MODULE_6__["ChallengeType"].LocalPasscode);\n passcode = value.value;\n\n case 11:\n _context41.next = 13;\n return this.protocolService.computeWrappingKey(passcode);\n\n case 13:\n wrappingKey = _context41.sent;\n return _context41.abrupt("return", {\n wrappingKey: wrappingKey\n });\n\n case 15:\n case "end":\n return _context41.stop();\n }\n }\n }, _callee41, this);\n }));\n\n function getWrappingKeyIfNecessary(_x42) {\n return _getWrappingKeyIfNecessary.apply(this, arguments);\n }\n\n return getWrappingKeyIfNecessary;\n }()\n /**\n * @param mergeLocal Whether to merge existing offline data into account. If false,\n * any pre-existing data will be fully deleted upon success.\n */\n\n }, {\n key: "register",\n value: function () {\n var _register = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee42(email, password) {\n var ephemeral,\n mergeLocal,\n _ref4,\n wrappingKey,\n canceled,\n result,\n _args42 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee42$(_context42) {\n while (1) {\n switch (_context42.prev = _context42.next) {\n case 0:\n ephemeral = _args42.length > 2 && _args42[2] !== undefined ? _args42[2] : false;\n mergeLocal = _args42.length > 3 && _args42[3] !== undefined ? _args42[3] : true;\n _context42.next = 4;\n return this.getWrappingKeyIfNecessary();\n\n case 4:\n _ref4 = _context42.sent;\n wrappingKey = _ref4.wrappingKey;\n canceled = _ref4.canceled;\n\n if (!canceled) {\n _context42.next = 9;\n break;\n }\n\n return _context42.abrupt("return");\n\n case 9:\n this.lockSyncing();\n _context42.next = 12;\n return this.sessionManager.register(email, password);\n\n case 12:\n result = _context42.sent;\n\n if (result.response.error) {\n _context42.next = 35;\n break;\n }\n\n _context42.next = 16;\n return this.protocolService.setNewRootKey(result.rootKey, result.keyParams, wrappingKey);\n\n case 16:\n this.syncService.resetSyncState();\n _context42.next = 19;\n return this.storageService.setPersistencePolicy(ephemeral ? _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Ephemeral : _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Default);\n\n case 19:\n if (!mergeLocal) {\n _context42.next = 24;\n break;\n }\n\n _context42.next = 22;\n return this.syncService.markAllItemsAsNeedingSync(true);\n\n case 22:\n _context42.next = 27;\n break;\n\n case 24:\n this.itemManager.removeAllItemsFromMemory();\n _context42.next = 27;\n return this.clearDatabase();\n\n case 27:\n _context42.next = 29;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].SignedIn);\n\n case 29:\n this.unlockSyncing();\n _context42.next = 32;\n return this.syncService.sync({\n mode: _services__WEBPACK_IMPORTED_MODULE_13__["SyncModes"].DownloadFirst,\n queueStrategy: _services__WEBPACK_IMPORTED_MODULE_13__["SyncQueueStrategy"].ForceSpawnNew\n });\n\n case 32:\n this.protocolService.decryptErroredItems();\n _context42.next = 36;\n break;\n\n case 35:\n this.unlockSyncing();\n\n case 36:\n return _context42.abrupt("return", result.response);\n\n case 37:\n case "end":\n return _context42.stop();\n }\n }\n }, _callee42, this);\n }));\n\n function register(_x43, _x44) {\n return _register.apply(this, arguments);\n }\n\n return register;\n }()\n /**\n * @param mergeLocal Whether to merge existing offline data into account.\n * If false, any pre-existing data will be fully deleted upon success.\n */\n\n }, {\n key: "signIn",\n value: function () {\n var _signIn = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee43(email, password) {\n var strict,\n ephemeral,\n mfaKeyPath,\n mfaCode,\n mergeLocal,\n awaitSync,\n _ref5,\n wrappingKey,\n canceled,\n result,\n syncPromise,\n _args43 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee43$(_context43) {\n while (1) {\n switch (_context43.prev = _context43.next) {\n case 0:\n strict = _args43.length > 2 && _args43[2] !== undefined ? _args43[2] : false;\n ephemeral = _args43.length > 3 && _args43[3] !== undefined ? _args43[3] : false;\n mfaKeyPath = _args43.length > 4 ? _args43[4] : undefined;\n mfaCode = _args43.length > 5 ? _args43[5] : undefined;\n mergeLocal = _args43.length > 6 && _args43[6] !== undefined ? _args43[6] : true;\n awaitSync = _args43.length > 7 && _args43[7] !== undefined ? _args43[7] : false;\n _context43.next = 8;\n return this.getWrappingKeyIfNecessary();\n\n case 8:\n _ref5 = _context43.sent;\n wrappingKey = _ref5.wrappingKey;\n canceled = _ref5.canceled;\n\n if (!canceled) {\n _context43.next = 13;\n break;\n }\n\n return _context43.abrupt("return");\n\n case 13:\n /** Prevent a timed sync from occuring while signing in. */\n this.lockSyncing();\n _context43.next = 16;\n return this.sessionManager.signIn(email, password, strict, mfaKeyPath, mfaCode);\n\n case 16:\n result = _context43.sent;\n\n if (result.response.error) {\n _context43.next = 45;\n break;\n }\n\n _context43.next = 20;\n return this.protocolService.setNewRootKey(result.rootKey, result.keyParams, wrappingKey);\n\n case 20:\n this.syncService.resetSyncState();\n _context43.next = 23;\n return this.storageService.setPersistencePolicy(ephemeral ? _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Ephemeral : _Services_storage_service__WEBPACK_IMPORTED_MODULE_12__["StoragePersistencePolicies"].Default);\n\n case 23:\n if (!mergeLocal) {\n _context43.next = 28;\n break;\n }\n\n _context43.next = 26;\n return this.syncService.markAllItemsAsNeedingSync(true);\n\n case 26:\n _context43.next = 31;\n break;\n\n case 28:\n this.itemManager.removeAllItemsFromMemory();\n _context43.next = 31;\n return this.clearDatabase();\n\n case 31:\n _context43.next = 33;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].SignedIn);\n\n case 33:\n this.unlockSyncing();\n syncPromise = this.syncService.sync({\n mode: _services__WEBPACK_IMPORTED_MODULE_13__["SyncModes"].DownloadFirst,\n checkIntegrity: true,\n queueStrategy: _services__WEBPACK_IMPORTED_MODULE_13__["SyncQueueStrategy"].ForceSpawnNew,\n awaitAll: awaitSync\n });\n\n if (!awaitSync) {\n _context43.next = 42;\n break;\n }\n\n _context43.next = 38;\n return syncPromise;\n\n case 38:\n _context43.next = 40;\n return this.protocolService.decryptErroredItems();\n\n case 40:\n _context43.next = 43;\n break;\n\n case 42:\n this.protocolService.decryptErroredItems();\n\n case 43:\n _context43.next = 46;\n break;\n\n case 45:\n this.unlockSyncing();\n\n case 46:\n return _context43.abrupt("return", result.response);\n\n case 47:\n case "end":\n return _context43.stop();\n }\n }\n }, _callee43, this);\n }));\n\n function signIn(_x45, _x46) {\n return _signIn.apply(this, arguments);\n }\n\n return signIn;\n }()\n /**\n * @param passcode - Changing the account password requires the local\n * passcode if configured (to rewrap the account key with passcode). If the passcode\n * is not passed in, the user will be prompted for the passcode. However if the consumer\n * already has referene to the passcode, they can pass it in here so that the user\n * is not prompted again.\n */\n\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee44(currentPassword, newPassword, passcode) {\n var _ref6,\n _ref6$validatePasswor,\n validatePasswordStrength,\n _ref7,\n wrappingKey,\n canceled,\n _ref8,\n _ref9,\n error,\n changePasswordResult,\n previousRootKey,\n newRootKey,\n newKeyParams,\n rollbackPasswordChange,\n itemsKeyWasSynced,\n response,\n _args44 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee44$(_context44) {\n while (1) {\n switch (_context44.prev = _context44.next) {\n case 0:\n _ref6 = _args44.length > 3 && _args44[3] !== undefined ? _args44[3] : {}, _ref6$validatePasswor = _ref6.validatePasswordStrength, validatePasswordStrength = _ref6$validatePasswor === void 0 ? true : _ref6$validatePasswor;\n\n if (!validatePasswordStrength) {\n _context44.next = 4;\n break;\n }\n\n if (!(newPassword.length < _services_api_session_manager__WEBPACK_IMPORTED_MODULE_15__["MINIMUM_PASSWORD_LENGTH"])) {\n _context44.next = 4;\n break;\n }\n\n return _context44.abrupt("return", {\n error: Error(Object(_services_api_messages__WEBPACK_IMPORTED_MODULE_14__["InsufficientPasswordMessage"])(_services_api_session_manager__WEBPACK_IMPORTED_MODULE_15__["MINIMUM_PASSWORD_LENGTH"]))\n });\n\n case 4:\n _context44.next = 6;\n return this.getWrappingKeyIfNecessary(passcode);\n\n case 6:\n _ref7 = _context44.sent;\n wrappingKey = _ref7.wrappingKey;\n canceled = _ref7.canceled;\n\n if (!canceled) {\n _context44.next = 11;\n break;\n }\n\n return _context44.abrupt("return", {});\n\n case 11:\n _context44.next = 13;\n return this.protocolService.changePassword(this.getUser().email, currentPassword, newPassword, wrappingKey);\n\n case 13:\n _ref8 = _context44.sent;\n _ref9 = _slicedToArray(_ref8, 2);\n error = _ref9[0];\n changePasswordResult = _ref9[1];\n\n if (!error) {\n _context44.next = 19;\n break;\n }\n\n return _context44.abrupt("return", {\n error: error\n });\n\n case 19:\n previousRootKey = changePasswordResult.previousRootKey, newRootKey = changePasswordResult.newRootKey, newKeyParams = changePasswordResult.newKeyParams, rollbackPasswordChange = changePasswordResult.rollback;\n /** Sync the newly created items key. Roll back on failure */\n\n _context44.next = 22;\n return this.syncService.sync({\n awaitAll: true\n });\n\n case 22:\n itemsKeyWasSynced = this.protocolService.getDefaultItemsKey().updated_at.getTime() > 0;\n\n if (itemsKeyWasSynced) {\n _context44.next = 29;\n break;\n }\n\n _context44.next = 26;\n return rollbackPasswordChange();\n\n case 26:\n _context44.next = 28;\n return this.syncService.sync({\n awaitAll: true\n });\n\n case 28:\n return _context44.abrupt("return", {\n error: Error(_services_api_messages__WEBPACK_IMPORTED_MODULE_14__["API_MESSAGE_GENERIC_SYNC_FAIL"])\n });\n\n case 29:\n this.lockSyncing();\n /** Now, change the password on the server. Roll back on failure */\n\n _context44.next = 32;\n return this.sessionManager.changePassword(previousRootKey.serverPassword, newRootKey.serverPassword, newKeyParams);\n\n case 32:\n response = _context44.sent;\n\n if (!response.error) {\n _context44.next = 38;\n break;\n }\n\n _context44.next = 36;\n return rollbackPasswordChange();\n\n case 36:\n _context44.next = 38;\n return this.syncService.sync({\n awaitAll: true\n });\n\n case 38:\n this.unlockSyncing();\n return _context44.abrupt("return", response);\n\n case 40:\n case "end":\n return _context44.stop();\n }\n }\n }, _callee44, this);\n }));\n\n function changePassword(_x47, _x48, _x49) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }, {\n key: "signOut",\n value: function () {\n var _signOut = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee45() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee45$(_context45) {\n while (1) {\n switch (_context45.prev = _context45.next) {\n case 0:\n _context45.next = 2;\n return this.sessionManager.signOut();\n\n case 2:\n _context45.next = 4;\n return this.protocolService.clearLocalKeyState();\n\n case 4:\n _context45.next = 6;\n return this.storageService.clearAllData();\n\n case 6:\n _context45.next = 8;\n return this.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].SignedOut);\n\n case 8:\n _context45.next = 10;\n return this.prepareForDeinit();\n\n case 10:\n this.deinit();\n\n case 11:\n case "end":\n return _context45.stop();\n }\n }\n }, _callee45, this);\n }));\n\n function signOut() {\n return _signOut.apply(this, arguments);\n }\n\n return signOut;\n }()\n }, {\n key: "validateAccountPassword",\n value: function () {\n var _validateAccountPassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee46(password) {\n var _ref10, valid;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee46$(_context46) {\n while (1) {\n switch (_context46.prev = _context46.next) {\n case 0:\n _context46.next = 2;\n return this.protocolService.validateAccountPassword(password);\n\n case 2:\n _ref10 = _context46.sent;\n valid = _ref10.valid;\n return _context46.abrupt("return", valid);\n\n case 5:\n case "end":\n return _context46.stop();\n }\n }\n }, _callee46, this);\n }));\n\n function validateAccountPassword(_x50) {\n return _validateAccountPassword.apply(this, arguments);\n }\n\n return validateAccountPassword;\n }()\n }, {\n key: "isStarted",\n value: function isStarted() {\n return this.started;\n }\n }, {\n key: "isLaunched",\n value: function isLaunched() {\n return this.launched;\n }\n }, {\n key: "hasPasscode",\n value: function hasPasscode() {\n return this.protocolService.hasPasscode();\n }\n }, {\n key: "isLocked",\n value: function () {\n var _isLocked = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee47() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee47$(_context47) {\n while (1) {\n switch (_context47.prev = _context47.next) {\n case 0:\n if (this.started) {\n _context47.next = 2;\n break;\n }\n\n return _context47.abrupt("return", true);\n\n case 2:\n return _context47.abrupt("return", this.challengeService.isPasscodeLocked());\n\n case 3:\n case "end":\n return _context47.stop();\n }\n }\n }, _callee47, this);\n }));\n\n function isLocked() {\n return _isLocked.apply(this, arguments);\n }\n\n return isLocked;\n }()\n }, {\n key: "lock",\n value: function () {\n var _lock = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee48() {\n var MaximumWaitTime;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee48$(_context48) {\n while (1) {\n switch (_context48.prev = _context48.next) {\n case 0:\n /** Because locking is a critical operation, we want to try to do it safely,\n * but only up to a certain limit. */\n MaximumWaitTime = 500;\n _context48.next = 3;\n return this.prepareForDeinit(MaximumWaitTime);\n\n case 3:\n return _context48.abrupt("return", this.deinit());\n\n case 4:\n case "end":\n return _context48.stop();\n }\n }\n }, _callee48, this);\n }));\n\n function lock() {\n return _lock.apply(this, arguments);\n }\n\n return lock;\n }()\n }, {\n key: "setPasscode",\n value: function () {\n var _setPasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee49(passcode) {\n var identifier, _ref11, key, keyParams;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee49$(_context49) {\n while (1) {\n switch (_context49.prev = _context49.next) {\n case 0:\n _context49.next = 2;\n return this.generateUuid();\n\n case 2:\n identifier = _context49.sent;\n _context49.next = 5;\n return this.protocolService.createRootKey(identifier, passcode);\n\n case 5:\n _ref11 = _context49.sent;\n key = _ref11.key;\n keyParams = _ref11.keyParams;\n _context49.next = 10;\n return this.protocolService.setNewRootKeyWrapper(key, keyParams);\n\n case 10:\n _context49.next = 12;\n return this.rewriteItemsKeys();\n\n case 12:\n _context49.next = 14;\n return this.syncService.sync();\n\n case 14:\n case "end":\n return _context49.stop();\n }\n }\n }, _callee49, this);\n }));\n\n function setPasscode(_x51) {\n return _setPasscode.apply(this, arguments);\n }\n\n return setPasscode;\n }()\n }, {\n key: "removePasscode",\n value: function () {\n var _removePasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee50() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee50$(_context50) {\n while (1) {\n switch (_context50.prev = _context50.next) {\n case 0:\n _context50.next = 2;\n return this.protocolService.removeRootKeyWrapper();\n\n case 2:\n _context50.next = 4;\n return this.rewriteItemsKeys();\n\n case 4:\n case "end":\n return _context50.stop();\n }\n }\n }, _callee50, this);\n }));\n\n function removePasscode() {\n return _removePasscode.apply(this, arguments);\n }\n\n return removePasscode;\n }()\n }, {\n key: "changePasscode",\n value: function () {\n var _changePasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee51(passcode) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee51$(_context51) {\n while (1) {\n switch (_context51.prev = _context51.next) {\n case 0:\n _context51.next = 2;\n return this.removePasscode();\n\n case 2:\n return _context51.abrupt("return", this.setPasscode(passcode));\n\n case 3:\n case "end":\n return _context51.stop();\n }\n }\n }, _callee51, this);\n }));\n\n function changePasscode(_x52) {\n return _changePasscode.apply(this, arguments);\n }\n\n return changePasscode;\n }()\n }, {\n key: "setStorageEncryptionPolicy",\n value: function () {\n var _setStorageEncryptionPolicy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee52(encryptionPolicy) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee52$(_context52) {\n while (1) {\n switch (_context52.prev = _context52.next) {\n case 0:\n _context52.next = 2;\n return this.storageService.setEncryptionPolicy(encryptionPolicy);\n\n case 2:\n return _context52.abrupt("return", this.protocolService.repersistAllItems());\n\n case 3:\n case "end":\n return _context52.stop();\n }\n }\n }, _callee52, this);\n }));\n\n function setStorageEncryptionPolicy(_x53) {\n return _setStorageEncryptionPolicy.apply(this, arguments);\n }\n\n return setStorageEncryptionPolicy;\n }()\n }, {\n key: "generateUuid",\n value: function () {\n var _generateUuid = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee53() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee53$(_context53) {\n while (1) {\n switch (_context53.prev = _context53.next) {\n case 0:\n return _context53.abrupt("return", _Lib_uuid__WEBPACK_IMPORTED_MODULE_4__["Uuid"].GenerateUuid());\n\n case 1:\n case "end":\n return _context53.stop();\n }\n }\n }, _callee53);\n }));\n\n function generateUuid() {\n return _generateUuid.apply(this, arguments);\n }\n\n return generateUuid;\n }()\n /**\n * Dynamically change the device interface, i.e when Desktop wants to override\n * default web interface.\n */\n\n }, {\n key: "changeDeviceInterface",\n value: function () {\n var _changeDeviceInterface = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee54(deviceInterface) {\n var _iteratorNormalCompletion6, _didIteratorError6, _iteratorError6, _iterator6, _step6, service;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee54$(_context54) {\n while (1) {\n switch (_context54.prev = _context54.next) {\n case 0:\n this.deviceInterface = deviceInterface;\n _iteratorNormalCompletion6 = true;\n _didIteratorError6 = false;\n _iteratorError6 = undefined;\n _context54.prev = 4;\n\n for (_iterator6 = this.services[Symbol.iterator](); !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n service = _step6.value;\n\n if (service.deviceInterface) {\n service.deviceInterface = deviceInterface;\n }\n }\n\n _context54.next = 12;\n break;\n\n case 8:\n _context54.prev = 8;\n _context54.t0 = _context54["catch"](4);\n _didIteratorError6 = true;\n _iteratorError6 = _context54.t0;\n\n case 12:\n _context54.prev = 12;\n _context54.prev = 13;\n\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n\n case 15:\n _context54.prev = 15;\n\n if (!_didIteratorError6) {\n _context54.next = 18;\n break;\n }\n\n throw _iteratorError6;\n\n case 18:\n return _context54.finish(15);\n\n case 19:\n return _context54.finish(12);\n\n case 20:\n case "end":\n return _context54.stop();\n }\n }\n }, _callee54, this, [[4, 8, 12, 20], [13,, 15, 19]]);\n }));\n\n function changeDeviceInterface(_x54) {\n return _changeDeviceInterface.apply(this, arguments);\n }\n\n return changeDeviceInterface;\n }()\n }, {\n key: "constructServices",\n value: function constructServices() {\n this.createModelManager();\n this.createItemManager();\n this.createStorageManager();\n this.createProtocolService();\n var encryptionDelegate = {\n payloadByEncryptingPayload: this.protocolService.payloadByEncryptingPayload.bind(this.protocolService),\n payloadByDecryptingPayload: this.protocolService.payloadByDecryptingPayload.bind(this.protocolService)\n };\n this.storageService.encryptionDelegate = encryptionDelegate;\n this.createChallengeService();\n this.createMigrationService();\n this.createAlertManager();\n this.createHttpManager();\n this.createApiService();\n this.createSessionManager();\n this.createSyncManager();\n this.createSingletonManager();\n this.createComponentManager();\n this.createPrivilegesService();\n this.createHistoryManager();\n this.createActionsManager();\n }\n }, {\n key: "clearServices",\n value: function clearServices() {\n this.migrationService = undefined;\n this.alertService = undefined;\n this.httpService = undefined;\n this.modelManager = undefined;\n this.protocolService = undefined;\n this.storageService = undefined;\n this.apiService = undefined;\n this.sessionManager = undefined;\n this.syncService = undefined;\n this.challengeService = undefined;\n this.singletonManager = undefined;\n this.componentManager = undefined;\n this.privilegesService = undefined;\n this.actionsManager = undefined;\n this.historyManager = undefined;\n this.itemManager = undefined;\n this.services = [];\n }\n }, {\n key: "createMigrationService",\n value: function createMigrationService() {\n this.migrationService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNMigrationService"]({\n protocolService: this.protocolService,\n deviceInterface: this.deviceInterface,\n storageService: this.storageService,\n challengeService: this.challengeService,\n itemManager: this.itemManager,\n environment: this.environment,\n namespace: this.namespace\n });\n this.services.push(this.migrationService);\n }\n }, {\n key: "createAlertManager",\n value: function createAlertManager() {\n if (this.shouldSkipClass(_services__WEBPACK_IMPORTED_MODULE_13__["SNAlertService"])) {\n return;\n }\n\n this.alertService = new (this.getClass(_services__WEBPACK_IMPORTED_MODULE_13__["SNAlertService"]))(this.deviceInterface);\n this.services.push(this.alertService);\n }\n }, {\n key: "createApiService",\n value: function createApiService() {\n this.apiService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNApiService"](this.httpService, this.storageService);\n this.services.push(this.apiService);\n }\n }, {\n key: "createItemManager",\n value: function createItemManager() {\n this.itemManager = new _services__WEBPACK_IMPORTED_MODULE_13__["ItemManager"](this.modelManager);\n this.services.push(this.itemManager);\n }\n }, {\n key: "createComponentManager",\n value: function createComponentManager() {\n if (this.shouldSkipClass(_services__WEBPACK_IMPORTED_MODULE_13__["SNComponentManager"])) {\n return;\n }\n\n this.componentManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNComponentManager"](this.itemManager, this.syncService, this.alertService, this.environment, this.platform, this.deviceInterface.timeout);\n this.services.push(this.componentManager);\n }\n }, {\n key: "createHttpManager",\n value: function createHttpManager() {\n this.httpService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNHttpService"]();\n this.services.push(this.httpService);\n }\n }, {\n key: "createModelManager",\n value: function createModelManager() {\n this.modelManager = new _services__WEBPACK_IMPORTED_MODULE_13__["PayloadManager"]();\n this.services.push(this.modelManager);\n }\n }, {\n key: "createSingletonManager",\n value: function createSingletonManager() {\n this.singletonManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNSingletonManager"](this.itemManager, this.syncService);\n this.services.push(this.singletonManager);\n }\n }, {\n key: "createStorageManager",\n value: function createStorageManager() {\n this.storageService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNStorageService"](this.deviceInterface, this.namespace);\n this.services.push(this.storageService);\n }\n }, {\n key: "createProtocolService",\n value: function createProtocolService() {\n var _this6 = this;\n\n this.protocolService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNProtocolService"](this.itemManager, this.modelManager, this.deviceInterface, this.storageService, this.crypto);\n this.protocolService.onKeyStatusChange( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee55() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee55$(_context55) {\n while (1) {\n switch (_context55.prev = _context55.next) {\n case 0:\n _context55.next = 2;\n return _this6.notifyEvent(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["ApplicationEvent"].KeyStatusChanged);\n\n case 2:\n case "end":\n return _context55.stop();\n }\n }\n }, _callee55);\n })));\n this.services.push(this.protocolService);\n }\n }, {\n key: "createSessionManager",\n value: function createSessionManager() {\n this.sessionManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNSessionManager"](this.storageService, this.apiService, this.alertService, this.protocolService);\n this.services.push(this.sessionManager);\n }\n }, {\n key: "createSyncManager",\n value: function createSyncManager() {\n var _this7 = this;\n\n this.syncService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNSyncService"](this.itemManager, this.sessionManager, this.protocolService, this.storageService, this.modelManager, this.apiService, this.deviceInterface.interval);\n\n var syncEventCallback = /*#__PURE__*/function () {\n var _ref13 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee56(eventName) {\n var appEvent;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee56$(_context56) {\n while (1) {\n switch (_context56.prev = _context56.next) {\n case 0:\n appEvent = Object(_Lib_events__WEBPACK_IMPORTED_MODULE_3__["applicationEventForSyncEvent"])(eventName);\n\n if (!appEvent) {\n _context56.next = 4;\n break;\n }\n\n _context56.next = 4;\n return _this7.notifyEvent(appEvent);\n\n case 4:\n _context56.next = 6;\n return _this7.protocolService.onSyncEvent(eventName);\n\n case 6:\n case "end":\n return _context56.stop();\n }\n }\n }, _callee56);\n }));\n\n return function syncEventCallback(_x55) {\n return _ref13.apply(this, arguments);\n };\n }();\n\n var uninstall = this.syncService.addEventObserver(syncEventCallback);\n this.serviceObservers.push(uninstall);\n this.services.push(this.syncService);\n }\n }, {\n key: "createChallengeService",\n value: function createChallengeService() {\n this.challengeService = new _services__WEBPACK_IMPORTED_MODULE_13__["ChallengeService"](this.storageService, this.protocolService);\n this.services.push(this.challengeService);\n }\n }, {\n key: "createPrivilegesService",\n value: function createPrivilegesService() {\n this.privilegesService = new _services__WEBPACK_IMPORTED_MODULE_13__["SNPrivilegesService"](this.itemManager, this.syncService, this.singletonManager, this.protocolService, this.storageService, this.sessionManager);\n this.services.push(this.privilegesService);\n }\n }, {\n key: "createHistoryManager",\n value: function createHistoryManager() {\n this.historyManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNHistoryManager"](this.itemManager, this.storageService, [_Models_content_types__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Note], this.deviceInterface.timeout);\n this.services.push(this.historyManager);\n }\n }, {\n key: "createActionsManager",\n value: function createActionsManager() {\n this.actionsManager = new _services__WEBPACK_IMPORTED_MODULE_13__["SNActionsService"](this.itemManager, this.alertService, this.deviceInterface, this.httpService, this.modelManager, this.protocolService, this.syncService);\n this.services.push(this.actionsManager);\n }\n }, {\n key: "shouldSkipClass",\n value: function shouldSkipClass(classCandidate) {\n return this.skipClasses && this.skipClasses.includes(classCandidate);\n }\n }, {\n key: "getClass",\n value: function getClass(base) {\n var swapClass = this.swapClasses && this.swapClasses.find(function (candidate) {\n return candidate.swap === base;\n });\n\n if (swapClass) {\n return swapClass.with;\n } else {\n return base;\n }\n }\n }]);\n\n return SNApplication;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvYXBwbGljYXRpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvYXBwbGljYXRpb24udHM/ZDliZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdWlkcyB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uU3RhZ2UgfSBmcm9tICdATGliL3N0YWdlcyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkV2ZW50LCBhcHBsaWNhdGlvbkV2ZW50Rm9yU3luY0V2ZW50IH0gZnJvbSAnQExpYi9ldmVudHMnO1xuaW1wb3J0IHsgVXVpZCB9IGZyb20gJ0BMaWIvdXVpZCc7XG5pbXBvcnQgeyBNdXRhdGlvblR5cGUgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDaGFsbGVuZ2UsIENoYWxsZW5nZVR5cGUsIENoYWxsZW5nZVJlYXNvbiB9IGZyb20gJy4vY2hhbGxlbmdlcyc7XG5pbXBvcnQgeyByZW1vdmVGcm9tQXJyYXksIGlzTnVsbE9yVW5kZWZpbmVkLCBpc1N0cmluZywgc2xlZXAgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IENvcHlQYXlsb2FkLCBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzIH0gZnJvbSAnQFNlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZSc7XG5pbXBvcnQgeyBTTk1pZ3JhdGlvblNlcnZpY2UsIFNOQWN0aW9uc1NlcnZpY2UsIFNOQXBpU2VydmljZSwgUGF5bG9hZE1hbmFnZXIsIFNOUHJvdG9jb2xTZXJ2aWNlLCBTTlByaXZpbGVnZXNTZXJ2aWNlLCBTTkhpc3RvcnlNYW5hZ2VyLCBTTkFsZXJ0U2VydmljZSwgU05TZXNzaW9uTWFuYWdlciwgU05Db21wb25lbnRNYW5hZ2VyLCBTTkh0dHBTZXJ2aWNlLCBTTlNpbmdsZXRvbk1hbmFnZXIsIFNOU3RvcmFnZVNlcnZpY2UsIFNOU3luY1NlcnZpY2UsIENoYWxsZW5nZVNlcnZpY2UsIFN5bmNNb2RlcywgU3luY1F1ZXVlU3RyYXRlZ3ksIEl0ZW1NYW5hZ2VyIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBBUElfTUVTU0FHRV9HRU5FUklDX1NZTkNfRkFJTCwgSW5zdWZmaWNpZW50UGFzc3dvcmRNZXNzYWdlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkvbWVzc2FnZXMnO1xuaW1wb3J0IHsgTUlOSU1VTV9QQVNTV09SRF9MRU5HVEggfSBmcm9tICcuL3NlcnZpY2VzL2FwaS9zZXNzaW9uX21hbmFnZXInO1xuLyoqIEhvdyBvZnRlbiB0byBhdXRvbWF0aWNhbGx5IHN5bmMsIGluIG1pbGxpc2Vjb25kcyAqL1xuY29uc3QgREVGQVVMVF9BVVRPX1NZTkNfSU5URVJWQUwgPSAzMDAwMDtcbi8qKiBUaGUgbWFpbiBlbnRyeXBvaW50IG9mIGFuIGFwcGxpY2F0aW9uLiAqL1xuZXhwb3J0IGNsYXNzIFNOQXBwbGljYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBlbnZpcm9ubWVudCBUaGUgRW52aXJvbm1lbnQgdGhhdCBpZGVudGlmaWVzIHlvdXIgYXBwbGljYXRpb24uXG4gICAgICogQHBhcmFtIHBsYXRmb3JtIFRoZSBQbGF0Zm9ybSB0aGF0IGlkZW50aWZpZXMgeW91ciBhcHBsaWNhdGlvbi5cbiAgICAgKiBAcGFyYW0gbmFtZXNwYWNlIEEgdW5pcXVlIGlkZW50aWZpZXIgdG8gbmFtZXNwYWNlIHN0b3JhZ2UgYW5kXG4gICAgICogIG90aGVyIHBlcnNpc3RlbnQgcHJvcGVydGllcy4gRGVmYXVsdHMgdG8gZW1wdHkgc3RyaW5nLlxuICAgICAqIEBwYXJhbSBjcnlwdG8gVGhlIHBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbiBvZiBTTlB1cmVDcnlwdG8gdG8gdXNlLlxuICAgICAqIFdlYiB1c2VzIFNOV2ViQ3J5cHRvLCBtb2JpbGUgdXNlcyBTTlJlYWN0TmF0aXZlQ3J5cHRvLlxuICAgICAqIEBwYXJhbSBzd2FwQ2xhc3NlcyBHaXZlcyBjb25zdW1lcnMgdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSB0aGVpciBvd24gY3VzdG9tXG4gICAgICogc3ViY2xhc3MgZm9yIGEgc2VydmljZS4gc3dhcENsYXNzZXMgc2hvdWxkIGJlIGFuIGFycmF5ICBvZiBrZXkvdmFsdWUgcGFpcnNcbiAgICAgKiBjb25zaXN0aW5nIG9mIGtleXMgJ3N3YXAnIGFuZCAnd2l0aCcuICAnc3dhcCcgaXMgdGhlIGJhc2UgY2xhc3MgeW91IHdpc2ggdG8gcmVwbGFjZSxcbiAgICAgKiBhbmQgJ3dpdGgnICBpcyB0aGUgY3VzdG9tIHN1YmNsYXNzIHRvIHVzZS5cbiAgICAgKiBAcGFyYW0gc2tpcENsYXNzZXMgQW4gYXJyYXkgb2YgY2xhc3NlcyB0byBza2lwIG1ha2luZyBzZXJ2aWNlcyBmb3IuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQsIHBsYXRmb3JtLCBkZXZpY2VJbnRlcmZhY2UsIGNyeXB0bywgbmFtZXNwYWNlLCBzd2FwQ2xhc3Nlcywgc2tpcENsYXNzZXMpIHtcbiAgICAgICAgdGhpcy5ldmVudEhhbmRsZXJzID0gW107XG4gICAgICAgIHRoaXMuc2VydmljZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zdHJlYW1SZW1vdmVycyA9IFtdO1xuICAgICAgICB0aGlzLnNlcnZpY2VPYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5tYW5hZ2VkU3Vic2NyaWJlcnMgPSBbXTtcbiAgICAgICAgLyoqIFRydWUgaWYgdGhlIHJlc3VsdCBvZiBkZXZpY2VJbnRlcmZhY2Uub3BlbkRhdGFiYXNlIHlpZWxkcyBhIG5ldyBkYXRhYmFzZSBiZWluZyBjcmVhdGVkICovXG4gICAgICAgIHRoaXMuY3JlYXRlZE5ld0RhdGFiYXNlID0gZmFsc2U7XG4gICAgICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgc3RhcnRlZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBsYXVuY2hlZCkgKi9cbiAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIC8qKiBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgbGF1bmNoZWQgKi9cbiAgICAgICAgdGhpcy5sYXVuY2hlZCA9IGZhbHNlO1xuICAgICAgICAvKiogV2hldGhlciB0aGUgYXBwbGljYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkIHZpYSAuZGVpbml0KCkgKi9cbiAgICAgICAgdGhpcy5kZWFsbG9jZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKCFkZXZpY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgICAgIHRocm93ICdEZXZpY2UgSW50ZXJmYWNlIG11c3QgYmUgc3VwcGxpZWQuJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVudmlyb25tZW50KSB7XG4gICAgICAgICAgICB0aHJvdyAnRW52aXJvbm1lbnQgbXVzdCBiZSBzdXBwbGllZCB3aGVuIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uLic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwbGF0Zm9ybSkge1xuICAgICAgICAgICAgdGhyb3cgJ1BsYXRmb3JtIG11c3QgYmUgc3VwcGxpZWQgd2hlbiBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbi4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3J5cHRvKSB7XG4gICAgICAgICAgICB0aHJvdyAnQ3J5cHRvIGhhcyB0byBiZSBzdXBwbGllZCB3aGVuIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uLic7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgICAgICB0aGlzLnBsYXRmb3JtID0gcGxhdGZvcm07XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlIHx8ICcnO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IGRldmljZUludGVyZmFjZTtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSBjcnlwdG87XG4gICAgICAgIHRoaXMuc3dhcENsYXNzZXMgPSBzd2FwQ2xhc3NlcztcbiAgICAgICAgdGhpcy5za2lwQ2xhc3NlcyA9IHNraXBDbGFzc2VzO1xuICAgICAgICB0aGlzLmNvbnN0cnVjdFNlcnZpY2VzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBmaXJzdCB0aGluZyBjb25zdW1lcnMgc2hvdWxkIGNhbGwgd2hlbiBzdGFydGluZyB0aGVpciBhcHAuXG4gICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGxvYWQgYWxsIHNlcnZpY2VzIGluIHRoZWlyIGNvcnJlY3Qgb3JkZXIuXG4gICAgICovXG4gICAgYXN5bmMgcHJlcGFyZUZvckxhdW5jaChjYWxsYmFjaykge1xuICAgICAgICB0aGlzLnNldExhdW5jaENhbGxiYWNrKGNhbGxiYWNrKTtcbiAgICAgICAgY29uc3QgZGF0YWJhc2VSZXN1bHQgPSBhd2FpdCB0aGlzLmRldmljZUludGVyZmFjZS5vcGVuRGF0YWJhc2UoKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlFdmVudChBcHBsaWNhdGlvbkV2ZW50LkxvY2FsRGF0YWJhc2VSZWFkRXJyb3IsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNyZWF0ZWROZXdEYXRhYmFzZSA9IGRhdGFiYXNlUmVzdWx0Py5pc05ld0RhdGFiYXNlIHx8IGZhbHNlO1xuICAgICAgICBhd2FpdCB0aGlzLm1pZ3JhdGlvblNlcnZpY2UuaW5pdGlhbGl6ZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuUHJlcGFyaW5nRm9yTGF1bmNoXzApO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmluaXRpYWxpemVGcm9tRGlzaygpO1xuICAgICAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5pbml0aWFsaXplKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3RhZ2UoQXBwbGljYXRpb25TdGFnZS5SZWFkeUZvckxhdW5jaF8wNSk7XG4gICAgICAgIHRoaXMuc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoQXBwbGljYXRpb25FdmVudC5TdGFydGVkKTtcbiAgICB9XG4gICAgc2V0TGF1bmNoQ2FsbGJhY2soY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLnNlbmRDaGFsbGVuZ2UgPSBjYWxsYmFjay5yZWNlaXZlQ2hhbGxlbmdlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSdW5zIG1pZ3JhdGlvbnMsIGhhbmRsZXMgZGV2aWNlIGF1dGhlbnRpY2F0aW9uLCB1bmxvY2tzIGFwcGxpY2F0aW9uLCBhbmRcbiAgICAgKiBpc3N1ZXMgYSBjYWxsYmFjayBpZiBhIGRldmljZSBhY3RpdmF0aW9uIHJlcXVpcmVzIHVzZXIgaW5wdXRcbiAgICAgKiAoaS5lIGxvY2FsIHBhc3Njb2RlIG9yIGZpbmdlcnByaW50KS5cbiAgICAgKiBAcGFyYW0gYXdhaXREYXRhYmFzZUxvYWRcbiAgICAgKiBPcHRpb24gdG8gYXdhaXQgZGF0YWJhc2UgbG9hZCBiZWZvcmUgbWFya2luZyB0aGUgYXBwIGFzIHJlYWR5LlxuICAgICAqL1xuICAgIGFzeW5jIGxhdW5jaChhd2FpdERhdGFiYXNlTG9hZCA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMubGF1bmNoZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbGF1bmNoQ2hhbGxlbmdlID0gYXdhaXQgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLmdldExhdW5jaENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobGF1bmNoQ2hhbGxlbmdlKSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhbGxlbmdlU2VydmljZS5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShsYXVuY2hDaGFsbGVuZ2UpO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdMYXVuY2ggY2hhbGxlbmdlIHdhcyBjYW5jZWxsZWQuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUxhdW5jaENoYWxsZW5nZVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zdG9yYWdlU2VydmljZS5pc1N0b3JhZ2VXcmFwcGVkKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZGVjcnlwdFN0b3JhZ2UoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuU3RvcmFnZURlY3J5cHRlZF8wOSk7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZS5sb2FkSG9zdCgpO1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLmluaXRpYWxpemVGcm9tRGlzaygpO1xuICAgICAgICB0aGlzLmhpc3RvcnlNYW5hZ2VyLmluaXRpYWxpemVGcm9tRGlzaygpO1xuICAgICAgICB0aGlzLmxhdW5jaGVkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnlFdmVudChBcHBsaWNhdGlvbkV2ZW50LkxhdW5jaGVkKTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdGFnZShBcHBsaWNhdGlvblN0YWdlLkxhdW5jaGVkXzEwKTtcbiAgICAgICAgY29uc3QgZGF0YWJhc2VQYXlsb2FkcyA9IGF3YWl0IHRoaXMuc3luY1NlcnZpY2UuZ2V0RGF0YWJhc2VQYXlsb2FkcygpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuTG9hZGluZ0RhdGFiYXNlXzExKTtcbiAgICAgICAgaWYgKHRoaXMuY3JlYXRlZE5ld0RhdGFiYXNlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLm9uTmV3RGF0YWJhc2VDcmVhdGVkKCk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICogV2UgZG9uJ3Qgd2FudCB0byBhd2FpdCB0aGlzLCBhcyB3ZSB3YW50IHRvIGJlZ2luIGFsbG93aW5nIHRoZSBhcHAgdG8gZnVuY3Rpb25cbiAgICAgICAgKiBiZWZvcmUgbG9jYWwgZGF0YSBoYXMgYmVlbiBsb2FkZWQgZnVsbHkuIFdlIGF3YWl0IG9ubHkgaW5pdGlhbFxuICAgICAgICAqIGBnZXREYXRhYmFzZVBheWxvYWRzYCB0byBsb2NrIGluIG9uIGRhdGFiYXNlIHN0YXRlLlxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBsb2FkUHJvbWlzZSA9IHRoaXMuc3luY1NlcnZpY2UubG9hZERhdGFiYXNlUGF5bG9hZHMoZGF0YWJhc2VQYXlsb2FkcylcbiAgICAgICAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlYWxsb2NlZCkge1xuICAgICAgICAgICAgICAgIHRocm93ICdBcHBsaWNhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3RhZ2UoQXBwbGljYXRpb25TdGFnZS5Mb2FkZWREYXRhYmFzZV8xMik7XG4gICAgICAgICAgICB0aGlzLmJlZ2luQXV0b1N5bmNUaW1lcigpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2Uuc3luYyh7XG4gICAgICAgICAgICAgICAgbW9kZTogU3luY01vZGVzLkRvd25sb2FkRmlyc3RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGF3YWl0RGF0YWJhc2VMb2FkKSB7XG4gICAgICAgICAgICBhd2FpdCBsb2FkUHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBoYW5kbGVMYXVuY2hDaGFsbGVuZ2VSZXNwb25zZShyZXNwb25zZSkge1xuICAgICAgICBpZiAocmVzcG9uc2UuY2hhbGxlbmdlLnR5cGVzLmluY2x1ZGVzKENoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZSkpIHtcbiAgICAgICAgICAgIGxldCB3cmFwcGluZ0tleSA9IHJlc3BvbnNlLmFydGlmYWN0cy53cmFwcGluZ0tleTtcbiAgICAgICAgICAgIGlmICghd3JhcHBpbmdLZXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlLmdldFZhbHVlRm9yVHlwZShDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGUpO1xuICAgICAgICAgICAgICAgIHdyYXBwaW5nS2V5ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY29tcHV0ZVdyYXBwaW5nS2V5KHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnVud3JhcFJvb3RLZXkod3JhcHBpbmdLZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJlZ2luQXV0b1N5bmNUaW1lcigpIHtcbiAgICAgICAgdGhpcy5hdXRvU3luY0ludGVydmFsID0gdGhpcy5kZXZpY2VJbnRlcmZhY2UuaW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zeW5jU2VydmljZS5sb2coJ1N5bmNpbmcgZnJvbSBhdXRvc3luYycpO1xuICAgICAgICAgICAgdGhpcy5zeW5jKCk7XG4gICAgICAgIH0sIERFRkFVTFRfQVVUT19TWU5DX0lOVEVSVkFMKTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU3RhZ2Uoc3RhZ2UpIHtcbiAgICAgICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIHRoaXMuc2VydmljZXMpIHtcbiAgICAgICAgICAgIGF3YWl0IHNlcnZpY2UuaGFuZGxlQXBwbGljYXRpb25TdGFnZShzdGFnZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHNpbmdsZUV2ZW50IFdoZXRoZXIgdG8gb25seSBsaXN0ZW4gZm9yIGEgcGFydGljdWxhciBldmVudC5cbiAgICAgKi9cbiAgICBhZGRFdmVudE9ic2VydmVyKGNhbGxiYWNrLCBzaW5nbGVFdmVudCkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHsgY2FsbGJhY2ssIHNpbmdsZUV2ZW50IH07XG4gICAgICAgIHRoaXMuZXZlbnRIYW5kbGVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmV2ZW50SGFuZGxlcnMsIG9ic2VydmVyKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgYWRkU2luZ2xlRXZlbnRPYnNlcnZlcihldmVudCwgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRDYWxsYmFjayA9IGFzeW5jIChmaXJlZEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlyZWRFdmVudCA9PT0gZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEV2ZW50T2JzZXJ2ZXIoZmlsdGVyZWRDYWxsYmFjaywgZXZlbnQpO1xuICAgIH1cbiAgICBhc3luYyBub3RpZnlFdmVudChldmVudCwgZGF0YSkge1xuICAgICAgICBmb3IgKGNvbnN0IG9ic2VydmVyIG9mIHRoaXMuZXZlbnRIYW5kbGVycy5zbGljZSgpKSB7XG4gICAgICAgICAgICBpZiAob2JzZXJ2ZXIuc2luZ2xlRXZlbnQgJiYgb2JzZXJ2ZXIuc2luZ2xlRXZlbnQgPT09IGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgb2JzZXJ2ZXIuY2FsbGJhY2soZXZlbnQsIGRhdGEgfHwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIW9ic2VydmVyLnNpbmdsZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgb2JzZXJ2ZXIuY2FsbGJhY2soZXZlbnQsIGRhdGEgfHwge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWlncmF0aW9uU2VydmljZS5oYW5kbGVBcHBsaWNhdGlvbkV2ZW50KGV2ZW50KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgbG9jYWwgZGF0YWJhc2UgaGFzIGNvbXBsZXRlZCBsb2FkaW5nIGxvY2FsIGl0ZW1zLlxuICAgICAqL1xuICAgIGlzRGF0YWJhc2VMb2FkZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLmlzRGF0YWJhc2VMb2FkZWQoKTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICBjb25zdCBkaXJ0aWVkID0gQ29weVBheWxvYWQocGF5bG9hZCwge1xuICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQoZGlydGllZCwgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYW4gaXRlbSBieSBVVUlELlxuICAgICAqL1xuICAgIGZpbmRJdGVtKHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zLlxuICAgICAqL1xuICAgIGFsbEl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5pdGVtcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYW4gaXRlbSBieSBwcmVkaWNhdGUuXG4gICAgKi9cbiAgICBmaW5kSXRlbXMocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmluZHMgYW4gaXRlbSBieSBwcmVkaWNhdGUuXG4gICAgICovXG4gICAgZ2V0QWxsKHV1aWRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtcyh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRha2VzIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0IGl0ZW0gYW5kIGVtaXRzIGl0IG9udG8gZ2xvYmFsIHN0YXRlLlxuICAgICAqL1xuICAgIGFzeW5jIG1lcmdlSXRlbShpdGVtLCBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZW1pdEl0ZW1Gcm9tUGF5bG9hZChpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbigpLCBzb3VyY2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbWFuYWdlZCBpdGVtLlxuICAgICAqIEBwYXJhbSBuZWVkc1N5bmMgIFdoZXRoZXIgdG8gbWFyayB0aGUgaXRlbSBhcyBuZWVkaW5nIHN5bmMuIGBhZGRgIG11c3QgYWxzbyBiZSB0cnVlLlxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZU1hbmFnZWRJdGVtKGNvbnRlbnRUeXBlLCBjb250ZW50LCBuZWVkc1N5bmMgPSBmYWxzZSwgb3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY3JlYXRlSXRlbShjb250ZW50VHlwZSwgY29udGVudCwgbmVlZHNTeW5jLCBvdmVycmlkZSk7XG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIHVubWFuYWdlZCBpdGVtIHRoYXQgY2FuIGJlIGFkZGVkIGxhdGVyLlxuICAgICAqIEBwYXJhbSBuZWVkc1N5bmMgIFdoZXRoZXIgdG8gbWFyayB0aGUgaXRlbSBhcyBuZWVkaW5nIHN5bmMuIGBhZGRgIG11c3QgYWxzbyBiZSB0cnVlLlxuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZVRlbXBsYXRlSXRlbShjb250ZW50VHlwZSwgY29udGVudCkge1xuICAgICAgICBjb25zdCBpdGVtID0gYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jcmVhdGVUZW1wbGF0ZUl0ZW0oY29udGVudFR5cGUsIGNvbnRlbnQpO1xuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiB1bm1hbmFnZWQgaXRlbSBmcm9tIGEgcGF5bG9hZC5cbiAgICAgKi9cbiAgICBjcmVhdGVJdGVtRnJvbVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIHVubWFuYWdlZCBwYXlsb2FkIGZyb20gYW55IG9iamVjdCwgd2hlcmUgdGhlIHJhdyBvYmplY3RcbiAgICAgKiByZXByZXNlbnRzIHRoZSBzYW1lIGRhdGEgYSBwYXlsb2FkIHdvdWxkLlxuICAgICAqL1xuICAgIGNyZWF0ZVBheWxvYWRGcm9tT2JqZWN0KG9iamVjdCkge1xuICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qob2JqZWN0KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIGRhdGUgb2YgbGFzdCBzeW5jXG4gICAgICovXG4gICAgZ2V0TGFzdFN5bmNEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jU2VydmljZS5nZXRMYXN0U3luY0RhdGUoKTtcbiAgICB9XG4gICAgZ2V0U3luY1N0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2UuZ2V0U3RhdHVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpc1VzZXJNb2RpZmllZCAgV2hldGhlciB0byBjaGFuZ2UgdGhlIG1vZGlmaWVkIGRhdGUgdGhlIHVzZXJcbiAgICAgKiBzZWVzIG9mIHRoZSBpdGVtLlxuICAgICAqL1xuICAgIGFzeW5jIHNldEl0ZW1OZWVkc1N5bmMoaXRlbSwgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5zZXRJdGVtRGlydHkoaXRlbS51dWlkLCBpc1VzZXJNb2RpZmllZCk7XG4gICAgfVxuICAgIGFzeW5jIHNldEl0ZW1zTmVlZHNTeW5jKGl0ZW1zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zRGlydHkoVXVpZHMoaXRlbXMpKTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlSXRlbShpdGVtKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbVRvQmVEZWxldGVkKGl0ZW0udXVpZCk7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlSXRlbUxvY2FsbHkoaXRlbSkge1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyLnJlbW92ZUl0ZW1Mb2NhbGx5KGl0ZW0pO1xuICAgIH1cbiAgICBhc3luYyBlbXB0eVRyYXNoKCkge1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmVtcHR5VHJhc2goKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luYygpO1xuICAgIH1cbiAgICBnZXRUcmFzaGVkSXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLnRyYXNoZWRJdGVtcztcbiAgICB9XG4gICAgc2V0RGlzcGxheU9wdGlvbnMoY29udGVudFR5cGUsIHNvcnRCeSwgZGlyZWN0aW9uLCBmaWx0ZXIpIHtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlci5zZXREaXNwbGF5T3B0aW9ucyhjb250ZW50VHlwZSwgc29ydEJ5LCBkaXJlY3Rpb24sIGZpbHRlcik7XG4gICAgfVxuICAgIGdldERpc3BsYXlhYmxlSXRlbXMoY29udGVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZ2V0RGlzcGxheWFibGVJdGVtcyhjb250ZW50VHlwZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluc2VydHMgdGhlIGlucHV0IGl0ZW0gYnkgaXRzIHBheWxvYWQgcHJvcGVydGllcywgYW5kIG1hcmtzIHRoZSBpdGVtIGFzIGRpcnR5LlxuICAgICAqIEEgc3luYyBpcyBub3QgcGVyZm9ybWVkIGFmdGVyIGFuIGl0ZW0gaXMgaW5zZXJ0ZWQuIFRoaXMgbXVzdCBiZSBoYW5kbGVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICovXG4gICAgYXN5bmMgaW5zZXJ0SXRlbShpdGVtKSB7XG4gICAgICAgIC8qIEZpcnN0IGluc2VydCB0aGUgaXRlbSAqL1xuICAgICAgICBjb25zdCBpbnNlcnRlZEl0ZW0gPSBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmluc2VydEl0ZW0oaXRlbSk7XG4gICAgICAgIC8qIE5vdyBjaGFuZ2UgdGhlIGl0ZW0gc28gdGhhdCBpdCdzIG1hcmtlZCBhcyBkaXJ0eSAqL1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmNoYW5nZUl0ZW1zKFtpbnNlcnRlZEl0ZW0udXVpZF0pO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSXRlbShpdGVtLnV1aWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTYXZlcyB0aGUgaXRlbSBieSB1dWlkIGJ5IGZpbmRpbmcgaXQsIHNldHRpbmcgaXQgYXMgZGlydHkgaWYgaXRzIG5vdCBhbHJlYWR5LFxuICAgICAqIGFuZCBwZXJmb3JtaW5nIGEgc3luYyByZXF1ZXN0LlxuICAgICAqL1xuICAgIGFzeW5jIHNhdmVJdGVtKHV1aWQpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2F2ZSBub24taW5zZXJ0ZWQgaXRlbScpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXRlbS5kaXJ0eSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtKHV1aWQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNdXRhdGVzIGEgcHJlLWV4aXN0aW5nIGl0ZW0sIG1hcmtzIGl0IGFzIGRpcnR5LCBhbmQgc3luY3MgaXRcbiAgICAgKi9cbiAgICBhc3luYyBjaGFuZ2VBbmRTYXZlSXRlbSh1dWlkLCBtdXRhdGUsIGlzVXNlck1vZGlmaWVkID0gZmFsc2UsIHBheWxvYWRTb3VyY2UsIHN5bmNPcHRpb25zKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHRvIGNoYW5nZSBpdGVtJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtcyhbdXVpZF0sIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPyBNdXRhdGlvblR5cGUuVXNlckludGVyYWN0aW9uIDogdW5kZWZpbmVkLCBwYXlsb2FkU291cmNlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKHN5bmNPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW0odXVpZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICogTXV0YXRlcyBwcmUtZXhpc3RpbmcgaXRlbXMsIG1hcmtzIHRoZW0gYXMgZGlydHksIGFuZCBzeW5jc1xuICAgICovXG4gICAgYXN5bmMgY2hhbmdlQW5kU2F2ZUl0ZW1zKHV1aWRzLCBtdXRhdGUsIGlzVXNlck1vZGlmaWVkID0gZmFsc2UsIHBheWxvYWRTb3VyY2UsIHN5bmNPcHRpb25zKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbXModXVpZHMsIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPyBNdXRhdGlvblR5cGUuVXNlckludGVyYWN0aW9uIDogdW5kZWZpbmVkLCBwYXlsb2FkU291cmNlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKHN5bmNPcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgKiBNdXRhdGVzIGEgcHJlLWV4aXN0aW5nIGl0ZW0gYW5kIG1hcmtzIGl0IGFzIGRpcnR5LiBEb2VzIG5vdCBzeW5jIGNoYW5nZXMuXG4gICAgKi9cbiAgICBhc3luYyBjaGFuZ2VJdGVtKHV1aWQsIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWlzU3RyaW5nKHV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignTXVzdCB1c2UgdXVpZCB0byBjaGFuZ2UgaXRlbScpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbXMoW3V1aWRdLCBtdXRhdGUsIGlzVXNlck1vZGlmaWVkID8gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiA6IHVuZGVmaW5lZCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJdGVtKHV1aWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNdXRhdGVzIGEgcHJlLWV4aXN0aW5nIGl0ZW1zIGFuZCBtYXJrcyB0aGVtIGFzIGRpcnR5LiBEb2VzIG5vdCBzeW5jIGNoYW5nZXMuXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlSXRlbXModXVpZHMsIG11dGF0ZSwgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtcyh1dWlkcywgbXV0YXRlLCBpc1VzZXJNb2RpZmllZCA/IE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24gOiB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBnZXRJdGVtcyhjb250ZW50VHlwZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5nZXRJdGVtcyhjb250ZW50VHlwZSk7XG4gICAgfVxuICAgIG5vdGVzTWF0Y2hpbmdTbWFydFRhZyhzbWFydFRhZykge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5ub3Rlc01hdGNoaW5nU21hcnRUYWcoc21hcnRUYWcpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhbiBpdGVtJ3MgZGlyZWN0IHJlZmVyZW5jZXMgKi9cbiAgICByZWZlcmVuY2VzRm9ySXRlbShpdGVtLCBjb250ZW50VHlwZSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuaXRlbU1hbmFnZXIucmVmZXJlbmNlc0Zvckl0ZW0oaXRlbS51dWlkKTtcbiAgICAgICAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlcy5maWx0ZXIoKHJlZikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWY/LmNvbnRlbnRfdHlwZSA9PT0gY29udGVudFR5cGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG4gICAgLyoqIFJldHVybnMgaXRlbXMgcmVmZXJlbmNpbmcgYW4gaXRlbSAqL1xuICAgIHJlZmVyZW5jaW5nRm9ySXRlbShpdGVtLCBjb250ZW50VHlwZSkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuaXRlbU1hbmFnZXIuaXRlbXNSZWZlcmVuY2luZ0l0ZW0oaXRlbS51dWlkKTtcbiAgICAgICAgaWYgKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gcmVmZXJlbmNlcy5maWx0ZXIoKHJlZikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWY/LmNvbnRlbnRfdHlwZSA9PT0gY29udGVudFR5cGU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG4gICAgZmluZFRhZ0J5VGl0bGUodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZmluZFRhZ0J5VGl0bGUodGl0bGUpO1xuICAgIH1cbiAgICBhc3luYyBmaW5kT3JDcmVhdGVUYWcodGl0bGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZmluZE9yQ3JlYXRlVGFnQnlUaXRsZSh0aXRsZSk7XG4gICAgfVxuICAgIGdldFNtYXJ0VGFncygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZ2V0U21hcnRUYWdzKCk7XG4gICAgfVxuICAgIGdldE5vdGVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIubm90ZUNvdW50O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBCZWdpbiBzdHJlYW1pbmcgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgVUkuIFRoZSBzdHJlYW0gY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWRcbiAgICAgKiBpbW1lZGlhdGVseSB3aXRoIHRoZSBwcmVzZW50IGl0ZW1zIHRoYXQgbWF0Y2ggdGhlIGNvbnN0cmFpbnQsIGFuZCBvdmVyIHRpbWUgd2hlbmV2ZXJcbiAgICAgKiBpdGVtcyBtYXRjaGluZyB0aGUgY29uc3RyYWludCBhcmUgYWRkZWQsIGNoYW5nZWQsIG9yIGRlbGV0ZWQuXG4gICAgICovXG4gICAgc3RyZWFtSXRlbXMoY29udGVudFR5cGUsIHN0cmVhbSkge1xuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHRoaXMuaXRlbU1hbmFnZXIuYWRkT2JzZXJ2ZXIoY29udGVudFR5cGUsIChjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkLCBzb3VyY2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFsbCA9IGNoYW5nZWQuY29uY2F0KGluc2VydGVkKS5jb25jYXQoZGlzY2FyZGVkKTtcbiAgICAgICAgICAgIHN0cmVhbShhbGwsIHNvdXJjZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKiogUHVzaCBjdXJyZW50IHZhbHVlcyBub3cgKi9cbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IHRoaXMuaXRlbU1hbmFnZXIuZ2V0SXRlbXMoY29udGVudFR5cGUpO1xuICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzdHJlYW0obWF0Y2hlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdHJlYW1SZW1vdmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIG9ic2VydmVyKCk7XG4gICAgICAgICAgICByZW1vdmVGcm9tQXJyYXkodGhpcy5zdHJlYW1SZW1vdmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXQgdGhlIHNlcnZlcidzIFVSTFxuICAgICAqL1xuICAgIGFzeW5jIHNldEhvc3QoaG9zdCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnNldEhvc3QoaG9zdCk7XG4gICAgfVxuICAgIGFzeW5jIGdldEhvc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0SG9zdCgpO1xuICAgIH1cbiAgICBnZXRVc2VyKCkge1xuICAgICAgICBpZiAoIXRoaXMubGF1bmNoZWQpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGFjY2VzcyB1c2VyIGJlZm9yZSBhcHBsaWNhdGlvbiB1bmxvY2tlZCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbk1hbmFnZXIuZ2V0VXNlcigpO1xuICAgIH1cbiAgICBhc3luYyBnZXRVc2VyVmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLmdldFVzZXJWZXJzaW9uKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiB1cGdyYWRlIGF2YWlsYWJsZSBmb3IgdGhlIGFjY291bnQgb3IgcGFzc2NvZGVcbiAgICAgKi9cbiAgICBhc3luYyBwcm90b2NvbFVwZ3JhZGVBdmFpbGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sU2VydmljZS51cGdyYWRlQXZhaWxhYmxlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBlbmNyeXB0aW9uIHNvdXJjZSBhdmFpbGFibGVcbiAgICAgKi9cbiAgICBhc3luYyBpc0VuY3J5cHRpb25BdmFpbGFibGUoKSB7XG4gICAgICAgIHJldHVybiAhaXNOdWxsT3JVbmRlZmluZWQodGhpcy5nZXRVc2VyKCkpIHx8IHRoaXMuaGFzUGFzc2NvZGUoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXJyb3JzLCBpZiBhbnkuXG4gICAgICovXG4gICAgYXN5bmMgdXBncmFkZVByb3RvY29sVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3QgaGFzUGFzc2NvZGUgPSB0aGlzLmhhc1Bhc3Njb2RlKCk7XG4gICAgICAgIGNvbnN0IGhhc0FjY291bnQgPSAhdGhpcy5ub0FjY291bnQoKTtcbiAgICAgICAgY29uc3QgdHlwZXMgPSBbXTtcbiAgICAgICAgaWYgKGhhc1Bhc3Njb2RlKSB7XG4gICAgICAgICAgICB0eXBlcy5wdXNoKENoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0FjY291bnQpIHtcbiAgICAgICAgICAgIHR5cGVzLnB1c2goQ2hhbGxlbmdlVHlwZS5BY2NvdW50UGFzc3dvcmQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNoYWxsZW5nZSA9IG5ldyBDaGFsbGVuZ2UodHlwZXMsIENoYWxsZW5nZVJlYXNvbi5Qcm90b2NvbFVwZ3JhZGUpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhbGxlbmdlU2VydmljZS5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShjaGFsbGVuZ2UpO1xuICAgICAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBhc3Njb2RlO1xuICAgICAgICBpZiAoaGFzUGFzc2NvZGUpIHtcbiAgICAgICAgICAgIC8qIFVwZ3JhZGUgcGFzc2NvZGUgdmVyc2lvbiAqL1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNwb25zZS5nZXRWYWx1ZUZvclR5cGUoQ2hhbGxlbmdlVHlwZS5Mb2NhbFBhc3Njb2RlKTtcbiAgICAgICAgICAgIHBhc3Njb2RlID0gdmFsdWUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhhc0FjY291bnQpIHtcbiAgICAgICAgICAgIC8qIFVwZ3JhZGUgYWNjb3VudCB2ZXJzaW9uICovXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlLmdldFZhbHVlRm9yVHlwZShDaGFsbGVuZ2VUeXBlLkFjY291bnRQYXNzd29yZCk7XG4gICAgICAgICAgICBjb25zdCBwYXNzd29yZCA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYW5nZVBhc3N3b3JkKHBhc3N3b3JkLCBwYXNzd29yZCwgcGFzc2NvZGUsIHsgdmFsaWRhdGVQYXNzd29yZFN0cmVuZ3RoOiBmYWxzZSB9KTtcbiAgICAgICAgICAgIGlmIChjaGFuZ2VSZXNwb25zZT8uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW2NoYW5nZVJlc3BvbnNlLmVycm9yXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXNzY29kZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hhbmdlUGFzc2NvZGUocGFzc2NvZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG5vQWNjb3VudCgpIHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuZ2V0VXNlcigpO1xuICAgICAgICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQodXNlcik7XG4gICAgfVxuICAgIC8qKlxuICBcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqIC5hZmZlY3RlZEl0ZW1zOiBJdGVtcyB0aGF0IHdlcmUgZWl0aGVyIGNyZWF0ZWQgb3IgZGlydGllZCBieSB0aGlzIGltcG9ydFxuICAgICAqIC5lcnJvckNvdW50OiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgd2VyZSBub3QgaW1wb3J0ZWQgZHVlIHRvIGZhaWx1cmUgdG8gZGVjcnlwdC5cbiAgICAgKi9cbiAgICBhc3luYyBpbXBvcnREYXRhKGRhdGEsIHBhc3N3b3JkLCBhd2FpdFN5bmMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRzQnlEZWNyeXB0aW5nQmFja3VwRmlsZShkYXRhLCBwYXNzd29yZCk7XG4gICAgICAgIGNvbnN0IHZhbGlkUGF5bG9hZHMgPSBkZWNyeXB0ZWRQYXlsb2Fkcy5maWx0ZXIoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhcGF5bG9hZC5lcnJvckRlY3J5cHRpbmc7XG4gICAgICAgIH0pLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgLyogRG9uJ3Qgd2FudCB0byBhY3RpdmF0ZSBhbnkgY29tcG9uZW50cyBkdXJpbmcgaW1wb3J0IHByb2Nlc3MgaW5cbiAgICAgICAgICAgICAqIGNhc2Ugb2YgZXhjZXB0aW9ucyBicmVha2luZyB1cCB0aGUgaW1wb3J0IHByb2NjZXNzICovXG4gICAgICAgICAgICBpZiAocGF5bG9hZC5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLkNvbXBvbmVudCAmJiBwYXlsb2FkLnNhZmVDb250ZW50LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWQuc2FmZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYWZmZWN0ZWRVdWlkcyA9IGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmltcG9ydFBheWxvYWRzKHZhbGlkUGF5bG9hZHMpO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5zeW5jKCk7XG4gICAgICAgIGlmIChhd2FpdFN5bmMpIHtcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWZmZWN0ZWRJdGVtcyA9IHRoaXMuZ2V0QWxsKGFmZmVjdGVkVXVpZHMpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWZmZWN0ZWRJdGVtczogYWZmZWN0ZWRJdGVtcyxcbiAgICAgICAgICAgIGVycm9yQ291bnQ6IGRlY3J5cHRlZFBheWxvYWRzLmxlbmd0aCAtIHZhbGlkUGF5bG9hZHMubGVuZ3RoXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBKU09OIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGJhY2t1cCBmb3JtYXQgb2YgYWxsIGl0ZW1zLCBvciBqdXN0IHN1Ykl0ZW1zXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlQmFja3VwRmlsZShzdWJJdGVtcywgaW50ZW50LCByZXR1cm5JZkVtcHR5ID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNyZWF0ZUJhY2t1cEZpbGUoc3ViSXRlbXMsIGludGVudCwgcmV0dXJuSWZFbXB0eSk7XG4gICAgfVxuICAgIGlzRXBoZW1lcmFsU2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuaXNFcGhlbWVyYWxTZXNzaW9uKCk7XG4gICAgfVxuICAgIGxvY2tTeW5jaW5nKCkge1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLmxvY2tTeW5jaW5nKCk7XG4gICAgfVxuICAgIHVubG9ja1N5bmNpbmcoKSB7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2UudW5sb2NrU3luY2luZygpO1xuICAgIH1cbiAgICBhc3luYyBzeW5jKG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3luY1NlcnZpY2Uuc3luYyhvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgaXNPdXRPZlN5bmMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLmlzT3V0T2ZTeW5jKCk7XG4gICAgfVxuICAgIGFzeW5jIHJlc29sdmVPdXRPZlN5bmMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNTZXJ2aWNlLnJlc29sdmVPdXRPZlN5bmMoKTtcbiAgICB9XG4gICAgYXN5bmMgc2V0VmFsdWUoa2V5LCB2YWx1ZSwgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShrZXksIHZhbHVlLCBtb2RlKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0VmFsdWUoa2V5LCBtb2RlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKGtleSwgbW9kZSk7XG4gICAgfVxuICAgIGFzeW5jIHJlbW92ZVZhbHVlKGtleSwgbW9kZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVWYWx1ZShrZXksIG1vZGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGVzIGFsbCBwYXlsb2FkcyBmcm9tIHN0b3JhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgY2xlYXJEYXRhYmFzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJBbGxQYXlsb2FkcygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGxvd3MgaXRlbXMga2V5cyB0byBiZSByZXdyaXR0ZW4gdG8gbG9jYWwgZGIgb24gbG9jYWwgY3JlZGVudGlhbCBzdGF0dXMgY2hhbmdlLFxuICAgICAqIHN1Y2ggYXMgaWYgcGFzc2NvZGUgaXMgYWRkZWQsIGNoYW5nZWQsIG9yIHJlbW92ZWQuXG4gICAgICogVGhpcyBhbGxvd3MgSW5kZXhlZERCIHVuZW5jcnlwdGVkIGxvZ3MgdG8gYmUgZGVsZXRlZFxuICAgICAqIGBkZWxldGVQYXlsb2Fkc2Agd2lsbCByZW1vdmUgZGF0YSBmcm9tIGJhY2tpbmcgc3RvcmUsXG4gICAgICogYnV0IG5vdCBmcm9tIHdvcmtpbmcgbWVtb3J5IFNlZTpcbiAgICAgKiBodHRwczovL2dpdGh1Yi5jb20vc3RhbmRhcmRub3Rlcy9kZXNrdG9wL2lzc3Vlcy8xMzFcbiAgICAgKi9cbiAgICBhc3luYyByZXdyaXRlSXRlbXNLZXlzKCkge1xuICAgICAgICBjb25zdCBpdGVtc0tleXMgPSB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zS2V5cygpO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IGl0ZW1zS2V5cy5tYXAoKGtleSkgPT4ga2V5LnBheWxvYWRSZXByZXNlbnRhdGlvbigpKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5kZWxldGVQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2UucGVyc2lzdFBheWxvYWRzKHBheWxvYWRzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2l2ZXMgc2VydmljZXMgYSBjaGFuY2UgdG8gY29tcGxldGUgYW55IHNlbnNpdGl2ZSBvcGVyYXRpb25zIGJlZm9yZSB5aWVsZGluZ1xuICAgICAqIEBwYXJhbSBtYXhXYWl0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3Igc2VydmljZXNcbiAgICAgKiB0byBmaW5pc2ggdGFza3MuIDAgbWVhbnMgbm8gbGltaXQuXG4gICAgICovXG4gICAgYXN5bmMgcHJlcGFyZUZvckRlaW5pdChtYXhXYWl0ID0gMCkge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gUHJvbWlzZS5hbGwodGhpcy5zZXJ2aWNlcy5tYXAoKHNlcnZpY2UpID0+IHNlcnZpY2UuYmxvY2tEZWluaXQoKSkpO1xuICAgICAgICBpZiAobWF4V2FpdCA9PT0gMCkge1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8qKiBBd2FpdCB1cCB0byBtYXhXYWl0LiBJZiBub3QgcmVzb2x2ZWQgYnkgdGhlbiwgcmV0dXJuLiAqL1xuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgICAgICAgICBwcm9taXNlLFxuICAgICAgICAgICAgICAgIHNsZWVwKG1heFdhaXQpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdWJtaXRWYWx1ZXNGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlLCB2YWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU2VydmljZS5zdWJtaXRWYWx1ZXNGb3JDaGFsbGVuZ2UoY2hhbGxlbmdlLCB2YWx1ZXMpO1xuICAgIH1cbiAgICBzZXRDaGFsbGVuZ2VDYWxsYmFja3MoeyBjaGFsbGVuZ2UsIG9uVmFsaWRWYWx1ZSwgb25JbnZhbGlkVmFsdWUsIG9uQ29tcGxldGUsIG9uQ2FuY2VsIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlU2VydmljZS5zZXRDaGFsbGVuZ2VDYWxsYmFja3MoY2hhbGxlbmdlLCBvblZhbGlkVmFsdWUsIG9uSW52YWxpZFZhbHVlLCBvbkNvbXBsZXRlLCBvbkNhbmNlbCk7XG4gICAgfVxuICAgIGNhbmNlbENoYWxsZW5nZShjaGFsbGVuZ2UpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLmNhbmNlbENoYWxsZW5nZShjaGFsbGVuZ2UpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXN0cm95cyB0aGUgYXBwbGljYXRpb24gaW5zdGFuY2UuXG4gICAgICovXG4gICAgZGVpbml0KCkge1xuICAgICAgICBjbGVhckludGVydmFsKHRoaXMuYXV0b1N5bmNJbnRlcnZhbCk7XG4gICAgICAgIGZvciAoY29uc3QgdW5pbnN0YWxsT2JzZXJ2ZXIgb2YgdGhpcy5zZXJ2aWNlT2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICB1bmluc3RhbGxPYnNlcnZlcigpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgdW5pbnN0YWxsU3Vic2NyaWJlciBvZiB0aGlzLm1hbmFnZWRTdWJzY3JpYmVycykge1xuICAgICAgICAgICAgdW5pbnN0YWxsU3Vic2NyaWJlcigpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qgc2VydmljZSBvZiB0aGlzLnNlcnZpY2VzKSB7XG4gICAgICAgICAgICBzZXJ2aWNlLmRlaW5pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlLmRlaW5pdCgpO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlZE5ld0RhdGFiYXNlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VydmljZXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zZXJ2aWNlT2JzZXJ2ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMubWFuYWdlZFN1YnNjcmliZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RyZWFtUmVtb3ZlcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5jbGVhclNlcnZpY2VzKCk7XG4gICAgICAgIHRoaXMuZGVhbGxvY2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydGVkID0gZmFsc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHdyYXBwaW5nIGtleSBmb3Igb3BlcmF0aW9ucyB0aGF0IHJlcXVpcmUgcmVzYXZpbmcgdGhlIHJvb3Qga2V5XG4gICAgICogKGNoYW5naW5nIHRoZSBhY2NvdW50IHBhc3N3b3JkLCBzaWduaW5nIGluLCByZWdpc3RlcmluZywgb3IgdXBncmFkaW5nIHByb3RvY29sKVxuICAgICAqIFJldHVybnMgZW1wdHkgb2JqZWN0IGlmIG5vIHBhc3Njb2RlIGlzIGNvbmZpZ3VyZWQuXG4gICAgICogT3RoZXJ3aXNlIHJldHVybnMge2NhbmNsZWQ6IHRydWV9IGlmIHRoZSBvcGVyYXRpb24gaXMgY2FuY2VsZWQsIG9yXG4gICAgICoge3dyYXBwaW5nS2V5fSB3aXRoIHRoZSByZXN1bHQuXG4gICAgICogQHBhcmFtIHBhc3Njb2RlIC0gSWYgdGhlIGNvbnN1bWVyIGFscmVhZHkgaGFzIGFjY2VzcyB0byB0aGUgcGFzc2NvZGUsXG4gICAgICogdGhleSBjYW4gcGFzcyBpdCBoZXJlIHNvIHRoYXQgdGhlIHVzZXIgaXMgbm90IHByb21wdGVkIGFnYWluLlxuICAgICAqL1xuICAgIGFzeW5jIGdldFdyYXBwaW5nS2V5SWZOZWNlc3NhcnkocGFzc2NvZGUpIHtcbiAgICAgICAgaWYgKCF0aGlzLmhhc1Bhc3Njb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXBhc3Njb2RlKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFsbGVuZ2UgPSBuZXcgQ2hhbGxlbmdlKFtDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGVdLCBDaGFsbGVuZ2VSZWFzb24uUmVzYXZlUm9vdEtleSk7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuY2hhbGxlbmdlU2VydmljZS5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShjaGFsbGVuZ2UpO1xuICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IGNhbmNlbGVkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc3BvbnNlLmdldFZhbHVlRm9yVHlwZShDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGUpO1xuICAgICAgICAgICAgcGFzc2NvZGUgPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNvbXB1dGVXcmFwcGluZ0tleShwYXNzY29kZSk7XG4gICAgICAgIHJldHVybiB7IHdyYXBwaW5nS2V5IH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqICBAcGFyYW0gbWVyZ2VMb2NhbCAgV2hldGhlciB0byBtZXJnZSBleGlzdGluZyBvZmZsaW5lIGRhdGEgaW50byBhY2NvdW50LiBJZiBmYWxzZSxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGFueSBwcmUtZXhpc3RpbmcgZGF0YSB3aWxsIGJlIGZ1bGx5IGRlbGV0ZWQgdXBvbiBzdWNjZXNzLlxuICAgICAqL1xuICAgIGFzeW5jIHJlZ2lzdGVyKGVtYWlsLCBwYXNzd29yZCwgZXBoZW1lcmFsID0gZmFsc2UsIG1lcmdlTG9jYWwgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgd3JhcHBpbmdLZXksIGNhbmNlbGVkIH0gPSBhd2FpdCB0aGlzLmdldFdyYXBwaW5nS2V5SWZOZWNlc3NhcnkoKTtcbiAgICAgICAgaWYgKGNhbmNlbGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2NrU3luY2luZygpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLnJlZ2lzdGVyKGVtYWlsLCBwYXNzd29yZCk7XG4gICAgICAgIGlmICghcmVzdWx0LnJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5zZXROZXdSb290S2V5KHJlc3VsdC5yb290S2V5LCByZXN1bHQua2V5UGFyYW1zLCB3cmFwcGluZ0tleSk7XG4gICAgICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnJlc2V0U3luY1N0YXRlKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFBlcnNpc3RlbmNlUG9saWN5KGVwaGVtZXJhbFxuICAgICAgICAgICAgICAgID8gU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRXBoZW1lcmFsXG4gICAgICAgICAgICAgICAgOiBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5EZWZhdWx0KTtcbiAgICAgICAgICAgIGlmIChtZXJnZUxvY2FsKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5tYXJrQWxsSXRlbXNBc05lZWRpbmdTeW5jKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTWFuYWdlci5yZW1vdmVBbGxJdGVtc0Zyb21NZW1vcnkoKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyRGF0YWJhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoQXBwbGljYXRpb25FdmVudC5TaWduZWRJbik7XG4gICAgICAgICAgICB0aGlzLnVubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2Uuc3luYyh7XG4gICAgICAgICAgICAgICAgbW9kZTogU3luY01vZGVzLkRvd25sb2FkRmlyc3QsXG4gICAgICAgICAgICAgICAgcXVldWVTdHJhdGVneTogU3luY1F1ZXVlU3RyYXRlZ3kuRm9yY2VTcGF3bk5ld1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZS5kZWNyeXB0RXJyb3JlZEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3BvbnNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbWVyZ2VMb2NhbCAgV2hldGhlciB0byBtZXJnZSBleGlzdGluZyBvZmZsaW5lIGRhdGEgaW50byBhY2NvdW50LlxuICAgICAqIElmIGZhbHNlLCBhbnkgcHJlLWV4aXN0aW5nIGRhdGEgd2lsbCBiZSBmdWxseSBkZWxldGVkIHVwb24gc3VjY2Vzcy5cbiAgICAgKi9cbiAgICBhc3luYyBzaWduSW4oZW1haWwsIHBhc3N3b3JkLCBzdHJpY3QgPSBmYWxzZSwgZXBoZW1lcmFsID0gZmFsc2UsIG1mYUtleVBhdGgsIG1mYUNvZGUsIG1lcmdlTG9jYWwgPSB0cnVlLCBhd2FpdFN5bmMgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCB7IHdyYXBwaW5nS2V5LCBjYW5jZWxlZCB9ID0gYXdhaXQgdGhpcy5nZXRXcmFwcGluZ0tleUlmTmVjZXNzYXJ5KCk7XG4gICAgICAgIGlmIChjYW5jZWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBQcmV2ZW50IGEgdGltZWQgc3luYyBmcm9tIG9jY3VyaW5nIHdoaWxlIHNpZ25pbmcgaW4uICovXG4gICAgICAgIHRoaXMubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZXNzaW9uTWFuYWdlci5zaWduSW4oZW1haWwsIHBhc3N3b3JkLCBzdHJpY3QsIG1mYUtleVBhdGgsIG1mYUNvZGUpO1xuICAgICAgICBpZiAoIXJlc3VsdC5yZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2Uuc2V0TmV3Um9vdEtleShyZXN1bHQucm9vdEtleSwgcmVzdWx0LmtleVBhcmFtcywgd3JhcHBpbmdLZXkpO1xuICAgICAgICAgICAgdGhpcy5zeW5jU2VydmljZS5yZXNldFN5bmNTdGF0ZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRQZXJzaXN0ZW5jZVBvbGljeShlcGhlbWVyYWxcbiAgICAgICAgICAgICAgICA/IFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzLkVwaGVtZXJhbFxuICAgICAgICAgICAgICAgIDogU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRGVmYXVsdCk7XG4gICAgICAgICAgICBpZiAobWVyZ2VMb2NhbCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2UubWFya0FsbEl0ZW1zQXNOZWVkaW5nU3luYyh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbU1hbmFnZXIucmVtb3ZlQWxsSXRlbXNGcm9tTWVtb3J5KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGVhckRhdGFiYXNlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KEFwcGxpY2F0aW9uRXZlbnQuU2lnbmVkSW4pO1xuICAgICAgICAgICAgdGhpcy51bmxvY2tTeW5jaW5nKCk7XG4gICAgICAgICAgICBjb25zdCBzeW5jUHJvbWlzZSA9IHRoaXMuc3luY1NlcnZpY2Uuc3luYyh7XG4gICAgICAgICAgICAgICAgbW9kZTogU3luY01vZGVzLkRvd25sb2FkRmlyc3QsXG4gICAgICAgICAgICAgICAgY2hlY2tJbnRlZ3JpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgcXVldWVTdHJhdGVneTogU3luY1F1ZXVlU3RyYXRlZ3kuRm9yY2VTcGF3bk5ldyxcbiAgICAgICAgICAgICAgICBhd2FpdEFsbDogYXdhaXRTeW5jLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoYXdhaXRTeW5jKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgc3luY1Byb21pc2U7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuZGVjcnlwdEVycm9yZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm90b2NvbFNlcnZpY2UuZGVjcnlwdEVycm9yZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bmxvY2tTeW5jaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXNwb25zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHBhc3Njb2RlIC0gQ2hhbmdpbmcgdGhlIGFjY291bnQgcGFzc3dvcmQgcmVxdWlyZXMgdGhlIGxvY2FsXG4gICAgICogcGFzc2NvZGUgaWYgY29uZmlndXJlZCAodG8gcmV3cmFwIHRoZSBhY2NvdW50IGtleSB3aXRoIHBhc3Njb2RlKS4gSWYgdGhlIHBhc3Njb2RlXG4gICAgICogaXMgbm90IHBhc3NlZCBpbiwgdGhlIHVzZXIgd2lsbCBiZSBwcm9tcHRlZCBmb3IgdGhlIHBhc3Njb2RlLiBIb3dldmVyIGlmIHRoZSBjb25zdW1lclxuICAgICAqIGFscmVhZHkgaGFzIHJlZmVyZW5lIHRvIHRoZSBwYXNzY29kZSwgdGhleSBjYW4gcGFzcyBpdCBpbiBoZXJlIHNvIHRoYXQgdGhlIHVzZXJcbiAgICAgKiBpcyBub3QgcHJvbXB0ZWQgYWdhaW4uXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlUGFzc3dvcmQoY3VycmVudFBhc3N3b3JkLCBuZXdQYXNzd29yZCwgcGFzc2NvZGUsIHsgdmFsaWRhdGVQYXNzd29yZFN0cmVuZ3RoID0gdHJ1ZSB9ID0ge30pIHtcbiAgICAgICAgaWYgKHZhbGlkYXRlUGFzc3dvcmRTdHJlbmd0aCkge1xuICAgICAgICAgICAgaWYgKG5ld1Bhc3N3b3JkLmxlbmd0aCA8IE1JTklNVU1fUEFTU1dPUkRfTEVOR1RIKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IEVycm9yKEluc3VmZmljaWVudFBhc3N3b3JkTWVzc2FnZShNSU5JTVVNX1BBU1NXT1JEX0xFTkdUSCkpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB3cmFwcGluZ0tleSwgY2FuY2VsZWQgfSA9IGF3YWl0IHRoaXMuZ2V0V3JhcHBpbmdLZXlJZk5lY2Vzc2FyeShwYXNzY29kZSk7XG4gICAgICAgIGlmIChjYW5jZWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICB9XG4gICAgICAgIC8qKiBDaGFuZ2UgdGhlIHBhc3N3b3JkIGxvY2FsbHkgKi9cbiAgICAgICAgY29uc3QgW2Vycm9yLCBjaGFuZ2VQYXNzd29yZFJlc3VsdF0gPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5jaGFuZ2VQYXNzd29yZCh0aGlzLmdldFVzZXIoKS5lbWFpbCwgY3VycmVudFBhc3N3b3JkLCBuZXdQYXNzd29yZCwgd3JhcHBpbmdLZXkpO1xuICAgICAgICBpZiAoZXJyb3IpXG4gICAgICAgICAgICByZXR1cm4geyBlcnJvciB9O1xuICAgICAgICBjb25zdCB7IHByZXZpb3VzUm9vdEtleSwgbmV3Um9vdEtleSwgbmV3S2V5UGFyYW1zLCByb2xsYmFjazogcm9sbGJhY2tQYXNzd29yZENoYW5nZSB9ID0gY2hhbmdlUGFzc3dvcmRSZXN1bHQ7XG4gICAgICAgIC8qKiBTeW5jIHRoZSBuZXdseSBjcmVhdGVkIGl0ZW1zIGtleS4gUm9sbCBiYWNrIG9uIGZhaWx1cmUgKi9cbiAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKHsgYXdhaXRBbGw6IHRydWUgfSk7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5V2FzU3luY2VkID0gdGhpcy5wcm90b2NvbFNlcnZpY2UuZ2V0RGVmYXVsdEl0ZW1zS2V5KCkudXBkYXRlZF9hdC5nZXRUaW1lKCkgPiAwO1xuICAgICAgICBpZiAoIWl0ZW1zS2V5V2FzU3luY2VkKSB7XG4gICAgICAgICAgICBhd2FpdCByb2xsYmFja1Bhc3N3b3JkQ2hhbmdlKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoeyBhd2FpdEFsbDogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IGVycm9yOiBFcnJvcihBUElfTUVTU0FHRV9HRU5FUklDX1NZTkNfRkFJTCkgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvY2tTeW5jaW5nKCk7XG4gICAgICAgIC8qKiBOb3csIGNoYW5nZSB0aGUgcGFzc3dvcmQgb24gdGhlIHNlcnZlci4gUm9sbCBiYWNrIG9uIGZhaWx1cmUgKi9cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLmNoYW5nZVBhc3N3b3JkKHByZXZpb3VzUm9vdEtleS5zZXJ2ZXJQYXNzd29yZCwgbmV3Um9vdEtleS5zZXJ2ZXJQYXNzd29yZCwgbmV3S2V5UGFyYW1zKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgICBhd2FpdCByb2xsYmFja1Bhc3N3b3JkQ2hhbmdlKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoeyBhd2FpdEFsbDogdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVubG9ja1N5bmNpbmcoKTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyBzaWduT3V0KCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLnNpZ25PdXQoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY2xlYXJMb2NhbEtleVN0YXRlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXJBbGxEYXRhKCk7XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoQXBwbGljYXRpb25FdmVudC5TaWduZWRPdXQpO1xuICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVGb3JEZWluaXQoKTtcbiAgICAgICAgdGhpcy5kZWluaXQoKTtcbiAgICB9XG4gICAgYXN5bmMgdmFsaWRhdGVBY2NvdW50UGFzc3dvcmQocGFzc3dvcmQpIHtcbiAgICAgICAgY29uc3QgeyB2YWxpZCB9ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UudmFsaWRhdGVBY2NvdW50UGFzc3dvcmQocGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4gdmFsaWQ7XG4gICAgfVxuICAgIGlzU3RhcnRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRlZDtcbiAgICB9XG4gICAgaXNMYXVuY2hlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF1bmNoZWQ7XG4gICAgfVxuICAgIGhhc1Bhc3Njb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm90b2NvbFNlcnZpY2UuaGFzUGFzc2NvZGUoKTtcbiAgICB9XG4gICAgYXN5bmMgaXNMb2NrZWQoKSB7XG4gICAgICAgIGlmICghdGhpcy5zdGFydGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLmlzUGFzc2NvZGVMb2NrZWQoKTtcbiAgICB9XG4gICAgYXN5bmMgbG9jaygpIHtcbiAgICAgICAgLyoqIEJlY2F1c2UgbG9ja2luZyBpcyBhIGNyaXRpY2FsIG9wZXJhdGlvbiwgd2Ugd2FudCB0byB0cnkgdG8gZG8gaXQgc2FmZWx5LFxuICAgICAgICAgKiBidXQgb25seSB1cCB0byBhIGNlcnRhaW4gbGltaXQuICovXG4gICAgICAgIGNvbnN0IE1heGltdW1XYWl0VGltZSA9IDUwMDtcbiAgICAgICAgYXdhaXQgdGhpcy5wcmVwYXJlRm9yRGVpbml0KE1heGltdW1XYWl0VGltZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBzZXRQYXNzY29kZShwYXNzY29kZSkge1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVV1aWQoKTtcbiAgICAgICAgY29uc3QgeyBrZXksIGtleVBhcmFtcyB9ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzY29kZSk7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnNldE5ld1Jvb3RLZXlXcmFwcGVyKGtleSwga2V5UGFyYW1zKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXdyaXRlSXRlbXNLZXlzKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgIH1cbiAgICBhc3luYyByZW1vdmVQYXNzY29kZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UucmVtb3ZlUm9vdEtleVdyYXBwZXIoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXdyaXRlSXRlbXNLZXlzKCk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZVBhc3Njb2RlKHBhc3Njb2RlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlUGFzc2NvZGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0UGFzc2NvZGUocGFzc2NvZGUpO1xuICAgIH1cbiAgICBhc3luYyBzZXRTdG9yYWdlRW5jcnlwdGlvblBvbGljeShlbmNyeXB0aW9uUG9saWN5KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0RW5jcnlwdGlvblBvbGljeShlbmNyeXB0aW9uUG9saWN5KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLnJlcGVyc2lzdEFsbEl0ZW1zKCk7XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlVXVpZCgpIHtcbiAgICAgICAgcmV0dXJuIFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIER5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZGV2aWNlIGludGVyZmFjZSwgaS5lIHdoZW4gRGVza3RvcCB3YW50cyB0byBvdmVycmlkZVxuICAgICAqIGRlZmF1bHQgd2ViIGludGVyZmFjZS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGFuZ2VEZXZpY2VJbnRlcmZhY2UoZGV2aWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gZGV2aWNlSW50ZXJmYWNlO1xuICAgICAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgdGhpcy5zZXJ2aWNlcykge1xuICAgICAgICAgICAgaWYgKHNlcnZpY2UuZGV2aWNlSW50ZXJmYWNlKSB7XG4gICAgICAgICAgICAgICAgc2VydmljZS5kZXZpY2VJbnRlcmZhY2UgPSBkZXZpY2VJbnRlcmZhY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3RydWN0U2VydmljZXMoKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlTW9kZWxNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlSXRlbU1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVTdG9yYWdlTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZVByb3RvY29sU2VydmljZSgpO1xuICAgICAgICBjb25zdCBlbmNyeXB0aW9uRGVsZWdhdGUgPSB7XG4gICAgICAgICAgICBwYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZDogdGhpcy5wcm90b2NvbFNlcnZpY2UucGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQuYmluZCh0aGlzLnByb3RvY29sU2VydmljZSksXG4gICAgICAgICAgICBwYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZDogdGhpcy5wcm90b2NvbFNlcnZpY2UucGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQuYmluZCh0aGlzLnByb3RvY29sU2VydmljZSlcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5lbmNyeXB0aW9uRGVsZWdhdGUgPSBlbmNyeXB0aW9uRGVsZWdhdGU7XG4gICAgICAgIHRoaXMuY3JlYXRlQ2hhbGxlbmdlU2VydmljZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZU1pZ3JhdGlvblNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVBbGVydE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVIdHRwTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwaVNlcnZpY2UoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVTZXNzaW9uTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZVN5bmNNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlU2luZ2xldG9uTWFuYWdlcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5jcmVhdGVQcml2aWxlZ2VzU2VydmljZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUhpc3RvcnlNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQWN0aW9uc01hbmFnZXIoKTtcbiAgICB9XG4gICAgY2xlYXJTZXJ2aWNlcygpIHtcbiAgICAgICAgdGhpcy5taWdyYXRpb25TZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5odHRwU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zaW5nbGV0b25NYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNvbXBvbmVudE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJpdmlsZWdlc1NlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWN0aW9uc01hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaGlzdG9yeU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2VydmljZXMgPSBbXTtcbiAgICB9XG4gICAgY3JlYXRlTWlncmF0aW9uU2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5taWdyYXRpb25TZXJ2aWNlID0gbmV3IFNOTWlncmF0aW9uU2VydmljZSh7XG4gICAgICAgICAgICBwcm90b2NvbFNlcnZpY2U6IHRoaXMucHJvdG9jb2xTZXJ2aWNlLFxuICAgICAgICAgICAgZGV2aWNlSW50ZXJmYWNlOiB0aGlzLmRldmljZUludGVyZmFjZSxcbiAgICAgICAgICAgIHN0b3JhZ2VTZXJ2aWNlOiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgY2hhbGxlbmdlU2VydmljZTogdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgaXRlbU1hbmFnZXI6IHRoaXMuaXRlbU1hbmFnZXIsXG4gICAgICAgICAgICBlbnZpcm9ubWVudDogdGhpcy5lbnZpcm9ubWVudCxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogdGhpcy5uYW1lc3BhY2VcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLm1pZ3JhdGlvblNlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVBbGVydE1hbmFnZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZFNraXBDbGFzcyhTTkFsZXJ0U2VydmljZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZSA9IG5ldyAodGhpcy5nZXRDbGFzcyhTTkFsZXJ0U2VydmljZSkpKHRoaXMuZGV2aWNlSW50ZXJmYWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuYWxlcnRTZXJ2aWNlKTtcbiAgICB9XG4gICAgY3JlYXRlQXBpU2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlID0gbmV3IFNOQXBpU2VydmljZSh0aGlzLmh0dHBTZXJ2aWNlLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuYXBpU2VydmljZSk7XG4gICAgfVxuICAgIGNyZWF0ZUl0ZW1NYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gbmV3IEl0ZW1NYW5hZ2VyKHRoaXMubW9kZWxNYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuaXRlbU1hbmFnZXIpO1xuICAgIH1cbiAgICBjcmVhdGVDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgICAgICBpZiAodGhpcy5zaG91bGRTa2lwQ2xhc3MoU05Db21wb25lbnRNYW5hZ2VyKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29tcG9uZW50TWFuYWdlciA9IG5ldyBTTkNvbXBvbmVudE1hbmFnZXIodGhpcy5pdGVtTWFuYWdlciwgdGhpcy5zeW5jU2VydmljZSwgdGhpcy5hbGVydFNlcnZpY2UsIHRoaXMuZW52aXJvbm1lbnQsIHRoaXMucGxhdGZvcm0sIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnRpbWVvdXQpO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5jb21wb25lbnRNYW5hZ2VyKTtcbiAgICB9XG4gICAgY3JlYXRlSHR0cE1hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgU05IdHRwU2VydmljZSgpO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5odHRwU2VydmljZSk7XG4gICAgfVxuICAgIGNyZWF0ZU1vZGVsTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSBuZXcgUGF5bG9hZE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMubW9kZWxNYW5hZ2VyKTtcbiAgICB9XG4gICAgY3JlYXRlU2luZ2xldG9uTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5zaW5nbGV0b25NYW5hZ2VyID0gbmV3IFNOU2luZ2xldG9uTWFuYWdlcih0aGlzLml0ZW1NYW5hZ2VyLCB0aGlzLnN5bmNTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuc2luZ2xldG9uTWFuYWdlcik7XG4gICAgfVxuICAgIGNyZWF0ZVN0b3JhZ2VNYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gbmV3IFNOU3RvcmFnZVNlcnZpY2UodGhpcy5kZXZpY2VJbnRlcmZhY2UsIHRoaXMubmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuc3RvcmFnZVNlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVQcm90b2NvbFNlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gbmV3IFNOUHJvdG9jb2xTZXJ2aWNlKHRoaXMuaXRlbU1hbmFnZXIsIHRoaXMubW9kZWxNYW5hZ2VyLCB0aGlzLmRldmljZUludGVyZmFjZSwgdGhpcy5zdG9yYWdlU2VydmljZSwgdGhpcy5jcnlwdG8pO1xuICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZS5vbktleVN0YXR1c0NoYW5nZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KEFwcGxpY2F0aW9uRXZlbnQuS2V5U3RhdHVzQ2hhbmdlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5wcm90b2NvbFNlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVTZXNzaW9uTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uTWFuYWdlciA9IG5ldyBTTlNlc3Npb25NYW5hZ2VyKHRoaXMuc3RvcmFnZVNlcnZpY2UsIHRoaXMuYXBpU2VydmljZSwgdGhpcy5hbGVydFNlcnZpY2UsIHRoaXMucHJvdG9jb2xTZXJ2aWNlKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMuc2Vzc2lvbk1hbmFnZXIpO1xuICAgIH1cbiAgICBjcmVhdGVTeW5jTWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZSA9IG5ldyBTTlN5bmNTZXJ2aWNlKHRoaXMuaXRlbU1hbmFnZXIsIHRoaXMuc2Vzc2lvbk1hbmFnZXIsIHRoaXMucHJvdG9jb2xTZXJ2aWNlLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLCB0aGlzLm1vZGVsTWFuYWdlciwgdGhpcy5hcGlTZXJ2aWNlLCB0aGlzLmRldmljZUludGVyZmFjZS5pbnRlcnZhbCk7XG4gICAgICAgIGNvbnN0IHN5bmNFdmVudENhbGxiYWNrID0gYXN5bmMgKGV2ZW50TmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXBwRXZlbnQgPSBhcHBsaWNhdGlvbkV2ZW50Rm9yU3luY0V2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgICAgICBpZiAoYXBwRXZlbnQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KGFwcEV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLm9uU3luY0V2ZW50KGV2ZW50TmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHVuaW5zdGFsbCA9IHRoaXMuc3luY1NlcnZpY2UuYWRkRXZlbnRPYnNlcnZlcihzeW5jRXZlbnRDYWxsYmFjayk7XG4gICAgICAgIHRoaXMuc2VydmljZU9ic2VydmVycy5wdXNoKHVuaW5zdGFsbCk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLnN5bmNTZXJ2aWNlKTtcbiAgICB9XG4gICAgY3JlYXRlQ2hhbGxlbmdlU2VydmljZSgpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2VTZXJ2aWNlID0gbmV3IENoYWxsZW5nZVNlcnZpY2UodGhpcy5zdG9yYWdlU2VydmljZSwgdGhpcy5wcm90b2NvbFNlcnZpY2UpO1xuICAgICAgICB0aGlzLnNlcnZpY2VzLnB1c2godGhpcy5jaGFsbGVuZ2VTZXJ2aWNlKTtcbiAgICB9XG4gICAgY3JlYXRlUHJpdmlsZWdlc1NlcnZpY2UoKSB7XG4gICAgICAgIHRoaXMucHJpdmlsZWdlc1NlcnZpY2UgPSBuZXcgU05Qcml2aWxlZ2VzU2VydmljZSh0aGlzLml0ZW1NYW5hZ2VyLCB0aGlzLnN5bmNTZXJ2aWNlLCB0aGlzLnNpbmdsZXRvbk1hbmFnZXIsIHRoaXMucHJvdG9jb2xTZXJ2aWNlLCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLCB0aGlzLnNlc3Npb25NYW5hZ2VyKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcy5wdXNoKHRoaXMucHJpdmlsZWdlc1NlcnZpY2UpO1xuICAgIH1cbiAgICBjcmVhdGVIaXN0b3J5TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5TWFuYWdlciA9IG5ldyBTTkhpc3RvcnlNYW5hZ2VyKHRoaXMuaXRlbU1hbmFnZXIsIHRoaXMuc3RvcmFnZVNlcnZpY2UsIFtDb250ZW50VHlwZS5Ob3RlXSwgdGhpcy5kZXZpY2VJbnRlcmZhY2UudGltZW91dCk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLmhpc3RvcnlNYW5hZ2VyKTtcbiAgICB9XG4gICAgY3JlYXRlQWN0aW9uc01hbmFnZXIoKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uc01hbmFnZXIgPSBuZXcgU05BY3Rpb25zU2VydmljZSh0aGlzLml0ZW1NYW5hZ2VyLCB0aGlzLmFsZXJ0U2VydmljZSwgdGhpcy5kZXZpY2VJbnRlcmZhY2UsIHRoaXMuaHR0cFNlcnZpY2UsIHRoaXMubW9kZWxNYW5hZ2VyLCB0aGlzLnByb3RvY29sU2VydmljZSwgdGhpcy5zeW5jU2VydmljZSk7XG4gICAgICAgIHRoaXMuc2VydmljZXMucHVzaCh0aGlzLmFjdGlvbnNNYW5hZ2VyKTtcbiAgICB9XG4gICAgc2hvdWxkU2tpcENsYXNzKGNsYXNzQ2FuZGlkYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNraXBDbGFzc2VzICYmIHRoaXMuc2tpcENsYXNzZXMuaW5jbHVkZXMoY2xhc3NDYW5kaWRhdGUpO1xuICAgIH1cbiAgICBnZXRDbGFzcyhiYXNlKSB7XG4gICAgICAgIGNvbnN0IHN3YXBDbGFzcyA9IHRoaXMuc3dhcENsYXNzZXMgJiYgdGhpcy5zd2FwQ2xhc3Nlcy5maW5kKChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5zd2FwID09PSBiYXNlKTtcbiAgICAgICAgaWYgKHN3YXBDbGFzcykge1xuICAgICAgICAgICAgcmV0dXJuIHN3YXBDbGFzcy53aXRoO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGJhc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBYUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBakRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzREE7QUF0REE7QUFBQTtBQXlEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBNURBO0FBdURBO0FBS0E7QUE1REE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWtFQTtBQWxFQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0VBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUF4RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErRUE7QUFDQTtBQWhGQTtBQUFBO0FBQ0E7QUFEQTtBQWlGQTtBQUNBO0FBbEZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQW1GQTtBQUNBO0FBcEZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQStGQTtBQUNBO0FBaEdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1HQTtBQW5HQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXdHQTs7Ozs7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBS0E7QUFDQTtBQU5BO0FBT0E7QUFEQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQS9HQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE2SEE7QUFDQTtBQS9IQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBK0hBO0FBaElBO0FBQUE7QUFDQTtBQURBO0FBaUlBO0FBQ0E7QUFsSUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0lBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUEzSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE0SUE7QUE3SUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlKQTs7OztBQWpKQTtBQUFBO0FBQUE7QUFvSkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFKQTtBQUFBO0FBQUE7QUE0SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFsS0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFtS0E7QUFDQTtBQXJLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQTRLQTtBQUNBO0FBN0tBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4S0E7Ozs7QUE5S0E7QUFBQTtBQUFBO0FBa0xBO0FBQ0E7QUFuTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUxBO0FBQ0E7QUFDQTtBQUZBO0FBckxBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRMQTs7OztBQTVMQTtBQUFBO0FBQUE7QUFnTUE7QUFDQTtBQUNBOzs7O0FBbE1BO0FBQUE7QUFBQTtBQXNNQTtBQUNBO0FBQ0E7Ozs7QUF4TUE7QUFBQTtBQUFBO0FBNE1BO0FBQ0E7QUFDQTs7OztBQTlNQTtBQUFBO0FBQUE7QUFrTkE7QUFDQTtBQUNBOzs7O0FBcE5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTBOQTs7Ozs7QUExTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOE5BO0FBQUE7QUE5TkE7QUFBQTtBQUNBO0FBREE7QUErTkE7QUEvTkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFrT0E7Ozs7O0FBbE9BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdU9BO0FBdk9BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBME9BOzs7O0FBMU9BO0FBQUE7QUFBQTtBQThPQTtBQUNBO0FBQ0E7Ozs7O0FBaFBBO0FBQUE7QUFBQTtBQXFQQTtBQUNBO0FBQ0E7Ozs7QUF2UEE7QUFBQTtBQUFBO0FBMlBBO0FBQ0E7QUE1UEE7QUFBQTtBQUFBO0FBOFBBO0FBQ0E7QUFDQTs7Ozs7QUFoUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvUUE7QUFwUUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErUUE7QUFDQTtBQWhSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzUkE7QUFDQTtBQXZSQTtBQUFBO0FBQUE7QUF5UkE7QUFDQTtBQTFSQTtBQUFBO0FBQUE7QUE0UkE7QUFDQTtBQUNBOzs7OztBQTlSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW9TQTtBQXBTQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBeVNBOzs7OztBQXpTQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4U0E7QUFDQTtBQS9TQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVUQTs7OztBQXZUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwVEE7QUFBQTtBQUFBO0FBQ0E7QUEzVEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWtVQTs7OztBQWxVQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxVUE7QUFBQTtBQUFBO0FBclVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXlVQTs7OztBQXpVQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRVQTtBQUNBO0FBN1VBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBbVZBOzs7O0FBblZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc1ZBO0FBdFZBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMFZBO0FBQ0E7QUEzVkE7QUFBQTtBQUFBO0FBNlZBO0FBQ0E7QUFDQTtBQUNBO0FBaFdBO0FBQUE7QUFBQTtBQWlXQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUExV0E7QUFBQTtBQUFBO0FBMldBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbFhBO0FBQUE7QUFBQTtBQW9YQTtBQUNBO0FBclhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBYQTtBQUNBO0FBM1hBO0FBQUE7QUFBQTtBQTZYQTtBQUNBO0FBQ0E7Ozs7OztBQS9YQTtBQUFBO0FBQUE7QUFvWUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBcFpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThaQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFsYUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBc2FBOzs7O0FBdGFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRhQTs7OztBQTVhQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFrYkE7Ozs7QUFsYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFzYkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUEvYkE7QUFBQTtBQUNBO0FBREE7QUFnY0E7QUFDQTtBQWpjQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBcWNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFjQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMGNBO0FBQ0E7QUFDQTtBQTdjQTtBQUFBO0FBOGNBO0FBQUE7QUFDQTtBQS9jQTtBQThjQTtBQUNBO0FBL2NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdkQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBM2RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWllQTtBQWplQTtBQUFBO0FBQ0E7QUFEQTtBQWtlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRkE7QUFEQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBbmZBO0FBQUE7QUFDQTtBQURBO0FBb2ZBO0FBQ0E7QUFDQTtBQXRmQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUF5ZkE7QUF6ZkE7QUEyZkE7QUFDQTtBQUZBO0FBQ0E7QUEzZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStmQTs7Ozs7QUEvZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtZ0JBO0FBbmdCQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXVnQkE7QUFDQTtBQXhnQkE7QUFBQTtBQUFBO0FBMGdCQTtBQUNBO0FBM2dCQTtBQUFBO0FBQUE7QUE2Z0JBO0FBQ0E7QUE5Z0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlpQkE7Ozs7QUFqaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVpQkE7Ozs7Ozs7OztBQXZpQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ2pCQTtBQUNBO0FBQUE7QUFBQTtBQWpqQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBcWpCQTs7Ozs7O0FBcmpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMGpCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBNWpCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3a0JBO0FBQ0E7QUF6a0JBO0FBQUE7QUFBQTtBQTBrQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUE1a0JBO0FBQUE7QUFBQTtBQThrQkE7QUFDQTtBQUNBOzs7O0FBaGxCQTtBQUFBO0FBQUE7QUFvbEJBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUtBO0FBQUE7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVFBO0FBQUE7QUFDQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7QUExbUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdW5CQTtBQXhuQkE7QUFBQTtBQUNBO0FBREE7QUF5bkJBO0FBQ0E7QUExbkJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJuQkE7QUFBQTtBQUNBO0FBNW5CQTtBQTZuQkE7QUFDQTtBQUNBO0FBL25CQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBZ29CQTtBQWhvQkE7QUFpb0JBO0FBQUE7QUFDQTtBQWxvQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1vQkE7Ozs7O0FBbm9CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQXVvQkE7QUFBQTtBQXZvQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdvQkE7QUFBQTtBQUNBO0FBem9CQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBNG9CQTtBQTVvQkE7QUFBQTtBQUNBO0FBREE7QUE2b0JBO0FBQ0E7QUE5b0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWdwQkE7QUFocEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF3cEJBO0FBeHBCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNHBCQTtBQTVwQkE7QUFBQTtBQThwQkE7QUFDQTtBQUZBO0FBQ0E7QUE5cEJBO0FBaXFCQTtBQWpxQkE7QUFBQTtBQUNBO0FBREE7QUFvcUJBO0FBQ0E7QUFycUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3cUJBOzs7OztBQXhxQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNHFCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE1cUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2cUJBO0FBQUE7QUFDQTtBQTlxQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWlyQkE7QUFDQTtBQWxyQkE7QUFBQTtBQUNBO0FBREE7QUFtckJBO0FBQ0E7QUFwckJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXNyQkE7QUF0ckJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4ckJBO0FBOXJCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa3NCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBcHNCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBOHNCQTtBQUNBO0FBL3NCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa3RCQTtBQUNBO0FBbnRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBc3RCQTs7Ozs7Ozs7QUF0dEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWd1QkE7QUFBQTtBQUNBO0FBanVCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFtdUJBO0FBQUE7QUFDQTtBQXB1QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQXd1QkE7QUFBQTtBQUNBO0FBenVCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUEwdUJBO0FBQUE7QUFDQTtBQTN1QkE7QUEydUJBO0FBQ0E7QUFDQTtBQTd1QkE7QUFBQTtBQTZ1QkE7QUFBQTtBQUNBO0FBOXVCQTtBQTh1QkE7QUFDQTtBQS91QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQWl2QkE7QUFBQTtBQUNBO0FBbHZCQTtBQUFBO0FBa3ZCQTtBQUFBO0FBQ0E7QUFudkJBO0FBb3ZCQTtBQUNBO0FBQ0E7QUF0dkJBO0FBQUE7QUFDQTtBQURBO0FBc3ZCQTtBQUNBO0FBdnZCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBeXZCQTtBQUFBO0FBQ0E7QUExdkJBO0FBMnZCQTtBQTN2QkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW93QkE7QUFDQTtBQXJ3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXV3QkE7QUF2d0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMndCQTtBQUNBO0FBNXdCQTtBQUFBO0FBQUE7QUE4d0JBO0FBQ0E7QUEvd0JBO0FBQUE7QUFBQTtBQWl4QkE7QUFDQTtBQWx4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTB4QkE7O0FBRUE7QUE1eEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaXlCQTtBQWp5QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWt5QkE7QUFBQTtBQWx5QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXN6QkE7Ozs7O0FBdHpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTJ6QkE7QUEzekJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEyekJBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqMEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeDFCQTtBQUFBO0FBQUE7QUEwMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTMyQkE7QUFBQTtBQUFBO0FBNjJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUNBO0FBdjNCQTtBQUFBO0FBQUE7QUF5M0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBOTNCQTtBQUFBO0FBQUE7QUFnNEJBO0FBQ0E7QUFDQTtBQWw0QkE7QUFBQTtBQUFBO0FBbzRCQTtBQUNBO0FBQ0E7QUF0NEJBO0FBQUE7QUFBQTtBQXc0QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE3NEJBO0FBQUE7QUFBQTtBQSs0QkE7QUFDQTtBQUNBO0FBajVCQTtBQUFBO0FBQUE7QUFtNUJBO0FBQ0E7QUFDQTtBQXI1QkE7QUFBQTtBQUFBO0FBdTVCQTtBQUNBO0FBQ0E7QUF6NUJBO0FBQUE7QUFBQTtBQTI1QkE7QUFDQTtBQUNBO0FBNzVCQTtBQUFBO0FBQUE7QUE4NUJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFwNkJBO0FBQUE7QUFBQTtBQXM2QkE7QUFDQTtBQUNBO0FBeDZCQTtBQUFBO0FBQUE7QUF5NkJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQXI3QkE7QUFBQTtBQUFBO0FBdTdCQTtBQUNBO0FBQ0E7QUF6N0JBO0FBQUE7QUFBQTtBQTI3QkE7QUFDQTtBQUNBO0FBNzdCQTtBQUFBO0FBQUE7QUErN0JBO0FBQ0E7QUFDQTtBQWo4QkE7QUFBQTtBQUFBO0FBbThCQTtBQUNBO0FBQ0E7QUFyOEJBO0FBQUE7QUFBQTtBQXU4QkE7QUFDQTtBQXg4QkE7QUFBQTtBQUFBO0FBMDhCQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQWo5QkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/application.ts\n')},"./lib/challenges.ts": /*!***************************!*\ !*** ./lib/challenges.ts ***! \***************************/ /*! exports provided: ChallengeType, ChallengeReason, Challenge, ChallengeValue, ChallengeResponse, challengeTypeToString */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeType", function() { return ChallengeType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeReason", function() { return ChallengeReason; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Challenge", function() { return Challenge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeValue", function() { return ChallengeValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeResponse", function() { return ChallengeResponse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "challengeTypeToString", function() { return challengeTypeToString; });\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nvar ChallengeType;\n\n(function (ChallengeType) {\n ChallengeType[ChallengeType["LocalPasscode"] = 1] = "LocalPasscode";\n ChallengeType[ChallengeType["AccountPassword"] = 2] = "AccountPassword";\n ChallengeType[ChallengeType["Biometric"] = 3] = "Biometric";\n})(ChallengeType || (ChallengeType = {}));\n\n;\n/** The source of the challenge */\n\nvar ChallengeReason;\n\n(function (ChallengeReason) {\n ChallengeReason[ChallengeReason["ApplicationUnlock"] = 1] = "ApplicationUnlock";\n ChallengeReason[ChallengeReason["ResaveRootKey"] = 2] = "ResaveRootKey";\n ChallengeReason[ChallengeReason["ProtocolUpgrade"] = 3] = "ProtocolUpgrade";\n ChallengeReason[ChallengeReason["Migration"] = 4] = "Migration";\n})(ChallengeReason || (ChallengeReason = {}));\n\n;\nvar Challenge = function Challenge(types, reason) {\n _classCallCheck(this, Challenge);\n\n this.types = types;\n this.reason = reason;\n this.id = new Date().getTime();\n Object.freeze(this);\n};\nvar ChallengeValue = function ChallengeValue(type, value) {\n _classCallCheck(this, ChallengeValue);\n\n this.type = type;\n this.value = value;\n Object.freeze(this);\n};\nvar ChallengeResponse = /*#__PURE__*/function () {\n function ChallengeResponse(challenge, values, artifacts) {\n _classCallCheck(this, ChallengeResponse);\n\n this.challenge = challenge;\n this.values = values;\n this.artifacts = artifacts;\n Object.freeze(this);\n }\n\n _createClass(ChallengeResponse, [{\n key: "getValueForType",\n value: function getValueForType(type) {\n return this.values.find(function (value) {\n return value.type === type;\n });\n }\n }]);\n\n return ChallengeResponse;\n}();\n/**\n * @returns The UI-friendly title for this challenge\n */\n\nfunction challengeTypeToString(type) {\n var _mapping;\n\n var mapping = (_mapping = {}, _defineProperty(_mapping, ChallengeType.LocalPasscode, \'application passcode\'), _defineProperty(_mapping, ChallengeType.AccountPassword, \'account password\'), _defineProperty(_mapping, ChallengeType.Biometric, \'biometrics\'), _mapping);\n return mapping[type];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvY2hhbGxlbmdlcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9jaGFsbGVuZ2VzLnRzPzk1NzAiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBDaGFsbGVuZ2VUeXBlO1xuKGZ1bmN0aW9uIChDaGFsbGVuZ2VUeXBlKSB7XG4gICAgQ2hhbGxlbmdlVHlwZVtDaGFsbGVuZ2VUeXBlW1wiTG9jYWxQYXNzY29kZVwiXSA9IDFdID0gXCJMb2NhbFBhc3Njb2RlXCI7XG4gICAgQ2hhbGxlbmdlVHlwZVtDaGFsbGVuZ2VUeXBlW1wiQWNjb3VudFBhc3N3b3JkXCJdID0gMl0gPSBcIkFjY291bnRQYXNzd29yZFwiO1xuICAgIENoYWxsZW5nZVR5cGVbQ2hhbGxlbmdlVHlwZVtcIkJpb21ldHJpY1wiXSA9IDNdID0gXCJCaW9tZXRyaWNcIjtcbn0pKENoYWxsZW5nZVR5cGUgfHwgKENoYWxsZW5nZVR5cGUgPSB7fSkpO1xuO1xuLyoqIFRoZSBzb3VyY2Ugb2YgdGhlIGNoYWxsZW5nZSAqL1xuZXhwb3J0IHZhciBDaGFsbGVuZ2VSZWFzb247XG4oZnVuY3Rpb24gKENoYWxsZW5nZVJlYXNvbikge1xuICAgIENoYWxsZW5nZVJlYXNvbltDaGFsbGVuZ2VSZWFzb25bXCJBcHBsaWNhdGlvblVubG9ja1wiXSA9IDFdID0gXCJBcHBsaWNhdGlvblVubG9ja1wiO1xuICAgIENoYWxsZW5nZVJlYXNvbltDaGFsbGVuZ2VSZWFzb25bXCJSZXNhdmVSb290S2V5XCJdID0gMl0gPSBcIlJlc2F2ZVJvb3RLZXlcIjtcbiAgICBDaGFsbGVuZ2VSZWFzb25bQ2hhbGxlbmdlUmVhc29uW1wiUHJvdG9jb2xVcGdyYWRlXCJdID0gM10gPSBcIlByb3RvY29sVXBncmFkZVwiO1xuICAgIENoYWxsZW5nZVJlYXNvbltDaGFsbGVuZ2VSZWFzb25bXCJNaWdyYXRpb25cIl0gPSA0XSA9IFwiTWlncmF0aW9uXCI7XG59KShDaGFsbGVuZ2VSZWFzb24gfHwgKENoYWxsZW5nZVJlYXNvbiA9IHt9KSk7XG47XG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlIHtcbiAgICBjb25zdHJ1Y3Rvcih0eXBlcywgcmVhc29uKSB7XG4gICAgICAgIHRoaXMudHlwZXMgPSB0eXBlcztcbiAgICAgICAgdGhpcy5yZWFzb24gPSByZWFzb247XG4gICAgICAgIHRoaXMuaWQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlVmFsdWUge1xuICAgIGNvbnN0cnVjdG9yKHR5cGUsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlUmVzcG9uc2Uge1xuICAgIGNvbnN0cnVjdG9yKGNoYWxsZW5nZSwgdmFsdWVzLCBhcnRpZmFjdHMpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICAgICAgT2JqZWN0LmZyZWV6ZSh0aGlzKTtcbiAgICB9XG4gICAgZ2V0VmFsdWVGb3JUeXBlKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLmZpbmQoKHZhbHVlKSA9PiB2YWx1ZS50eXBlID09PSB0eXBlKTtcbiAgICB9XG59XG4vKipcbiAqIEByZXR1cm5zIFRoZSBVSS1mcmllbmRseSB0aXRsZSBmb3IgdGhpcyBjaGFsbGVuZ2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoYWxsZW5nZVR5cGVUb1N0cmluZyh0eXBlKSB7XG4gICAgY29uc3QgbWFwcGluZyA9IHtcbiAgICAgICAgW0NoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZV06ICdhcHBsaWNhdGlvbiBwYXNzY29kZScsXG4gICAgICAgIFtDaGFsbGVuZ2VUeXBlLkFjY291bnRQYXNzd29yZF06ICdhY2NvdW50IHBhc3N3b3JkJyxcbiAgICAgICAgW0NoYWxsZW5nZVR5cGUuQmlvbWV0cmljXTogJ2Jpb21ldHJpY3MnLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcHBpbmdbdHlwZV07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBUUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUNBO0FBREE7QUFBQTtBQVdBOzs7O0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFLQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/challenges.ts\n')},"./lib/device_interface.ts": /*!*********************************!*\ !*** ./lib/device_interface.ts ***! \*********************************/ /*! exports provided: DeviceInterface */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeviceInterface", function() { return DeviceInterface; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * Platforms must override this class to provide platform specific utilities\n * and access to the migration service, such as exposing an interface to read\n * raw values from the database or value storage.\n * This avoids the need for platforms to override migrations directly.\n */\n\nvar DeviceInterface = /*#__PURE__*/function () {\n /**\n * @param {function} timeout\n A platform-specific function that is fed functions to run\n when other operations have completed. This is similar to\n setImmediate on the web, or setTimeout(fn, 0).\n * @param {function} interval\n A platform-specific function that is fed functions to\n perform repeatedly. Similar to setInterval.\n */\n function DeviceInterface(namespace, timeout, interval) {\n _classCallCheck(this, DeviceInterface);\n\n this.namespace = namespace;\n this.timeout = timeout || setTimeout.bind(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["getGlobalScope"])());\n this.interval = interval || setInterval.bind(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["getGlobalScope"])());\n }\n\n _createClass(DeviceInterface, [{\n key: "deinit",\n value: function deinit() {\n this.timeout = null;\n this.interval = null;\n }\n }, {\n key: "getJsonParsedStorageValue",\n value: function () {\n var _getJsonParsedStorageValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(key) {\n var value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getRawStorageValue(key);\n\n case 2:\n value = _context.sent;\n return _context.abrupt("return", value ? JSON.parse(value) : value);\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getJsonParsedStorageValue(_x) {\n return _getJsonParsedStorageValue.apply(this, arguments);\n }\n\n return getJsonParsedStorageValue;\n }()\n }]);\n\n return DeviceInterface;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvZGV2aWNlX2ludGVyZmFjZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9kZXZpY2VfaW50ZXJmYWNlLnRzPzI3OTYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0R2xvYmFsU2NvcGUgfSBmcm9tICdATGliL3V0aWxzJztcbi8qKlxuICogUGxhdGZvcm1zIG11c3Qgb3ZlcnJpZGUgdGhpcyBjbGFzcyB0byBwcm92aWRlIHBsYXRmb3JtIHNwZWNpZmljIHV0aWxpdGllc1xuICogYW5kIGFjY2VzcyB0byB0aGUgbWlncmF0aW9uIHNlcnZpY2UsIHN1Y2ggYXMgZXhwb3NpbmcgYW4gaW50ZXJmYWNlIHRvIHJlYWRcbiAqIHJhdyB2YWx1ZXMgZnJvbSB0aGUgZGF0YWJhc2Ugb3IgdmFsdWUgc3RvcmFnZS5cbiAqIFRoaXMgYXZvaWRzIHRoZSBuZWVkIGZvciBwbGF0Zm9ybXMgdG8gb3ZlcnJpZGUgbWlncmF0aW9ucyBkaXJlY3RseS5cbiAqL1xuZXhwb3J0IGNsYXNzIERldmljZUludGVyZmFjZSB7XG4gICAgLyoqXG4gICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHRpbWVvdXRcbiAgICAgICAgIEEgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCBpcyBmZWQgZnVuY3Rpb25zIHRvIHJ1blxuICAgICAgICAgd2hlbiBvdGhlciBvcGVyYXRpb25zIGhhdmUgY29tcGxldGVkLiBUaGlzIGlzIHNpbWlsYXIgdG9cbiAgICAgICAgIHNldEltbWVkaWF0ZSBvbiB0aGUgd2ViLCBvciBzZXRUaW1lb3V0KGZuLCAwKS5cbiAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gaW50ZXJ2YWxcbiAgICAgICAgIEEgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdGhhdCBpcyBmZWQgZnVuY3Rpb25zIHRvXG4gICAgICAgICBwZXJmb3JtIHJlcGVhdGVkbHkuIFNpbWlsYXIgdG8gc2V0SW50ZXJ2YWwuXG4gICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lc3BhY2UsIHRpbWVvdXQsIGludGVydmFsKSB7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuICAgICAgICB0aGlzLnRpbWVvdXQgPSB0aW1lb3V0IHx8IHNldFRpbWVvdXQuYmluZChnZXRHbG9iYWxTY29wZSgpKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IGludGVydmFsIHx8IHNldEludGVydmFsLmJpbmQoZ2V0R2xvYmFsU2NvcGUoKSk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IG51bGw7XG4gICAgfVxuICAgIGFzeW5jIGdldEpzb25QYXJzZWRTdG9yYWdlVmFsdWUoa2V5KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5nZXRSYXdTdG9yYWdlVmFsdWUoa2V5KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlID8gSlNPTi5wYXJzZSh2YWx1ZSkgOiB2YWx1ZTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7OztBQU1BO0FBQ0E7Ozs7Ozs7OztBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBb0JBO0FBcEJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/device_interface.ts\n')},"./lib/events.ts": /*!***********************!*\ !*** ./lib/events.ts ***! \***********************/ /*! exports provided: SyncEvent, ApplicationEvent, applicationEventForSyncEvent */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApplicationEvent", function() { return ApplicationEvent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applicationEventForSyncEvent", function() { return applicationEventForSyncEvent; });\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"]; });\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar ApplicationEvent;\n\n(function (ApplicationEvent) {\n ApplicationEvent[ApplicationEvent["SignedIn"] = 2] = "SignedIn";\n ApplicationEvent[ApplicationEvent["SignedOut"] = 3] = "SignedOut";\n /** When a full, potentially multi-page sync completes */\n\n ApplicationEvent[ApplicationEvent["CompletedFullSync"] = 5] = "CompletedFullSync";\n ApplicationEvent[ApplicationEvent["FailedSync"] = 6] = "FailedSync";\n ApplicationEvent[ApplicationEvent["HighLatencySync"] = 7] = "HighLatencySync";\n ApplicationEvent[ApplicationEvent["EnteredOutOfSync"] = 8] = "EnteredOutOfSync";\n ApplicationEvent[ApplicationEvent["ExitedOutOfSync"] = 9] = "ExitedOutOfSync";\n /**\n * The application has finished it `prepareForLaunch` state and is now ready for unlock\n * Called when the application has initialized and is ready for launch, but before\n * the application has been unlocked, if applicable. Use this to do pre-launch\n * configuration, but do not attempt to access user data like notes or tags.\n */\n\n ApplicationEvent[ApplicationEvent["Started"] = 10] = "Started";\n /**\n * The applicaiton is fully unlocked and ready for i/o\n * Called when the application has been fully decrypted and unlocked. Use this to\n * to begin streaming data like notes and tags.\n */\n\n ApplicationEvent[ApplicationEvent["Launched"] = 11] = "Launched";\n ApplicationEvent[ApplicationEvent["LocalDataLoaded"] = 12] = "LocalDataLoaded";\n /**\n * When the root key or root key wrapper changes. Includes events like account state\n * changes (registering, signing in, changing pw, logging out) and passcode state\n * changes (adding, removing, changing).\n */\n\n ApplicationEvent[ApplicationEvent["KeyStatusChanged"] = 13] = "KeyStatusChanged";\n ApplicationEvent[ApplicationEvent["MajorDataChange"] = 14] = "MajorDataChange";\n ApplicationEvent[ApplicationEvent["CompletedRestart"] = 15] = "CompletedRestart";\n ApplicationEvent[ApplicationEvent["LocalDataIncrementalLoad"] = 16] = "LocalDataIncrementalLoad";\n ApplicationEvent[ApplicationEvent["SyncStatusChanged"] = 17] = "SyncStatusChanged";\n ApplicationEvent[ApplicationEvent["WillSync"] = 18] = "WillSync";\n ApplicationEvent[ApplicationEvent["InvalidSyncSession"] = 19] = "InvalidSyncSession";\n ApplicationEvent[ApplicationEvent["LocalDatabaseReadError"] = 20] = "LocalDatabaseReadError";\n ApplicationEvent[ApplicationEvent["LocalDatabaseWriteError"] = 21] = "LocalDatabaseWriteError";\n /** When a single roundtrip completes with sync, in a potentially multi-page sync request.\n * If just a single roundtrip, this event will be triggered, along with CompletedFullSync */\n\n ApplicationEvent[ApplicationEvent["CompletedIncrementalSync"] = 22] = "CompletedIncrementalSync";\n})(ApplicationEvent || (ApplicationEvent = {}));\n\n;\nfunction applicationEventForSyncEvent(syncEvent) {\n var _SyncEvent$FullSyncCo;\n\n return (_SyncEvent$FullSyncCo = {}, _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].FullSyncCompleted, ApplicationEvent.CompletedFullSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SingleSyncCompleted, ApplicationEvent.CompletedIncrementalSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncError, ApplicationEvent.FailedSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncTakingTooLong, ApplicationEvent.HighLatencySync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].EnterOutOfSync, ApplicationEvent.EnteredOutOfSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].ExitOutOfSync, ApplicationEvent.ExitedOutOfSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataLoaded, ApplicationEvent.LocalDataLoaded), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].MajorDataChange, ApplicationEvent.MajorDataChange), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataIncrementalLoad, ApplicationEvent.LocalDataIncrementalLoad), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged, ApplicationEvent.SyncStatusChanged), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncWillBegin, ApplicationEvent.WillSync), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].InvalidSession, ApplicationEvent.InvalidSyncSession), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].DatabaseReadError, ApplicationEvent.LocalDatabaseReadError), _defineProperty(_SyncEvent$FullSyncCo, _Services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].DatabaseWriteError, ApplicationEvent.LocalDatabaseWriteError), _SyncEvent$FullSyncCo)[syncEvent];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvZXZlbnRzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL2V2ZW50cy50cz9lMWNjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5leHBvcnQgeyBTeW5jRXZlbnQgfTtcbmV4cG9ydCB2YXIgQXBwbGljYXRpb25FdmVudDtcbihmdW5jdGlvbiAoQXBwbGljYXRpb25FdmVudCkge1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIlNpZ25lZEluXCJdID0gMl0gPSBcIlNpZ25lZEluXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiU2lnbmVkT3V0XCJdID0gM10gPSBcIlNpZ25lZE91dFwiO1xuICAgIC8qKiBXaGVuIGEgZnVsbCwgcG90ZW50aWFsbHkgbXVsdGktcGFnZSBzeW5jIGNvbXBsZXRlcyAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkNvbXBsZXRlZEZ1bGxTeW5jXCJdID0gNV0gPSBcIkNvbXBsZXRlZEZ1bGxTeW5jXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiRmFpbGVkU3luY1wiXSA9IDZdID0gXCJGYWlsZWRTeW5jXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiSGlnaExhdGVuY3lTeW5jXCJdID0gN10gPSBcIkhpZ2hMYXRlbmN5U3luY1wiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkVudGVyZWRPdXRPZlN5bmNcIl0gPSA4XSA9IFwiRW50ZXJlZE91dE9mU3luY1wiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkV4aXRlZE91dE9mU3luY1wiXSA9IDldID0gXCJFeGl0ZWRPdXRPZlN5bmNcIjtcbiAgICAvKipcbiAgICAgKiBUaGUgYXBwbGljYXRpb24gaGFzIGZpbmlzaGVkIGl0IGBwcmVwYXJlRm9yTGF1bmNoYCBzdGF0ZSBhbmQgaXMgbm93IHJlYWR5IGZvciB1bmxvY2tcbiAgICAgKiBDYWxsZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gaGFzIGluaXRpYWxpemVkIGFuZCBpcyByZWFkeSBmb3IgbGF1bmNoLCBidXQgYmVmb3JlXG4gICAgICogdGhlIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHVubG9ja2VkLCBpZiBhcHBsaWNhYmxlLiBVc2UgdGhpcyB0byBkbyBwcmUtbGF1bmNoXG4gICAgICogY29uZmlndXJhdGlvbiwgYnV0IGRvIG5vdCBhdHRlbXB0IHRvIGFjY2VzcyB1c2VyIGRhdGEgbGlrZSBub3RlcyBvciB0YWdzLlxuICAgICAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIlN0YXJ0ZWRcIl0gPSAxMF0gPSBcIlN0YXJ0ZWRcIjtcbiAgICAvKipcbiAgICAgKiBUaGUgYXBwbGljYWl0b24gaXMgZnVsbHkgdW5sb2NrZWQgYW5kIHJlYWR5IGZvciBpL29cbiAgICAgKiBDYWxsZWQgd2hlbiB0aGUgYXBwbGljYXRpb24gaGFzIGJlZW4gZnVsbHkgZGVjcnlwdGVkIGFuZCB1bmxvY2tlZC4gVXNlIHRoaXMgdG9cbiAgICAgKiB0byBiZWdpbiBzdHJlYW1pbmcgZGF0YSBsaWtlIG5vdGVzIGFuZCB0YWdzLlxuICAgICAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkxhdW5jaGVkXCJdID0gMTFdID0gXCJMYXVuY2hlZFwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkxvY2FsRGF0YUxvYWRlZFwiXSA9IDEyXSA9IFwiTG9jYWxEYXRhTG9hZGVkXCI7XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgcm9vdCBrZXkgb3Igcm9vdCBrZXkgd3JhcHBlciBjaGFuZ2VzLiBJbmNsdWRlcyBldmVudHMgbGlrZSBhY2NvdW50IHN0YXRlXG4gICAgICogY2hhbmdlcyAocmVnaXN0ZXJpbmcsIHNpZ25pbmcgaW4sIGNoYW5naW5nIHB3LCBsb2dnaW5nIG91dCkgYW5kIHBhc3Njb2RlIHN0YXRlXG4gICAgICogY2hhbmdlcyAoYWRkaW5nLCByZW1vdmluZywgY2hhbmdpbmcpLlxuICAgICAqL1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIktleVN0YXR1c0NoYW5nZWRcIl0gPSAxM10gPSBcIktleVN0YXR1c0NoYW5nZWRcIjtcbiAgICBBcHBsaWNhdGlvbkV2ZW50W0FwcGxpY2F0aW9uRXZlbnRbXCJNYWpvckRhdGFDaGFuZ2VcIl0gPSAxNF0gPSBcIk1ham9yRGF0YUNoYW5nZVwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkNvbXBsZXRlZFJlc3RhcnRcIl0gPSAxNV0gPSBcIkNvbXBsZXRlZFJlc3RhcnRcIjtcbiAgICBBcHBsaWNhdGlvbkV2ZW50W0FwcGxpY2F0aW9uRXZlbnRbXCJMb2NhbERhdGFJbmNyZW1lbnRhbExvYWRcIl0gPSAxNl0gPSBcIkxvY2FsRGF0YUluY3JlbWVudGFsTG9hZFwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIlN5bmNTdGF0dXNDaGFuZ2VkXCJdID0gMTddID0gXCJTeW5jU3RhdHVzQ2hhbmdlZFwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIldpbGxTeW5jXCJdID0gMThdID0gXCJXaWxsU3luY1wiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkludmFsaWRTeW5jU2Vzc2lvblwiXSA9IDE5XSA9IFwiSW52YWxpZFN5bmNTZXNzaW9uXCI7XG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiTG9jYWxEYXRhYmFzZVJlYWRFcnJvclwiXSA9IDIwXSA9IFwiTG9jYWxEYXRhYmFzZVJlYWRFcnJvclwiO1xuICAgIEFwcGxpY2F0aW9uRXZlbnRbQXBwbGljYXRpb25FdmVudFtcIkxvY2FsRGF0YWJhc2VXcml0ZUVycm9yXCJdID0gMjFdID0gXCJMb2NhbERhdGFiYXNlV3JpdGVFcnJvclwiO1xuICAgIC8qKiBXaGVuIGEgc2luZ2xlIHJvdW5kdHJpcCBjb21wbGV0ZXMgd2l0aCBzeW5jLCBpbiBhIHBvdGVudGlhbGx5IG11bHRpLXBhZ2Ugc3luYyByZXF1ZXN0LlxuICAgICAqIElmIGp1c3QgYSBzaW5nbGUgcm91bmR0cmlwLCB0aGlzIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkLCBhbG9uZyB3aXRoIENvbXBsZXRlZEZ1bGxTeW5jICovXG4gICAgQXBwbGljYXRpb25FdmVudFtBcHBsaWNhdGlvbkV2ZW50W1wiQ29tcGxldGVkSW5jcmVtZW50YWxTeW5jXCJdID0gMjJdID0gXCJDb21wbGV0ZWRJbmNyZW1lbnRhbFN5bmNcIjtcbn0pKEFwcGxpY2F0aW9uRXZlbnQgfHwgKEFwcGxpY2F0aW9uRXZlbnQgPSB7fSkpO1xuO1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGxpY2F0aW9uRXZlbnRGb3JTeW5jRXZlbnQoc3luY0V2ZW50KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW1N5bmNFdmVudC5GdWxsU3luY0NvbXBsZXRlZF06IEFwcGxpY2F0aW9uRXZlbnQuQ29tcGxldGVkRnVsbFN5bmMsXG4gICAgICAgIFtTeW5jRXZlbnQuU2luZ2xlU3luY0NvbXBsZXRlZF06IEFwcGxpY2F0aW9uRXZlbnQuQ29tcGxldGVkSW5jcmVtZW50YWxTeW5jLFxuICAgICAgICBbU3luY0V2ZW50LlN5bmNFcnJvcl06IEFwcGxpY2F0aW9uRXZlbnQuRmFpbGVkU3luYyxcbiAgICAgICAgW1N5bmNFdmVudC5TeW5jVGFraW5nVG9vTG9uZ106IEFwcGxpY2F0aW9uRXZlbnQuSGlnaExhdGVuY3lTeW5jLFxuICAgICAgICBbU3luY0V2ZW50LkVudGVyT3V0T2ZTeW5jXTogQXBwbGljYXRpb25FdmVudC5FbnRlcmVkT3V0T2ZTeW5jLFxuICAgICAgICBbU3luY0V2ZW50LkV4aXRPdXRPZlN5bmNdOiBBcHBsaWNhdGlvbkV2ZW50LkV4aXRlZE91dE9mU3luYyxcbiAgICAgICAgW1N5bmNFdmVudC5Mb2NhbERhdGFMb2FkZWRdOiBBcHBsaWNhdGlvbkV2ZW50LkxvY2FsRGF0YUxvYWRlZCxcbiAgICAgICAgW1N5bmNFdmVudC5NYWpvckRhdGFDaGFuZ2VdOiBBcHBsaWNhdGlvbkV2ZW50Lk1ham9yRGF0YUNoYW5nZSxcbiAgICAgICAgW1N5bmNFdmVudC5Mb2NhbERhdGFJbmNyZW1lbnRhbExvYWRdOiBBcHBsaWNhdGlvbkV2ZW50LkxvY2FsRGF0YUluY3JlbWVudGFsTG9hZCxcbiAgICAgICAgW1N5bmNFdmVudC5TdGF0dXNDaGFuZ2VkXTogQXBwbGljYXRpb25FdmVudC5TeW5jU3RhdHVzQ2hhbmdlZCxcbiAgICAgICAgW1N5bmNFdmVudC5TeW5jV2lsbEJlZ2luXTogQXBwbGljYXRpb25FdmVudC5XaWxsU3luYyxcbiAgICAgICAgW1N5bmNFdmVudC5JbnZhbGlkU2Vzc2lvbl06IEFwcGxpY2F0aW9uRXZlbnQuSW52YWxpZFN5bmNTZXNzaW9uLFxuICAgICAgICBbU3luY0V2ZW50LkRhdGFiYXNlUmVhZEVycm9yXTogQXBwbGljYXRpb25FdmVudC5Mb2NhbERhdGFiYXNlUmVhZEVycm9yLFxuICAgICAgICBbU3luY0V2ZW50LkRhdGFiYXNlV3JpdGVFcnJvcl06IEFwcGxpY2F0aW9uRXZlbnQuTG9jYWxEYXRhYmFzZVdyaXRlRXJyb3JcbiAgICB9W3N5bmNFdmVudF07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBTUE7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBOzs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQWdCQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/events.ts\n')},"./lib/index.ts": /*!**********************!*\ !*** ./lib/index.ts ***! \**********************/ /*! exports provided: SNApplication, SNProtocolService, KeyMode, SNProtocolOperator001, SNProtocolOperator002, SNProtocolOperator003, SNProtocolOperator004, DeviceInterface, SNItem, ItemMutator, AppDataField, SNItemsKey, SNPredicate, SNNote, NoteMutator, SNTag, SNSmartTag, SNActionsExtension, Action, SNTheme, SNComponent, ComponentAction, ComponentMutator, SNEditor, SNUserPrefs, UserPrefsMutator, WebPrefKey, MutationType, ComponentArea, LiveItem, SNComponentManager, HistorySession, ItemHistory, ItemHistoryEntry, SNPrivileges, ProtectedAction, PrivilegeCredential, PayloadManager, ItemManager, SNHttpService, ChallengeService, PureService, ApplicationService, SNStorageService, StoragePersistencePolicies, StorageEncryptionPolicies, StorageValueModes, ValueModesKeys, Challenge, ChallengeReason, ChallengeResponse, ChallengeType, challengeTypeToString, ChallengeValue, SNSyncService, SyncSources, SyncModes, SyncQueueStrategy, SortPayloadsByRecentAndContentPriority, SNSessionManager, SNMigrationService, SNAlertService, SNHistoryManager, SNPrivilegesService, SNSingletonManager, SNApiService, Copy, findInArray, isNullOrUndefined, deepMerge, extendArray, removeFromIndex, subtractFromArray, arrayByDifference, uniqCombineObjArrays, greaterOfTwoDates, getGlobalScope, removeFromArray, addIfUnique, dictToArray, truncateHexString, jsonParseEmbeddedKeys, topLevelCompare, Uuid, EncryptionIntent, isLocalStorageIntent, isFileIntent, isDecryptedIntent, intentRequiresEncryption, ContentType, CreateItemFromPayload, Uuids, FillItemContent, ApplicationEvent, Environment, Platform, isEnvironmentWebOrDesktop, isEnvironmentMobile, platformFromString, SyncEvent, MutableCollection, ImmutablePayloadCollection, ItemCollection, CollectionSort, CreateMaxPayloadFromAnyObject, CreateSourcedPayloadFromObject, CreateIntentPayloadFromObject, CreateEncryptionParameters, PayloadByMerging, CopyPayload, PayloadSource, isPayloadSourceRetrieved, ProtocolVersion, PayloadFormat, PurePayload, PayloadField, StorageKey, BaseMigration, PrivilegeSessionLength */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Lib_application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/application */ "./lib/application.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNApplication", function() { return _Lib_application__WEBPACK_IMPORTED_MODULE_0__["SNApplication"]; });\n\n/* harmony import */ var _Services_protocol_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/protocol_service */ "./lib/services/protocol_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolService", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_1__["SNProtocolService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyMode", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_1__["KeyMode"]; });\n\n/* harmony import */ var _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator001", function() { return _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_2__["SNProtocolOperator001"]; });\n\n/* harmony import */ var _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator002", function() { return _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__["SNProtocolOperator002"]; });\n\n/* harmony import */ var _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator003", function() { return _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator003"]; });\n\n/* harmony import */ var _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/operator/004/operator_004 */ "./lib/protocol/operator/004/operator_004.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator004", function() { return _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__["SNProtocolOperator004"]; });\n\n/* harmony import */ var _Lib_device_interface__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/device_interface */ "./lib/device_interface.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeviceInterface", function() { return _Lib_device_interface__WEBPACK_IMPORTED_MODULE_6__["DeviceInterface"]; });\n\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./models */ "./lib/models/index.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItem", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNItem"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["ItemMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AppDataField", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["AppDataField"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItemsKey", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNItemsKey"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPredicate", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNPredicate"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNNote", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNNote"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NoteMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["NoteMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTag", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNTag"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSmartTag", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNSmartTag"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNActionsExtension", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNActionsExtension"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["Action"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTheme", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNTheme"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponent", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNComponent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentAction", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["ComponentAction"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["ComponentMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNEditor", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNEditor"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNUserPrefs", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["SNUserPrefs"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserPrefsMutator", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["UserPrefsMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WebPrefKey", function() { return _models__WEBPACK_IMPORTED_MODULE_7__["WebPrefKey"]; });\n\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutationType", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_8__["MutationType"]; });\n\n/* harmony import */ var _models_app_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./models/app/component */ "./lib/models/app/component.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentArea", function() { return _models_app_component__WEBPACK_IMPORTED_MODULE_9__["ComponentArea"]; });\n\n/* harmony import */ var _models_live_item__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./models/live_item */ "./lib/models/live_item.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LiveItem", function() { return _models_live_item__WEBPACK_IMPORTED_MODULE_10__["LiveItem"]; });\n\n/* harmony import */ var _services_component_manager__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./services/component_manager */ "./lib/services/component_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponentManager", function() { return _services_component_manager__WEBPACK_IMPORTED_MODULE_11__["SNComponentManager"]; });\n\n/* harmony import */ var _Services_history_history_session__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/history/history_session */ "./lib/services/history/history_session.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HistorySession", function() { return _Services_history_history_session__WEBPACK_IMPORTED_MODULE_12__["HistorySession"]; });\n\n/* harmony import */ var _Services_history_item_history__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Services/history/item_history */ "./lib/services/history/item_history.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemHistory", function() { return _Services_history_item_history__WEBPACK_IMPORTED_MODULE_13__["ItemHistory"]; });\n\n/* harmony import */ var _Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Services/history/item_history_entry */ "./lib/services/history/item_history_entry.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemHistoryEntry", function() { return _Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_14__["ItemHistoryEntry"]; });\n\n/* harmony import */ var _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./models/app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivileges", function() { return _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__["SNPrivileges"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProtectedAction", function() { return _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__["ProtectedAction"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegeCredential", function() { return _models_app_privileges__WEBPACK_IMPORTED_MODULE_15__["PrivilegeCredential"]; });\n\n/* harmony import */ var _services_model_manager__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./services/model_manager */ "./lib/services/model_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadManager", function() { return _services_model_manager__WEBPACK_IMPORTED_MODULE_16__["PayloadManager"]; });\n\n/* harmony import */ var _services_item_manager__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./services/item_manager */ "./lib/services/item_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemManager", function() { return _services_item_manager__WEBPACK_IMPORTED_MODULE_17__["ItemManager"]; });\n\n/* harmony import */ var _services_api_http_service__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./services/api/http_service */ "./lib/services/api/http_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHttpService", function() { return _services_api_http_service__WEBPACK_IMPORTED_MODULE_18__["SNHttpService"]; });\n\n/* harmony import */ var _services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./services/challenge/challenge_service */ "./lib/services/challenge/challenge_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeService", function() { return _services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_19__["ChallengeService"]; });\n\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PureService", function() { return _Services_pure_service__WEBPACK_IMPORTED_MODULE_20__["PureService"]; });\n\n/* harmony import */ var _Services_application_service__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @Services/application_service */ "./lib/services/application_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ApplicationService", function() { return _Services_application_service__WEBPACK_IMPORTED_MODULE_21__["ApplicationService"]; });\n\n/* harmony import */ var _services_storage_service__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNStorageService", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["SNStorageService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StoragePersistencePolicies", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["StoragePersistencePolicies"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageEncryptionPolicies", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["StorageEncryptionPolicies"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageValueModes", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["StorageValueModes"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueModesKeys", function() { return _services_storage_service__WEBPACK_IMPORTED_MODULE_22__["ValueModesKeys"]; });\n\n/* harmony import */ var _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @Lib/challenges */ "./lib/challenges.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Challenge", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["Challenge"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeReason", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeReason"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeResponse", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeResponse"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeType", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeType"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "challengeTypeToString", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["challengeTypeToString"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeValue", function() { return _Lib_challenges__WEBPACK_IMPORTED_MODULE_23__["ChallengeValue"]; });\n\n/* harmony import */ var _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./services/sync/sync_service */ "./lib/services/sync/sync_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSyncService", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SNSyncService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncSources", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SyncSources"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncModes", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SyncModes"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncQueueStrategy", function() { return _services_sync_sync_service__WEBPACK_IMPORTED_MODULE_24__["SyncQueueStrategy"]; });\n\n/* harmony import */ var _services_sync_utils__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./services/sync/utils */ "./lib/services/sync/utils.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SortPayloadsByRecentAndContentPriority", function() { return _services_sync_utils__WEBPACK_IMPORTED_MODULE_25__["SortPayloadsByRecentAndContentPriority"]; });\n\n/* harmony import */ var _services_api_session_manager__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./services/api/session_manager */ "./lib/services/api/session_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSessionManager", function() { return _services_api_session_manager__WEBPACK_IMPORTED_MODULE_26__["SNSessionManager"]; });\n\n/* harmony import */ var _services_migration_service__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./services/migration_service */ "./lib/services/migration_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNMigrationService", function() { return _services_migration_service__WEBPACK_IMPORTED_MODULE_27__["SNMigrationService"]; });\n\n/* harmony import */ var _services_alert_service__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./services/alert_service */ "./lib/services/alert_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNAlertService", function() { return _services_alert_service__WEBPACK_IMPORTED_MODULE_28__["SNAlertService"]; });\n\n/* harmony import */ var _services_history_history_manager__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./services/history/history_manager */ "./lib/services/history/history_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHistoryManager", function() { return _services_history_history_manager__WEBPACK_IMPORTED_MODULE_29__["SNHistoryManager"]; });\n\n/* harmony import */ var _services_privileges_service__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./services/privileges_service */ "./lib/services/privileges_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivilegesService", function() { return _services_privileges_service__WEBPACK_IMPORTED_MODULE_30__["SNPrivilegesService"]; });\n\n/* harmony import */ var _services_singleton_manager__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./services/singleton_manager */ "./lib/services/singleton_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSingletonManager", function() { return _services_singleton_manager__WEBPACK_IMPORTED_MODULE_31__["SNSingletonManager"]; });\n\n/* harmony import */ var _services_api_api_service__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./services/api/api_service */ "./lib/services/api/api_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNApiService", function() { return _services_api_api_service__WEBPACK_IMPORTED_MODULE_32__["SNApiService"]; });\n\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./utils */ "./lib/utils.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Copy", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["Copy"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findInArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["findInArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNullOrUndefined", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["isNullOrUndefined"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "deepMerge", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["deepMerge"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "extendArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["extendArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeFromIndex", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["removeFromIndex"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subtractFromArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["subtractFromArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "arrayByDifference", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["arrayByDifference"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqCombineObjArrays", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["uniqCombineObjArrays"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "greaterOfTwoDates", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["greaterOfTwoDates"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getGlobalScope", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["getGlobalScope"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeFromArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["removeFromArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addIfUnique", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["addIfUnique"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dictToArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["dictToArray"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "truncateHexString", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["truncateHexString"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "jsonParseEmbeddedKeys", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["jsonParseEmbeddedKeys"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "topLevelCompare", function() { return _utils__WEBPACK_IMPORTED_MODULE_33__["topLevelCompare"]; });\n\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Uuid", function() { return _Lib_uuid__WEBPACK_IMPORTED_MODULE_34__["Uuid"]; });\n\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EncryptionIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["EncryptionIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isLocalStorageIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["isLocalStorageIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isFileIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["isFileIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isDecryptedIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["isDecryptedIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intentRequiresEncryption", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_35__["intentRequiresEncryption"]; });\n\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ContentType", function() { return _Models_content_types__WEBPACK_IMPORTED_MODULE_36__["ContentType"]; });\n\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateItemFromPayload", function() { return _Models_generator__WEBPACK_IMPORTED_MODULE_37__["CreateItemFromPayload"]; });\n\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Uuids", function() { return _Models_functions__WEBPACK_IMPORTED_MODULE_38__["Uuids"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FillItemContent", function() { return _Models_functions__WEBPACK_IMPORTED_MODULE_38__["FillItemContent"]; });\n\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ApplicationEvent", function() { return _Lib_events__WEBPACK_IMPORTED_MODULE_39__["ApplicationEvent"]; });\n\n/* harmony import */ var _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! @Lib/platforms */ "./lib/platforms.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["Environment"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Platform", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["Platform"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentWebOrDesktop", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["isEnvironmentWebOrDesktop"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentMobile", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["isEnvironmentMobile"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "platformFromString", function() { return _Lib_platforms__WEBPACK_IMPORTED_MODULE_40__["platformFromString"]; });\n\n/* harmony import */ var _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! @Lib/services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_41__["SyncEvent"]; });\n\n/* harmony import */ var _Protocol_collection_collection__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! @Protocol/collection/collection */ "./lib/protocol/collection/collection.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MutableCollection", function() { return _Protocol_collection_collection__WEBPACK_IMPORTED_MODULE_42__["MutableCollection"]; });\n\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ImmutablePayloadCollection", function() { return _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_43__["ImmutablePayloadCollection"]; });\n\n/* harmony import */ var _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! @Protocol/collection/item_collection */ "./lib/protocol/collection/item_collection.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemCollection", function() { return _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_44__["ItemCollection"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CollectionSort", function() { return _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_44__["CollectionSort"]; });\n\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateMaxPayloadFromAnyObject", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateMaxPayloadFromAnyObject"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateSourcedPayloadFromObject", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateSourcedPayloadFromObject"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateIntentPayloadFromObject", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateIntentPayloadFromObject"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateEncryptionParameters", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CreateEncryptionParameters"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadByMerging", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["PayloadByMerging"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CopyPayload", function() { return _Payloads_generator__WEBPACK_IMPORTED_MODULE_45__["CopyPayload"]; });\n\n/* harmony import */ var _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! @Lib/protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadSource", function() { return _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_46__["PayloadSource"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isPayloadSourceRetrieved", function() { return _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_46__["isPayloadSourceRetrieved"]; });\n\n/* harmony import */ var _Lib_protocol_versions__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! @Lib/protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProtocolVersion", function() { return _Lib_protocol_versions__WEBPACK_IMPORTED_MODULE_47__["ProtocolVersion"]; });\n\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadFormat", function() { return _Payloads_formats__WEBPACK_IMPORTED_MODULE_48__["PayloadFormat"]; });\n\n/* harmony import */ var _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! @Payloads/pure_payload */ "./lib/protocol/payloads/pure_payload.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PurePayload", function() { return _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_49__["PurePayload"]; });\n\n/* harmony import */ var _Payloads_fields__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! @Payloads/fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadField", function() { return _Payloads_fields__WEBPACK_IMPORTED_MODULE_50__["PayloadField"]; });\n\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageKey", function() { return _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_51__["StorageKey"]; });\n\n/* harmony import */ var _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! @Lib/migrations/2020-01-01-base */ "./lib/migrations/2020-01-01-base.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseMigration", function() { return _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_52__["BaseMigration"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegeSessionLength", function() { return _services_privileges_service__WEBPACK_IMPORTED_MODULE_30__["PrivilegeSessionLength"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Payloads */\n\n\n\n\n\n\n\n\n\n\n\n/** Migrations */\n\n\n/** Privileges */\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvaW5kZXgudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvaW5kZXgudHM/NGQ4NSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTTkFwcGxpY2F0aW9uIH0gZnJvbSAnQExpYi9hcHBsaWNhdGlvbic7XG5leHBvcnQgeyBTTlByb3RvY29sU2VydmljZSwgS2V5TW9kZSB9IGZyb20gJ0BTZXJ2aWNlcy9wcm90b2NvbF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMSB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMiB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDIvb3BlcmF0b3JfMDAyJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDMvb3BlcmF0b3JfMDAzJztcbmV4cG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwNCB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDQvb3BlcmF0b3JfMDA0JztcbmV4cG9ydCB7IERldmljZUludGVyZmFjZSB9IGZyb20gJ0BMaWIvZGV2aWNlX2ludGVyZmFjZSc7XG5leHBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yLCBBcHBEYXRhRmllbGQsIFNOSXRlbXNLZXksIFNOUHJlZGljYXRlLCBTTk5vdGUsIE5vdGVNdXRhdG9yLCBTTlRhZywgU05TbWFydFRhZywgU05BY3Rpb25zRXh0ZW5zaW9uLCBBY3Rpb24sIFNOVGhlbWUsIFNOQ29tcG9uZW50LCBDb21wb25lbnRBY3Rpb24sIENvbXBvbmVudE11dGF0b3IsIFNORWRpdG9yLCBTTlVzZXJQcmVmcywgVXNlclByZWZzTXV0YXRvciwgV2ViUHJlZktleSB9IGZyb20gJy4vbW9kZWxzJztcbmV4cG9ydCB7IE11dGF0aW9uVHlwZSB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbmV4cG9ydCB7IENvbXBvbmVudEFyZWEgfSBmcm9tICcuL21vZGVscy9hcHAvY29tcG9uZW50JztcbmV4cG9ydCB7IExpdmVJdGVtIH0gZnJvbSAnLi9tb2RlbHMvbGl2ZV9pdGVtJztcbmV4cG9ydCB7IFNOQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4vc2VydmljZXMvY29tcG9uZW50X21hbmFnZXInO1xuZXhwb3J0IHsgSGlzdG9yeVNlc3Npb24gfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24nO1xuZXhwb3J0IHsgSXRlbUhpc3RvcnkgfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnknO1xuZXhwb3J0IHsgSXRlbUhpc3RvcnlFbnRyeSB9IGZyb20gJ0BTZXJ2aWNlcy9oaXN0b3J5L2l0ZW1faGlzdG9yeV9lbnRyeSc7XG5leHBvcnQgeyBTTlByaXZpbGVnZXMsIFByb3RlY3RlZEFjdGlvbiwgUHJpdmlsZWdlQ3JlZGVudGlhbCB9IGZyb20gJy4vbW9kZWxzL2FwcC9wcml2aWxlZ2VzJztcbmV4cG9ydCB7IFBheWxvYWRNYW5hZ2VyIH0gZnJvbSAnLi9zZXJ2aWNlcy9tb2RlbF9tYW5hZ2VyJztcbmV4cG9ydCB7IEl0ZW1NYW5hZ2VyIH0gZnJvbSAnLi9zZXJ2aWNlcy9pdGVtX21hbmFnZXInO1xuZXhwb3J0IHsgU05IdHRwU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpL2h0dHBfc2VydmljZSc7XG5leHBvcnQgeyBDaGFsbGVuZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFsbGVuZ2UvY2hhbGxlbmdlX3NlcnZpY2UnO1xuZXhwb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmV4cG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9hcHBsaWNhdGlvbl9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOU3RvcmFnZVNlcnZpY2UsIFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzLCBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzLCBTdG9yYWdlVmFsdWVNb2RlcywgVmFsdWVNb2Rlc0tleXMgfSBmcm9tICcuL3NlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZSc7XG5leHBvcnQgeyBDaGFsbGVuZ2UsIENoYWxsZW5nZVJlYXNvbiwgQ2hhbGxlbmdlUmVzcG9uc2UsIENoYWxsZW5nZVR5cGUsIGNoYWxsZW5nZVR5cGVUb1N0cmluZywgQ2hhbGxlbmdlVmFsdWUsIH0gZnJvbSAnQExpYi9jaGFsbGVuZ2VzJztcbmV4cG9ydCB7IFNOU3luY1NlcnZpY2UsIFN5bmNTb3VyY2VzLCBTeW5jTW9kZXMsIFN5bmNRdWV1ZVN0cmF0ZWd5LCB9IGZyb20gJy4vc2VydmljZXMvc3luYy9zeW5jX3NlcnZpY2UnO1xuZXhwb3J0IHsgU29ydFBheWxvYWRzQnlSZWNlbnRBbmRDb250ZW50UHJpb3JpdHkgfSBmcm9tICcuL3NlcnZpY2VzL3N5bmMvdXRpbHMnO1xuZXhwb3J0IHsgU05TZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2VydmljZXMvYXBpL3Nlc3Npb25fbWFuYWdlcic7XG5leHBvcnQgeyBTTk1pZ3JhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21pZ3JhdGlvbl9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hbGVydF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOSGlzdG9yeU1hbmFnZXIgfSBmcm9tICcuL3NlcnZpY2VzL2hpc3RvcnkvaGlzdG9yeV9tYW5hZ2VyJztcbmV4cG9ydCB7IFNOUHJpdmlsZWdlc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ByaXZpbGVnZXNfc2VydmljZSc7XG5leHBvcnQgeyBTTlNpbmdsZXRvbk1hbmFnZXIgfSBmcm9tICcuL3NlcnZpY2VzL3NpbmdsZXRvbl9tYW5hZ2VyJztcbmV4cG9ydCB7IFNOQXBpU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpL2FwaV9zZXJ2aWNlJztcbmV4cG9ydCB7IENvcHksIGZpbmRJbkFycmF5LCBpc051bGxPclVuZGVmaW5lZCwgZGVlcE1lcmdlLCBleHRlbmRBcnJheSwgcmVtb3ZlRnJvbUluZGV4LCBzdWJ0cmFjdEZyb21BcnJheSwgYXJyYXlCeURpZmZlcmVuY2UsIHVuaXFDb21iaW5lT2JqQXJyYXlzLCBncmVhdGVyT2ZUd29EYXRlcywgZ2V0R2xvYmFsU2NvcGUsIHJlbW92ZUZyb21BcnJheSwgYWRkSWZVbmlxdWUsIGRpY3RUb0FycmF5LCB0cnVuY2F0ZUhleFN0cmluZywganNvblBhcnNlRW1iZWRkZWRLZXlzLCB0b3BMZXZlbENvbXBhcmUgfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB7IFV1aWQgfSBmcm9tICdATGliL3V1aWQnO1xuZXhwb3J0IHsgRW5jcnlwdGlvbkludGVudCwgaXNMb2NhbFN0b3JhZ2VJbnRlbnQsIGlzRmlsZUludGVudCwgaXNEZWNyeXB0ZWRJbnRlbnQsIGludGVudFJlcXVpcmVzRW5jcnlwdGlvbiB9IGZyb20gJ0BQcm90b2NvbC9pbnRlbnRzJztcbmV4cG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmV4cG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmV4cG9ydCB7IFV1aWRzLCBGaWxsSXRlbUNvbnRlbnQgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5leHBvcnQgeyBBcHBsaWNhdGlvbkV2ZW50IH0gZnJvbSAnQExpYi9ldmVudHMnO1xuZXhwb3J0IHsgRW52aXJvbm1lbnQsIFBsYXRmb3JtLCBpc0Vudmlyb25tZW50V2ViT3JEZXNrdG9wLCBpc0Vudmlyb25tZW50TW9iaWxlLCBwbGF0Zm9ybUZyb21TdHJpbmcgfSBmcm9tICdATGliL3BsYXRmb3Jtcyc7XG5leHBvcnQgeyBTeW5jRXZlbnQgfSBmcm9tICdATGliL3NlcnZpY2VzL3N5bmMvZXZlbnRzJztcbi8qKiBQYXlsb2FkcyAqL1xuZXhwb3J0IHsgTXV0YWJsZUNvbGxlY3Rpb24gfSBmcm9tICdAUHJvdG9jb2wvY29sbGVjdGlvbi9jb2xsZWN0aW9uJztcbmV4cG9ydCB7IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uIH0gZnJvbSAnQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uJztcbmV4cG9ydCB7IEl0ZW1Db2xsZWN0aW9uLCBDb2xsZWN0aW9uU29ydCB9IGZyb20gJ0BQcm90b2NvbC9jb2xsZWN0aW9uL2l0ZW1fY29sbGVjdGlvbic7XG5leHBvcnQgeyBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCwgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0LCBDcmVhdGVJbnRlbnRQYXlsb2FkRnJvbU9iamVjdCwgQ3JlYXRlRW5jcnlwdGlvblBhcmFtZXRlcnMsIFBheWxvYWRCeU1lcmdpbmcsIENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5leHBvcnQgeyBQYXlsb2FkU291cmNlLCBpc1BheWxvYWRTb3VyY2VSZXRyaWV2ZWQgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL3NvdXJjZXMnO1xuZXhwb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnQExpYi9wcm90b2NvbC92ZXJzaW9ucyc7XG5leHBvcnQgeyBQYXlsb2FkRm9ybWF0IH0gZnJvbSAnQFBheWxvYWRzL2Zvcm1hdHMnO1xuZXhwb3J0IHsgUHVyZVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvcHVyZV9wYXlsb2FkJztcbmV4cG9ydCB7IFBheWxvYWRGaWVsZCB9IGZyb20gJ0BQYXlsb2Fkcy9maWVsZHMnO1xuZXhwb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbi8qKiBNaWdyYXRpb25zICovXG5leHBvcnQgeyBCYXNlTWlncmF0aW9uIH0gZnJvbSAnQExpYi9taWdyYXRpb25zLzIwMjAtMDEtMDEtYmFzZSc7XG4vKiogUHJpdmlsZWdlcyAqL1xuZXhwb3J0IHsgUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aCB9IGZyb20gJ0BTZXJ2aWNlcy9wcml2aWxlZ2VzX3NlcnZpY2UnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/index.ts\n')},"./lib/migrations/2020-01-01-base.ts": /*!*******************************************!*\ !*** ./lib/migrations/2020-01-01-base.ts ***! \*******************************************/ /*! exports provided: BaseMigration */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseMigration", function() { return BaseMigration; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/migrations/migration */ "./lib/migrations/migration.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\nvar BaseMigration = /*#__PURE__*/function (_Migration) {\n _inherits(BaseMigration, _Migration);\n\n function BaseMigration() {\n _classCallCheck(this, BaseMigration);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(BaseMigration).apply(this, arguments));\n }\n\n _createClass(BaseMigration, [{\n key: "registerStageHandlers",\n value: function registerStageHandlers() {\n var _this = this;\n\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_3__["ApplicationStage"].PreparingForLaunch_0, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this.migrateMigrationTimestampAllPlatforms();\n\n case 2:\n _this.markDone();\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n /**\n * Establish last_migration_date.\n * We need to determine if this is a new application download,\n * or if we\'re coming from an older, non-current client.\n *\n * If new application download, we expect last_migration_date\n * to be null. However, last_migration_date can also be null if you\n * haven\'t yet migration to using this system.\n *\n * So in addition to this date being null, we check if deviceInterface\n * has pre-existing storage values for old migration system.\n * If so, this means this is a legacy client making its first jump to\n * this new migration system.\n */\n\n }, {\n key: "migrateMigrationTimestampAllPlatforms",\n value: function () {\n var _migrateMigrationTimestampAllPlatforms = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var possibleLegacyKeys, hasLegacyValue, _i, _possibleLegacyKeys, legacyKey, value, newKey, lastDate, hasNewStructure, newLastMigrationDate, _newLastMigrationDate;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n /** If any of these keys exist in raw storage, we are coming from a previous application version */\n possibleLegacyKeys = [\'migrations\', \'ephemeral\', \'user\', \'cachedThemes\', \'syncToken\', \'encryptedStorage\'];\n hasLegacyValue = false;\n _i = 0, _possibleLegacyKeys = possibleLegacyKeys;\n\n case 3:\n if (!(_i < _possibleLegacyKeys.length)) {\n _context2.next = 14;\n break;\n }\n\n legacyKey = _possibleLegacyKeys[_i];\n _context2.next = 7;\n return this.services.deviceInterface.getRawStorageValue(legacyKey);\n\n case 7:\n value = _context2.sent;\n\n if (!value) {\n _context2.next = 11;\n break;\n }\n\n hasLegacyValue = true;\n return _context2.abrupt("break", 14);\n\n case 11:\n _i++;\n _context2.next = 3;\n break;\n\n case 14:\n newKey = Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["namespacedKey"])(this.services.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["RawStorageKey"].LastMigrationTimestamp);\n _context2.next = 17;\n return this.services.deviceInterface.getRawStorageValue(newKey);\n\n case 17:\n lastDate = _context2.sent;\n hasNewStructure = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(lastDate);\n\n if (!(!hasNewStructure && hasLegacyValue)) {\n _context2.next = 25;\n break;\n }\n\n /**\n * Old client updating for the first time. We need to run all migrations.\n * Set last migration date as epoch.\n */\n newLastMigrationDate = new Date(0).getTime();\n _context2.next = 23;\n return this.services.deviceInterface.setRawStorageValue(newKey, newLastMigrationDate);\n\n case 23:\n _context2.next = 32;\n break;\n\n case 25:\n if (!(!hasNewStructure && !hasLegacyValue)) {\n _context2.next = 31;\n break;\n }\n\n /** New application, dont run any migrations. Set last migration date as now. */\n _newLastMigrationDate = new Date().getTime();\n _context2.next = 29;\n return this.services.deviceInterface.setRawStorageValue(newKey, _newLastMigrationDate);\n\n case 29:\n _context2.next = 32;\n break;\n\n case 31:\n if (hasNewStructure) {\n /** Application which has already performed base migration. Keep date as is. */\n }\n\n case 32:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function migrateMigrationTimestampAllPlatforms() {\n return _migrateMigrationTimestampAllPlatforms.apply(this, arguments);\n }\n\n return migrateMigrationTimestampAllPlatforms;\n }()\n }], [{\n key: "timestamp",\n value: function timestamp() {\n return new Date(\'2020-01-01\').getTime();\n }\n }]);\n\n return BaseMigration;\n}(_Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_1__["Migration"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy8yMDIwLTAxLTAxLWJhc2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbWlncmF0aW9ucy8yMDIwLTAxLTAxLWJhc2UudHM/ZTJmOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaWdyYXRpb24gfSBmcm9tICdATGliL21pZ3JhdGlvbnMvbWlncmF0aW9uJztcbmltcG9ydCB7IG5hbWVzcGFjZWRLZXksIFJhd1N0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YWdlIH0gZnJvbSAnQExpYi9zdGFnZXMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdATGliL3V0aWxzJztcbmV4cG9ydCBjbGFzcyBCYXNlTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uIHtcbiAgICBzdGF0aWMgdGltZXN0YW1wKCkge1xuICAgICAgICByZXR1cm4gKG5ldyBEYXRlKCcyMDIwLTAxLTAxJykuZ2V0VGltZSgpKTtcbiAgICB9XG4gICAgcmVnaXN0ZXJTdGFnZUhhbmRsZXJzKCkge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhZ2VIYW5kbGVyKEFwcGxpY2F0aW9uU3RhZ2UuUHJlcGFyaW5nRm9yTGF1bmNoXzAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWlncmF0ZU1pZ3JhdGlvblRpbWVzdGFtcEFsbFBsYXRmb3JtcygpO1xuICAgICAgICAgICAgdGhpcy5tYXJrRG9uZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRXN0YWJsaXNoIGxhc3RfbWlncmF0aW9uX2RhdGUuXG4gICAgICogV2UgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhIG5ldyBhcHBsaWNhdGlvbiBkb3dubG9hZCxcbiAgICAgKiBvciBpZiB3ZSdyZSBjb21pbmcgZnJvbSBhbiBvbGRlciwgbm9uLWN1cnJlbnQgY2xpZW50LlxuICAgICAqXG4gICAgICogSWYgbmV3IGFwcGxpY2F0aW9uIGRvd25sb2FkLCB3ZSBleHBlY3QgbGFzdF9taWdyYXRpb25fZGF0ZVxuICAgICAqIHRvIGJlIG51bGwuIEhvd2V2ZXIsIGxhc3RfbWlncmF0aW9uX2RhdGUgY2FuIGFsc28gYmUgbnVsbCBpZiB5b3VcbiAgICAgKiBoYXZlbid0IHlldCBtaWdyYXRpb24gdG8gdXNpbmcgdGhpcyBzeXN0ZW0uXG4gICAgICpcbiAgICAgKiBTbyBpbiBhZGRpdGlvbiB0byB0aGlzIGRhdGUgYmVpbmcgbnVsbCwgd2UgY2hlY2sgaWYgZGV2aWNlSW50ZXJmYWNlXG4gICAgICogaGFzIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlcyBmb3Igb2xkIG1pZ3JhdGlvbiBzeXN0ZW0uXG4gICAgICogSWYgc28sIHRoaXMgbWVhbnMgdGhpcyBpcyBhIGxlZ2FjeSBjbGllbnQgbWFraW5nIGl0cyBmaXJzdCBqdW1wIHRvXG4gICAgICogdGhpcyBuZXcgbWlncmF0aW9uIHN5c3RlbS5cbiAgICAgKi9cbiAgICBhc3luYyBtaWdyYXRlTWlncmF0aW9uVGltZXN0YW1wQWxsUGxhdGZvcm1zKCkge1xuICAgICAgICAvKiogSWYgYW55IG9mIHRoZXNlIGtleXMgZXhpc3QgaW4gcmF3IHN0b3JhZ2UsIHdlIGFyZSBjb21pbmcgZnJvbSBhIHByZXZpb3VzIGFwcGxpY2F0aW9uIHZlcnNpb24gKi9cbiAgICAgICAgY29uc3QgcG9zc2libGVMZWdhY3lLZXlzID0gW1xuICAgICAgICAgICAgJ21pZ3JhdGlvbnMnLCAnZXBoZW1lcmFsJywgJ3VzZXInLCAnY2FjaGVkVGhlbWVzJywgJ3N5bmNUb2tlbicsICdlbmNyeXB0ZWRTdG9yYWdlJ1xuICAgICAgICBdO1xuICAgICAgICBsZXQgaGFzTGVnYWN5VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBsZWdhY3lLZXkgb2YgcG9zc2libGVMZWdhY3lLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLmdldFJhd1N0b3JhZ2VWYWx1ZShsZWdhY3lLZXkpO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaGFzTGVnYWN5VmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0tleSA9IG5hbWVzcGFjZWRLZXkodGhpcy5zZXJ2aWNlcy5uYW1lc3BhY2UsIFJhd1N0b3JhZ2VLZXkuTGFzdE1pZ3JhdGlvblRpbWVzdGFtcCk7XG4gICAgICAgIGNvbnN0IGxhc3REYXRlID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0UmF3U3RvcmFnZVZhbHVlKG5ld0tleSk7XG4gICAgICAgIGNvbnN0IGhhc05ld1N0cnVjdHVyZSA9ICFpc051bGxPclVuZGVmaW5lZChsYXN0RGF0ZSk7XG4gICAgICAgIGlmICghaGFzTmV3U3RydWN0dXJlICYmIGhhc0xlZ2FjeVZhbHVlKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE9sZCBjbGllbnQgdXBkYXRpbmcgZm9yIHRoZSBmaXJzdCB0aW1lLiBXZSBuZWVkIHRvIHJ1biBhbGwgbWlncmF0aW9ucy5cbiAgICAgICAgICAgICAqIFNldCBsYXN0IG1pZ3JhdGlvbiBkYXRlIGFzIGVwb2NoLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBuZXdMYXN0TWlncmF0aW9uRGF0ZSA9IG5ldyBEYXRlKDApLmdldFRpbWUoKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLnNldFJhd1N0b3JhZ2VWYWx1ZShuZXdLZXksIG5ld0xhc3RNaWdyYXRpb25EYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaGFzTmV3U3RydWN0dXJlICYmICFoYXNMZWdhY3lWYWx1ZSkge1xuICAgICAgICAgICAgLyoqIE5ldyBhcHBsaWNhdGlvbiwgZG9udCBydW4gYW55IG1pZ3JhdGlvbnMuIFNldCBsYXN0IG1pZ3JhdGlvbiBkYXRlIGFzIG5vdy4gKi9cbiAgICAgICAgICAgIGNvbnN0IG5ld0xhc3RNaWdyYXRpb25EYXRlID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5zZXRSYXdTdG9yYWdlVmFsdWUobmV3S2V5LCBuZXdMYXN0TWlncmF0aW9uRGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaGFzTmV3U3RydWN0dXJlKSB7XG4gICAgICAgICAgICAvKiogQXBwbGljYXRpb24gd2hpY2ggaGFzIGFscmVhZHkgcGVyZm9ybWVkIGJhc2UgbWlncmF0aW9uLiBLZWVwIGRhdGUgYXMgaXMuICovXG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBVkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQUdBO0FBN0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE2QkE7QUE5QkE7QUFBQTtBQUNBO0FBREE7QUErQkE7QUFDQTtBQWhDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZ0NBO0FBakNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxQ0E7QUFyQ0E7QUFBQTtBQUNBO0FBREE7QUFzQ0E7QUFDQTtBQUNBO0FBeENBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF3Q0E7Ozs7QUFJQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWdEQTtBQUNBO0FBbERBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUF4REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/migrations/2020-01-01-base.ts\n')},"./lib/migrations/2020-01-15.ts": /*!**************************************!*\ !*** ./lib/migrations/2020-01-15.ts ***! \**************************************/ /*! exports provided: Migration20200115 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Migration20200115", function() { return Migration20200115; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _protocol_intents__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _protocol_versions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _challenges__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../challenges */ "./lib/challenges.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _services_storage_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Lib/migrations/migration */ "./lib/migrations/migration.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Services_api_session__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Services/api/session */ "./lib/services/api/session.ts");\n/* harmony import */ var _models__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../models */ "./lib/models/index.ts");\n/* harmony import */ var _Lib_platforms__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @Lib/platforms */ "./lib/platforms.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar LegacyKeys = {\n WebPasscodeParamsKey: \'offlineParams\',\n MobilePasscodeParamsKey: \'pc_params\',\n AllAccountKeyParamsKey: \'auth_params\',\n WebEncryptedStorageKey: \'encryptedStorage\',\n MobileWrappedRootKeyKey: \'encrypted_account_keys\',\n AllMigrations: \'migrations\'\n};\nvar Migration20200115 = /*#__PURE__*/function (_Migration) {\n _inherits(Migration20200115, _Migration);\n\n function Migration20200115() {\n _classCallCheck(this, Migration20200115);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Migration20200115).apply(this, arguments));\n }\n\n _createClass(Migration20200115, [{\n key: "registerStageHandlers",\n value: function registerStageHandlers() {\n var _this = this;\n\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_5__["ApplicationStage"].PreparingForLaunch_0, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_17__["isEnvironmentWebOrDesktop"])(_this.services.environment)) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt("return", _this.migrateStorageStructureForWebDesktop());\n\n case 4:\n if (!Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_17__["isEnvironmentMobile"])(_this.services.environment)) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt("return", _this.migrateStorageStructureForMobile());\n\n case 6:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_5__["ApplicationStage"].StorageDecrypted_09, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return _this.migrateArbitraryRawStorageToManagedStorageAllPlatforms();\n\n case 2:\n _context2.next = 4;\n return _this.migrateSessionStorage();\n\n case 4:\n _context2.next = 6;\n return _this.deleteLegacyStorageValues();\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n })));\n this.registerStageHandler(_Lib_stages__WEBPACK_IMPORTED_MODULE_5__["ApplicationStage"].LoadingDatabase_11, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this.createDefaultItemsKeyForAllPlatforms();\n\n case 2:\n _this.markDone();\n\n case 3:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n /**\n * Web\n * Migrates legacy storage structure into new managed format.\n * If encrypted storage exists, we need to first decrypt it with the passcode.\n * Then extract the account key from it. Then, encrypt storage with the\n * account key. Then encrypt the account key with the passcode and store it\n * within the new storage format.\n *\n * Generate note: We do not use the keychain if passcode is available.\n */\n\n }, {\n key: "migrateStorageStructureForWebDesktop",\n value: function () {\n var _migrateStorageStructureForWebDesktop = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var _newStorageRawStructu;\n\n var deviceInterface, newStorageRawStructure, rawAccountKeyParams, encryptedStorage, encryptedStoragePayload, passcodeResult, passcodeKey, decryptedStoragePayload, passcodeParams, rawStorageValueStore, storageValueStore, keyToEncryptStorageWith, hasAccountKeys, _ref4, accountKey, wrappedKey, ak, version, _accountKey;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n deviceInterface = this.services.deviceInterface;\n newStorageRawStructure = (_newStorageRawStructu = {}, _defineProperty(_newStorageRawStructu, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Wrapped, {}), _defineProperty(_newStorageRawStructu, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Unwrapped, {}), _defineProperty(_newStorageRawStructu, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Nonwrapped, {}), _newStorageRawStructu);\n _context4.next = 4;\n return deviceInterface.getJsonParsedStorageValue(LegacyKeys.AllAccountKeyParamsKey);\n\n case 4:\n rawAccountKeyParams = _context4.sent;\n\n /** Could be null if no account, or if account and storage is encrypted */\n if (rawAccountKeyParams) {\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyParams] = rawAccountKeyParams;\n }\n\n _context4.next = 8;\n return deviceInterface.getJsonParsedStorageValue(LegacyKeys.WebEncryptedStorageKey);\n\n case 8:\n encryptedStorage = _context4.sent;\n\n if (!encryptedStorage) {\n _context4.next = 36;\n break;\n }\n\n encryptedStoragePayload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(encryptedStorage);\n _context4.next = 13;\n return this.webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage(encryptedStoragePayload);\n\n case 13:\n passcodeResult = _context4.sent;\n passcodeKey = passcodeResult.key;\n decryptedStoragePayload = passcodeResult.decryptedStoragePayload;\n passcodeParams = passcodeResult.keyParams;\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyWrapperKeyParams] = passcodeParams.getPortableValue();\n rawStorageValueStore = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(decryptedStoragePayload.contentObject.storage);\n storageValueStore = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["jsonParseEmbeddedKeys"])(rawStorageValueStore);\n /** Store previously encrypted auth_params into new nonwrapped value key */\n\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyParams] = storageValueStore[LegacyKeys.AllAccountKeyParamsKey];\n keyToEncryptStorageWith = passcodeKey;\n /** Extract account key (mk, pw, ak) if it exists */\n\n hasAccountKeys = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(storageValueStore.mk);\n\n if (!hasAccountKeys) {\n _context4.next = 31;\n break;\n }\n\n _context4.next = 26;\n return this.webDesktopHelperExtractAndWrapAccountKeysFromValueStore(passcodeKey, storageValueStore);\n\n case 26:\n _ref4 = _context4.sent;\n accountKey = _ref4.accountKey;\n wrappedKey = _ref4.wrappedKey;\n keyToEncryptStorageWith = accountKey;\n newStorageRawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].WrappedRootKey] = wrappedKey;\n\n case 31:\n _context4.next = 33;\n return this.webDesktopHelperEncryptStorage(keyToEncryptStorageWith, decryptedStoragePayload, storageValueStore);\n\n case 33:\n newStorageRawStructure.wrapped = _context4.sent;\n _context4.next = 55;\n break;\n\n case 36:\n _context4.next = 38;\n return this.services.deviceInterface.getRawStorageValue(\'ak\');\n\n case 38:\n ak = _context4.sent;\n version = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(ak) ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n _context4.t0 = _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"];\n _context4.next = 43;\n return this.services.deviceInterface.getRawStorageValue(\'mk\');\n\n case 43:\n _context4.t1 = _context4.sent;\n _context4.next = 46;\n return this.services.deviceInterface.getRawStorageValue(\'pw\');\n\n case 46:\n _context4.t2 = _context4.sent;\n _context4.t3 = ak;\n _context4.t4 = version;\n _context4.t5 = {\n masterKey: _context4.t1,\n serverPassword: _context4.t2,\n dataAuthenticationKey: _context4.t3,\n version: _context4.t4\n };\n _context4.next = 52;\n return _context4.t0.Create.call(_context4.t0, _context4.t5);\n\n case 52:\n _accountKey = _context4.sent;\n _context4.next = 55;\n return this.services.deviceInterface.setKeychainValue(_accountKey.getPersistableValue());\n\n case 55:\n _context4.next = 57;\n return this.allPlatformHelperSetStorageStructure(newStorageRawStructure);\n\n case 57:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function migrateStorageStructureForWebDesktop() {\n return _migrateStorageStructureForWebDesktop.apply(this, arguments);\n }\n\n return migrateStorageStructureForWebDesktop;\n }()\n /**\n * Helper\n * All platforms\n */\n\n }, {\n key: "allPlatformHelperSetStorageStructure",\n value: function () {\n var _allPlatformHelperSetStorageStructure = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(rawStructure) {\n var newStructure;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n newStructure = _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["SNStorageService"].defaultValuesObject(rawStructure.wrapped, rawStructure.unwrapped, rawStructure.nonwrapped);\n newStructure[_services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Unwrapped] = undefined;\n _context5.next = 4;\n return this.services.deviceInterface.setRawStorageValue(Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["namespacedKey"])(this.services.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["RawStorageKey"].StorageObject), JSON.stringify(newStructure));\n\n case 4:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function allPlatformHelperSetStorageStructure(_x) {\n return _allPlatformHelperSetStorageStructure.apply(this, arguments);\n }\n\n return allPlatformHelperSetStorageStructure;\n }()\n /**\n * Helper\n * Web/desktop only\n */\n\n }, {\n key: "webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage",\n value: function () {\n var _webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(encryptedPayload) {\n var rawPasscodeParams, passcodeParams, decryptedStoragePayload, errorDecrypting, passcodeKey, challenge, _ref5, _ref6, value, passcode;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.WebPasscodeParamsKey);\n\n case 2:\n rawPasscodeParams = _context6.sent;\n passcodeParams = this.services.protocolService.createKeyParams(rawPasscodeParams);\n /** Decrypt it with the passcode */\n\n errorDecrypting = true;\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_7__["Challenge"]([_challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeType"].LocalPasscode], _challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeReason"].Migration);\n\n case 6:\n if (!errorDecrypting) {\n _context6.next = 23;\n break;\n }\n\n _context6.next = 9;\n return this.services.challengeService.promptForChallengeResponseWithCustomValidation(challenge);\n\n case 9:\n _ref5 = _context6.sent;\n _ref6 = _slicedToArray(_ref5, 1);\n value = _ref6[0];\n passcode = value.value;\n _context6.next = 15;\n return this.services.protocolService.computeRootKey(passcode, passcodeParams);\n\n case 15:\n passcodeKey = _context6.sent;\n _context6.next = 18;\n return this.services.protocolService.payloadByDecryptingPayload(encryptedPayload, passcodeKey);\n\n case 18:\n decryptedStoragePayload = _context6.sent;\n errorDecrypting = decryptedStoragePayload.errorDecrypting;\n this.services.challengeService.setValidationStatusForChallenge(challenge, value, !decryptedStoragePayload.errorDecrypting);\n _context6.next = 6;\n break;\n\n case 23:\n return _context6.abrupt("return", {\n decryptedStoragePayload: decryptedStoragePayload,\n key: passcodeKey,\n keyParams: passcodeParams\n });\n\n case 24:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage(_x2) {\n return _webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage.apply(this, arguments);\n }\n\n return webDesktopHelperGetPasscodeKeyAndDecryptEncryptedStorage;\n }()\n /**\n * Helper\n * Web/desktop only\n */\n\n }, {\n key: "webDesktopHelperExtractAndWrapAccountKeysFromValueStore",\n value: function () {\n var _webDesktopHelperExtractAndWrapAccountKeysFromValueStore = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(passcodeKey, storageValueStore) {\n var _encryptedAccountKey;\n\n var version, accountKey, accountKeyPayload, encryptedAccountKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n version = storageValueStore.ak ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n _context7.next = 3;\n return _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"].Create({\n masterKey: storageValueStore.mk,\n serverPassword: storageValueStore.pw,\n dataAuthenticationKey: storageValueStore.ak,\n version: version\n });\n\n case 3:\n accountKey = _context7.sent;\n delete storageValueStore.mk;\n delete storageValueStore.pw;\n delete storageValueStore.ak;\n accountKeyPayload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(accountKey);\n\n if (!passcodeKey) {\n _context7.next = 12;\n break;\n }\n\n _context7.next = 11;\n return this.services.protocolService.payloadByEncryptingPayload(accountKeyPayload, _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStorageEncrypted, passcodeKey);\n\n case 11:\n encryptedAccountKey = _context7.sent;\n\n case 12:\n return _context7.abrupt("return", {\n accountKey: accountKey,\n wrappedKey: (_encryptedAccountKey = encryptedAccountKey) === null || _encryptedAccountKey === void 0 ? void 0 : _encryptedAccountKey.ejected()\n });\n\n case 13:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function webDesktopHelperExtractAndWrapAccountKeysFromValueStore(_x3, _x4) {\n return _webDesktopHelperExtractAndWrapAccountKeysFromValueStore.apply(this, arguments);\n }\n\n return webDesktopHelperExtractAndWrapAccountKeysFromValueStore;\n }()\n /**\n * Helper\n * Web/desktop only\n * Encrypt storage with account key\n */\n\n }, {\n key: "webDesktopHelperEncryptStorage",\n value: function () {\n var _webDesktopHelperEncryptStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(key, decryptedStoragePayload, storageValueStore) {\n var wrapped;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.services.protocolService.payloadByEncryptingPayload(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CopyPayload"])(decryptedStoragePayload, {\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].EncryptedStorage,\n content: storageValueStore\n }), _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStoragePreferEncrypted, key);\n\n case 2:\n wrapped = _context8.sent;\n return _context8.abrupt("return", wrapped.ejected());\n\n case 4:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function webDesktopHelperEncryptStorage(_x5, _x6, _x7) {\n return _webDesktopHelperEncryptStorage.apply(this, arguments);\n }\n\n return webDesktopHelperEncryptStorage;\n }()\n /**\n * Mobile\n * On mobile legacy structure is mostly similar to new structure,\n * in that the account key is encrypted with the passcode. But mobile did\n * not have encrypted storage, so we simply need to transfer all existing\n * storage values into new managed structure.\n *\n * If no account but passcode only, the only thing we stored on mobile\n * previously was keys.offline.pw and keys.offline.timing in the keychain\n * that we compared against for valid decryption.\n * In the new version, we know a passcode is correct if it can decrypt storage.\n * As part of the migration, we’ll need to request the raw passcode from user,\n * compare it against the keychain offline.pw value, and if correct,\n * migrate storage to new structure, and encrypt with passcode key.\n *\n * If account only, take the value in the keychain, and rename the values\n * (i.e mk > masterKey).\n * @access private\n */\n\n }, {\n key: "migrateStorageStructureForMobile",\n value: function () {\n var _migrateStorageStructureForMobile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10() {\n var _ValueModesKeys$Nonwr,\n _rawStructure,\n _this2 = this;\n\n var wrappedAccountKey, rawAccountKeyParams, rawPasscodeParams, rawStructure, keychainValue, passcodeParams, getPasscodeKey, timing, passcodeKey, unwrappedAccountKey, accountKeyContent, defaultVersion, newAccountKey, newWrappedAccountKey, _passcodeKey, payload, wrapped, hasAccount, _defaultVersion, accountKey;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.MobileWrappedRootKeyKey);\n\n case 2:\n wrappedAccountKey = _context10.sent;\n _context10.next = 5;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.AllAccountKeyParamsKey);\n\n case 5:\n rawAccountKeyParams = _context10.sent;\n _context10.next = 8;\n return this.services.deviceInterface.getJsonParsedStorageValue(LegacyKeys.MobilePasscodeParamsKey);\n\n case 8:\n rawPasscodeParams = _context10.sent;\n rawStructure = (_rawStructure = {}, _defineProperty(_rawStructure, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Nonwrapped, (_ValueModesKeys$Nonwr = {}, _defineProperty(_ValueModesKeys$Nonwr, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].WrappedRootKey, wrappedAccountKey), _defineProperty(_ValueModesKeys$Nonwr, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyWrapperKeyParams, rawPasscodeParams), _defineProperty(_ValueModesKeys$Nonwr, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].RootKeyParams, rawAccountKeyParams), _ValueModesKeys$Nonwr)), _defineProperty(_rawStructure, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Unwrapped, {}), _defineProperty(_rawStructure, _services_storage_service__WEBPACK_IMPORTED_MODULE_9__["ValueModesKeys"].Wrapped, {}), _rawStructure);\n _context10.next = 12;\n return this.services.deviceInterface.getKeychainValue();\n\n case 12:\n keychainValue = _context10.sent;\n\n if (!rawPasscodeParams) {\n _context10.next = 56;\n break;\n }\n\n passcodeParams = this.services.protocolService.createKeyParams(rawPasscodeParams);\n\n getPasscodeKey = /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var pwHash, passcodeKey, challenge, _ref8, _ref9, value, passcode;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n /** Validate current passcode by comparing against keychain offline.pw value */\n pwHash = keychainValue.offline.pw;\n challenge = new _challenges__WEBPACK_IMPORTED_MODULE_7__["Challenge"]([_challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeType"].LocalPasscode], _challenges__WEBPACK_IMPORTED_MODULE_7__["ChallengeReason"].Migration);\n\n case 2:\n if (!(!passcodeKey || passcodeKey.serverPassword !== pwHash)) {\n _context9.next = 15;\n break;\n }\n\n _context9.next = 5;\n return _this2.services.challengeService.promptForChallengeResponseWithCustomValidation(challenge);\n\n case 5:\n _ref8 = _context9.sent;\n _ref9 = _slicedToArray(_ref8, 1);\n value = _ref9[0];\n passcode = value.value;\n _context9.next = 11;\n return _this2.services.protocolService.computeRootKey(passcode, passcodeParams);\n\n case 11:\n passcodeKey = _context9.sent;\n\n _this2.services.challengeService.setValidationStatusForChallenge(challenge, value, passcodeKey.serverPassword === pwHash);\n\n _context9.next = 2;\n break;\n\n case 15:\n return _context9.abrupt("return", passcodeKey);\n\n case 16:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n\n return function getPasscodeKey() {\n return _ref7.apply(this, arguments);\n };\n }();\n\n timing = keychainValue.offline.timing;\n rawStructure.unwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].MobilePasscodeTiming] = timing;\n\n if (!wrappedAccountKey) {\n _context10.next = 36;\n break;\n }\n\n _context10.next = 21;\n return getPasscodeKey();\n\n case 21:\n passcodeKey = _context10.sent;\n _context10.next = 24;\n return this.services.protocolService.payloadByDecryptingPayload(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(wrappedAccountKey), passcodeKey);\n\n case 24:\n unwrappedAccountKey = _context10.sent;\n accountKeyContent = unwrappedAccountKey.contentObject.accountKeys;\n defaultVersion = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(accountKeyContent.ak) ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n newAccountKey = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CopyPayload"])(unwrappedAccountKey, {\n content: {\n masterKey: accountKeyContent.mk,\n serverPassword: accountKeyContent.pw,\n dataAuthenticationKey: accountKeyContent.ak,\n version: accountKeyContent.version || defaultVersion,\n accountKeys: null\n }\n });\n _context10.next = 30;\n return this.services.protocolService.payloadByEncryptingPayload(newAccountKey, _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStoragePreferEncrypted, passcodeKey);\n\n case 30:\n newWrappedAccountKey = _context10.sent;\n rawStructure.nonwrapped[_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].WrappedRootKey] = newWrappedAccountKey.ejected();\n _context10.next = 34;\n return this.services.deviceInterface.clearKeychainValue();\n\n case 34:\n _context10.next = 54;\n break;\n\n case 36:\n if (wrappedAccountKey) {\n _context10.next = 54;\n break;\n }\n\n _context10.next = 39;\n return getPasscodeKey();\n\n case 39:\n _passcodeKey = _context10.sent;\n _context10.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"];\n _context10.next = 43;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_14__["Uuid"].GenerateUuid();\n\n case 43:\n _context10.t1 = _context10.sent;\n _context10.t2 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["FillItemContent"])(rawStructure.unwrapped);\n _context10.t3 = _models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].EncryptedStorage;\n _context10.t4 = {\n uuid: _context10.t1,\n content: _context10.t2,\n content_type: _context10.t3\n };\n payload = (0, _context10.t0)(_context10.t4);\n _context10.next = 50;\n return this.services.protocolService.payloadByEncryptingPayload(payload, _protocol_intents__WEBPACK_IMPORTED_MODULE_3__["EncryptionIntent"].LocalStoragePreferEncrypted, _passcodeKey);\n\n case 50:\n wrapped = _context10.sent;\n rawStructure.wrapped = wrapped.ejected();\n _context10.next = 54;\n return this.services.deviceInterface.clearKeychainValue();\n\n case 54:\n _context10.next = 64;\n break;\n\n case 56:\n /** No passcode, potentially account. Migrate keychain property keys. */\n hasAccount = keychainValue && keychainValue.mk;\n\n if (!hasAccount) {\n _context10.next = 64;\n break;\n }\n\n _defaultVersion = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(keychainValue.ak) ? _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003 : _protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V002;\n _context10.next = 61;\n return _protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"].Create({\n masterKey: keychainValue.mk,\n serverPassword: keychainValue.pw,\n dataAuthenticationKey: keychainValue.ak,\n version: keychainValue.version || _defaultVersion\n });\n\n case 61:\n accountKey = _context10.sent;\n _context10.next = 64;\n return this.services.deviceInterface.setKeychainValue(accountKey.getPersistableValue());\n\n case 64:\n _context10.next = 66;\n return this.allPlatformHelperSetStorageStructure(rawStructure);\n\n case 66:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function migrateStorageStructureForMobile() {\n return _migrateStorageStructureForMobile.apply(this, arguments);\n }\n\n return migrateStorageStructureForMobile;\n }()\n /**\n * All platforms\n * Migrate all previously independently stored storage keys into new\n * managed approach. Also deletes any legacy values from raw storage.\n * @access private\n */\n\n }, {\n key: "migrateArbitraryRawStorageToManagedStorageAllPlatforms",\n value: function () {\n var _migrateArbitraryRawStorageToManagedStorageAllPlatforms = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11() {\n var allKeyValues, legacyKeys, tryJsonParse, namespace, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, keyValuePair, key, value, isNameSpacedKey, newValue;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.services.deviceInterface.getAllRawStorageKeyValues();\n\n case 2:\n allKeyValues = _context11.sent;\n legacyKeys = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["objectToValueArray"])(LegacyKeys);\n\n tryJsonParse = function tryJsonParse(value) {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n };\n\n namespace = this.services.namespace;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context11.prev = 9;\n _iterator = allKeyValues[Symbol.iterator]();\n\n case 11:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context11.next = 25;\n break;\n }\n\n keyValuePair = _step.value;\n key = keyValuePair.key;\n value = keyValuePair.value;\n isNameSpacedKey = namespace && namespace.length > 0 && key.startsWith(namespace);\n\n if (!(legacyKeys.includes(key) || isNameSpacedKey)) {\n _context11.next = 18;\n break;\n }\n\n return _context11.abrupt("continue", 22);\n\n case 18:\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isNullOrUndefined"])(value)) {\n _context11.next = 22;\n break;\n }\n\n /**\n * Raw values should always have been json stringified.\n * New values should always be objects/parsed.\n */\n newValue = tryJsonParse(value);\n _context11.next = 22;\n return this.services.storageService.setValue(key, newValue);\n\n case 22:\n _iteratorNormalCompletion = true;\n _context11.next = 11;\n break;\n\n case 25:\n _context11.next = 31;\n break;\n\n case 27:\n _context11.prev = 27;\n _context11.t0 = _context11["catch"](9);\n _didIteratorError = true;\n _iteratorError = _context11.t0;\n\n case 31:\n _context11.prev = 31;\n _context11.prev = 32;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 34:\n _context11.prev = 34;\n\n if (!_didIteratorError) {\n _context11.next = 37;\n break;\n }\n\n throw _iteratorError;\n\n case 37:\n return _context11.finish(34);\n\n case 38:\n return _context11.finish(31);\n\n case 39:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[9, 27, 31, 39], [32,, 34, 38]]);\n }));\n\n function migrateArbitraryRawStorageToManagedStorageAllPlatforms() {\n return _migrateArbitraryRawStorageToManagedStorageAllPlatforms.apply(this, arguments);\n }\n\n return migrateArbitraryRawStorageToManagedStorageAllPlatforms;\n }()\n /**\n * All platforms\n * Deletes all StorageKey and LegacyKeys from root raw storage.\n * @access private\n */\n\n }, {\n key: "deleteLegacyStorageValues",\n value: function () {\n var _deleteLegacyStorageValues = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12() {\n var miscKeys, managedKeys, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, key;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n miscKeys = [\'mk\', \'ak\', \'jwt\', \'ephemeral\', \'cachedThemes\'];\n managedKeys = [].concat(_toConsumableArray(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["objectToValueArray"])(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"])), _toConsumableArray(Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["objectToValueArray"])(LegacyKeys)), miscKeys);\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context12.prev = 5;\n _iterator2 = managedKeys[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context12.next = 14;\n break;\n }\n\n key = _step2.value;\n _context12.next = 11;\n return this.services.deviceInterface.removeRawStorageValue(key);\n\n case 11:\n _iteratorNormalCompletion2 = true;\n _context12.next = 7;\n break;\n\n case 14:\n _context12.next = 20;\n break;\n\n case 16:\n _context12.prev = 16;\n _context12.t0 = _context12["catch"](5);\n _didIteratorError2 = true;\n _iteratorError2 = _context12.t0;\n\n case 20:\n _context12.prev = 20;\n _context12.prev = 21;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 23:\n _context12.prev = 23;\n\n if (!_didIteratorError2) {\n _context12.next = 26;\n break;\n }\n\n throw _iteratorError2;\n\n case 26:\n return _context12.finish(23);\n\n case 27:\n return _context12.finish(20);\n\n case 28:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this, [[5, 16, 20, 28], [21,, 23, 27]]);\n }));\n\n function deleteLegacyStorageValues() {\n return _deleteLegacyStorageValues.apply(this, arguments);\n }\n\n return deleteLegacyStorageValues;\n }()\n /**\n * All platforms\n * Migrate previously stored session string token into object\n * @access private\n */\n\n }, {\n key: "migrateSessionStorage",\n value: function () {\n var _migrateSessionStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13() {\n var LEGACY_SESSION_TOKEN_KEY, currentToken, session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n LEGACY_SESSION_TOKEN_KEY = \'jwt\';\n _context13.next = 3;\n return this.services.storageService.getValue(LEGACY_SESSION_TOKEN_KEY);\n\n case 3:\n currentToken = _context13.sent;\n\n if (currentToken) {\n _context13.next = 6;\n break;\n }\n\n return _context13.abrupt("return");\n\n case 6:\n session = new _Services_api_session__WEBPACK_IMPORTED_MODULE_15__["Session"](currentToken);\n _context13.next = 9;\n return this.services.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["StorageKey"].Session, session);\n\n case 9:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function migrateSessionStorage() {\n return _migrateSessionStorage.apply(this, arguments);\n }\n\n return migrateSessionStorage;\n }()\n /**\n * All platforms\n * Create new default SNItemsKey from root key.\n * Otherwise, when data is loaded, we won\'t be able to decrypt it\n * without existence of an item key. This will mean that if this migration\n * is run on two different platforms for the same user, they will create\n * two new items keys. Which one they use to decrypt past items and encrypt\n * future items doesn\'t really matter.\n * @access private\n */\n\n }, {\n key: "createDefaultItemsKeyForAllPlatforms",\n value: function () {\n var _createDefaultItemsKeyForAllPlatforms = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n var rootKey, rootKeyParams, payload, itemsKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return this.services.protocolService.getRootKey();\n\n case 2:\n rootKey = _context14.sent;\n\n if (!rootKey) {\n _context14.next = 19;\n break;\n }\n\n _context14.next = 6;\n return this.services.protocolService.getRootKeyParams();\n\n case 6:\n rootKeyParams = _context14.sent;\n _context14.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"];\n _context14.next = 10;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_14__["Uuid"].GenerateUuid();\n\n case 10:\n _context14.t1 = _context14.sent;\n _context14.t2 = _models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].ItemsKey;\n _context14.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["FillItemContent"])({\n itemsKey: rootKey.masterKey,\n dataAuthenticationKey: rootKey.dataAuthenticationKey,\n version: rootKeyParams.version\n });\n _context14.t4 = new Date();\n _context14.t5 = {\n uuid: _context14.t1,\n content_type: _context14.t2,\n content: _context14.t3,\n dirty: true,\n dirtiedDate: _context14.t4\n };\n payload = (0, _context14.t0)(_context14.t5);\n itemsKey = Object(_models__WEBPACK_IMPORTED_MODULE_16__["CreateItemFromPayload"])(payload);\n _context14.next = 19;\n return this.services.itemManager.emitItemFromPayload(itemsKey.payloadRepresentation(), _Payloads_sources__WEBPACK_IMPORTED_MODULE_12__["PayloadSource"].LocalChanged);\n\n case 19:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function createDefaultItemsKeyForAllPlatforms() {\n return _createDefaultItemsKeyForAllPlatforms.apply(this, arguments);\n }\n\n return createDefaultItemsKeyForAllPlatforms;\n }()\n }], [{\n key: "timestamp",\n value: function timestamp() {\n return new Date(\'2020-01-15\').getTime();\n }\n }]);\n\n return Migration20200115;\n}(_Lib_migrations_migration__WEBPACK_IMPORTED_MODULE_10__["Migration"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy8yMDIwLTAxLTE1LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21pZ3JhdGlvbnMvMjAyMC0wMS0xNS50cz9mNDM0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnLi8uLi9tb2RlbHMvY29udGVudF90eXBlcyc7XG5pbXBvcnQgeyBTTlJvb3RLZXkgfSBmcm9tICcuLy4uL3Byb3RvY29sL3Jvb3Rfa2V5JztcbmltcG9ydCB7IEVuY3J5cHRpb25JbnRlbnQgfSBmcm9tICcuLy4uL3Byb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnLi8uLi9wcm90b2NvbC92ZXJzaW9ucyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YWdlIH0gZnJvbSAnQExpYi9zdGFnZXMnO1xuaW1wb3J0IHsgU3RvcmFnZUtleSwgUmF3U3RvcmFnZUtleSwgbmFtZXNwYWNlZEtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbmltcG9ydCB7IENoYWxsZW5nZSwgQ2hhbGxlbmdlVHlwZSwgQ2hhbGxlbmdlUmVhc29uIH0gZnJvbSAnLi8uLi9jaGFsbGVuZ2VzJztcbmltcG9ydCB7IEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IFNOU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLy4uL3NlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZSc7XG5pbXBvcnQgeyBNaWdyYXRpb24gfSBmcm9tICdATGliL21pZ3JhdGlvbnMvbWlncmF0aW9uJztcbmltcG9ydCB7IENvcHlQYXlsb2FkLCBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IENvcHksIGlzTnVsbE9yVW5kZWZpbmVkLCBvYmplY3RUb1ZhbHVlQXJyYXksIGpzb25QYXJzZUVtYmVkZGVkS2V5cyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgVXVpZCB9IGZyb20gJ0BMaWIvdXVpZCc7XG5pbXBvcnQgeyBWYWx1ZU1vZGVzS2V5cyB9IGZyb20gJ0BTZXJ2aWNlcy9zdG9yYWdlX3NlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJ0BTZXJ2aWNlcy9hcGkvc2Vzc2lvbic7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgaXNFbnZpcm9ubWVudFdlYk9yRGVza3RvcCwgaXNFbnZpcm9ubWVudE1vYmlsZSB9IGZyb20gJ0BMaWIvcGxhdGZvcm1zJztcbmNvbnN0IExlZ2FjeUtleXMgPSB7XG4gICAgV2ViUGFzc2NvZGVQYXJhbXNLZXk6ICdvZmZsaW5lUGFyYW1zJyxcbiAgICBNb2JpbGVQYXNzY29kZVBhcmFtc0tleTogJ3BjX3BhcmFtcycsXG4gICAgQWxsQWNjb3VudEtleVBhcmFtc0tleTogJ2F1dGhfcGFyYW1zJyxcbiAgICBXZWJFbmNyeXB0ZWRTdG9yYWdlS2V5OiAnZW5jcnlwdGVkU3RvcmFnZScsXG4gICAgTW9iaWxlV3JhcHBlZFJvb3RLZXlLZXk6ICdlbmNyeXB0ZWRfYWNjb3VudF9rZXlzJyxcbiAgICBBbGxNaWdyYXRpb25zOiAnbWlncmF0aW9ucydcbn07XG5leHBvcnQgY2xhc3MgTWlncmF0aW9uMjAyMDAxMTUgZXh0ZW5kcyBNaWdyYXRpb24ge1xuICAgIHN0YXRpYyB0aW1lc3RhbXAoKSB7XG4gICAgICAgIHJldHVybiAobmV3IERhdGUoJzIwMjAtMDEtMTUnKS5nZXRUaW1lKCkpO1xuICAgIH1cbiAgICByZWdpc3RlclN0YWdlSGFuZGxlcnMoKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdGFnZUhhbmRsZXIoQXBwbGljYXRpb25TdGFnZS5QcmVwYXJpbmdGb3JMYXVuY2hfMCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzRW52aXJvbm1lbnRXZWJPckRlc2t0b3AodGhpcy5zZXJ2aWNlcy5lbnZpcm9ubWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5taWdyYXRlU3RvcmFnZVN0cnVjdHVyZUZvcldlYkRlc2t0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGlzRW52aXJvbm1lbnRNb2JpbGUodGhpcy5zZXJ2aWNlcy5lbnZpcm9ubWVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5taWdyYXRlU3RvcmFnZVN0cnVjdHVyZUZvck1vYmlsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN0YWdlSGFuZGxlcihBcHBsaWNhdGlvblN0YWdlLlN0b3JhZ2VEZWNyeXB0ZWRfMDksIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubWlncmF0ZUFyYml0cmFyeVJhd1N0b3JhZ2VUb01hbmFnZWRTdG9yYWdlQWxsUGxhdGZvcm1zKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1pZ3JhdGVTZXNzaW9uU3RvcmFnZSgpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVMZWdhY3lTdG9yYWdlVmFsdWVzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhZ2VIYW5kbGVyKEFwcGxpY2F0aW9uU3RhZ2UuTG9hZGluZ0RhdGFiYXNlXzExLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZURlZmF1bHRJdGVtc0tleUZvckFsbFBsYXRmb3JtcygpO1xuICAgICAgICAgICAgdGhpcy5tYXJrRG9uZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2ViXG4gICAgICogTWlncmF0ZXMgbGVnYWN5IHN0b3JhZ2Ugc3RydWN0dXJlIGludG8gbmV3IG1hbmFnZWQgZm9ybWF0LlxuICAgICAqIElmIGVuY3J5cHRlZCBzdG9yYWdlIGV4aXN0cywgd2UgbmVlZCB0byBmaXJzdCBkZWNyeXB0IGl0IHdpdGggdGhlIHBhc3Njb2RlLlxuICAgICAqIFRoZW4gZXh0cmFjdCB0aGUgYWNjb3VudCBrZXkgZnJvbSBpdC4gVGhlbiwgZW5jcnlwdCBzdG9yYWdlIHdpdGggdGhlXG4gICAgICogYWNjb3VudCBrZXkuIFRoZW4gZW5jcnlwdCB0aGUgYWNjb3VudCBrZXkgd2l0aCB0aGUgcGFzc2NvZGUgYW5kIHN0b3JlIGl0XG4gICAgICogd2l0aGluIHRoZSBuZXcgc3RvcmFnZSBmb3JtYXQuXG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZSBub3RlOiBXZSBkbyBub3QgdXNlIHRoZSBrZXljaGFpbiBpZiBwYXNzY29kZSBpcyBhdmFpbGFibGUuXG4gICAgICovXG4gICAgYXN5bmMgbWlncmF0ZVN0b3JhZ2VTdHJ1Y3R1cmVGb3JXZWJEZXNrdG9wKCkge1xuICAgICAgICBjb25zdCBkZXZpY2VJbnRlcmZhY2UgPSB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZTtcbiAgICAgICAgY29uc3QgbmV3U3RvcmFnZVJhd1N0cnVjdHVyZSA9IHtcbiAgICAgICAgICAgIFtWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXToge30sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuVW53cmFwcGVkXToge30sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuTm9ud3JhcHBlZF06IHt9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHJhd0FjY291bnRLZXlQYXJhbXMgPSBhd2FpdCBkZXZpY2VJbnRlcmZhY2UuZ2V0SnNvblBhcnNlZFN0b3JhZ2VWYWx1ZShMZWdhY3lLZXlzLkFsbEFjY291bnRLZXlQYXJhbXNLZXkpO1xuICAgICAgICAvKiogQ291bGQgYmUgbnVsbCBpZiBubyBhY2NvdW50LCBvciBpZiBhY2NvdW50IGFuZCBzdG9yYWdlIGlzIGVuY3J5cHRlZCAqL1xuICAgICAgICBpZiAocmF3QWNjb3VudEtleVBhcmFtcykge1xuICAgICAgICAgICAgbmV3U3RvcmFnZVJhd1N0cnVjdHVyZS5ub253cmFwcGVkW1N0b3JhZ2VLZXkuUm9vdEtleVBhcmFtc10gPSByYXdBY2NvdW50S2V5UGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFN0b3JhZ2UgPSBhd2FpdCBkZXZpY2VJbnRlcmZhY2UuZ2V0SnNvblBhcnNlZFN0b3JhZ2VWYWx1ZShMZWdhY3lLZXlzLldlYkVuY3J5cHRlZFN0b3JhZ2VLZXkpO1xuICAgICAgICBpZiAoZW5jcnlwdGVkU3RvcmFnZSkge1xuICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkU3RvcmFnZVBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdChlbmNyeXB0ZWRTdG9yYWdlKTtcbiAgICAgICAgICAgIGNvbnN0IHBhc3Njb2RlUmVzdWx0ID0gYXdhaXQgdGhpcy53ZWJEZXNrdG9wSGVscGVyR2V0UGFzc2NvZGVLZXlBbmREZWNyeXB0RW5jcnlwdGVkU3RvcmFnZShlbmNyeXB0ZWRTdG9yYWdlUGF5bG9hZCk7XG4gICAgICAgICAgICBjb25zdCBwYXNzY29kZUtleSA9IHBhc3Njb2RlUmVzdWx0LmtleTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZFN0b3JhZ2VQYXlsb2FkID0gcGFzc2NvZGVSZXN1bHQuZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQ7XG4gICAgICAgICAgICBjb25zdCBwYXNzY29kZVBhcmFtcyA9IHBhc3Njb2RlUmVzdWx0LmtleVBhcmFtcztcbiAgICAgICAgICAgIG5ld1N0b3JhZ2VSYXdTdHJ1Y3R1cmUubm9ud3JhcHBlZFtTdG9yYWdlS2V5LlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zXSA9IHBhc3Njb2RlUGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKTtcbiAgICAgICAgICAgIGNvbnN0IHJhd1N0b3JhZ2VWYWx1ZVN0b3JlID0gQ29weShkZWNyeXB0ZWRTdG9yYWdlUGF5bG9hZC5jb250ZW50T2JqZWN0LnN0b3JhZ2UpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVZhbHVlU3RvcmUgPSBqc29uUGFyc2VFbWJlZGRlZEtleXMocmF3U3RvcmFnZVZhbHVlU3RvcmUpO1xuICAgICAgICAgICAgLyoqIFN0b3JlIHByZXZpb3VzbHkgZW5jcnlwdGVkIGF1dGhfcGFyYW1zIGludG8gbmV3IG5vbndyYXBwZWQgdmFsdWUga2V5ICovXG4gICAgICAgICAgICBuZXdTdG9yYWdlUmF3U3RydWN0dXJlLm5vbndyYXBwZWRbU3RvcmFnZUtleS5Sb290S2V5UGFyYW1zXVxuICAgICAgICAgICAgICAgID0gc3RvcmFnZVZhbHVlU3RvcmVbTGVnYWN5S2V5cy5BbGxBY2NvdW50S2V5UGFyYW1zS2V5XTtcbiAgICAgICAgICAgIGxldCBrZXlUb0VuY3J5cHRTdG9yYWdlV2l0aCA9IHBhc3Njb2RlS2V5O1xuICAgICAgICAgICAgLyoqIEV4dHJhY3QgYWNjb3VudCBrZXkgKG1rLCBwdywgYWspIGlmIGl0IGV4aXN0cyAqL1xuICAgICAgICAgICAgY29uc3QgaGFzQWNjb3VudEtleXMgPSAhaXNOdWxsT3JVbmRlZmluZWQoc3RvcmFnZVZhbHVlU3RvcmUubWspO1xuICAgICAgICAgICAgaWYgKGhhc0FjY291bnRLZXlzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBhY2NvdW50S2V5LCB3cmFwcGVkS2V5IH0gPSBhd2FpdCB0aGlzLndlYkRlc2t0b3BIZWxwZXJFeHRyYWN0QW5kV3JhcEFjY291bnRLZXlzRnJvbVZhbHVlU3RvcmUocGFzc2NvZGVLZXksIHN0b3JhZ2VWYWx1ZVN0b3JlKTtcbiAgICAgICAgICAgICAgICBrZXlUb0VuY3J5cHRTdG9yYWdlV2l0aCA9IGFjY291bnRLZXk7XG4gICAgICAgICAgICAgICAgbmV3U3RvcmFnZVJhd1N0cnVjdHVyZS5ub253cmFwcGVkW1N0b3JhZ2VLZXkuV3JhcHBlZFJvb3RLZXldID0gd3JhcHBlZEtleTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKiBFbmNyeXB0IHN0b3JhZ2Ugd2l0aCBwcm9wZXIga2V5ICovXG4gICAgICAgICAgICBuZXdTdG9yYWdlUmF3U3RydWN0dXJlLndyYXBwZWQgPSBhd2FpdCB0aGlzLndlYkRlc2t0b3BIZWxwZXJFbmNyeXB0U3RvcmFnZShrZXlUb0VuY3J5cHRTdG9yYWdlV2l0aCwgZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQsIHN0b3JhZ2VWYWx1ZVN0b3JlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTm8gZW5jcnlwdGVkIHN0b3JhZ2UsIHRha2UgYWNjb3VudCBrZXlzIG91dCBvZiByYXcgc3RvcmFnZVxuICAgICAgICAgICAgICogYW5kIHBsYWNlIHRoZW0gaW4gdGhlIGtleWNoYWluLiAqL1xuICAgICAgICAgICAgY29uc3QgYWsgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5nZXRSYXdTdG9yYWdlVmFsdWUoJ2FrJyk7XG4gICAgICAgICAgICBjb25zdCB2ZXJzaW9uID0gIWlzTnVsbE9yVW5kZWZpbmVkKGFrKVxuICAgICAgICAgICAgICAgID8gUHJvdG9jb2xWZXJzaW9uLlYwMDNcbiAgICAgICAgICAgICAgICA6IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICAgICAgY29uc3QgYWNjb3VudEtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoe1xuICAgICAgICAgICAgICAgIG1hc3RlcktleTogYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0UmF3U3RvcmFnZVZhbHVlKCdtaycpLFxuICAgICAgICAgICAgICAgIHNlcnZlclBhc3N3b3JkOiBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5nZXRSYXdTdG9yYWdlVmFsdWUoJ3B3JyksXG4gICAgICAgICAgICAgICAgZGF0YUF1dGhlbnRpY2F0aW9uS2V5OiBhayxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLnNldEtleWNoYWluVmFsdWUoYWNjb3VudEtleS5nZXRQZXJzaXN0YWJsZVZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIC8qKiBQZXJzaXN0IHN0b3JhZ2UgdW5kZXIgbmV3IGtleSBhbmQgc3RydWN0dXJlICovXG4gICAgICAgIGF3YWl0IHRoaXMuYWxsUGxhdGZvcm1IZWxwZXJTZXRTdG9yYWdlU3RydWN0dXJlKG5ld1N0b3JhZ2VSYXdTdHJ1Y3R1cmUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBBbGwgcGxhdGZvcm1zXG4gICAgICovXG4gICAgYXN5bmMgYWxsUGxhdGZvcm1IZWxwZXJTZXRTdG9yYWdlU3RydWN0dXJlKHJhd1N0cnVjdHVyZSkge1xuICAgICAgICBjb25zdCBuZXdTdHJ1Y3R1cmUgPSBTTlN0b3JhZ2VTZXJ2aWNlLmRlZmF1bHRWYWx1ZXNPYmplY3QocmF3U3RydWN0dXJlLndyYXBwZWQsIHJhd1N0cnVjdHVyZS51bndyYXBwZWQsIHJhd1N0cnVjdHVyZS5ub253cmFwcGVkKTtcbiAgICAgICAgbmV3U3RydWN0dXJlW1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLnNldFJhd1N0b3JhZ2VWYWx1ZShuYW1lc3BhY2VkS2V5KHRoaXMuc2VydmljZXMubmFtZXNwYWNlLCBSYXdTdG9yYWdlS2V5LlN0b3JhZ2VPYmplY3QpLCBKU09OLnN0cmluZ2lmeShuZXdTdHJ1Y3R1cmUpKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSGVscGVyXG4gICAgICogV2ViL2Rlc2t0b3Agb25seVxuICAgICAqL1xuICAgIGFzeW5jIHdlYkRlc2t0b3BIZWxwZXJHZXRQYXNzY29kZUtleUFuZERlY3J5cHRFbmNyeXB0ZWRTdG9yYWdlKGVuY3J5cHRlZFBheWxvYWQpIHtcbiAgICAgICAgY29uc3QgcmF3UGFzc2NvZGVQYXJhbXMgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZVxuICAgICAgICAgICAgLmdldEpzb25QYXJzZWRTdG9yYWdlVmFsdWUoTGVnYWN5S2V5cy5XZWJQYXNzY29kZVBhcmFtc0tleSk7XG4gICAgICAgIGNvbnN0IHBhc3Njb2RlUGFyYW1zID0gdGhpcy5zZXJ2aWNlcy5wcm90b2NvbFNlcnZpY2UuY3JlYXRlS2V5UGFyYW1zKHJhd1Bhc3Njb2RlUGFyYW1zKTtcbiAgICAgICAgLyoqIERlY3J5cHQgaXQgd2l0aCB0aGUgcGFzc2NvZGUgKi9cbiAgICAgICAgbGV0IGRlY3J5cHRlZFN0b3JhZ2VQYXlsb2FkO1xuICAgICAgICBsZXQgZXJyb3JEZWNyeXB0aW5nID0gdHJ1ZTtcbiAgICAgICAgbGV0IHBhc3Njb2RlS2V5O1xuICAgICAgICBjb25zdCBjaGFsbGVuZ2UgPSBuZXcgQ2hhbGxlbmdlKFtDaGFsbGVuZ2VUeXBlLkxvY2FsUGFzc2NvZGVdLCBDaGFsbGVuZ2VSZWFzb24uTWlncmF0aW9uKTtcbiAgICAgICAgd2hpbGUgKGVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgY29uc3QgW3ZhbHVlXSA9IGF3YWl0IHRoaXMuc2VydmljZXMuY2hhbGxlbmdlU2VydmljZVxuICAgICAgICAgICAgICAgIC5wcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZVdpdGhDdXN0b21WYWxpZGF0aW9uKGNoYWxsZW5nZSk7XG4gICAgICAgICAgICBjb25zdCBwYXNzY29kZSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgcGFzc2NvZGVLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5jb21wdXRlUm9vdEtleShwYXNzY29kZSwgcGFzc2NvZGVQYXJhbXMpO1xuICAgICAgICAgICAgZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZChlbmNyeXB0ZWRQYXlsb2FkLCBwYXNzY29kZUtleSk7XG4gICAgICAgICAgICBlcnJvckRlY3J5cHRpbmcgPSBkZWNyeXB0ZWRTdG9yYWdlUGF5bG9hZC5lcnJvckRlY3J5cHRpbmc7XG4gICAgICAgICAgICB0aGlzLnNlcnZpY2VzLmNoYWxsZW5nZVNlcnZpY2Uuc2V0VmFsaWRhdGlvblN0YXR1c0ZvckNoYWxsZW5nZShjaGFsbGVuZ2UsIHZhbHVlLCAhZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQuZXJyb3JEZWNyeXB0aW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQsXG4gICAgICAgICAgICBrZXk6IHBhc3Njb2RlS2V5LFxuICAgICAgICAgICAga2V5UGFyYW1zOiBwYXNzY29kZVBhcmFtc1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBXZWIvZGVza3RvcCBvbmx5XG4gICAgICovXG4gICAgYXN5bmMgd2ViRGVza3RvcEhlbHBlckV4dHJhY3RBbmRXcmFwQWNjb3VudEtleXNGcm9tVmFsdWVTdG9yZShwYXNzY29kZUtleSwgc3RvcmFnZVZhbHVlU3RvcmUpIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHN0b3JhZ2VWYWx1ZVN0b3JlLmFrXG4gICAgICAgICAgICA/IFByb3RvY29sVmVyc2lvbi5WMDAzXG4gICAgICAgICAgICA6IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICBjb25zdCBhY2NvdW50S2V5ID0gYXdhaXQgU05Sb290S2V5LkNyZWF0ZSh7XG4gICAgICAgICAgICBtYXN0ZXJLZXk6IHN0b3JhZ2VWYWx1ZVN0b3JlLm1rLFxuICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IHN0b3JhZ2VWYWx1ZVN0b3JlLnB3LFxuICAgICAgICAgICAgZGF0YUF1dGhlbnRpY2F0aW9uS2V5OiBzdG9yYWdlVmFsdWVTdG9yZS5hayxcbiAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIGRlbGV0ZSBzdG9yYWdlVmFsdWVTdG9yZS5taztcbiAgICAgICAgZGVsZXRlIHN0b3JhZ2VWYWx1ZVN0b3JlLnB3O1xuICAgICAgICBkZWxldGUgc3RvcmFnZVZhbHVlU3RvcmUuYWs7XG4gICAgICAgIGNvbnN0IGFjY291bnRLZXlQYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QoYWNjb3VudEtleSk7XG4gICAgICAgIGxldCBlbmNyeXB0ZWRBY2NvdW50S2V5O1xuICAgICAgICBpZiAocGFzc2NvZGVLZXkpIHtcbiAgICAgICAgICAgIC8qKiBFbmNyeXB0IGFjY291bnQga2V5IHdpdGggcGFzc2NvZGUgKi9cbiAgICAgICAgICAgIGVuY3J5cHRlZEFjY291bnRLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZVxuICAgICAgICAgICAgICAgIC5wYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZChhY2NvdW50S2V5UGF5bG9hZCwgRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VFbmNyeXB0ZWQsIHBhc3Njb2RlS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYWNjb3VudEtleTogYWNjb3VudEtleSxcbiAgICAgICAgICAgIHdyYXBwZWRLZXk6IGVuY3J5cHRlZEFjY291bnRLZXk/LmVqZWN0ZWQoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBIZWxwZXJcbiAgICAgKiBXZWIvZGVza3RvcCBvbmx5XG4gICAgICogRW5jcnlwdCBzdG9yYWdlIHdpdGggYWNjb3VudCBrZXlcbiAgICAgKi9cbiAgICBhc3luYyB3ZWJEZXNrdG9wSGVscGVyRW5jcnlwdFN0b3JhZ2Uoa2V5LCBkZWNyeXB0ZWRTdG9yYWdlUGF5bG9hZCwgc3RvcmFnZVZhbHVlU3RvcmUpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZCA9IGF3YWl0IHRoaXMuc2VydmljZXMucHJvdG9jb2xTZXJ2aWNlLlxuICAgICAgICAgICAgcGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQoQ29weVBheWxvYWQoZGVjcnlwdGVkU3RvcmFnZVBheWxvYWQsIHtcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHN0b3JhZ2VWYWx1ZVN0b3JlLFxuICAgICAgICB9KSwgRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VQcmVmZXJFbmNyeXB0ZWQsIGtleSk7XG4gICAgICAgIHJldHVybiB3cmFwcGVkLmVqZWN0ZWQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTW9iaWxlXG4gICAgICogT24gbW9iaWxlIGxlZ2FjeSBzdHJ1Y3R1cmUgaXMgbW9zdGx5IHNpbWlsYXIgdG8gbmV3IHN0cnVjdHVyZSxcbiAgICAgKiBpbiB0aGF0IHRoZSBhY2NvdW50IGtleSBpcyBlbmNyeXB0ZWQgd2l0aCB0aGUgcGFzc2NvZGUuIEJ1dCBtb2JpbGUgZGlkXG4gICAgICogbm90IGhhdmUgZW5jcnlwdGVkIHN0b3JhZ2UsIHNvIHdlIHNpbXBseSBuZWVkIHRvIHRyYW5zZmVyIGFsbCBleGlzdGluZ1xuICAgICAqIHN0b3JhZ2UgdmFsdWVzIGludG8gbmV3IG1hbmFnZWQgc3RydWN0dXJlLlxuICAgICAqXG4gICAgICogSWYgbm8gYWNjb3VudCBidXQgcGFzc2NvZGUgb25seSwgdGhlIG9ubHkgdGhpbmcgd2Ugc3RvcmVkIG9uIG1vYmlsZVxuICAgICAqIHByZXZpb3VzbHkgd2FzIGtleXMub2ZmbGluZS5wdyBhbmQga2V5cy5vZmZsaW5lLnRpbWluZyBpbiB0aGUga2V5Y2hhaW5cbiAgICAgKiB0aGF0IHdlIGNvbXBhcmVkIGFnYWluc3QgZm9yIHZhbGlkIGRlY3J5cHRpb24uXG4gICAgICogSW4gdGhlIG5ldyB2ZXJzaW9uLCB3ZSBrbm93IGEgcGFzc2NvZGUgaXMgY29ycmVjdCBpZiBpdCBjYW4gZGVjcnlwdCBzdG9yYWdlLlxuICAgICAqIEFzIHBhcnQgb2YgdGhlIG1pZ3JhdGlvbiwgd2XigJlsbCBuZWVkIHRvIHJlcXVlc3QgdGhlIHJhdyBwYXNzY29kZSBmcm9tIHVzZXIsXG4gICAgICogY29tcGFyZSBpdCBhZ2FpbnN0IHRoZSBrZXljaGFpbiBvZmZsaW5lLnB3IHZhbHVlLCBhbmQgaWYgY29ycmVjdCxcbiAgICAgKiBtaWdyYXRlIHN0b3JhZ2UgdG8gbmV3IHN0cnVjdHVyZSwgYW5kIGVuY3J5cHQgd2l0aCBwYXNzY29kZSBrZXkuXG4gICAgICpcbiAgICAgKiBJZiBhY2NvdW50IG9ubHksIHRha2UgdGhlIHZhbHVlIGluIHRoZSBrZXljaGFpbiwgYW5kIHJlbmFtZSB0aGUgdmFsdWVzXG4gICAgICogKGkuZSBtayA+IG1hc3RlcktleSkuXG4gICAgICogQGFjY2VzcyBwcml2YXRlXG4gICAgICovXG4gICAgYXN5bmMgbWlncmF0ZVN0b3JhZ2VTdHJ1Y3R1cmVGb3JNb2JpbGUoKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRBY2NvdW50S2V5ID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0SnNvblBhcnNlZFN0b3JhZ2VWYWx1ZShMZWdhY3lLZXlzLk1vYmlsZVdyYXBwZWRSb290S2V5S2V5KTtcbiAgICAgICAgY29uc3QgcmF3QWNjb3VudEtleVBhcmFtcyA9IGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLmdldEpzb25QYXJzZWRTdG9yYWdlVmFsdWUoTGVnYWN5S2V5cy5BbGxBY2NvdW50S2V5UGFyYW1zS2V5KTtcbiAgICAgICAgY29uc3QgcmF3UGFzc2NvZGVQYXJhbXMgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5nZXRKc29uUGFyc2VkU3RvcmFnZVZhbHVlKExlZ2FjeUtleXMuTW9iaWxlUGFzc2NvZGVQYXJhbXNLZXkpO1xuICAgICAgICBjb25zdCByYXdTdHJ1Y3R1cmUgPSB7XG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuTm9ud3JhcHBlZF06IHtcbiAgICAgICAgICAgICAgICBbU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleV06IHdyYXBwZWRBY2NvdW50S2V5LFxuICAgICAgICAgICAgICAgIFtTdG9yYWdlS2V5LlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zXTogcmF3UGFzc2NvZGVQYXJhbXMsXG4gICAgICAgICAgICAgICAgW1N0b3JhZ2VLZXkuUm9vdEtleVBhcmFtc106IHJhd0FjY291bnRLZXlQYXJhbXNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuVW53cmFwcGVkXToge30sXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF06IHt9LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBrZXljaGFpblZhbHVlID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuZ2V0S2V5Y2hhaW5WYWx1ZSgpO1xuICAgICAgICBpZiAocmF3UGFzc2NvZGVQYXJhbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhc3Njb2RlUGFyYW1zID0gdGhpcy5zZXJ2aWNlcy5wcm90b2NvbFNlcnZpY2UuY3JlYXRlS2V5UGFyYW1zKHJhd1Bhc3Njb2RlUGFyYW1zKTtcbiAgICAgICAgICAgIGNvbnN0IGdldFBhc3Njb2RlS2V5ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qKiBWYWxpZGF0ZSBjdXJyZW50IHBhc3Njb2RlIGJ5IGNvbXBhcmluZyBhZ2FpbnN0IGtleWNoYWluIG9mZmxpbmUucHcgdmFsdWUgKi9cbiAgICAgICAgICAgICAgICBjb25zdCBwd0hhc2ggPSBrZXljaGFpblZhbHVlLm9mZmxpbmUucHc7XG4gICAgICAgICAgICAgICAgbGV0IHBhc3Njb2RlS2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYWxsZW5nZSA9IG5ldyBDaGFsbGVuZ2UoW0NoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZV0sIENoYWxsZW5nZVJlYXNvbi5NaWdyYXRpb24pO1xuICAgICAgICAgICAgICAgIHdoaWxlICghcGFzc2NvZGVLZXkgfHwgcGFzc2NvZGVLZXkuc2VydmVyUGFzc3dvcmQgIT09IHB3SGFzaCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBbdmFsdWVdID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5jaGFsbGVuZ2VTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAucHJvbXB0Rm9yQ2hhbGxlbmdlUmVzcG9uc2VXaXRoQ3VzdG9tVmFsaWRhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXNzY29kZSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBwYXNzY29kZUtleSA9IGF3YWl0IHRoaXMuc2VydmljZXMucHJvdG9jb2xTZXJ2aWNlLmNvbXB1dGVSb290S2V5KHBhc3Njb2RlLCBwYXNzY29kZVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VydmljZXMuY2hhbGxlbmdlU2VydmljZS5zZXRWYWxpZGF0aW9uU3RhdHVzRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdmFsdWUsIHBhc3Njb2RlS2V5LnNlcnZlclBhc3N3b3JkID09PSBwd0hhc2gpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcGFzc2NvZGVLZXk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgdGltaW5nID0ga2V5Y2hhaW5WYWx1ZS5vZmZsaW5lLnRpbWluZztcbiAgICAgICAgICAgIHJhd1N0cnVjdHVyZS51bndyYXBwZWRbU3RvcmFnZUtleS5Nb2JpbGVQYXNzY29kZVRpbWluZ10gPSB0aW1pbmc7XG4gICAgICAgICAgICBpZiAod3JhcHBlZEFjY291bnRLZXkpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBBY2NvdW50IGtleSBpcyBlbmNyeXB0ZWQgd2l0aCBwYXNzY29kZS4gSW5zaWRlLCB0aGUgYWNjb3VudEtleSBpcyBsb2NhdGVkIGluc2lkZVxuICAgICAgICAgICAgICAgICAqIGNvbnRlbnQuYWNjb3VudEtleXMuIFdlIHdhbnQgdG8gdW5lbWJlZCB0aGVzZSB2YWx1ZXMgdG8gbWFpbiBjb250ZW50LCByZW5hbWVcbiAgICAgICAgICAgICAgICAgKiB3aXRoIHByb3BlciBwcm9wZXJ0eSBuYW1lcywgd3JhcCBhZ2FpbiwgYW5kIHN0b3JlIGluIG5ldyByYXdTdHJ1Y3R1cmUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgY29uc3QgcGFzc2NvZGVLZXkgPSBhd2FpdCBnZXRQYXNzY29kZUtleSgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHVud3JhcHBlZEFjY291bnRLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZChDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh3cmFwcGVkQWNjb3VudEtleSksIHBhc3Njb2RlS2V5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50S2V5Q29udGVudCA9IHVud3JhcHBlZEFjY291bnRLZXkuY29udGVudE9iamVjdC5hY2NvdW50S2V5cztcbiAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0VmVyc2lvbiA9ICFpc051bGxPclVuZGVmaW5lZChhY2NvdW50S2V5Q29udGVudC5haylcbiAgICAgICAgICAgICAgICAgICAgPyBQcm90b2NvbFZlcnNpb24uVjAwM1xuICAgICAgICAgICAgICAgICAgICA6IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0FjY291bnRLZXkgPSBDb3B5UGF5bG9hZCh1bndyYXBwZWRBY2NvdW50S2V5LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3RlcktleTogYWNjb3VudEtleUNvbnRlbnQubWssXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJQYXNzd29yZDogYWNjb3VudEtleUNvbnRlbnQucHcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IGFjY291bnRLZXlDb250ZW50LmFrLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogYWNjb3VudEtleUNvbnRlbnQudmVyc2lvbiB8fCBkZWZhdWx0VmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY291bnRLZXlzOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdXcmFwcGVkQWNjb3VudEtleSA9IGF3YWl0IHRoaXMuc2VydmljZXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKG5ld0FjY291bnRLZXksIEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlUHJlZmVyRW5jcnlwdGVkLCBwYXNzY29kZUtleSk7XG4gICAgICAgICAgICAgICAgcmF3U3RydWN0dXJlLm5vbndyYXBwZWRbU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleV0gPSBuZXdXcmFwcGVkQWNjb3VudEtleS5lamVjdGVkKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuY2xlYXJLZXljaGFpblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICghd3JhcHBlZEFjY291bnRLZXkpIHtcbiAgICAgICAgICAgICAgICAvKiogUGFzc2NvZGUgb25seSwgbm8gYWNjb3VudCAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhc3Njb2RlS2V5ID0gYXdhaXQgZ2V0UGFzc2NvZGVLZXkoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgICAgICAgICB1dWlkOiBhd2FpdCBVdWlkLkdlbmVyYXRlVXVpZCgpLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBGaWxsSXRlbUNvbnRlbnQocmF3U3RydWN0dXJlLnVud3JhcHBlZCksXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8qKiBFbmNyeXB0IG5ldyBzdG9yYWdlLnVud3JhcHBlZCBzdHJ1Y3R1cmUgd2l0aCBwYXNzY29kZSAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHdyYXBwZWQgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZChwYXlsb2FkLCBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCwgcGFzc2NvZGVLZXkpO1xuICAgICAgICAgICAgICAgIHJhd1N0cnVjdHVyZS53cmFwcGVkID0gd3JhcHBlZC5lamVjdGVkKCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2UuY2xlYXJLZXljaGFpblZhbHVlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvKiogTm8gcGFzc2NvZGUsIHBvdGVudGlhbGx5IGFjY291bnQuIE1pZ3JhdGUga2V5Y2hhaW4gcHJvcGVydHkga2V5cy4gKi9cbiAgICAgICAgICAgIGNvbnN0IGhhc0FjY291bnQgPSBrZXljaGFpblZhbHVlICYmIGtleWNoYWluVmFsdWUubWs7XG4gICAgICAgICAgICBpZiAoaGFzQWNjb3VudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRWZXJzaW9uID0gIWlzTnVsbE9yVW5kZWZpbmVkKGtleWNoYWluVmFsdWUuYWspXG4gICAgICAgICAgICAgICAgICAgID8gUHJvdG9jb2xWZXJzaW9uLlYwMDNcbiAgICAgICAgICAgICAgICAgICAgOiBQcm90b2NvbFZlcnNpb24uVjAwMjtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50S2V5ID0gYXdhaXQgU05Sb290S2V5LkNyZWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIG1hc3RlcktleToga2V5Y2hhaW5WYWx1ZS5tayxcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IGtleWNoYWluVmFsdWUucHcsXG4gICAgICAgICAgICAgICAgICAgIGRhdGFBdXRoZW50aWNhdGlvbktleToga2V5Y2hhaW5WYWx1ZS5hayxcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjoga2V5Y2hhaW5WYWx1ZS52ZXJzaW9uIHx8IGRlZmF1bHRWZXJzaW9uXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2Uuc2V0S2V5Y2hhaW5WYWx1ZShhY2NvdW50S2V5LmdldFBlcnNpc3RhYmxlVmFsdWUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqIE1vdmUgZW5jcnlwdGVkIGFjY291bnQga2V5IGludG8gcGxhY2Ugd2hlcmUgaXQgaXMgbm93IGV4cGVjdGVkICovXG4gICAgICAgIGF3YWl0IHRoaXMuYWxsUGxhdGZvcm1IZWxwZXJTZXRTdG9yYWdlU3RydWN0dXJlKHJhd1N0cnVjdHVyZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFsbCBwbGF0Zm9ybXNcbiAgICAgKiBNaWdyYXRlIGFsbCBwcmV2aW91c2x5IGluZGVwZW5kZW50bHkgc3RvcmVkIHN0b3JhZ2Uga2V5cyBpbnRvIG5ld1xuICAgICAqIG1hbmFnZWQgYXBwcm9hY2guIEFsc28gZGVsZXRlcyBhbnkgbGVnYWN5IHZhbHVlcyBmcm9tIHJhdyBzdG9yYWdlLlxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIGFzeW5jIG1pZ3JhdGVBcmJpdHJhcnlSYXdTdG9yYWdlVG9NYW5hZ2VkU3RvcmFnZUFsbFBsYXRmb3JtcygpIHtcbiAgICAgICAgY29uc3QgYWxsS2V5VmFsdWVzID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5kZXZpY2VJbnRlcmZhY2VcbiAgICAgICAgICAgIC5nZXRBbGxSYXdTdG9yYWdlS2V5VmFsdWVzKCk7XG4gICAgICAgIGNvbnN0IGxlZ2FjeUtleXMgPSBvYmplY3RUb1ZhbHVlQXJyYXkoTGVnYWN5S2V5cyk7XG4gICAgICAgIGNvbnN0IHRyeUpzb25QYXJzZSA9ICh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlID0gdGhpcy5zZXJ2aWNlcy5uYW1lc3BhY2U7XG4gICAgICAgIGZvciAoY29uc3Qga2V5VmFsdWVQYWlyIG9mIGFsbEtleVZhbHVlcykge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5VmFsdWVQYWlyLmtleTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0ga2V5VmFsdWVQYWlyLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgaXNOYW1lU3BhY2VkS2V5ID0gbmFtZXNwYWNlICYmIG5hbWVzcGFjZS5sZW5ndGggPiAwICYmIGtleS5zdGFydHNXaXRoKG5hbWVzcGFjZSk7XG4gICAgICAgICAgICBpZiAobGVnYWN5S2V5cy5pbmNsdWRlcyhrZXkpIHx8IGlzTmFtZVNwYWNlZEtleSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSYXcgdmFsdWVzIHNob3VsZCBhbHdheXMgaGF2ZSBiZWVuIGpzb24gc3RyaW5naWZpZWQuXG4gICAgICAgICAgICAgICAgICogTmV3IHZhbHVlcyBzaG91bGQgYWx3YXlzIGJlIG9iamVjdHMvcGFyc2VkLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdHJ5SnNvblBhcnNlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKGtleSwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFsbCBwbGF0Zm9ybXNcbiAgICAgKiBEZWxldGVzIGFsbCBTdG9yYWdlS2V5IGFuZCBMZWdhY3lLZXlzIGZyb20gcm9vdCByYXcgc3RvcmFnZS5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICBhc3luYyBkZWxldGVMZWdhY3lTdG9yYWdlVmFsdWVzKCkge1xuICAgICAgICBjb25zdCBtaXNjS2V5cyA9IFtcbiAgICAgICAgICAgICdtaycsXG4gICAgICAgICAgICAnYWsnLFxuICAgICAgICAgICAgJ2p3dCcsXG4gICAgICAgICAgICAnZXBoZW1lcmFsJyxcbiAgICAgICAgICAgICdjYWNoZWRUaGVtZXMnLFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCBtYW5hZ2VkS2V5cyA9IFtcbiAgICAgICAgICAgIC4uLm9iamVjdFRvVmFsdWVBcnJheShTdG9yYWdlS2V5KSxcbiAgICAgICAgICAgIC4uLm9iamVjdFRvVmFsdWVBcnJheShMZWdhY3lLZXlzKSxcbiAgICAgICAgICAgIC4uLm1pc2NLZXlzXG4gICAgICAgIF07XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIG1hbmFnZWRLZXlzKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5yZW1vdmVSYXdTdG9yYWdlVmFsdWUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGwgcGxhdGZvcm1zXG4gICAgICogTWlncmF0ZSBwcmV2aW91c2x5IHN0b3JlZCBzZXNzaW9uIHN0cmluZyB0b2tlbiBpbnRvIG9iamVjdFxuICAgICAqIEBhY2Nlc3MgcHJpdmF0ZVxuICAgICAqL1xuICAgIGFzeW5jIG1pZ3JhdGVTZXNzaW9uU3RvcmFnZSgpIHtcbiAgICAgICAgY29uc3QgTEVHQUNZX1NFU1NJT05fVE9LRU5fS0VZID0gJ2p3dCc7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUb2tlbiA9IGF3YWl0IHRoaXMuc2VydmljZXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoTEVHQUNZX1NFU1NJT05fVE9LRU5fS0VZKTtcbiAgICAgICAgaWYgKCFjdXJyZW50VG9rZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXNzaW9uID0gbmV3IFNlc3Npb24oY3VycmVudFRva2VuKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXJ2aWNlcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb24sIHNlc3Npb24pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbGwgcGxhdGZvcm1zXG4gICAgICogQ3JlYXRlIG5ldyBkZWZhdWx0IFNOSXRlbXNLZXkgZnJvbSByb290IGtleS5cbiAgICAgKiBPdGhlcndpc2UsIHdoZW4gZGF0YSBpcyBsb2FkZWQsIHdlIHdvbid0IGJlIGFibGUgdG8gZGVjcnlwdCBpdFxuICAgICAqIHdpdGhvdXQgZXhpc3RlbmNlIG9mIGFuIGl0ZW0ga2V5LiBUaGlzIHdpbGwgbWVhbiB0aGF0IGlmIHRoaXMgbWlncmF0aW9uXG4gICAgICogaXMgcnVuIG9uIHR3byBkaWZmZXJlbnQgcGxhdGZvcm1zIGZvciB0aGUgc2FtZSB1c2VyLCB0aGV5IHdpbGwgY3JlYXRlXG4gICAgICogdHdvIG5ldyBpdGVtcyBrZXlzLiBXaGljaCBvbmUgdGhleSB1c2UgdG8gZGVjcnlwdCBwYXN0IGl0ZW1zIGFuZCBlbmNyeXB0XG4gICAgICogZnV0dXJlIGl0ZW1zIGRvZXNuJ3QgcmVhbGx5IG1hdHRlci5cbiAgICAgKiBAYWNjZXNzIHByaXZhdGVcbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVEZWZhdWx0SXRlbXNLZXlGb3JBbGxQbGF0Zm9ybXMoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLnNlcnZpY2VzLnByb3RvY29sU2VydmljZS5nZXRSb290S2V5KCk7XG4gICAgICAgIGlmIChyb290S2V5KSB7XG4gICAgICAgICAgICBjb25zdCByb290S2V5UGFyYW1zID0gYXdhaXQgdGhpcy5zZXJ2aWNlcy5wcm90b2NvbFNlcnZpY2UuZ2V0Um9vdEtleVBhcmFtcygpO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgICAgICB1dWlkOiBhd2FpdCBVdWlkLkdlbmVyYXRlVXVpZCgpLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuSXRlbXNLZXksXG4gICAgICAgICAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbXNLZXk6IHJvb3RLZXkubWFzdGVyS2V5LFxuICAgICAgICAgICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IHJvb3RLZXkuZGF0YUF1dGhlbnRpY2F0aW9uS2V5LFxuICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOiByb290S2V5UGFyYW1zLnZlcnNpb25cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0tleSA9IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2VydmljZXMuaXRlbU1hbmFnZXIuZW1pdEl0ZW1Gcm9tUGF5bG9hZChpdGVtc0tleS5wYXlsb2FkUmVwcmVzZW50YXRpb24oKSwgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBOzs7Ozs7Ozs7OztBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQW5DQTtBQUFBO0FBQ0E7QUFEQTtBQXdDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQTZDQTtBQUNBO0FBOUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE4Q0E7QUEvQ0E7QUFBQTtBQUNBO0FBREE7QUFnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBN0RBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOERBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFqRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1FQTtBQW5FQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUVBO0FBQ0E7QUExRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThFQTtBQUNBO0FBQ0E7QUFDQTtBQWpGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNkVBO0FBN0VBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdGQTs7Ozs7QUF4RkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkZBO0FBQ0E7QUE5RkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlHQTs7Ozs7QUFqR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXNHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQTlHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUErR0E7QUFFQTtBQWpIQTtBQUFBO0FBQ0E7QUFEQTtBQWtIQTtBQWxIQTtBQUFBO0FBQ0E7QUFEQTtBQW1IQTtBQUNBO0FBQ0E7QUFySEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdIQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBeEhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2SEE7Ozs7O0FBN0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrSUE7QUFsSUE7QUFBQTtBQXNJQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUF0SUE7QUFxSUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0lBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWtKQTtBQUNBO0FBbkpBO0FBQUE7QUFzSkE7QUFDQTtBQUZBO0FBQ0E7QUF0SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTBKQTs7Ozs7O0FBMUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrS0E7QUFDQTtBQUZBO0FBQ0E7QUFsS0E7QUFnS0E7QUFoS0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF1S0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdktBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJMQTtBQTNMQTtBQUFBO0FBQ0E7QUFEQTtBQTRMQTtBQTVMQTtBQUFBO0FBQ0E7QUFEQTtBQTZMQTtBQUNBO0FBOUxBO0FBQUE7QUFDQTtBQURBO0FBdU1BO0FBQ0E7QUF4TUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdNQTtBQUNBO0FBQUE7QUExTUE7QUEwTUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFNQTtBQUVBO0FBUkE7QUFBQTtBQUNBO0FBREE7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQVhBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEzTUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXVOQTtBQUNBO0FBQ0E7QUExTkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBZ09BO0FBaE9BO0FBQUE7QUFDQTtBQURBO0FBaU9BO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFEQTtBQXRPQTtBQUFBO0FBQ0E7QUFEQTtBQStPQTtBQUNBO0FBaFBBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFxUEE7QUFyUEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdVBBO0FBQ0E7QUFDQTtBQXpQQTtBQXNQQTtBQXRQQTtBQUFBO0FBQ0E7QUFEQTtBQTRQQTtBQUNBO0FBN1BBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFrUUE7QUFDQTtBQUNBO0FBcFFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvUUE7QUFyUUE7QUFBQTtBQXlRQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQ0E7QUF6UUE7QUF3UUE7QUF4UUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb1JBOzs7Ozs7O0FBcFJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUEyUkE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBdFNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXNTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM1NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOFNBOzs7O0FBSUE7QUFuVEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdUQTs7Ozs7O0FBeFRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBOFRBO0FBT0E7QUFyVUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBeVVBO0FBMVVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4VUE7Ozs7OztBQTlVQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvVkE7QUFwVkE7QUFBQTtBQUNBO0FBREE7QUFxVkE7QUFDQTtBQXRWQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBeVZBO0FBelZBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE0VkE7Ozs7Ozs7Ozs7O0FBNVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdVdBO0FBQ0E7QUF4V0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBeVdBO0FBeldBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUE4V0E7QUFDQTtBQUNBO0FBSEE7QUE3V0E7QUFBQTtBQTJXQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBblhBO0FBMFdBO0FBV0E7QUFyWEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/migrations/2020-01-15.ts\n')},"./lib/migrations/index.ts": /*!*********************************!*\ !*** ./lib/migrations/index.ts ***! \*********************************/ /*! exports provided: Migration20200115 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _2020_01_15__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./2020-01-15 */ "./lib/migrations/2020-01-15.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Migration20200115", function() { return _2020_01_15__WEBPACK_IMPORTED_MODULE_0__["Migration20200115"]; });\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy9pbmRleC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9taWdyYXRpb25zL2luZGV4LnRzP2E4YTQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTWlncmF0aW9uMjAyMDAxMTUgfSBmcm9tICcuLzIwMjAtMDEtMTUnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/migrations/index.ts\n')},"./lib/migrations/migration.ts": /*!*************************************!*\ !*** ./lib/migrations/migration.ts ***! \*************************************/ /*! exports provided: Migration */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Migration", function() { return Migration; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Migration = /*#__PURE__*/function () {\n function Migration(services) {\n _classCallCheck(this, Migration);\n\n this.services = services;\n this.stageHandlers = {};\n this.registerStageHandlers();\n }\n\n _createClass(Migration, [{\n key: "registerStageHandler",\n value: function registerStageHandler(stage, handler) {\n this.stageHandlers[stage] = handler;\n }\n }, {\n key: "markDone",\n value: function markDone() {\n var _this$onDoneHandler;\n\n (_this$onDoneHandler = this.onDoneHandler) === null || _this$onDoneHandler === void 0 ? void 0 : _this$onDoneHandler.call(this);\n this.onDoneHandler = undefined;\n }\n }, {\n key: "onDone",\n value: function onDone(callback) {\n this.onDoneHandler = callback;\n }\n }, {\n key: "handleStage",\n value: function () {\n var _handleStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(stage) {\n var handler;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n handler = this.stageHandlers[stage];\n\n if (!handler) {\n _context.next = 4;\n break;\n }\n\n _context.next = 4;\n return handler();\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function handleStage(_x) {\n return _handleStage.apply(this, arguments);\n }\n\n return handleStage;\n }()\n }], [{\n key: "timestamp",\n value: function timestamp() {\n throw \'Must override\';\n }\n }]);\n\n return Migration;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbWlncmF0aW9ucy9taWdyYXRpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbWlncmF0aW9ucy9taWdyYXRpb24udHM/YjExZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTWlncmF0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcihzZXJ2aWNlcykge1xuICAgICAgICB0aGlzLnNlcnZpY2VzID0gc2VydmljZXM7XG4gICAgICAgIHRoaXMuc3RhZ2VIYW5kbGVycyA9IHt9O1xuICAgICAgICB0aGlzLnJlZ2lzdGVyU3RhZ2VIYW5kbGVycygpO1xuICAgIH1cbiAgICBzdGF0aWMgdGltZXN0YW1wKCkge1xuICAgICAgICB0aHJvdyAnTXVzdCBvdmVycmlkZSc7XG4gICAgfVxuICAgIHJlZ2lzdGVyU3RhZ2VIYW5kbGVyKHN0YWdlLCBoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuc3RhZ2VIYW5kbGVyc1tzdGFnZV0gPSBoYW5kbGVyO1xuICAgIH1cbiAgICBtYXJrRG9uZSgpIHtcbiAgICAgICAgdGhpcy5vbkRvbmVIYW5kbGVyPy4oKTtcbiAgICAgICAgdGhpcy5vbkRvbmVIYW5kbGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBvbkRvbmUoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy5vbkRvbmVIYW5kbGVyID0gY2FsbGJhY2s7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVN0YWdlKHN0YWdlKSB7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLnN0YWdlSGFuZGxlcnNbc3RhZ2VdO1xuICAgICAgICBpZiAoaGFuZGxlcikge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlcigpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQVhBO0FBQUE7QUFBQTtBQVlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvQkE7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFSQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/migrations/migration.ts\n')},"./lib/models/app/action.ts": /*!**********************************!*\ !*** ./lib/models/app/action.ts ***! \**********************************/ /*! exports provided: Action */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; });\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js");\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_0__);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\n\n/**\n * An in-memory only construct for displaying a list of actions, as part of SNActionsExtension.\n */\n\nvar Action = function Action(json) {\n _classCallCheck(this, Action);\n\n lodash_merge__WEBPACK_IMPORTED_MODULE_0___default()(this, json);\n this.running = false;\n this.error = false;\n\n if (this.lastExecuted) {\n this.lastExecuted = new Date(this.lastExecuted);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9hY3Rpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9hY3Rpb24udHM/MzIxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbi8qKlxuICogQW4gaW4tbWVtb3J5IG9ubHkgY29uc3RydWN0IGZvciBkaXNwbGF5aW5nIGEgbGlzdCBvZiBhY3Rpb25zLCBhcyBwYXJ0IG9mIFNOQWN0aW9uc0V4dGVuc2lvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjdGlvbiB7XG4gICAgY29uc3RydWN0b3IoanNvbikge1xuICAgICAgICBtZXJnZSh0aGlzLCBqc29uKTtcbiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMubGFzdEV4ZWN1dGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RFeGVjdXRlZCA9IG5ldyBEYXRlKHRoaXMubGFzdEV4ZWN1dGVkKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/action.ts\n')},"./lib/models/app/component.ts": /*!*************************************!*\ !*** ./lib/models/app/component.ts ***! \*************************************/ /*! exports provided: ComponentArea, ComponentAction, SNComponent, ComponentMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentArea", function() { return ComponentArea; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentAction", function() { return ComponentAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNComponent", function() { return SNComponent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentMutator", function() { return ComponentMutator; });\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _core_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar ComponentArea;\n\n(function (ComponentArea) {\n ComponentArea["Editor"] = "editor-editor";\n ComponentArea["Themes"] = "themes";\n ComponentArea["TagsList"] = "tags-list";\n ComponentArea["EditorStack"] = "editor-stack";\n ComponentArea["NoteTags"] = "note-tags";\n ComponentArea["Rooms"] = "rooms";\n ComponentArea["Modal"] = "modal";\n ComponentArea["Any"] = "*";\n})(ComponentArea || (ComponentArea = {}));\n\n;\nvar ComponentAction;\n\n(function (ComponentAction) {\n ComponentAction["SetSize"] = "set-size";\n ComponentAction["StreamItems"] = "stream-items";\n ComponentAction["StreamContextItem"] = "stream-context-item";\n ComponentAction["SaveItems"] = "save-items";\n ComponentAction["SelectItem"] = "select-item";\n ComponentAction["AssociateItem"] = "associate-item";\n ComponentAction["DeassociateItem"] = "deassociate-item";\n ComponentAction["ClearSelection"] = "clear-selection";\n ComponentAction["CreateItem"] = "create-item";\n ComponentAction["CreateItems"] = "create-items";\n ComponentAction["DeleteItems"] = "delete-items";\n ComponentAction["SetComponentData"] = "set-component-data";\n ComponentAction["InstallLocalComponent"] = "install-local-component";\n ComponentAction["ToggleActivateComponent"] = "toggle-activate-component";\n ComponentAction["RequestPermissions"] = "request-permissions";\n ComponentAction["PresentConflictResolution"] = "present-conflict-resolution";\n ComponentAction["DuplicateItem"] = "duplicate-item";\n ComponentAction["ComponentRegistered"] = "component-registered";\n ComponentAction["ActivateThemes"] = "themes";\n ComponentAction["Reply"] = "reply";\n ComponentAction["SaveSuccess"] = "save-success";\n ComponentAction["SaveError"] = "save-error";\n})(ComponentAction || (ComponentAction = {}));\n\n;\n/**\n * Components are mostly iframe based extensions that communicate with the SN parent\n * via the postMessage API. However, a theme can also be a component, which is activated\n * only by its url.\n */\n\nvar SNComponent = /*#__PURE__*/function (_SNItem) {\n _inherits(SNComponent, _SNItem);\n\n function SNComponent(payload) {\n var _this;\n\n _classCallCheck(this, SNComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNComponent).call(this, payload));\n _this.permissions = [];\n /** Custom data that a component can store in itself */\n\n _this.componentData = _this.payload.safeContent.componentData || {};\n _this.legacy_url = _this.payload.safeContent.legacy_url;\n _this.hosted_url = _this.payload.safeContent.hosted_url || _this.payload.safeContent.url;\n _this.local_url = _this.payload.safeContent.local_url;\n _this.valid_until = new Date(_this.payload.safeContent.valid_until);\n _this.offlineOnly = _this.payload.safeContent.offlineOnly;\n _this.name = _this.payload.safeContent.name;\n _this.area = _this.payload.safeContent.area;\n _this.package_info = _this.payload.safeContent.package_info;\n _this.permissions = _this.payload.safeContent.permissions || [];\n _this.active = _this.payload.safeContent.active;\n _this.autoupdateDisabled = _this.payload.safeContent.autoupdateDisabled;\n _this.disassociatedItemIds = _this.payload.safeContent.disassociatedItemIds || [];\n _this.associatedItemIds = _this.payload.safeContent.associatedItemIds || [];\n _this.isMobileDefault = _this.payload.safeContent.isMobileDefault;\n /**\n * @legacy\n * We don\'t want to set the url directly, as we\'d like to phase it out.\n * If the content.url exists, we\'ll transfer it to legacy_url. We\'ll only\n * need to set this if content.hosted_url is blank, otherwise,\n * hosted_url is the url replacement.\n */\n\n _this.legacy_url = !_this.payload.safeContent.hosted_url ? _this.payload.safeContent.url : undefined;\n return _this;\n }\n /** Do not duplicate components under most circumstances. Always keep original */\n\n\n _createClass(SNComponent, [{\n key: "strategyWhenConflictingWithItem",\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _get(_getPrototypeOf(SNComponent.prototype), "strategyWhenConflictingWithItem", this).call(this, item);\n }\n\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__["ConflictStrategy"].KeepLeft;\n }\n }, {\n key: "isEditor",\n value: function isEditor() {\n return this.area === ComponentArea.Editor;\n }\n }, {\n key: "isTheme",\n value: function isTheme() {\n return this.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme || this.area === ComponentArea.Themes;\n }\n }, {\n key: "isDefaultEditor",\n value: function isDefaultEditor() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].DefaultEditor) === true;\n }\n }, {\n key: "getLastSize",\n value: function getLastSize() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].LastSize);\n }\n }, {\n key: "acceptsThemes",\n value: function acceptsThemes() {\n var _this$payload$safeCon;\n\n return (_this$payload$safeCon = this.payload.safeContent.package_info) === null || _this$payload$safeCon === void 0 ? void 0 : _this$payload$safeCon.acceptsThemes;\n }\n /**\n * The key used to look up data that this component may have saved to an item.\n * This data will be stored on the item using this key.\n */\n\n }, {\n key: "getClientDataKey",\n value: function getClientDataKey() {\n if (this.legacy_url) {\n return this.legacy_url;\n } else {\n return this.uuid;\n }\n }\n }, {\n key: "hasValidHostedUrl",\n value: function hasValidHostedUrl() {\n return this.hosted_url || this.legacy_url;\n }\n }, {\n key: "contentKeysToIgnoreWhenCheckingEquality",\n value: function contentKeysToIgnoreWhenCheckingEquality() {\n return [\'active\', \'disassociatedItemIds\', \'associatedItemIds\'].concat(_get(_getPrototypeOf(SNComponent.prototype), "contentKeysToIgnoreWhenCheckingEquality", this).call(this));\n }\n /**\n * An associative component depends on being explicitly activated for a\n * given item, compared to a dissaciative component, which is enabled by\n * default in areas unrelated to a certain item.\n */\n\n }, {\n key: "isAssociative",\n value: function isAssociative() {\n return SNComponent.associativeAreas().includes(this.area);\n }\n }, {\n key: "isExplicitlyEnabledForItem",\n value: function isExplicitlyEnabledForItem(uuid) {\n return this.associatedItemIds.indexOf(uuid) !== -1;\n }\n }, {\n key: "isExplicitlyDisabledForItem",\n value: function isExplicitlyDisabledForItem(uuid) {\n return this.disassociatedItemIds.indexOf(uuid) !== -1;\n }\n }], [{\n key: "associativeAreas",\n value: function associativeAreas() {\n return [ComponentArea.Editor];\n }\n }]);\n\n return SNComponent;\n}(_core_item__WEBPACK_IMPORTED_MODULE_2__["SNItem"]);\nvar ComponentMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ComponentMutator, _ItemMutator);\n\n function ComponentMutator() {\n _classCallCheck(this, ComponentMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ComponentMutator).apply(this, arguments));\n }\n\n _createClass(ComponentMutator, [{\n key: "associateWithItem",\n value: function associateWithItem(uuid) {\n var associated = this.typedContent.associatedItemIds || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["addIfUnique"])(associated, uuid);\n this.typedContent.associatedItemIds = associated;\n }\n }, {\n key: "disassociateWithItem",\n value: function disassociateWithItem(uuid) {\n var disassociated = this.typedContent.disassociatedItemIds || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["addIfUnique"])(disassociated, uuid);\n this.typedContent.disassociatedItemIds = disassociated;\n }\n }, {\n key: "removeAssociatedItemId",\n value: function removeAssociatedItemId(uuid) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(this.typedContent.associatedItemIds || [], uuid);\n }\n }, {\n key: "removeDisassociatedItemId",\n value: function removeDisassociatedItemId(uuid) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(this.typedContent.disassociatedItemIds || [], uuid);\n }\n }, {\n key: "setLastSize",\n value: function setLastSize(size) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].LastSize, size);\n }\n }, {\n key: "typedContent",\n get: function get() {\n return this.content;\n }\n }, {\n key: "active",\n set: function set(active) {\n this.typedContent.active = active;\n }\n }, {\n key: "defaultEditor",\n set: function set(defaultEditor) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].DefaultEditor, defaultEditor);\n }\n }, {\n key: "componentData",\n set: function set(componentData) {\n this.typedContent.componentData = componentData;\n }\n }, {\n key: "package_info",\n set: function set(package_info) {\n this.typedContent.package_info = package_info;\n }\n }, {\n key: "local_url",\n set: function set(local_url) {\n this.typedContent.local_url = local_url;\n }\n }, {\n key: "hosted_url",\n set: function set(hosted_url) {\n this.typedContent.hosted_url = hosted_url;\n }\n }, {\n key: "permissions",\n set: function set(permissions) {\n this.typedContent.permissions = permissions;\n }\n }]);\n\n return ComponentMutator;\n}(_core_item__WEBPACK_IMPORTED_MODULE_2__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9jb21wb25lbnQudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9jb21wb25lbnQudHM/NzBkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IGFkZElmVW5pcXVlLCByZW1vdmVGcm9tQXJyYXkgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IEFwcERhdGFGaWVsZCB9IGZyb20gJy4vLi4vY29yZS9pdGVtJztcbmltcG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJ0BNb2RlbHMvY29udGVudF90eXBlcyc7XG5leHBvcnQgdmFyIENvbXBvbmVudEFyZWE7XG4oZnVuY3Rpb24gKENvbXBvbmVudEFyZWEpIHtcbiAgICBDb21wb25lbnRBcmVhW1wiRWRpdG9yXCJdID0gXCJlZGl0b3ItZWRpdG9yXCI7XG4gICAgQ29tcG9uZW50QXJlYVtcIlRoZW1lc1wiXSA9IFwidGhlbWVzXCI7XG4gICAgQ29tcG9uZW50QXJlYVtcIlRhZ3NMaXN0XCJdID0gXCJ0YWdzLWxpc3RcIjtcbiAgICBDb21wb25lbnRBcmVhW1wiRWRpdG9yU3RhY2tcIl0gPSBcImVkaXRvci1zdGFja1wiO1xuICAgIENvbXBvbmVudEFyZWFbXCJOb3RlVGFnc1wiXSA9IFwibm90ZS10YWdzXCI7XG4gICAgQ29tcG9uZW50QXJlYVtcIlJvb21zXCJdID0gXCJyb29tc1wiO1xuICAgIENvbXBvbmVudEFyZWFbXCJNb2RhbFwiXSA9IFwibW9kYWxcIjtcbiAgICBDb21wb25lbnRBcmVhW1wiQW55XCJdID0gXCIqXCI7XG59KShDb21wb25lbnRBcmVhIHx8IChDb21wb25lbnRBcmVhID0ge30pKTtcbjtcbmV4cG9ydCB2YXIgQ29tcG9uZW50QWN0aW9uO1xuKGZ1bmN0aW9uIChDb21wb25lbnRBY3Rpb24pIHtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJTZXRTaXplXCJdID0gXCJzZXQtc2l6ZVwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlN0cmVhbUl0ZW1zXCJdID0gXCJzdHJlYW0taXRlbXNcIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJTdHJlYW1Db250ZXh0SXRlbVwiXSA9IFwic3RyZWFtLWNvbnRleHQtaXRlbVwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNhdmVJdGVtc1wiXSA9IFwic2F2ZS1pdGVtc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNlbGVjdEl0ZW1cIl0gPSBcInNlbGVjdC1pdGVtXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiQXNzb2NpYXRlSXRlbVwiXSA9IFwiYXNzb2NpYXRlLWl0ZW1cIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJEZWFzc29jaWF0ZUl0ZW1cIl0gPSBcImRlYXNzb2NpYXRlLWl0ZW1cIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJDbGVhclNlbGVjdGlvblwiXSA9IFwiY2xlYXItc2VsZWN0aW9uXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiQ3JlYXRlSXRlbVwiXSA9IFwiY3JlYXRlLWl0ZW1cIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJDcmVhdGVJdGVtc1wiXSA9IFwiY3JlYXRlLWl0ZW1zXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiRGVsZXRlSXRlbXNcIl0gPSBcImRlbGV0ZS1pdGVtc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNldENvbXBvbmVudERhdGFcIl0gPSBcInNldC1jb21wb25lbnQtZGF0YVwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIkluc3RhbGxMb2NhbENvbXBvbmVudFwiXSA9IFwiaW5zdGFsbC1sb2NhbC1jb21wb25lbnRcIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJUb2dnbGVBY3RpdmF0ZUNvbXBvbmVudFwiXSA9IFwidG9nZ2xlLWFjdGl2YXRlLWNvbXBvbmVudFwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlJlcXVlc3RQZXJtaXNzaW9uc1wiXSA9IFwicmVxdWVzdC1wZXJtaXNzaW9uc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlByZXNlbnRDb25mbGljdFJlc29sdXRpb25cIl0gPSBcInByZXNlbnQtY29uZmxpY3QtcmVzb2x1dGlvblwiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIkR1cGxpY2F0ZUl0ZW1cIl0gPSBcImR1cGxpY2F0ZS1pdGVtXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiQ29tcG9uZW50UmVnaXN0ZXJlZFwiXSA9IFwiY29tcG9uZW50LXJlZ2lzdGVyZWRcIjtcbiAgICBDb21wb25lbnRBY3Rpb25bXCJBY3RpdmF0ZVRoZW1lc1wiXSA9IFwidGhlbWVzXCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiUmVwbHlcIl0gPSBcInJlcGx5XCI7XG4gICAgQ29tcG9uZW50QWN0aW9uW1wiU2F2ZVN1Y2Nlc3NcIl0gPSBcInNhdmUtc3VjY2Vzc1wiO1xuICAgIENvbXBvbmVudEFjdGlvbltcIlNhdmVFcnJvclwiXSA9IFwic2F2ZS1lcnJvclwiO1xufSkoQ29tcG9uZW50QWN0aW9uIHx8IChDb21wb25lbnRBY3Rpb24gPSB7fSkpO1xuO1xuLyoqXG4gKiBDb21wb25lbnRzIGFyZSBtb3N0bHkgaWZyYW1lIGJhc2VkIGV4dGVuc2lvbnMgdGhhdCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBTTiBwYXJlbnRcbiAqIHZpYSB0aGUgcG9zdE1lc3NhZ2UgQVBJLiBIb3dldmVyLCBhIHRoZW1lIGNhbiBhbHNvIGJlIGEgY29tcG9uZW50LCB3aGljaCBpcyBhY3RpdmF0ZWRcbiAqIG9ubHkgYnkgaXRzIHVybC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOQ29tcG9uZW50IGV4dGVuZHMgU05JdGVtIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHN1cGVyKHBheWxvYWQpO1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gW107XG4gICAgICAgIC8qKiBDdXN0b20gZGF0YSB0aGF0IGEgY29tcG9uZW50IGNhbiBzdG9yZSBpbiBpdHNlbGYgKi9cbiAgICAgICAgdGhpcy5jb21wb25lbnREYXRhID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmNvbXBvbmVudERhdGEgfHwge307XG4gICAgICAgIHRoaXMubGVnYWN5X3VybCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5sZWdhY3lfdXJsO1xuICAgICAgICB0aGlzLmhvc3RlZF91cmwgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuaG9zdGVkX3VybCB8fCB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudXJsO1xuICAgICAgICB0aGlzLmxvY2FsX3VybCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5sb2NhbF91cmw7XG4gICAgICAgIHRoaXMudmFsaWRfdW50aWwgPSBuZXcgRGF0ZSh0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudmFsaWRfdW50aWwpO1xuICAgICAgICB0aGlzLm9mZmxpbmVPbmx5ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lm9mZmxpbmVPbmx5O1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQubmFtZTtcbiAgICAgICAgdGhpcy5hcmVhID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmFyZWE7XG4gICAgICAgIHRoaXMucGFja2FnZV9pbmZvID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnBhY2thZ2VfaW5mbztcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wZXJtaXNzaW9ucyB8fCBbXTtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuYWN0aXZlO1xuICAgICAgICB0aGlzLmF1dG91cGRhdGVEaXNhYmxlZCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5hdXRvdXBkYXRlRGlzYWJsZWQ7XG4gICAgICAgIHRoaXMuZGlzYXNzb2NpYXRlZEl0ZW1JZHMgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuZGlzYXNzb2NpYXRlZEl0ZW1JZHMgfHwgW107XG4gICAgICAgIHRoaXMuYXNzb2NpYXRlZEl0ZW1JZHMgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuYXNzb2NpYXRlZEl0ZW1JZHMgfHwgW107XG4gICAgICAgIHRoaXMuaXNNb2JpbGVEZWZhdWx0ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmlzTW9iaWxlRGVmYXVsdDtcbiAgICAgICAgLyoqXG4gICAgICAgICogQGxlZ2FjeVxuICAgICAgICAqIFdlIGRvbid0IHdhbnQgdG8gc2V0IHRoZSB1cmwgZGlyZWN0bHksIGFzIHdlJ2QgbGlrZSB0byBwaGFzZSBpdCBvdXQuXG4gICAgICAgICogSWYgdGhlIGNvbnRlbnQudXJsIGV4aXN0cywgd2UnbGwgdHJhbnNmZXIgaXQgdG8gbGVnYWN5X3VybC4gV2UnbGwgb25seVxuICAgICAgICAqIG5lZWQgdG8gc2V0IHRoaXMgaWYgY29udGVudC5ob3N0ZWRfdXJsIGlzIGJsYW5rLCBvdGhlcndpc2UsXG4gICAgICAgICogaG9zdGVkX3VybCBpcyB0aGUgdXJsIHJlcGxhY2VtZW50LlxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmxlZ2FjeV91cmwgPSAhdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lmhvc3RlZF91cmwgPyB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudXJsIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKiogRG8gbm90IGR1cGxpY2F0ZSBjb21wb25lbnRzIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcy4gQWx3YXlzIGtlZXAgb3JpZ2luYWwgKi9cbiAgICBzdHJhdGVneVdoZW5Db25mbGljdGluZ1dpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuc3RyYXRlZ3lXaGVuQ29uZmxpY3RpbmdXaXRoSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdDtcbiAgICB9XG4gICAgaXNFZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFyZWEgPT09IENvbXBvbmVudEFyZWEuRWRpdG9yO1xuICAgIH1cbiAgICBpc1RoZW1lKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMuY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5UaGVtZSB8fFxuICAgICAgICAgICAgdGhpcy5hcmVhID09PSBDb21wb25lbnRBcmVhLlRoZW1lcyk7XG4gICAgfVxuICAgIGlzRGVmYXVsdEVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLkRlZmF1bHRFZGl0b3IpID09PSB0cnVlO1xuICAgIH1cbiAgICBnZXRMYXN0U2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLkxhc3RTaXplKTtcbiAgICB9XG4gICAgYWNjZXB0c1RoZW1lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wYWNrYWdlX2luZm8/LmFjY2VwdHNUaGVtZXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBrZXkgdXNlZCB0byBsb29rIHVwIGRhdGEgdGhhdCB0aGlzIGNvbXBvbmVudCBtYXkgaGF2ZSBzYXZlZCB0byBhbiBpdGVtLlxuICAgICAqIFRoaXMgZGF0YSB3aWxsIGJlIHN0b3JlZCBvbiB0aGUgaXRlbSB1c2luZyB0aGlzIGtleS5cbiAgICAgKi9cbiAgICBnZXRDbGllbnREYXRhS2V5KCkge1xuICAgICAgICBpZiAodGhpcy5sZWdhY3lfdXJsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZWdhY3lfdXJsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudXVpZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoYXNWYWxpZEhvc3RlZFVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG9zdGVkX3VybCB8fCB0aGlzLmxlZ2FjeV91cmw7XG4gICAgfVxuICAgIGNvbnRlbnRLZXlzVG9JZ25vcmVXaGVuQ2hlY2tpbmdFcXVhbGl0eSgpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdhY3RpdmUnLFxuICAgICAgICAgICAgJ2Rpc2Fzc29jaWF0ZWRJdGVtSWRzJyxcbiAgICAgICAgICAgICdhc3NvY2lhdGVkSXRlbUlkcydcbiAgICAgICAgXS5jb25jYXQoc3VwZXIuY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBbiBhc3NvY2lhdGl2ZSBjb21wb25lbnQgZGVwZW5kcyBvbiBiZWluZyBleHBsaWNpdGx5IGFjdGl2YXRlZCBmb3IgYVxuICAgICAqIGdpdmVuIGl0ZW0sIGNvbXBhcmVkIHRvIGEgZGlzc2FjaWF0aXZlIGNvbXBvbmVudCwgd2hpY2ggaXMgZW5hYmxlZCBieVxuICAgICAqIGRlZmF1bHQgaW4gYXJlYXMgdW5yZWxhdGVkIHRvIGEgY2VydGFpbiBpdGVtLlxuICAgICAqL1xuICAgIHN0YXRpYyBhc3NvY2lhdGl2ZUFyZWFzKCkge1xuICAgICAgICByZXR1cm4gW0NvbXBvbmVudEFyZWEuRWRpdG9yXTtcbiAgICB9XG4gICAgaXNBc3NvY2lhdGl2ZSgpIHtcbiAgICAgICAgcmV0dXJuIFNOQ29tcG9uZW50LmFzc29jaWF0aXZlQXJlYXMoKS5pbmNsdWRlcyh0aGlzLmFyZWEpO1xuICAgIH1cbiAgICBpc0V4cGxpY2l0bHlFbmFibGVkRm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzc29jaWF0ZWRJdGVtSWRzLmluZGV4T2YodXVpZCkgIT09IC0xO1xuICAgIH1cbiAgICBpc0V4cGxpY2l0bHlEaXNhYmxlZEZvckl0ZW0odXVpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNhc3NvY2lhdGVkSXRlbUlkcy5pbmRleE9mKHV1aWQpICE9PSAtMTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQ29tcG9uZW50TXV0YXRvciBleHRlbmRzIEl0ZW1NdXRhdG9yIHtcbiAgICBnZXQgdHlwZWRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICBzZXQgYWN0aXZlKGFjdGl2ZSkge1xuICAgICAgICB0aGlzLnR5cGVkQ29udGVudC5hY3RpdmUgPSBhY3RpdmU7XG4gICAgfVxuICAgIHNldCBkZWZhdWx0RWRpdG9yKGRlZmF1bHRFZGl0b3IpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuRGVmYXVsdEVkaXRvciwgZGVmYXVsdEVkaXRvcik7XG4gICAgfVxuICAgIHNldCBjb21wb25lbnREYXRhKGNvbXBvbmVudERhdGEpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQuY29tcG9uZW50RGF0YSA9IGNvbXBvbmVudERhdGE7XG4gICAgfVxuICAgIHNldCBwYWNrYWdlX2luZm8ocGFja2FnZV9pbmZvKSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50LnBhY2thZ2VfaW5mbyA9IHBhY2thZ2VfaW5mbztcbiAgICB9XG4gICAgc2V0IGxvY2FsX3VybChsb2NhbF91cmwpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQubG9jYWxfdXJsID0gbG9jYWxfdXJsO1xuICAgIH1cbiAgICBzZXQgaG9zdGVkX3VybChob3N0ZWRfdXJsKSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50Lmhvc3RlZF91cmwgPSBob3N0ZWRfdXJsO1xuICAgIH1cbiAgICBzZXQgcGVybWlzc2lvbnMocGVybWlzc2lvbnMpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICB9XG4gICAgYXNzb2NpYXRlV2l0aEl0ZW0odXVpZCkge1xuICAgICAgICBjb25zdCBhc3NvY2lhdGVkID0gdGhpcy50eXBlZENvbnRlbnQuYXNzb2NpYXRlZEl0ZW1JZHMgfHwgW107XG4gICAgICAgIGFkZElmVW5pcXVlKGFzc29jaWF0ZWQsIHV1aWQpO1xuICAgICAgICB0aGlzLnR5cGVkQ29udGVudC5hc3NvY2lhdGVkSXRlbUlkcyA9IGFzc29jaWF0ZWQ7XG4gICAgfVxuICAgIGRpc2Fzc29jaWF0ZVdpdGhJdGVtKHV1aWQpIHtcbiAgICAgICAgY29uc3QgZGlzYXNzb2NpYXRlZCA9IHRoaXMudHlwZWRDb250ZW50LmRpc2Fzc29jaWF0ZWRJdGVtSWRzIHx8IFtdO1xuICAgICAgICBhZGRJZlVuaXF1ZShkaXNhc3NvY2lhdGVkLCB1dWlkKTtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQuZGlzYXNzb2NpYXRlZEl0ZW1JZHMgPSBkaXNhc3NvY2lhdGVkO1xuICAgIH1cbiAgICByZW1vdmVBc3NvY2lhdGVkSXRlbUlkKHV1aWQpIHtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMudHlwZWRDb250ZW50LmFzc29jaWF0ZWRJdGVtSWRzIHx8IFtdLCB1dWlkKTtcbiAgICB9XG4gICAgcmVtb3ZlRGlzYXNzb2NpYXRlZEl0ZW1JZCh1dWlkKSB7XG4gICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLnR5cGVkQ29udGVudC5kaXNhc3NvY2lhdGVkSXRlbUlkcyB8fCBbXSwgdXVpZCk7XG4gICAgfVxuICAgIHNldExhc3RTaXplKHNpemUpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuTGFzdFNpemUsIHNpemUpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUExQkE7QUEyQkE7QUFDQTtBQUNBO0FBQ0E7QUEvQkE7QUFBQTtBQUFBO0FBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQW5DQTtBQUFBO0FBQUE7QUFxQ0E7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUF3Q0E7QUFFQTtBQTFDQTtBQUFBO0FBQUE7QUE0Q0E7QUFDQTtBQTdDQTtBQUFBO0FBQUE7QUErQ0E7QUFDQTtBQWhEQTtBQUFBO0FBQUE7QUFpREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFwREE7QUFBQTtBQUFBO0FBeURBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQS9EQTtBQUFBO0FBQUE7QUFpRUE7QUFDQTtBQWxFQTtBQUFBO0FBQUE7QUFvRUE7QUFLQTtBQUNBOzs7Ozs7QUExRUE7QUFBQTtBQUFBO0FBbUZBO0FBQ0E7QUFwRkE7QUFBQTtBQUFBO0FBc0ZBO0FBQ0E7QUF2RkE7QUFBQTtBQUFBO0FBeUZBO0FBQ0E7QUExRkE7QUFBQTtBQUFBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFDQTtBQURBO0FBQUE7QUE0RkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBN0JBO0FBQUE7QUFBQTtBQStCQTtBQUNBO0FBQ0E7QUFDQTtBQWxDQTtBQUFBO0FBQUE7QUFvQ0E7QUFDQTtBQXJDQTtBQUFBO0FBQUE7QUF1Q0E7QUFDQTtBQXhDQTtBQUFBO0FBQUE7QUEwQ0E7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBeEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/app/component.ts\n')},"./lib/models/app/editor.ts": /*!**********************************!*\ !*** ./lib/models/app/editor.ts ***! \**********************************/ /*! exports provided: SNEditor */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNEditor", function() { return SNEditor; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n/**\n * @deprecated\n * Editor objects are depracated in favor of SNComponent objects\n */\n\nvar SNEditor = /*#__PURE__*/function (_SNItem) {\n _inherits(SNEditor, _SNItem);\n\n function SNEditor(payload) {\n var _this;\n\n _classCallCheck(this, SNEditor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNEditor).call(this, payload));\n _this.notes = [];\n _this.data = {};\n _this.url = payload.safeContent.url;\n _this.name = payload.safeContent.name;\n _this.data = payload.safeContent.data || {};\n _this.isDefault = payload.safeContent.default;\n _this.systemEditor = payload.safeContent.systemEditor;\n return _this;\n }\n\n return SNEditor;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9lZGl0b3IudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9lZGl0b3IudHM/MjE0ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0gfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKiBFZGl0b3Igb2JqZWN0cyBhcmUgZGVwcmFjYXRlZCBpbiBmYXZvciBvZiBTTkNvbXBvbmVudCBvYmplY3RzXG4gKi9cbmV4cG9ydCBjbGFzcyBTTkVkaXRvciBleHRlbmRzIFNOSXRlbSB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCkge1xuICAgICAgICBzdXBlcihwYXlsb2FkKTtcbiAgICAgICAgdGhpcy5ub3RlcyA9IFtdO1xuICAgICAgICB0aGlzLmRhdGEgPSB7fTtcbiAgICAgICAgdGhpcy51cmwgPSBwYXlsb2FkLnNhZmVDb250ZW50LnVybDtcbiAgICAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5zYWZlQ29udGVudC5uYW1lO1xuICAgICAgICB0aGlzLmRhdGEgPSBwYXlsb2FkLnNhZmVDb250ZW50LmRhdGEgfHwge307XG4gICAgICAgIHRoaXMuaXNEZWZhdWx0ID0gcGF5bG9hZC5zYWZlQ29udGVudC5kZWZhdWx0O1xuICAgICAgICB0aGlzLnN5c3RlbUVkaXRvciA9IHBheWxvYWQuc2FmZUNvbnRlbnQuc3lzdGVtRWRpdG9yO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7OztBQUlBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFTQTtBQUNBO0FBWEE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/app/editor.ts\n')},"./lib/models/app/extension.ts": /*!*************************************!*\ !*** ./lib/models/app/extension.ts ***! \*************************************/ /*! exports provided: SNActionsExtension, ActionsExtensionMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNActionsExtension", function() { return SNActionsExtension; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionsExtensionMutator", function() { return ActionsExtensionMutator; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./action */ "./lib/models/app/action.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n/**\n * Related to the SNActionsService and the local Action model.\n */\n\nvar SNActionsExtension = /*#__PURE__*/function (_SNItem) {\n _inherits(SNActionsExtension, _SNItem);\n\n function SNActionsExtension(payload) {\n var _this;\n\n _classCallCheck(this, SNActionsExtension);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNActionsExtension).call(this, payload));\n _this.actions = [];\n _this.description = payload.safeContent.description;\n _this.url = payload.safeContent.url;\n _this.name = payload.safeContent.name;\n _this.package_info = payload.safeContent.package_info;\n _this.supported_types = payload.safeContent.supported_types;\n\n if (payload.safeContent.actions) {\n _this.actions = payload.safeContent.actions.map(function (action) {\n return new _action__WEBPACK_IMPORTED_MODULE_1__["Action"](action);\n });\n }\n\n return _this;\n }\n\n _createClass(SNActionsExtension, [{\n key: "actionsWithContextForItem",\n value: function actionsWithContextForItem(item) {\n return this.actions.filter(function (action) {\n return action.context === item.content_type || action.context === \'Item\';\n });\n }\n }]);\n\n return SNActionsExtension;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);\nvar ActionsExtensionMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ActionsExtensionMutator, _ItemMutator);\n\n function ActionsExtensionMutator() {\n _classCallCheck(this, ActionsExtensionMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ActionsExtensionMutator).apply(this, arguments));\n }\n\n _createClass(ActionsExtensionMutator, [{\n key: "description",\n set: function set(description) {\n this.content.description = description;\n }\n }, {\n key: "supported_types",\n set: function set(supported_types) {\n this.content.supported_types = supported_types;\n }\n }, {\n key: "actions",\n set: function set(actions) {\n this.content.actions = actions;\n }\n }]);\n\n return ActionsExtensionMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9leHRlbnNpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9leHRlbnNpb24udHM/MTg0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuLyoqXG4gKiBSZWxhdGVkIHRvIHRoZSBTTkFjdGlvbnNTZXJ2aWNlIGFuZCB0aGUgbG9jYWwgQWN0aW9uIG1vZGVsLlxuICovXG5leHBvcnQgY2xhc3MgU05BY3Rpb25zRXh0ZW5zaW9uIGV4dGVuZHMgU05JdGVtIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHN1cGVyKHBheWxvYWQpO1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5kZXNjcmlwdGlvbiA9IHBheWxvYWQuc2FmZUNvbnRlbnQuZGVzY3JpcHRpb247XG4gICAgICAgIHRoaXMudXJsID0gcGF5bG9hZC5zYWZlQ29udGVudC51cmw7XG4gICAgICAgIHRoaXMubmFtZSA9IHBheWxvYWQuc2FmZUNvbnRlbnQubmFtZTtcbiAgICAgICAgdGhpcy5wYWNrYWdlX2luZm8gPSBwYXlsb2FkLnNhZmVDb250ZW50LnBhY2thZ2VfaW5mbztcbiAgICAgICAgdGhpcy5zdXBwb3J0ZWRfdHlwZXMgPSBwYXlsb2FkLnNhZmVDb250ZW50LnN1cHBvcnRlZF90eXBlcztcbiAgICAgICAgaWYgKHBheWxvYWQuc2FmZUNvbnRlbnQuYWN0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25zID0gcGF5bG9hZC5zYWZlQ29udGVudC5hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFjdGlvbnNXaXRoQ29udGV4dEZvckl0ZW0oaXRlbSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKGFjdGlvbi5jb250ZXh0ID09PSBpdGVtLmNvbnRlbnRfdHlwZSB8fFxuICAgICAgICAgICAgICAgIGFjdGlvbi5jb250ZXh0ID09PSAnSXRlbScpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQWN0aW9uc0V4dGVuc2lvbk11dGF0b3IgZXh0ZW5kcyBJdGVtTXV0YXRvciB7XG4gICAgc2V0IGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMuY29udGVudC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBzZXQgc3VwcG9ydGVkX3R5cGVzKHN1cHBvcnRlZF90eXBlcykge1xuICAgICAgICB0aGlzLmNvbnRlbnQuc3VwcG9ydGVkX3R5cGVzID0gc3VwcG9ydGVkX3R5cGVzO1xuICAgIH1cbiAgICBzZXQgYWN0aW9ucyhhY3Rpb25zKSB7XG4gICAgICAgIHRoaXMuY29udGVudC5hY3Rpb25zID0gYWN0aW9ucztcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQWFBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUVBO0FBQ0E7QUFwQkE7QUFDQTtBQURBO0FBQUE7QUFzQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFOQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBVEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/extension.ts\n')},"./lib/models/app/items_key.ts": /*!*************************************!*\ !*** ./lib/models/app/items_key.ts ***! \*************************************/ /*! exports provided: SNItemsKey, ItemsKeyMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNItemsKey", function() { return SNItemsKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemsKeyMutator", function() { return ItemsKeyMutator; });\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n/**\n * A key used to encrypt other items. Items keys are synced and persisted.\n */\n\nvar SNItemsKey = /*#__PURE__*/function (_SNItem) {\n _inherits(SNItemsKey, _SNItem);\n\n function SNItemsKey() {\n _classCallCheck(this, SNItemsKey);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNItemsKey).apply(this, arguments));\n }\n\n _createClass(SNItemsKey, [{\n key: "strategyWhenConflictingWithItem",\n\n /** Do not duplicate items keys. Always keep original */\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _get(_getPrototypeOf(SNItemsKey.prototype), "strategyWhenConflictingWithItem", this).call(this, item);\n }\n\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_0__["ConflictStrategy"].KeepLeft;\n }\n }, {\n key: "version",\n get: function get() {\n return this.payload.safeContent.version;\n }\n }, {\n key: "isItemsKey",\n get: function get() {\n return true;\n }\n }, {\n key: "isDefault",\n get: function get() {\n return this.payload.safeContent.isDefault;\n }\n }, {\n key: "itemsKey",\n get: function get() {\n return this.payload.safeContent.itemsKey;\n }\n }, {\n key: "dataAuthenticationKey",\n get: function get() {\n if (this.version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_2__["ProtocolVersion"].V004) {\n throw \'Attempting to access legacy data authentication key.\';\n }\n\n return this.payload.safeContent.dataAuthenticationKey;\n }\n }]);\n\n return SNItemsKey;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["SNItem"]);\nvar ItemsKeyMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ItemsKeyMutator, _ItemMutator);\n\n function ItemsKeyMutator() {\n _classCallCheck(this, ItemsKeyMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ItemsKeyMutator).apply(this, arguments));\n }\n\n _createClass(ItemsKeyMutator, [{\n key: "isDefault",\n set: function set(isDefault) {\n this.content.isDefault = isDefault;\n }\n }]);\n\n return ItemsKeyMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9pdGVtc19rZXkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC9pdGVtc19rZXkudHM/YzYwMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuLyoqXG4gKiBBIGtleSB1c2VkIHRvIGVuY3J5cHQgb3RoZXIgaXRlbXMuIEl0ZW1zIGtleXMgYXJlIHN5bmNlZCBhbmQgcGVyc2lzdGVkLlxuICovXG5leHBvcnQgY2xhc3MgU05JdGVtc0tleSBleHRlbmRzIFNOSXRlbSB7XG4gICAgLyoqIERvIG5vdCBkdXBsaWNhdGUgaXRlbXMga2V5cy4gQWx3YXlzIGtlZXAgb3JpZ2luYWwgKi9cbiAgICBzdHJhdGVneVdoZW5Db25mbGljdGluZ1dpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuc3RyYXRlZ3lXaGVuQ29uZmxpY3RpbmdXaXRoSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdDtcbiAgICB9XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudmVyc2lvbjtcbiAgICB9XG4gICAgZ2V0IGlzSXRlbXNLZXkoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXQgaXNEZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmlzRGVmYXVsdDtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lml0ZW1zS2V5O1xuICAgIH1cbiAgICBnZXQgZGF0YUF1dGhlbnRpY2F0aW9uS2V5KCkge1xuICAgICAgICBpZiAodGhpcy52ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwNCkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gYWNjZXNzIGxlZ2FjeSBkYXRhIGF1dGhlbnRpY2F0aW9uIGtleS4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuZGF0YUF1dGhlbnRpY2F0aW9uS2V5O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJdGVtc0tleU11dGF0b3IgZXh0ZW5kcyBJdGVtTXV0YXRvciB7XG4gICAgc2V0IGlzRGVmYXVsdChpc0RlZmF1bHQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LmlzRGVmYXVsdCA9IGlzRGVmYXVsdDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUFBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFQQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBWUE7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXpCQTtBQUNBO0FBREE7QUFBQTtBQTJCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/items_key.ts\n')},"./lib/models/app/note.ts": /*!********************************!*\ !*** ./lib/models/app/note.ts ***! \********************************/ /*! exports provided: SNNote, NoteMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNNote", function() { return SNNote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteMutator", function() { return NoteMutator; });\n/* harmony import */ var _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../protocol/payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n/** A note item */\n\nvar SNNote = /*#__PURE__*/function (_SNItem) {\n _inherits(SNNote, _SNItem);\n\n function SNNote(payload) {\n var _this;\n\n _classCallCheck(this, SNNote);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNNote).call(this, payload));\n /* Some external editors can\'t handle a null value for text.\n * Notes created on mobile with no text have a null value for it,\n * so we\'ll just set a default here. */\n\n _this.text = \'\';\n _this.hidePreview = false;\n _this.title = _this.payload.safeContent.title;\n _this.text = _this.payload.safeContent.text;\n _this.preview_plain = _this.payload.safeContent.preview_plain;\n _this.preview_html = _this.payload.safeContent.preview_html;\n _this.hidePreview = _this.payload.safeContent.hidePreview;\n\n if (payload.format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__["PayloadFormat"].DecryptedBareObject) {\n _this.prefersPlainEditor = _this.getAppDomainValue(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].PrefersPlainEditor);\n }\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(_this.payload.safeContent.mobilePrefersPlainEditor)) {\n _this.mobilePrefersPlainEditor = _this.payload.safeContent.mobilePrefersPlainEditor;\n }\n\n return _this;\n }\n\n _createClass(SNNote, [{\n key: "safeText",\n value: function safeText() {\n return this.text || \'\';\n }\n }, {\n key: "safeTitle",\n value: function safeTitle() {\n return this.title || \'\';\n }\n }]);\n\n return SNNote;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["SNItem"]);\nvar NoteMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(NoteMutator, _ItemMutator);\n\n function NoteMutator() {\n _classCallCheck(this, NoteMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NoteMutator).apply(this, arguments));\n }\n\n _createClass(NoteMutator, [{\n key: "typedContent",\n get: function get() {\n return this.content;\n }\n }, {\n key: "title",\n set: function set(title) {\n this.typedContent.title = title;\n }\n }, {\n key: "text",\n set: function set(text) {\n this.typedContent.text = text;\n }\n }, {\n key: "hidePreview",\n set: function set(hidePreview) {\n this.typedContent.hidePreview = hidePreview;\n }\n }, {\n key: "preview_plain",\n set: function set(preview_plain) {\n this.typedContent.preview_plain = preview_plain;\n }\n }, {\n key: "preview_html",\n set: function set(preview_html) {\n this.typedContent.preview_html = preview_html;\n }\n }, {\n key: "prefersPlainEditor",\n set: function set(prefersPlainEditor) {\n this.setAppDataItem(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["AppDataField"].PrefersPlainEditor, prefersPlainEditor);\n }\n }]);\n\n return NoteMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_2__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9ub3RlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9hcHAvbm90ZS50cz81NzMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICcuLy4uLy4uL3Byb3RvY29sL3BheWxvYWRzL2Zvcm1hdHMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IsIEFwcERhdGFGaWVsZCB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbi8qKiBBIG5vdGUgaXRlbSAqL1xuZXhwb3J0IGNsYXNzIFNOTm90ZSBleHRlbmRzIFNOSXRlbSB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCkge1xuICAgICAgICBzdXBlcihwYXlsb2FkKTtcbiAgICAgICAgLyogU29tZSBleHRlcm5hbCBlZGl0b3JzIGNhbid0IGhhbmRsZSBhIG51bGwgdmFsdWUgZm9yIHRleHQuXG4gICAgICAgICogTm90ZXMgY3JlYXRlZCBvbiBtb2JpbGUgd2l0aCBubyB0ZXh0IGhhdmUgYSBudWxsIHZhbHVlIGZvciBpdCxcbiAgICAgICAgKiBzbyB3ZSdsbCBqdXN0IHNldCBhIGRlZmF1bHQgaGVyZS4gKi9cbiAgICAgICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuaGlkZVByZXZpZXcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC50aXRsZTtcbiAgICAgICAgdGhpcy50ZXh0ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnRleHQ7XG4gICAgICAgIHRoaXMucHJldmlld19wbGFpbiA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wcmV2aWV3X3BsYWluO1xuICAgICAgICB0aGlzLnByZXZpZXdfaHRtbCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wcmV2aWV3X2h0bWw7XG4gICAgICAgIHRoaXMuaGlkZVByZXZpZXcgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuaGlkZVByZXZpZXc7XG4gICAgICAgIGlmIChwYXlsb2FkLmZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnByZWZlcnNQbGFpbkVkaXRvciA9IHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLlByZWZlcnNQbGFpbkVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQubW9iaWxlUHJlZmVyc1BsYWluRWRpdG9yKSkge1xuICAgICAgICAgICAgdGhpcy5tb2JpbGVQcmVmZXJzUGxhaW5FZGl0b3IgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQubW9iaWxlUHJlZmVyc1BsYWluRWRpdG9yO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNhZmVUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0IHx8ICcnO1xuICAgIH1cbiAgICBzYWZlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpdGxlIHx8ICcnO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBOb3RlTXV0YXRvciBleHRlbmRzIEl0ZW1NdXRhdG9yIHtcbiAgICBnZXQgdHlwZWRDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICBzZXQgdGl0bGUodGl0bGUpIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQudGl0bGUgPSB0aXRsZTtcbiAgICB9XG4gICAgc2V0IHRleHQodGV4dCkge1xuICAgICAgICB0aGlzLnR5cGVkQ29udGVudC50ZXh0ID0gdGV4dDtcbiAgICB9XG4gICAgc2V0IGhpZGVQcmV2aWV3KGhpZGVQcmV2aWV3KSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50LmhpZGVQcmV2aWV3ID0gaGlkZVByZXZpZXc7XG4gICAgfVxuICAgIHNldCBwcmV2aWV3X3BsYWluKHByZXZpZXdfcGxhaW4pIHtcbiAgICAgICAgdGhpcy50eXBlZENvbnRlbnQucHJldmlld19wbGFpbiA9IHByZXZpZXdfcGxhaW47XG4gICAgfVxuICAgIHNldCBwcmV2aWV3X2h0bWwocHJldmlld19odG1sKSB7XG4gICAgICAgIHRoaXMudHlwZWRDb250ZW50LnByZXZpZXdfaHRtbCA9IHByZXZpZXdfaHRtbDtcbiAgICB9XG4gICAgc2V0IHByZWZlcnNQbGFpbkVkaXRvcihwcmVmZXJzUGxhaW5FZGl0b3IpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuUHJlZmVyc1BsYWluRWRpdG9yLCBwcmVmZXJzUGxhaW5FZGl0b3IpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFrQkE7QUFDQTtBQXBCQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUF3QkE7QUFDQTtBQXpCQTtBQUNBO0FBREE7QUFBQTtBQTJCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBckJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/app/note.ts\n')},"./lib/models/app/privileges.ts": /*!**************************************!*\ !*** ./lib/models/app/privileges.ts ***! \**************************************/ /*! exports provided: ProtectedAction, PrivilegeCredential, SNPrivileges, PrivilegeMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProtectedAction", function() { return ProtectedAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegeCredential", function() { return PrivilegeCredential; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNPrivileges", function() { return SNPrivileges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegeMutator", function() { return PrivilegeMutator; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar ProtectedAction;\n\n(function (ProtectedAction) {\n ProtectedAction["ManageExtensions"] = "ActionManageExtensions";\n ProtectedAction["ManageBackups"] = "ActionManageBackups";\n ProtectedAction["ViewProtectedNotes"] = "ActionViewProtectedNotes";\n ProtectedAction["ManagePrivileges"] = "ActionManagePrivileges";\n ProtectedAction["ManagePasscode"] = "ActionManagePasscode";\n ProtectedAction["DeleteNote"] = "ActionDeleteNote";\n})(ProtectedAction || (ProtectedAction = {}));\n\n;\nvar PrivilegeCredential;\n\n(function (PrivilegeCredential) {\n PrivilegeCredential["AccountPassword"] = "CredentialAccountPassword";\n PrivilegeCredential["LocalPasscode"] = "CredentialLocalPasscode";\n})(PrivilegeCredential || (PrivilegeCredential = {}));\n\n;\n/**\n * Privileges are a singleton object that store the preferences a user\n * may have configured for protecting certain actions.\n */\n\nvar SNPrivileges = /*#__PURE__*/function (_SNItem) {\n _inherits(SNPrivileges, _SNItem);\n\n function SNPrivileges(payload) {\n var _this;\n\n _classCallCheck(this, SNPrivileges);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNPrivileges).call(this, payload));\n _this.privilegeMap = {};\n _this.privilegeMap = payload.safeContent.desktopPrivileges || {};\n return _this;\n }\n\n _createClass(SNPrivileges, [{\n key: "getCredentialsForAction",\n value: function getCredentialsForAction(action) {\n return this.privilegeMap[action] || [];\n }\n }, {\n key: "isCredentialRequiredForAction",\n value: function isCredentialRequiredForAction(action, credential) {\n var credentialsRequired = this.getCredentialsForAction(action);\n return credentialsRequired.includes(credential);\n }\n }, {\n key: "isSingleton",\n get: function get() {\n return true;\n }\n }, {\n key: "singletonPredicate",\n get: function get() {\n return new _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__["SNPredicate"](\'content_type\', \'=\', this.content_type);\n }\n }]);\n\n return SNPrivileges;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["SNItem"]);\nvar PrivilegeMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(PrivilegeMutator, _ItemMutator);\n\n function PrivilegeMutator(item, source) {\n var _this2;\n\n _classCallCheck(this, PrivilegeMutator);\n\n _this2 = _possibleConstructorReturn(this, _getPrototypeOf(PrivilegeMutator).call(this, item, source));\n _this2.privilegeMap = {};\n _this2.privileges = item;\n _this2.privilegeMap = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["Copy"])(_this2.payload.safeContent.desktopPrivileges || {});\n return _this2;\n }\n\n _createClass(PrivilegeMutator, [{\n key: "getResult",\n value: function getResult() {\n if (this.content) {\n this.content.desktopPrivileges = this.privilegeMap;\n }\n\n return _get(_getPrototypeOf(PrivilegeMutator.prototype), "getResult", this).call(this);\n }\n }, {\n key: "setCredentialsForAction",\n value: function setCredentialsForAction(action, credentials) {\n this.privilegeMap[action] = credentials;\n }\n }, {\n key: "toggleCredentialForAction",\n value: function toggleCredentialForAction(action, credential) {\n if (this.privileges.isCredentialRequiredForAction(action, credential)) {\n this.removeCredentialForAction(action, credential);\n } else {\n this.addCredentialForAction(action, credential);\n }\n }\n }, {\n key: "removeCredentialForAction",\n value: function removeCredentialForAction(action, credential) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(this.privilegeMap[action], credential);\n }\n }, {\n key: "addCredentialForAction",\n value: function addCredentialForAction(action, credential) {\n var credentials = this.privileges.getCredentialsForAction(action).slice();\n credentials.push(credential);\n this.setCredentialsForAction(action, credentials);\n }\n }]);\n\n return PrivilegeMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_1__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9wcml2aWxlZ2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9hcHAvcHJpdmlsZWdlcy50cz84MzQ1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcHksIHJlbW92ZUZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgU05JdGVtLCBJdGVtTXV0YXRvciB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbmltcG9ydCB7IFNOUHJlZGljYXRlIH0gZnJvbSAnQE1vZGVscy9jb3JlL3ByZWRpY2F0ZSc7XG5leHBvcnQgdmFyIFByb3RlY3RlZEFjdGlvbjtcbihmdW5jdGlvbiAoUHJvdGVjdGVkQWN0aW9uKSB7XG4gICAgUHJvdGVjdGVkQWN0aW9uW1wiTWFuYWdlRXh0ZW5zaW9uc1wiXSA9IFwiQWN0aW9uTWFuYWdlRXh0ZW5zaW9uc1wiO1xuICAgIFByb3RlY3RlZEFjdGlvbltcIk1hbmFnZUJhY2t1cHNcIl0gPSBcIkFjdGlvbk1hbmFnZUJhY2t1cHNcIjtcbiAgICBQcm90ZWN0ZWRBY3Rpb25bXCJWaWV3UHJvdGVjdGVkTm90ZXNcIl0gPSBcIkFjdGlvblZpZXdQcm90ZWN0ZWROb3Rlc1wiO1xuICAgIFByb3RlY3RlZEFjdGlvbltcIk1hbmFnZVByaXZpbGVnZXNcIl0gPSBcIkFjdGlvbk1hbmFnZVByaXZpbGVnZXNcIjtcbiAgICBQcm90ZWN0ZWRBY3Rpb25bXCJNYW5hZ2VQYXNzY29kZVwiXSA9IFwiQWN0aW9uTWFuYWdlUGFzc2NvZGVcIjtcbiAgICBQcm90ZWN0ZWRBY3Rpb25bXCJEZWxldGVOb3RlXCJdID0gXCJBY3Rpb25EZWxldGVOb3RlXCI7XG59KShQcm90ZWN0ZWRBY3Rpb24gfHwgKFByb3RlY3RlZEFjdGlvbiA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFByaXZpbGVnZUNyZWRlbnRpYWw7XG4oZnVuY3Rpb24gKFByaXZpbGVnZUNyZWRlbnRpYWwpIHtcbiAgICBQcml2aWxlZ2VDcmVkZW50aWFsW1wiQWNjb3VudFBhc3N3b3JkXCJdID0gXCJDcmVkZW50aWFsQWNjb3VudFBhc3N3b3JkXCI7XG4gICAgUHJpdmlsZWdlQ3JlZGVudGlhbFtcIkxvY2FsUGFzc2NvZGVcIl0gPSBcIkNyZWRlbnRpYWxMb2NhbFBhc3Njb2RlXCI7XG59KShQcml2aWxlZ2VDcmVkZW50aWFsIHx8IChQcml2aWxlZ2VDcmVkZW50aWFsID0ge30pKTtcbjtcbi8qKlxuICogUHJpdmlsZWdlcyBhcmUgYSBzaW5nbGV0b24gb2JqZWN0IHRoYXQgc3RvcmUgdGhlIHByZWZlcmVuY2VzIGEgdXNlclxuICogbWF5IGhhdmUgY29uZmlndXJlZCBmb3IgcHJvdGVjdGluZyBjZXJ0YWluIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTlByaXZpbGVnZXMgZXh0ZW5kcyBTTkl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWQpIHtcbiAgICAgICAgc3VwZXIocGF5bG9hZCk7XG4gICAgICAgIHRoaXMucHJpdmlsZWdlTWFwID0ge307XG4gICAgICAgIHRoaXMucHJpdmlsZWdlTWFwID0gcGF5bG9hZC5zYWZlQ29udGVudC5kZXNrdG9wUHJpdmlsZWdlcyB8fCB7fTtcbiAgICB9XG4gICAgZ2V0IGlzU2luZ2xldG9uKCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0IHNpbmdsZXRvblByZWRpY2F0ZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTTlByZWRpY2F0ZSgnY29udGVudF90eXBlJywgJz0nLCB0aGlzLmNvbnRlbnRfdHlwZSk7XG4gICAgfVxuICAgIGdldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5wcml2aWxlZ2VNYXBbYWN0aW9uXSB8fCBbXTtcbiAgICB9XG4gICAgaXNDcmVkZW50aWFsUmVxdWlyZWRGb3JBY3Rpb24oYWN0aW9uLCBjcmVkZW50aWFsKSB7XG4gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxzUmVxdWlyZWQgPSB0aGlzLmdldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbik7XG4gICAgICAgIHJldHVybiBjcmVkZW50aWFsc1JlcXVpcmVkLmluY2x1ZGVzKGNyZWRlbnRpYWwpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQcml2aWxlZ2VNdXRhdG9yIGV4dGVuZHMgSXRlbU11dGF0b3Ige1xuICAgIGNvbnN0cnVjdG9yKGl0ZW0sIHNvdXJjZSkge1xuICAgICAgICBzdXBlcihpdGVtLCBzb3VyY2UpO1xuICAgICAgICB0aGlzLnByaXZpbGVnZU1hcCA9IHt9O1xuICAgICAgICB0aGlzLnByaXZpbGVnZXMgPSBpdGVtO1xuICAgICAgICB0aGlzLnByaXZpbGVnZU1hcCA9IENvcHkodGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmRlc2t0b3BQcml2aWxlZ2VzIHx8IHt9KTtcbiAgICB9XG4gICAgZ2V0UmVzdWx0KCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuZGVza3RvcFByaXZpbGVnZXMgPSB0aGlzLnByaXZpbGVnZU1hcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VwZXIuZ2V0UmVzdWx0KCk7XG4gICAgfVxuICAgIHNldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbHMpIHtcbiAgICAgICAgdGhpcy5wcml2aWxlZ2VNYXBbYWN0aW9uXSA9IGNyZWRlbnRpYWxzO1xuICAgIH1cbiAgICB0b2dnbGVDcmVkZW50aWFsRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCkge1xuICAgICAgICBpZiAodGhpcy5wcml2aWxlZ2VzLmlzQ3JlZGVudGlhbFJlcXVpcmVkRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ3JlZGVudGlhbEZvckFjdGlvbihhY3Rpb24sIGNyZWRlbnRpYWwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZGRDcmVkZW50aWFsRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlQ3JlZGVudGlhbEZvckFjdGlvbihhY3Rpb24sIGNyZWRlbnRpYWwpIHtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMucHJpdmlsZWdlTWFwW2FjdGlvbl0sIGNyZWRlbnRpYWwpO1xuICAgIH1cbiAgICBhZGRDcmVkZW50aWFsRm9yQWN0aW9uKGFjdGlvbiwgY3JlZGVudGlhbCkge1xuICAgICAgICBjb25zdCBjcmVkZW50aWFscyA9IHRoaXMucHJpdmlsZWdlcy5nZXRDcmVkZW50aWFsc0ZvckFjdGlvbihhY3Rpb24pLnNsaWNlKCk7XG4gICAgICAgIGNyZWRlbnRpYWxzLnB1c2goY3JlZGVudGlhbCk7XG4gICAgICAgIHRoaXMuc2V0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uLCBjcmVkZW50aWFscyk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBSUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQWFBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBWEE7QUFDQTtBQURBO0FBQUE7QUFvQkE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFLQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF2QkE7QUFBQTtBQUFBO0FBeUJBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBL0JBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/app/privileges.ts\n')},"./lib/models/app/smartTag.ts": /*!************************************!*\ !*** ./lib/models/app/smartTag.ts ***! \************************************/ /*! exports provided: SNSmartTag */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSmartTag", function() { return SNSmartTag; });\n/* harmony import */ var _Models_app_tag__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/app/tag */ "./lib/models/app/tag.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n/**\n * A tag that defines a predicate that consumers can use to retrieve a dynamic\n * list of notes.\n */\n\nvar SNSmartTag = /*#__PURE__*/function (_SNTag) {\n _inherits(SNSmartTag, _SNTag);\n\n function SNSmartTag(payload) {\n var _this;\n\n _classCallCheck(this, SNSmartTag);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSmartTag).call(this, payload));\n\n if (payload.safeContent.predicate) {\n _this.predicate = _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__["SNPredicate"].FromJson(payload.safeContent.predicate);\n }\n\n return _this;\n }\n\n return SNSmartTag;\n}(_Models_app_tag__WEBPACK_IMPORTED_MODULE_0__["SNTag"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC9zbWFydFRhZy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvYXBwL3NtYXJ0VGFnLnRzPzdkYjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05UYWcgfSBmcm9tICdATW9kZWxzL2FwcC90YWcnO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbi8qKlxuICogQSB0YWcgdGhhdCBkZWZpbmVzIGEgcHJlZGljYXRlIHRoYXQgY29uc3VtZXJzIGNhbiB1c2UgdG8gcmV0cmlldmUgYSBkeW5hbWljXG4gKiBsaXN0IG9mIG5vdGVzLlxuICovXG5leHBvcnQgY2xhc3MgU05TbWFydFRhZyBleHRlbmRzIFNOVGFnIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHN1cGVyKHBheWxvYWQpO1xuICAgICAgICBpZiAocGF5bG9hZC5zYWZlQ29udGVudC5wcmVkaWNhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucHJlZGljYXRlID0gU05QcmVkaWNhdGUuRnJvbUpzb24ocGF5bG9hZC5zYWZlQ29udGVudC5wcmVkaWNhdGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBS0E7QUFDQTtBQVBBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/smartTag.ts\n')},"./lib/models/app/tag.ts": /*!*******************************!*\ !*** ./lib/models/app/tag.ts ***! \*******************************/ /*! exports provided: SNTag, TagMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNTag", function() { return SNTag; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TagMutator", function() { return TagMutator; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n/**\n * Allows organization of notes into groups. A tag can have many notes, and a note\n * can have many tags.\n */\n\nvar SNTag = /*#__PURE__*/function (_SNItem) {\n _inherits(SNTag, _SNItem);\n\n function SNTag(payload) {\n var _this;\n\n _classCallCheck(this, SNTag);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNTag).call(this, payload));\n _this.title = _this.payload.safeContent.title;\n return _this;\n }\n\n _createClass(SNTag, [{\n key: "isSmartTag",\n value: function isSmartTag() {\n return this.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].SmartTag;\n }\n }, {\n key: "noteCount",\n get: function get() {\n return this.payload.safeReferences.length;\n }\n }, {\n key: "isAllTag",\n get: function get() {\n return this.payload.safeContent.isAllTag;\n }\n }, {\n key: "isTrashTag",\n get: function get() {\n return this.payload.safeContent.isTrashTag;\n }\n }, {\n key: "isArchiveTag",\n get: function get() {\n return this.payload.safeContent.isArchiveTag;\n }\n }], [{\n key: "arrayToDisplayString",\n value: function arrayToDisplayString(tags) {\n return tags.sort(function (a, b) {\n return a.title > b.title ? 1 : -1;\n }).map(function (tag) {\n return \'#\' + tag.title;\n }).join(\' \');\n }\n }]);\n\n return SNTag;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);\nvar TagMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(TagMutator, _ItemMutator);\n\n function TagMutator() {\n _classCallCheck(this, TagMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(TagMutator).apply(this, arguments));\n }\n\n _createClass(TagMutator, [{\n key: "title",\n set: function set(title) {\n this.content.title = title;\n }\n }]);\n\n return TagMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC90YWcudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC90YWcudHM/ZWFkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuLyoqXG4gKiBBbGxvd3Mgb3JnYW5pemF0aW9uIG9mIG5vdGVzIGludG8gZ3JvdXBzLiBBIHRhZyBjYW4gaGF2ZSBtYW55IG5vdGVzLCBhbmQgYSBub3RlXG4gKiBjYW4gaGF2ZSBtYW55IHRhZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTlRhZyBleHRlbmRzIFNOSXRlbSB7XG4gICAgY29uc3RydWN0b3IocGF5bG9hZCkge1xuICAgICAgICBzdXBlcihwYXlsb2FkKTtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC50aXRsZTtcbiAgICB9XG4gICAgZ2V0IG5vdGVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlUmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgfVxuICAgIGlzU21hcnRUYWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuU21hcnRUYWc7XG4gICAgfVxuICAgIGdldCBpc0FsbFRhZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5pc0FsbFRhZztcbiAgICB9XG4gICAgZ2V0IGlzVHJhc2hUYWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuaXNUcmFzaFRhZztcbiAgICB9XG4gICAgZ2V0IGlzQXJjaGl2ZVRhZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5pc0FyY2hpdmVUYWc7XG4gICAgfVxuICAgIHN0YXRpYyBhcnJheVRvRGlzcGxheVN0cmluZyh0YWdzKSB7XG4gICAgICAgIHJldHVybiB0YWdzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhLnRpdGxlID4gYi50aXRsZSA/IDEgOiAtMTtcbiAgICAgICAgfSkubWFwKCh0YWcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAnIycgKyB0YWcudGl0bGU7XG4gICAgICAgIH0pLmpvaW4oJyAnKTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVGFnTXV0YXRvciBleHRlbmRzIEl0ZW1NdXRhdG9yIHtcbiAgICBzZXQgdGl0bGUodGl0bGUpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LnRpdGxlID0gdGl0bGU7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUZBO0FBR0E7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBWUE7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQUNBO0FBREE7QUFBQTtBQTRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/tag.ts\n')},"./lib/models/app/theme.ts": /*!*********************************!*\ !*** ./lib/models/app/theme.ts ***! \*********************************/ /*! exports provided: SNTheme, ThemeMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNTheme", function() { return SNTheme; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeMutator", function() { return ThemeMutator; });\n/* harmony import */ var _core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Models_app_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/app/component */ "./lib/models/app/component.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\nvar SNTheme = /*#__PURE__*/function (_SNComponent) {\n _inherits(SNTheme, _SNComponent);\n\n function SNTheme() {\n var _this;\n\n _classCallCheck(this, SNTheme);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNTheme).apply(this, arguments));\n _this.area = _Models_app_component__WEBPACK_IMPORTED_MODULE_2__["ComponentArea"].Themes;\n return _this;\n }\n\n _createClass(SNTheme, [{\n key: "isLayerable",\n value: function isLayerable() {\n return this.package_info && this.package_info.layerable;\n }\n /** Do not duplicate under most circumstances. Always keep original */\n\n }, {\n key: "strategyWhenConflictingWithItem",\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _get(_getPrototypeOf(SNTheme.prototype), "strategyWhenConflictingWithItem", this).call(this, item);\n }\n\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeft;\n }\n }, {\n key: "getMobileRules",\n value: function getMobileRules() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileRules) || {\n constants: {},\n rules: {}\n };\n }\n /** Same as getMobileRules but without default value. */\n\n }, {\n key: "hasMobileRules",\n value: function hasMobileRules() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileRules);\n }\n }, {\n key: "getNotAvailOnMobile",\n value: function getNotAvailOnMobile() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].NotAvailableOnMobile);\n }\n }, {\n key: "isMobileActive",\n value: function isMobileActive() {\n return this.getAppDomainValue(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileActive);\n }\n }]);\n\n return SNTheme;\n}(_Models_app_component__WEBPACK_IMPORTED_MODULE_2__["SNComponent"]);\nvar ThemeMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(ThemeMutator, _ItemMutator);\n\n function ThemeMutator() {\n _classCallCheck(this, ThemeMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ThemeMutator).apply(this, arguments));\n }\n\n _createClass(ThemeMutator, [{\n key: "setMobileRules",\n value: function setMobileRules(rules) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileRules, rules);\n }\n }, {\n key: "setNotAvailOnMobile",\n value: function setNotAvailOnMobile(notAvailable) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].NotAvailableOnMobile, notAvailable);\n }\n /**\n * We must not use .active because if you set that to true, it will also\n * activate that theme on desktop/web\n */\n\n }, {\n key: "setMobileActive",\n value: function setMobileActive(active) {\n this.setAppDataItem(_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"].MobileActive, active);\n }\n }]);\n\n return ThemeMutator;\n}(_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC90aGVtZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvYXBwL3RoZW1lLnRzP2QyZDAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwRGF0YUZpZWxkIH0gZnJvbSAnLi8uLi9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgSXRlbU11dGF0b3IgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IFNOQ29tcG9uZW50LCBDb21wb25lbnRBcmVhIH0gZnJvbSAnQE1vZGVscy9hcHAvY29tcG9uZW50JztcbmV4cG9ydCBjbGFzcyBTTlRoZW1lIGV4dGVuZHMgU05Db21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLmFyZWEgPSBDb21wb25lbnRBcmVhLlRoZW1lcztcbiAgICB9XG4gICAgaXNMYXllcmFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhY2thZ2VfaW5mbyAmJiB0aGlzLnBhY2thZ2VfaW5mby5sYXllcmFibGU7XG4gICAgfVxuICAgIC8qKiBEbyBub3QgZHVwbGljYXRlIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcy4gQWx3YXlzIGtlZXAgb3JpZ2luYWwgKi9cbiAgICBzdHJhdGVneVdoZW5Db25mbGljdGluZ1dpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgaWYgKHRoaXMuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuc3RyYXRlZ3lXaGVuQ29uZmxpY3RpbmdXaXRoSXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdDtcbiAgICB9XG4gICAgZ2V0TW9iaWxlUnVsZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcERvbWFpblZhbHVlKEFwcERhdGFGaWVsZC5Nb2JpbGVSdWxlcykgfHwgeyBjb25zdGFudHM6IHt9LCBydWxlczoge30gfTtcbiAgICB9XG4gICAgLyoqIFNhbWUgYXMgZ2V0TW9iaWxlUnVsZXMgYnV0IHdpdGhvdXQgZGVmYXVsdCB2YWx1ZS4gKi9cbiAgICBoYXNNb2JpbGVSdWxlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLk1vYmlsZVJ1bGVzKTtcbiAgICB9XG4gICAgZ2V0Tm90QXZhaWxPbk1vYmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLk5vdEF2YWlsYWJsZU9uTW9iaWxlKTtcbiAgICB9XG4gICAgaXNNb2JpbGVBY3RpdmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFwcERvbWFpblZhbHVlKEFwcERhdGFGaWVsZC5Nb2JpbGVBY3RpdmUpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBUaGVtZU11dGF0b3IgZXh0ZW5kcyBJdGVtTXV0YXRvciB7XG4gICAgc2V0TW9iaWxlUnVsZXMocnVsZXMpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuTW9iaWxlUnVsZXMsIHJ1bGVzKTtcbiAgICB9XG4gICAgc2V0Tm90QXZhaWxPbk1vYmlsZShub3RBdmFpbGFibGUpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuTm90QXZhaWxhYmxlT25Nb2JpbGUsIG5vdEF2YWlsYWJsZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdlIG11c3Qgbm90IHVzZSAuYWN0aXZlIGJlY2F1c2UgaWYgeW91IHNldCB0aGF0IHRvIHRydWUsIGl0IHdpbGwgYWxzb1xuICAgICAqIGFjdGl2YXRlIHRoYXQgdGhlbWUgb24gZGVza3RvcC93ZWJcbiAgICAgKi9cbiAgICBzZXRNb2JpbGVBY3RpdmUoYWN0aXZlKSB7XG4gICAgICAgIHRoaXMuc2V0QXBwRGF0YUl0ZW0oQXBwRGF0YUZpZWxkLk1vYmlsZUFjdGl2ZSwgYWN0aXZlKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBRkE7QUFHQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFnQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFyQkE7QUFBQTtBQUFBO0FBdUJBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBMEJBO0FBQ0E7QUEzQkE7QUFDQTtBQURBO0FBQUE7QUE2QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTs7Ozs7QUFQQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBYkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/theme.ts\n')},"./lib/models/app/userPrefs.ts": /*!*************************************!*\ !*** ./lib/models/app/userPrefs.ts ***! \*************************************/ /*! exports provided: WebPrefKey, SNUserPrefs, UserPrefsMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WebPrefKey", function() { return WebPrefKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNUserPrefs", function() { return SNUserPrefs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UserPrefsMutator", function() { return UserPrefsMutator; });\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\nvar WebPrefKey;\n\n(function (WebPrefKey) {\n WebPrefKey["TagsPanelWidth"] = "tagsPanelWidth";\n WebPrefKey["NotesPanelWidth"] = "notesPanelWidth";\n WebPrefKey["EditorWidth"] = "editorWidth";\n WebPrefKey["EditorLeft"] = "editorLeft";\n WebPrefKey["EditorMonospaceEnabled"] = "monospaceFont";\n WebPrefKey["EditorSpellcheck"] = "spellcheck";\n WebPrefKey["EditorResizersEnabled"] = "marginResizersEnabled";\n WebPrefKey["SortNotesBy"] = "sortBy";\n WebPrefKey["SortNotesReverse"] = "sortReverse";\n WebPrefKey["NotesShowArchived"] = "showArchived";\n WebPrefKey["NotesHidePinned"] = "hidePinned";\n WebPrefKey["NotesHideNotePreview"] = "hideNotePreview";\n WebPrefKey["NotesHideDate"] = "hideDate";\n})(WebPrefKey || (WebPrefKey = {}));\n\n;\nvar SNUserPrefs = /*#__PURE__*/function (_SNItem) {\n _inherits(SNUserPrefs, _SNItem);\n\n function SNUserPrefs() {\n _classCallCheck(this, SNUserPrefs);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNUserPrefs).apply(this, arguments));\n }\n\n _createClass(SNUserPrefs, [{\n key: "getPref",\n value: function getPref(key) {\n return this.getAppDomainValue(key);\n }\n }, {\n key: "isSingleton",\n get: function get() {\n return true;\n }\n }, {\n key: "singletonPredicate",\n get: function get() {\n return new _Models_core_predicate__WEBPACK_IMPORTED_MODULE_1__["SNPredicate"](\'content_type\', \'=\', this.content_type);\n }\n }]);\n\n return SNUserPrefs;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]);\nvar UserPrefsMutator = /*#__PURE__*/function (_ItemMutator) {\n _inherits(UserPrefsMutator, _ItemMutator);\n\n function UserPrefsMutator() {\n _classCallCheck(this, UserPrefsMutator);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(UserPrefsMutator).apply(this, arguments));\n }\n\n _createClass(UserPrefsMutator, [{\n key: "setWebPref",\n value: function setWebPref(key, value) {\n this.setAppDataItem(key, value);\n }\n }]);\n\n return UserPrefsMutator;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2FwcC91c2VyUHJlZnMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2FwcC91c2VyUHJlZnMudHM/MDljYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTTkl0ZW0sIEl0ZW1NdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmV4cG9ydCB2YXIgV2ViUHJlZktleTtcbihmdW5jdGlvbiAoV2ViUHJlZktleSkge1xuICAgIFdlYlByZWZLZXlbXCJUYWdzUGFuZWxXaWR0aFwiXSA9IFwidGFnc1BhbmVsV2lkdGhcIjtcbiAgICBXZWJQcmVmS2V5W1wiTm90ZXNQYW5lbFdpZHRoXCJdID0gXCJub3Rlc1BhbmVsV2lkdGhcIjtcbiAgICBXZWJQcmVmS2V5W1wiRWRpdG9yV2lkdGhcIl0gPSBcImVkaXRvcldpZHRoXCI7XG4gICAgV2ViUHJlZktleVtcIkVkaXRvckxlZnRcIl0gPSBcImVkaXRvckxlZnRcIjtcbiAgICBXZWJQcmVmS2V5W1wiRWRpdG9yTW9ub3NwYWNlRW5hYmxlZFwiXSA9IFwibW9ub3NwYWNlRm9udFwiO1xuICAgIFdlYlByZWZLZXlbXCJFZGl0b3JTcGVsbGNoZWNrXCJdID0gXCJzcGVsbGNoZWNrXCI7XG4gICAgV2ViUHJlZktleVtcIkVkaXRvclJlc2l6ZXJzRW5hYmxlZFwiXSA9IFwibWFyZ2luUmVzaXplcnNFbmFibGVkXCI7XG4gICAgV2ViUHJlZktleVtcIlNvcnROb3Rlc0J5XCJdID0gXCJzb3J0QnlcIjtcbiAgICBXZWJQcmVmS2V5W1wiU29ydE5vdGVzUmV2ZXJzZVwiXSA9IFwic29ydFJldmVyc2VcIjtcbiAgICBXZWJQcmVmS2V5W1wiTm90ZXNTaG93QXJjaGl2ZWRcIl0gPSBcInNob3dBcmNoaXZlZFwiO1xuICAgIFdlYlByZWZLZXlbXCJOb3Rlc0hpZGVQaW5uZWRcIl0gPSBcImhpZGVQaW5uZWRcIjtcbiAgICBXZWJQcmVmS2V5W1wiTm90ZXNIaWRlTm90ZVByZXZpZXdcIl0gPSBcImhpZGVOb3RlUHJldmlld1wiO1xuICAgIFdlYlByZWZLZXlbXCJOb3Rlc0hpZGVEYXRlXCJdID0gXCJoaWRlRGF0ZVwiO1xufSkoV2ViUHJlZktleSB8fCAoV2ViUHJlZktleSA9IHt9KSk7XG47XG5leHBvcnQgY2xhc3MgU05Vc2VyUHJlZnMgZXh0ZW5kcyBTTkl0ZW0ge1xuICAgIGdldCBpc1NpbmdsZXRvbigpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldCBzaW5nbGV0b25QcmVkaWNhdGUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU05QcmVkaWNhdGUoJ2NvbnRlbnRfdHlwZScsICc9JywgdGhpcy5jb250ZW50X3R5cGUpO1xuICAgIH1cbiAgICBnZXRQcmVmKGtleSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBcHBEb21haW5WYWx1ZShrZXkpO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVc2VyUHJlZnNNdXRhdG9yIGV4dGVuZHMgSXRlbU11dGF0b3Ige1xuICAgIHNldFdlYlByZWYoa2V5LCB2YWx1ZSkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKGtleSwgdmFsdWUpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBUUE7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBTkE7QUFDQTtBQURBO0FBQUE7QUFXQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/app/userPrefs.ts\n')},"./lib/models/content_types.ts": /*!*************************************!*\ !*** ./lib/models/content_types.ts ***! \*************************************/ /*! exports provided: DefaultAppDomain, ContentType, displayStringForContentType */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultAppDomain", function() { return DefaultAppDomain; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ContentType", function() { return ContentType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayStringForContentType", function() { return displayStringForContentType; });\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar DefaultAppDomain = \'org.standardnotes.sn\';\nvar ContentType;\n\n(function (ContentType) {\n ContentType["Any"] = "*";\n ContentType["Item"] = "SF|Item";\n ContentType["RootKey"] = "SN|RootKey|NoSync";\n ContentType["ItemsKey"] = "SN|ItemsKey";\n ContentType["EncryptedStorage"] = "SN|EncryptedStorage";\n ContentType["Note"] = "Note";\n ContentType["Tag"] = "Tag";\n ContentType["SmartTag"] = "SN|SmartTag";\n ContentType["Component"] = "SN|Component";\n ContentType["Editor"] = "SN|Editor";\n ContentType["ActionsExtension"] = "Extension";\n ContentType["UserPrefs"] = "SN|UserPreferences";\n ContentType["Privileges"] = "SN|Privileges";\n ContentType["HistorySession"] = "SN|HistorySession";\n ContentType["Theme"] = "SN|Theme";\n ContentType["Mfa"] = "SF|MFA";\n ContentType["ServerExtension"] = "SF|Extension";\n ContentType["FilesafeCredentials"] = "SN|FileSafe|Credentials";\n ContentType["FilesafeFileMetadata"] = "SN|FileSafe|FileMetadata";\n ContentType["FilesafeIntegration"] = "SN|FileSafe|Integration";\n ContentType["ExtensionRepo"] = "SN|ExtensionRepo";\n})(ContentType || (ContentType = {}));\n\n;\nfunction displayStringForContentType(contentType) {\n var _map;\n\n var map = (_map = {}, _defineProperty(_map, ContentType.Note, \'note\'), _defineProperty(_map, ContentType.Tag, \'tag\'), _defineProperty(_map, ContentType.SmartTag, \'smart tag\'), _defineProperty(_map, ContentType.ActionsExtension, \'action-based extension\'), _defineProperty(_map, ContentType.Component, \'component\'), _defineProperty(_map, ContentType.Editor, \'editor\'), _defineProperty(_map, ContentType.Theme, \'theme\'), _defineProperty(_map, ContentType.ServerExtension, \'server extension\'), _defineProperty(_map, ContentType.Mfa, \'two-factor authentication setting\'), _defineProperty(_map, ContentType.FilesafeCredentials, \'FileSafe credential\'), _defineProperty(_map, ContentType.FilesafeFileMetadata, \'FileSafe file\'), _defineProperty(_map, ContentType.FilesafeIntegration, \'FileSafe integration\'), _map);\n return map[contentType];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2NvbnRlbnRfdHlwZXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvbW9kZWxzL2NvbnRlbnRfdHlwZXMudHM/MmQzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRGVmYXVsdEFwcERvbWFpbiA9ICdvcmcuc3RhbmRhcmRub3Rlcy5zbic7XG5leHBvcnQgdmFyIENvbnRlbnRUeXBlO1xuKGZ1bmN0aW9uIChDb250ZW50VHlwZSkge1xuICAgIENvbnRlbnRUeXBlW1wiQW55XCJdID0gXCIqXCI7XG4gICAgQ29udGVudFR5cGVbXCJJdGVtXCJdID0gXCJTRnxJdGVtXCI7XG4gICAgQ29udGVudFR5cGVbXCJSb290S2V5XCJdID0gXCJTTnxSb290S2V5fE5vU3luY1wiO1xuICAgIENvbnRlbnRUeXBlW1wiSXRlbXNLZXlcIl0gPSBcIlNOfEl0ZW1zS2V5XCI7XG4gICAgQ29udGVudFR5cGVbXCJFbmNyeXB0ZWRTdG9yYWdlXCJdID0gXCJTTnxFbmNyeXB0ZWRTdG9yYWdlXCI7XG4gICAgQ29udGVudFR5cGVbXCJOb3RlXCJdID0gXCJOb3RlXCI7XG4gICAgQ29udGVudFR5cGVbXCJUYWdcIl0gPSBcIlRhZ1wiO1xuICAgIENvbnRlbnRUeXBlW1wiU21hcnRUYWdcIl0gPSBcIlNOfFNtYXJ0VGFnXCI7XG4gICAgQ29udGVudFR5cGVbXCJDb21wb25lbnRcIl0gPSBcIlNOfENvbXBvbmVudFwiO1xuICAgIENvbnRlbnRUeXBlW1wiRWRpdG9yXCJdID0gXCJTTnxFZGl0b3JcIjtcbiAgICBDb250ZW50VHlwZVtcIkFjdGlvbnNFeHRlbnNpb25cIl0gPSBcIkV4dGVuc2lvblwiO1xuICAgIENvbnRlbnRUeXBlW1wiVXNlclByZWZzXCJdID0gXCJTTnxVc2VyUHJlZmVyZW5jZXNcIjtcbiAgICBDb250ZW50VHlwZVtcIlByaXZpbGVnZXNcIl0gPSBcIlNOfFByaXZpbGVnZXNcIjtcbiAgICBDb250ZW50VHlwZVtcIkhpc3RvcnlTZXNzaW9uXCJdID0gXCJTTnxIaXN0b3J5U2Vzc2lvblwiO1xuICAgIENvbnRlbnRUeXBlW1wiVGhlbWVcIl0gPSBcIlNOfFRoZW1lXCI7XG4gICAgQ29udGVudFR5cGVbXCJNZmFcIl0gPSBcIlNGfE1GQVwiO1xuICAgIENvbnRlbnRUeXBlW1wiU2VydmVyRXh0ZW5zaW9uXCJdID0gXCJTRnxFeHRlbnNpb25cIjtcbiAgICBDb250ZW50VHlwZVtcIkZpbGVzYWZlQ3JlZGVudGlhbHNcIl0gPSBcIlNOfEZpbGVTYWZlfENyZWRlbnRpYWxzXCI7XG4gICAgQ29udGVudFR5cGVbXCJGaWxlc2FmZUZpbGVNZXRhZGF0YVwiXSA9IFwiU058RmlsZVNhZmV8RmlsZU1ldGFkYXRhXCI7XG4gICAgQ29udGVudFR5cGVbXCJGaWxlc2FmZUludGVncmF0aW9uXCJdID0gXCJTTnxGaWxlU2FmZXxJbnRlZ3JhdGlvblwiO1xuICAgIENvbnRlbnRUeXBlW1wiRXh0ZW5zaW9uUmVwb1wiXSA9IFwiU058RXh0ZW5zaW9uUmVwb1wiO1xufSkoQ29udGVudFR5cGUgfHwgKENvbnRlbnRUeXBlID0ge30pKTtcbjtcbmV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5U3RyaW5nRm9yQ29udGVudFR5cGUoY29udGVudFR5cGUpIHtcbiAgICBjb25zdCBtYXAgPSB7XG4gICAgICAgIFtDb250ZW50VHlwZS5Ob3RlXTogJ25vdGUnLFxuICAgICAgICBbQ29udGVudFR5cGUuVGFnXTogJ3RhZycsXG4gICAgICAgIFtDb250ZW50VHlwZS5TbWFydFRhZ106ICdzbWFydCB0YWcnLFxuICAgICAgICBbQ29udGVudFR5cGUuQWN0aW9uc0V4dGVuc2lvbl06ICdhY3Rpb24tYmFzZWQgZXh0ZW5zaW9uJyxcbiAgICAgICAgW0NvbnRlbnRUeXBlLkNvbXBvbmVudF06ICdjb21wb25lbnQnLFxuICAgICAgICBbQ29udGVudFR5cGUuRWRpdG9yXTogJ2VkaXRvcicsXG4gICAgICAgIFtDb250ZW50VHlwZS5UaGVtZV06ICd0aGVtZScsXG4gICAgICAgIFtDb250ZW50VHlwZS5TZXJ2ZXJFeHRlbnNpb25dOiAnc2VydmVyIGV4dGVuc2lvbicsXG4gICAgICAgIFtDb250ZW50VHlwZS5NZmFdOiAndHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBzZXR0aW5nJyxcbiAgICAgICAgW0NvbnRlbnRUeXBlLkZpbGVzYWZlQ3JlZGVudGlhbHNdOiAnRmlsZVNhZmUgY3JlZGVudGlhbCcsXG4gICAgICAgIFtDb250ZW50VHlwZS5GaWxlc2FmZUZpbGVNZXRhZGF0YV06ICdGaWxlU2FmZSBmaWxlJyxcbiAgICAgICAgW0NvbnRlbnRUeXBlLkZpbGVzYWZlSW50ZWdyYXRpb25dOiAnRmlsZVNhZmUgaW50ZWdyYXRpb24nXG4gICAgfTtcbiAgICByZXR1cm4gbWFwW2NvbnRlbnRUeXBlXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQWNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/content_types.ts\n')},"./lib/models/core/item.ts": /*!*********************************!*\ !*** ./lib/models/core/item.ts ***! \*********************************/ /*! exports provided: MutationType, AppDataField, SingletonStrategy, SNItem, ItemMutator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(setImmediate) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutationType", function() { return MutationType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AppDataField", function() { return AppDataField; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SingletonStrategy", function() { return SingletonStrategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNItem", function() { return SNItem; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemMutator", function() { return ItemMutator; });\n/* harmony import */ var _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../protocol/payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony import */ var _content_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../content_types */ "./lib/models/content_types.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\nvar MutationType;\n\n(function (MutationType) {\n /**\n * The item was changed as part of a user interaction. This means that the item\'s\n * user modified date will be updated\n */\n MutationType[MutationType["UserInteraction"] = 1] = "UserInteraction";\n /**\n * The item was changed as part of an internal operation, such as a migration.\n * This change will not updated the item\'s user modified date\n */\n\n MutationType[MutationType["Internal"] = 2] = "Internal";\n /**\n * The item was changed as part of an internal function that wishes to modify\n * internal item properties, such as lastSyncBegan, without modifying the item\'s dirty\n * state. By default all other mutation types will result in a dirtied result.\n */\n\n MutationType[MutationType["NonDirtying"] = 3] = "NonDirtying";\n})(MutationType || (MutationType = {}));\n\nvar AppDataField;\n\n(function (AppDataField) {\n AppDataField["Pinned"] = "pinned";\n AppDataField["Archived"] = "archived";\n AppDataField["Locked"] = "locked";\n AppDataField["UserModifiedDate"] = "client_updated_at";\n AppDataField["DefaultEditor"] = "defaultEditor";\n AppDataField["MobileRules"] = "mobileRules";\n AppDataField["NotAvailableOnMobile"] = "notAvailableOnMobile";\n AppDataField["MobileActive"] = "mobileActive";\n AppDataField["LastSize"] = "lastSize";\n AppDataField["PrefersPlainEditor"] = "prefersPlainEditor";\n AppDataField["ComponentInstallError"] = "installError";\n})(AppDataField || (AppDataField = {}));\n\nvar SingletonStrategy;\n\n(function (SingletonStrategy) {\n SingletonStrategy[SingletonStrategy["KeepEarliest"] = 1] = "KeepEarliest";\n})(SingletonStrategy || (SingletonStrategy = {}));\n\n;\n/**\n * The most abstract item that any syncable item needs to extend from.\n */\n\nvar SNItem = /*#__PURE__*/function () {\n function SNItem(payload) {\n var _this = this;\n\n _classCallCheck(this, SNItem);\n\n this.protected = false;\n this.trashed = false;\n this.pinned = false;\n this.archived = false;\n this.locked = false;\n\n if (!payload.uuid || !payload.content_type) {\n throw Error(\'Cannot create item without both uuid and content_type\');\n }\n\n if (payload.format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__["PayloadFormat"].DecryptedBareObject && (payload.enc_item_key || payload.items_key_id || payload.auth_hash)) {\n throw Error(\'Creating an item from a decrypted payload should not contain enc params\');\n }\n\n this.payload = payload;\n this.conflictOf = payload.safeContent.conflict_of;\n this.createdAtString = this.created_at && this.dateToLocalizedString(this.created_at);\n\n if (payload.format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_0__["PayloadFormat"].DecryptedBareObject) {\n this.updatedAtString = this.dateToLocalizedString(this.userModifiedDate);\n this.protected = this.payload.safeContent.protected;\n this.trashed = this.payload.safeContent.trashed;\n this.pinned = this.getAppDomainValue(AppDataField.Pinned);\n this.archived = this.getAppDomainValue(AppDataField.Archived);\n this.locked = this.getAppDomainValue(AppDataField.Locked);\n }\n /** Allow the subclass constructor to complete initialization before deep freezing */\n\n\n setImmediate(function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["deepFreeze"])(_this);\n });\n }\n\n _createClass(SNItem, [{\n key: "payloadRepresentation",\n value: function payloadRepresentation(override) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, override);\n }\n }, {\n key: "hasRelationshipWithItem",\n value: function hasRelationshipWithItem(item) {\n var _this$payload$safeCon;\n\n var target = (_this$payload$safeCon = this.payload.safeContent.references) === null || _this$payload$safeCon === void 0 ? void 0 : _this$payload$safeCon.find(function (r) {\n return r.uuid === item.uuid;\n });\n return !!target;\n }\n /**\n * Inside of content is a record called `appData` (which should have been called `domainData`).\n * It was named `appData` as a way to indicate that it can house data for multiple apps.\n * Each key of appData is a domain string, which was originally designed\n * to allow for multiple 3rd party apps who share access to the same data to store data\n * in an isolated location. This design premise is antiquited and no longer pursued,\n * however we continue to use it as not to uncesesarily create a large data migration\n * that would require users to sync all their data.\n *\n * domainData[DomainKey] will give you another Record.\n *\n * Currently appData[\'org.standardnotes.sn\'] returns an object of type AppData.\n * And appData[\'org.standardnotes.sn.components] returns an object of type ComponentData\n */\n\n }, {\n key: "getDomainData",\n value: function getDomainData(domain) {\n var domainData = this.payload.safeContent.appData;\n\n if (!domainData) {\n return undefined;\n }\n\n var data = domainData[domain];\n return data;\n }\n }, {\n key: "getAppDomainValue",\n value: function getAppDomainValue(key) {\n var appData = this.getDomainData(SNItem.DefaultAppDomain());\n return appData[key];\n }\n /**\n * During sync conflicts, when determing whether to create a duplicate for an item,\n * we can omit keys that have no meaningful weight and can be ignored. For example,\n * if one component has active = true and another component has active = false,\n * it would be needless to duplicate them, so instead we ignore that value.\n */\n\n }, {\n key: "contentKeysToIgnoreWhenCheckingEquality",\n value: function contentKeysToIgnoreWhenCheckingEquality() {\n return [\'conflict_of\'];\n }\n /** Same as `contentKeysToIgnoreWhenCheckingEquality`, but keys inside appData[Item.AppDomain] */\n\n }, {\n key: "appDataContentKeysToIgnoreWhenCheckingEquality",\n value: function appDataContentKeysToIgnoreWhenCheckingEquality() {\n return [AppDataField.UserModifiedDate];\n }\n }, {\n key: "getContentCopy",\n value: function getContentCopy() {\n return JSON.parse(JSON.stringify(this.content));\n }\n /** Whether the item has never been synced to a server */\n\n }, {\n key: "strategyWhenConflictingWithItem",\n\n /**\n * Subclasses can override this method and provide their own opinion on whether\n * they want to be duplicated. For example, if this.content.x = 12 and\n * item.content.x = 13, this function can be overriden to always return\n * ConflictStrategy.KeepLeft to say \'don\'t create a duplicate at all, the\n * change is not important.\'\n *\n * In the default implementation, we create a duplicate if content differs.\n * However, if they only differ by references, we KEEP_LEFT_MERGE_REFS.\n */\n value: function strategyWhenConflictingWithItem(item) {\n if (this.errorDecrypting) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeftDuplicateRight;\n }\n\n if (this.isSingleton) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeft;\n }\n\n if (this.deleted || item.deleted) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepRight;\n }\n\n var contentDiffers = ItemContentsDiffer(this, item);\n\n if (!contentDiffers) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepRight;\n }\n\n var differsExclRefs = ItemContentsDiffer(this, item, [\'references\']);\n\n if (differsExclRefs) {\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeftDuplicateRight;\n } else {\n /** Is only references change */\n return _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_1__["ConflictStrategy"].KeepLeftMergeRefs;\n }\n }\n }, {\n key: "isItemContentEqualWith",\n value: function isItemContentEqualWith(otherItem) {\n return ItemContentsEqual(this.payload.contentObject, otherItem.payload.contentObject, this.contentKeysToIgnoreWhenCheckingEquality(), this.appDataContentKeysToIgnoreWhenCheckingEquality());\n }\n }, {\n key: "satisfiesPredicate",\n value: function satisfiesPredicate(predicate) {\n return _Models_core_predicate__WEBPACK_IMPORTED_MODULE_4__["SNPredicate"].ItemSatisfiesPredicate(this, predicate);\n }\n }, {\n key: "updatedAtTimestamp",\n value: function updatedAtTimestamp() {\n var _this$updated_at;\n\n return (_this$updated_at = this.updated_at) === null || _this$updated_at === void 0 ? void 0 : _this$updated_at.getTime();\n }\n }, {\n key: "dateToLocalizedString",\n value: function dateToLocalizedString(date) {\n if (typeof Intl !== \'undefined\' && Intl.DateTimeFormat) {\n if (!SNItem.sharedDateFormatter) {\n var locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language;\n SNItem.sharedDateFormatter = new Intl.DateTimeFormat(locale, {\n year: \'numeric\',\n month: \'short\',\n day: \'2-digit\',\n weekday: \'long\',\n hour: \'2-digit\',\n minute: \'2-digit\'\n });\n }\n\n return SNItem.sharedDateFormatter.format(date);\n } else {\n // IE < 11, Safari <= 9.0.\n // In English, this generates the string most similar to\n // the toLocaleDateString() result above.\n return date.toDateString() + \' \' + date.toLocaleTimeString();\n }\n }\n }, {\n key: "uuid",\n get: function get() {\n return this.payload.uuid;\n }\n }, {\n key: "content",\n get: function get() {\n return this.payload.content;\n }\n }, {\n key: "safeContent",\n get: function get() {\n return this.payload.safeContent;\n }\n }, {\n key: "references",\n get: function get() {\n return this.payload.safeContent.references || [];\n }\n }, {\n key: "deleted",\n get: function get() {\n return this.payload.deleted;\n }\n }, {\n key: "content_type",\n get: function get() {\n return this.payload.content_type;\n }\n }, {\n key: "created_at",\n get: function get() {\n return this.payload.created_at;\n }\n }, {\n key: "updated_at",\n get: function get() {\n return this.payload.updated_at;\n }\n }, {\n key: "userModifiedDate",\n get: function get() {\n var value = this.getAppDomainValue(AppDataField.UserModifiedDate);\n return new Date(value || this.updated_at);\n }\n }, {\n key: "dirtiedDate",\n get: function get() {\n return this.payload.dirtiedDate;\n }\n }, {\n key: "dirty",\n get: function get() {\n return this.payload.dirty;\n }\n }, {\n key: "errorDecrypting",\n get: function get() {\n return this.payload.errorDecrypting;\n }\n }, {\n key: "waitingForKey",\n get: function get() {\n return this.payload.waitingForKey;\n }\n }, {\n key: "errorDecryptingValueChanged",\n get: function get() {\n return this.payload.errorDecryptingValueChanged;\n }\n }, {\n key: "lastSyncBegan",\n get: function get() {\n return this.payload.lastSyncBegan;\n }\n }, {\n key: "lastSyncEnd",\n get: function get() {\n return this.payload.lastSyncEnd;\n }\n /** @deprecated */\n\n }, {\n key: "auth_hash",\n get: function get() {\n return this.payload.auth_hash;\n }\n /** @deprecated */\n\n }, {\n key: "auth_params",\n get: function get() {\n return this.payload.auth_params;\n }\n }, {\n key: "neverSynced",\n get: function get() {\n return !this.updated_at || this.updated_at.getTime() === 0;\n }\n /**\n * Subclasses can override this getter to return true if they want only\n * one of this item to exist, depending on custom criteria.\n */\n\n }, {\n key: "isSingleton",\n get: function get() {\n return false;\n }\n /** The predicate by which singleton items should be unique */\n\n }, {\n key: "singletonPredicate",\n get: function get() {\n throw \'Must override SNItem.singletonPredicate\';\n }\n }, {\n key: "singletonStrategy",\n get: function get() {\n return SingletonStrategy.KeepEarliest;\n }\n }], [{\n key: "DefaultAppDomain",\n value: function DefaultAppDomain() {\n return _content_types__WEBPACK_IMPORTED_MODULE_5__["DefaultAppDomain"];\n }\n }]);\n\n return SNItem;\n}();\n/**\n * An item mutator takes in an item, and an operation, and returns the resulting payload.\n * Subclasses of mutators can modify the content field directly, but cannot modify the payload directly.\n * All changes to the payload must occur by copying the payload and reassigning its value.\n */\n\nvar ItemMutator = /*#__PURE__*/function () {\n function ItemMutator(item, type) {\n _classCallCheck(this, ItemMutator);\n\n this.item = item;\n this.type = type;\n this.payload = item.payload;\n\n if (this.payload.content) {\n /** this.content needs to be mutable, so we make a copy */\n this.content = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(this.payload.content);\n }\n }\n\n _createClass(ItemMutator, [{\n key: "getUuid",\n value: function getUuid() {\n return this.payload.uuid;\n }\n }, {\n key: "getItem",\n value: function getItem() {\n return this.item;\n }\n }, {\n key: "getResult",\n value: function getResult() {\n if (this.type === MutationType.NonDirtying) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content\n });\n }\n\n if (!this.payload.deleted) {\n if (this.type === MutationType.UserInteraction) {\n // Set the user modified date to now if marking the item as dirty\n this.userModifiedDate = new Date();\n } else {\n var currentValue = this.item.userModifiedDate;\n\n if (!currentValue) {\n // if we don\'t have an explcit raw value, we initialize client_updated_at.\n this.userModifiedDate = new Date(this.item.updated_at);\n }\n }\n }\n\n var result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n dirty: true,\n dirtiedDate: new Date()\n });\n return result;\n }\n /** Merges the input payload with the base payload */\n\n }, {\n key: "mergePayload",\n value: function mergePayload(payload) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["PayloadByMerging"])(this.payload, payload);\n\n if (this.payload.content) {\n /** this.content needs to be mutable, so we make a copy */\n this.content = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(this.payload.safeContent);\n } else {\n this.content = undefined;\n }\n }\n }, {\n key: "setContent",\n value: function setContent(content) {\n this.content = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(content);\n }\n }, {\n key: "setDeleted",\n value: function setDeleted() {\n this.content = undefined;\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n deleted: true\n });\n }\n }, {\n key: "setDomainData",\n\n /**\n * Overwrites the entirety of this domain\'s data with the data arg.\n */\n value: function setDomainData(data, domain) {\n if (this.payload.errorDecrypting) {\n return undefined;\n }\n\n if (!this.content.appData) {\n this.content.appData = {};\n }\n\n this.content.appData[domain] = data;\n }\n /**\n * First gets the domain data for the input domain.\n * Then sets data[key] = value\n */\n\n }, {\n key: "setDomainDataKey",\n value: function setDomainDataKey(key, value, domain) {\n if (this.payload.errorDecrypting) {\n return undefined;\n }\n\n if (!this.content.appData) {\n this.content.appData = {};\n }\n\n var globalData = this.content.appData;\n\n if (!globalData[domain]) {\n globalData[domain] = {};\n }\n\n var domainData = globalData[domain];\n domainData[key] = value;\n }\n }, {\n key: "setAppDataItem",\n value: function setAppDataItem(key, value) {\n this.setDomainDataKey(key, value, SNItem.DefaultAppDomain());\n }\n }, {\n key: "addItemAsRelationship",\n value: function addItemAsRelationship(item) {\n var references = this.content.references || [];\n\n if (!references.find(function (r) {\n return r.uuid === item.uuid;\n })) {\n references.push({\n uuid: item.uuid,\n content_type: item.content_type\n });\n }\n\n this.content.references = references;\n }\n }, {\n key: "removeItemAsRelationship",\n value: function removeItemAsRelationship(item) {\n var references = this.content.references || [];\n references = references.filter(function (r) {\n return r.uuid !== item.uuid;\n });\n this.content.references = references;\n }\n }, {\n key: "lastSyncBegan",\n set: function set(began) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n lastSyncBegan: began\n });\n }\n }, {\n key: "errorDecrypting",\n set: function set(errorDecrypting) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n content: this.content,\n errorDecrypting: errorDecrypting\n });\n }\n }, {\n key: "updated_at",\n set: function set(updated_at) {\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CopyPayload"])(this.payload, {\n updated_at: updated_at\n });\n }\n }, {\n key: "userModifiedDate",\n set: function set(date) {\n this.setAppDataItem(AppDataField.UserModifiedDate, date);\n }\n }, {\n key: "conflictOf",\n set: function set(conflictOf) {\n this.content.conflict_of = conflictOf;\n }\n }, {\n key: "protected",\n set: function set(isProtected) {\n this.content.protected = isProtected;\n }\n }, {\n key: "trashed",\n set: function set(trashed) {\n this.content.trashed = trashed;\n }\n }, {\n key: "pinned",\n set: function set(pinned) {\n this.setAppDataItem(AppDataField.Pinned, pinned);\n }\n }, {\n key: "archived",\n set: function set(archived) {\n this.setAppDataItem(AppDataField.Archived, archived);\n }\n }, {\n key: "locked",\n set: function set(locked) {\n this.setAppDataItem(AppDataField.Locked, locked);\n }\n }]);\n\n return ItemMutator;\n}();\n\nfunction ItemContentsDiffer(item1, item2, excludeContentKeys) {\n if (!excludeContentKeys) {\n excludeContentKeys = [];\n }\n\n return !ItemContentsEqual(item1.content, item2.content, item1.contentKeysToIgnoreWhenCheckingEquality().concat(excludeContentKeys), item1.appDataContentKeysToIgnoreWhenCheckingEquality());\n}\n\nfunction ItemContentsEqual(leftContent, rightContent, keysToIgnore, appDataKeysToIgnore) {\n /* Create copies of objects before running omit as not to modify source values directly. */\n leftContent = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["sortedCopy"])(leftContent);\n\n if (leftContent.appData) {\n var domainData = leftContent.appData[_content_types__WEBPACK_IMPORTED_MODULE_5__["DefaultAppDomain"]];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(domainData, appDataKeysToIgnore);\n /**\n * We don\'t want to disqualify comparison if one object contains an empty domain object\n * and the other doesn\'t contain a domain object. This can happen if you create an item\n * without setting dirty, which means it won\'t be initialized with a client_updated_at\n */\n\n if (domainData) {\n if (Object.keys(domainData).length === 0) {\n delete leftContent.appData;\n }\n } else {\n delete leftContent.appData;\n }\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(leftContent, keysToIgnore);\n rightContent = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["sortedCopy"])(rightContent);\n\n if (rightContent.appData) {\n var _domainData = rightContent.appData[_content_types__WEBPACK_IMPORTED_MODULE_5__["DefaultAppDomain"]];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(_domainData, appDataKeysToIgnore);\n\n if (_domainData) {\n if (Object.keys(_domainData).length === 0) {\n delete rightContent.appData;\n }\n } else {\n delete rightContent.appData;\n }\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["omitInPlace"])(rightContent, keysToIgnore);\n return JSON.stringify(leftContent) === JSON.stringify(rightContent);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2NvcmUvaXRlbS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvY29yZS9pdGVtLnRzP2MwNmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bG9hZEZvcm1hdCB9IGZyb20gJy4vLi4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDb25mbGljdFN0cmF0ZWd5IH0gZnJvbSAnQFByb3RvY29sL3BheWxvYWRzL2RlbHRhcy9zdHJhdGVnaWVzJztcbmltcG9ydCB7IENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBkZWVwRnJlZXplLCBDb3B5LCBzb3J0ZWRDb3B5LCBvbWl0SW5QbGFjZSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmltcG9ydCB7IERlZmF1bHRBcHBEb21haW4gfSBmcm9tICcuLi9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFBheWxvYWRCeU1lcmdpbmcgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL2dlbmVyYXRvcic7XG5leHBvcnQgdmFyIE11dGF0aW9uVHlwZTtcbihmdW5jdGlvbiAoTXV0YXRpb25UeXBlKSB7XG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW0gd2FzIGNoYW5nZWQgYXMgcGFydCBvZiBhIHVzZXIgaW50ZXJhY3Rpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgaXRlbSdzXG4gICAgICogdXNlciBtb2RpZmllZCBkYXRlIHdpbGwgYmUgdXBkYXRlZFxuICAgICAqL1xuICAgIE11dGF0aW9uVHlwZVtNdXRhdGlvblR5cGVbXCJVc2VySW50ZXJhY3Rpb25cIl0gPSAxXSA9IFwiVXNlckludGVyYWN0aW9uXCI7XG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW0gd2FzIGNoYW5nZWQgYXMgcGFydCBvZiBhbiBpbnRlcm5hbCBvcGVyYXRpb24sIHN1Y2ggYXMgYSBtaWdyYXRpb24uXG4gICAgICogVGhpcyBjaGFuZ2Ugd2lsbCBub3QgdXBkYXRlZCB0aGUgaXRlbSdzIHVzZXIgbW9kaWZpZWQgZGF0ZVxuICAgICAqL1xuICAgIE11dGF0aW9uVHlwZVtNdXRhdGlvblR5cGVbXCJJbnRlcm5hbFwiXSA9IDJdID0gXCJJbnRlcm5hbFwiO1xuICAgIC8qKlxuICAgICAqIFRoZSBpdGVtIHdhcyBjaGFuZ2VkIGFzIHBhcnQgb2YgYW4gaW50ZXJuYWwgZnVuY3Rpb24gdGhhdCB3aXNoZXMgdG8gbW9kaWZ5XG4gICAgICogaW50ZXJuYWwgaXRlbSBwcm9wZXJ0aWVzLCBzdWNoIGFzIGxhc3RTeW5jQmVnYW4sIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBpdGVtJ3MgZGlydHlcbiAgICAgKiBzdGF0ZS4gQnkgZGVmYXVsdCBhbGwgb3RoZXIgbXV0YXRpb24gdHlwZXMgd2lsbCByZXN1bHQgaW4gYSBkaXJ0aWVkIHJlc3VsdC5cbiAgICAgKi9cbiAgICBNdXRhdGlvblR5cGVbTXV0YXRpb25UeXBlW1wiTm9uRGlydHlpbmdcIl0gPSAzXSA9IFwiTm9uRGlydHlpbmdcIjtcbn0pKE11dGF0aW9uVHlwZSB8fCAoTXV0YXRpb25UeXBlID0ge30pKTtcbmV4cG9ydCB2YXIgQXBwRGF0YUZpZWxkO1xuKGZ1bmN0aW9uIChBcHBEYXRhRmllbGQpIHtcbiAgICBBcHBEYXRhRmllbGRbXCJQaW5uZWRcIl0gPSBcInBpbm5lZFwiO1xuICAgIEFwcERhdGFGaWVsZFtcIkFyY2hpdmVkXCJdID0gXCJhcmNoaXZlZFwiO1xuICAgIEFwcERhdGFGaWVsZFtcIkxvY2tlZFwiXSA9IFwibG9ja2VkXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiVXNlck1vZGlmaWVkRGF0ZVwiXSA9IFwiY2xpZW50X3VwZGF0ZWRfYXRcIjtcbiAgICBBcHBEYXRhRmllbGRbXCJEZWZhdWx0RWRpdG9yXCJdID0gXCJkZWZhdWx0RWRpdG9yXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiTW9iaWxlUnVsZXNcIl0gPSBcIm1vYmlsZVJ1bGVzXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiTm90QXZhaWxhYmxlT25Nb2JpbGVcIl0gPSBcIm5vdEF2YWlsYWJsZU9uTW9iaWxlXCI7XG4gICAgQXBwRGF0YUZpZWxkW1wiTW9iaWxlQWN0aXZlXCJdID0gXCJtb2JpbGVBY3RpdmVcIjtcbiAgICBBcHBEYXRhRmllbGRbXCJMYXN0U2l6ZVwiXSA9IFwibGFzdFNpemVcIjtcbiAgICBBcHBEYXRhRmllbGRbXCJQcmVmZXJzUGxhaW5FZGl0b3JcIl0gPSBcInByZWZlcnNQbGFpbkVkaXRvclwiO1xuICAgIEFwcERhdGFGaWVsZFtcIkNvbXBvbmVudEluc3RhbGxFcnJvclwiXSA9IFwiaW5zdGFsbEVycm9yXCI7XG59KShBcHBEYXRhRmllbGQgfHwgKEFwcERhdGFGaWVsZCA9IHt9KSk7XG5leHBvcnQgdmFyIFNpbmdsZXRvblN0cmF0ZWd5O1xuKGZ1bmN0aW9uIChTaW5nbGV0b25TdHJhdGVneSkge1xuICAgIFNpbmdsZXRvblN0cmF0ZWd5W1NpbmdsZXRvblN0cmF0ZWd5W1wiS2VlcEVhcmxpZXN0XCJdID0gMV0gPSBcIktlZXBFYXJsaWVzdFwiO1xufSkoU2luZ2xldG9uU3RyYXRlZ3kgfHwgKFNpbmdsZXRvblN0cmF0ZWd5ID0ge30pKTtcbjtcbi8qKlxuICogVGhlIG1vc3QgYWJzdHJhY3QgaXRlbSB0aGF0IGFueSBzeW5jYWJsZSBpdGVtIG5lZWRzIHRvIGV4dGVuZCBmcm9tLlxuICovXG5leHBvcnQgY2xhc3MgU05JdGVtIHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIHRoaXMucHJvdGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMudHJhc2hlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpbm5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmFyY2hpdmVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XG4gICAgICAgIGlmICghcGF5bG9hZC51dWlkIHx8ICFwYXlsb2FkLmNvbnRlbnRfdHlwZSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0Nhbm5vdCBjcmVhdGUgaXRlbSB3aXRob3V0IGJvdGggdXVpZCBhbmQgY29udGVudF90eXBlJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBheWxvYWQuZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QgJiZcbiAgICAgICAgICAgIChwYXlsb2FkLmVuY19pdGVtX2tleSB8fCBwYXlsb2FkLml0ZW1zX2tleV9pZCB8fCBwYXlsb2FkLmF1dGhfaGFzaCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdDcmVhdGluZyBhbiBpdGVtIGZyb20gYSBkZWNyeXB0ZWQgcGF5bG9hZCBzaG91bGQgbm90IGNvbnRhaW4gZW5jIHBhcmFtcycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgICAgIHRoaXMuY29uZmxpY3RPZiA9IHBheWxvYWQuc2FmZUNvbnRlbnQuY29uZmxpY3Rfb2Y7XG4gICAgICAgIHRoaXMuY3JlYXRlZEF0U3RyaW5nID0gdGhpcy5jcmVhdGVkX2F0ICYmIHRoaXMuZGF0ZVRvTG9jYWxpemVkU3RyaW5nKHRoaXMuY3JlYXRlZF9hdCk7XG4gICAgICAgIGlmIChwYXlsb2FkLmZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRBdFN0cmluZyA9IHRoaXMuZGF0ZVRvTG9jYWxpemVkU3RyaW5nKHRoaXMudXNlck1vZGlmaWVkRGF0ZSk7XG4gICAgICAgICAgICB0aGlzLnByb3RlY3RlZCA9IHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5wcm90ZWN0ZWQ7XG4gICAgICAgICAgICB0aGlzLnRyYXNoZWQgPSB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudHJhc2hlZDtcbiAgICAgICAgICAgIHRoaXMucGlubmVkID0gdGhpcy5nZXRBcHBEb21haW5WYWx1ZShBcHBEYXRhRmllbGQuUGlubmVkKTtcbiAgICAgICAgICAgIHRoaXMuYXJjaGl2ZWQgPSB0aGlzLmdldEFwcERvbWFpblZhbHVlKEFwcERhdGFGaWVsZC5BcmNoaXZlZCk7XG4gICAgICAgICAgICB0aGlzLmxvY2tlZCA9IHRoaXMuZ2V0QXBwRG9tYWluVmFsdWUoQXBwRGF0YUZpZWxkLkxvY2tlZCk7XG4gICAgICAgIH1cbiAgICAgICAgLyoqIEFsbG93IHRoZSBzdWJjbGFzcyBjb25zdHJ1Y3RvciB0byBjb21wbGV0ZSBpbml0aWFsaXphdGlvbiBiZWZvcmUgZGVlcCBmcmVlemluZyAqL1xuICAgICAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICAgICAgZGVlcEZyZWV6ZSh0aGlzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN0YXRpYyBEZWZhdWx0QXBwRG9tYWluKCkge1xuICAgICAgICByZXR1cm4gRGVmYXVsdEFwcERvbWFpbjtcbiAgICB9XG4gICAgZ2V0IHV1aWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQudXVpZDtcbiAgICB9XG4gICAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuY29udGVudDtcbiAgICB9XG4gICAgZ2V0IHNhZmVDb250ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50O1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5zYWZlQ29udGVudC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgIH1cbiAgICBnZXQgZGVsZXRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5kZWxldGVkO1xuICAgIH1cbiAgICBnZXQgY29udGVudF90eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgICB9XG4gICAgZ2V0IGNyZWF0ZWRfYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuY3JlYXRlZF9hdDtcbiAgICB9XG4gICAgZ2V0IHVwZGF0ZWRfYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQudXBkYXRlZF9hdDtcbiAgICB9XG4gICAgZ2V0IHVzZXJNb2RpZmllZERhdGUoKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRBcHBEb21haW5WYWx1ZShBcHBEYXRhRmllbGQuVXNlck1vZGlmaWVkRGF0ZSk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZSB8fCB0aGlzLnVwZGF0ZWRfYXQpO1xuICAgIH1cbiAgICBnZXQgZGlydGllZERhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuZGlydGllZERhdGU7XG4gICAgfVxuICAgIGdldCBkaXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5kaXJ0eTtcbiAgICB9XG4gICAgZ2V0IGVycm9yRGVjcnlwdGluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5lcnJvckRlY3J5cHRpbmc7XG4gICAgfVxuICAgIGdldCB3YWl0aW5nRm9yS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLndhaXRpbmdGb3JLZXk7XG4gICAgfVxuICAgIGdldCBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkO1xuICAgIH1cbiAgICBnZXQgbGFzdFN5bmNCZWdhbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC5sYXN0U3luY0JlZ2FuO1xuICAgIH1cbiAgICBnZXQgbGFzdFN5bmNFbmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQubGFzdFN5bmNFbmQ7XG4gICAgfVxuICAgIC8qKiBAZGVwcmVjYXRlZCAqL1xuICAgIGdldCBhdXRoX2hhc2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuYXV0aF9oYXNoO1xuICAgIH1cbiAgICAvKiogQGRlcHJlY2F0ZWQgKi9cbiAgICBnZXQgYXV0aF9wYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuYXV0aF9wYXJhbXM7XG4gICAgfVxuICAgIHBheWxvYWRSZXByZXNlbnRhdGlvbihvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gQ29weVBheWxvYWQodGhpcy5wYXlsb2FkLCBvdmVycmlkZSk7XG4gICAgfVxuICAgIGhhc1JlbGF0aW9uc2hpcFdpdGhJdGVtKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnJlZmVyZW5jZXM/LmZpbmQoKHIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByLnV1aWQgPT09IGl0ZW0udXVpZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiAhIXRhcmdldDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogSW5zaWRlIG9mIGNvbnRlbnQgaXMgYSByZWNvcmQgY2FsbGVkIGBhcHBEYXRhYCAod2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYGRvbWFpbkRhdGFgKS5cbiAgICAgKiBJdCB3YXMgbmFtZWQgYGFwcERhdGFgIGFzIGEgd2F5IHRvIGluZGljYXRlIHRoYXQgaXQgY2FuIGhvdXNlIGRhdGEgZm9yIG11bHRpcGxlIGFwcHMuXG4gICAgICogRWFjaCBrZXkgb2YgYXBwRGF0YSBpcyBhIGRvbWFpbiBzdHJpbmcsIHdoaWNoIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkXG4gICAgICogdG8gYWxsb3cgZm9yIG11bHRpcGxlIDNyZCBwYXJ0eSBhcHBzIHdobyBzaGFyZSBhY2Nlc3MgdG8gdGhlIHNhbWUgZGF0YSB0byBzdG9yZSBkYXRhXG4gICAgICogaW4gYW4gaXNvbGF0ZWQgbG9jYXRpb24uIFRoaXMgZGVzaWduIHByZW1pc2UgaXMgYW50aXF1aXRlZCBhbmQgbm8gbG9uZ2VyIHB1cnN1ZWQsXG4gICAgICogaG93ZXZlciB3ZSBjb250aW51ZSB0byB1c2UgaXQgYXMgbm90IHRvIHVuY2VzZXNhcmlseSBjcmVhdGUgYSBsYXJnZSBkYXRhIG1pZ3JhdGlvblxuICAgICAqIHRoYXQgd291bGQgcmVxdWlyZSB1c2VycyB0byBzeW5jIGFsbCB0aGVpciBkYXRhLlxuICAgICAqXG4gICAgICogZG9tYWluRGF0YVtEb21haW5LZXldIHdpbGwgZ2l2ZSB5b3UgYW5vdGhlciBSZWNvcmQ8c3RyaW5nLCBhbnk+LlxuICAgICAqXG4gICAgICogQ3VycmVudGx5IGFwcERhdGFbJ29yZy5zdGFuZGFyZG5vdGVzLnNuJ10gcmV0dXJucyBhbiBvYmplY3Qgb2YgdHlwZSBBcHBEYXRhLlxuICAgICAqIEFuZCBhcHBEYXRhWydvcmcuc3RhbmRhcmRub3Rlcy5zbi5jb21wb25lbnRzXSByZXR1cm5zIGFuIG9iamVjdCBvZiB0eXBlIENvbXBvbmVudERhdGFcbiAgICAgKi9cbiAgICBnZXREb21haW5EYXRhKGRvbWFpbikge1xuICAgICAgICBjb25zdCBkb21haW5EYXRhID0gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LmFwcERhdGE7XG4gICAgICAgIGlmICghZG9tYWluRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gZG9tYWluRGF0YVtkb21haW5dO1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgZ2V0QXBwRG9tYWluVmFsdWUoa2V5KSB7XG4gICAgICAgIGNvbnN0IGFwcERhdGEgPSB0aGlzLmdldERvbWFpbkRhdGEoU05JdGVtLkRlZmF1bHRBcHBEb21haW4oKSk7XG4gICAgICAgIHJldHVybiBhcHBEYXRhW2tleV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIER1cmluZyBzeW5jIGNvbmZsaWN0cywgd2hlbiBkZXRlcm1pbmcgd2hldGhlciB0byBjcmVhdGUgYSBkdXBsaWNhdGUgZm9yIGFuIGl0ZW0sXG4gICAgICogd2UgY2FuIG9taXQga2V5cyB0aGF0IGhhdmUgbm8gbWVhbmluZ2Z1bCB3ZWlnaHQgYW5kIGNhbiBiZSBpZ25vcmVkLiBGb3IgZXhhbXBsZSxcbiAgICAgKiBpZiBvbmUgY29tcG9uZW50IGhhcyBhY3RpdmUgPSB0cnVlIGFuZCBhbm90aGVyIGNvbXBvbmVudCBoYXMgYWN0aXZlID0gZmFsc2UsXG4gICAgICogaXQgd291bGQgYmUgbmVlZGxlc3MgdG8gZHVwbGljYXRlIHRoZW0sIHNvIGluc3RlYWQgd2UgaWdub3JlIHRoYXQgdmFsdWUuXG4gICAgICovXG4gICAgY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkge1xuICAgICAgICByZXR1cm4gWydjb25mbGljdF9vZiddO1xuICAgIH1cbiAgICAvKiogU2FtZSBhcyBgY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5YCwgYnV0IGtleXMgaW5zaWRlIGFwcERhdGFbSXRlbS5BcHBEb21haW5dICovXG4gICAgYXBwRGF0YUNvbnRlbnRLZXlzVG9JZ25vcmVXaGVuQ2hlY2tpbmdFcXVhbGl0eSgpIHtcbiAgICAgICAgcmV0dXJuIFtBcHBEYXRhRmllbGQuVXNlck1vZGlmaWVkRGF0ZV07XG4gICAgfVxuICAgIGdldENvbnRlbnRDb3B5KCkge1xuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnRlbnQpKTtcbiAgICB9XG4gICAgLyoqIFdoZXRoZXIgdGhlIGl0ZW0gaGFzIG5ldmVyIGJlZW4gc3luY2VkIHRvIGEgc2VydmVyICovXG4gICAgZ2V0IG5ldmVyU3luY2VkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMudXBkYXRlZF9hdCB8fCB0aGlzLnVwZGF0ZWRfYXQuZ2V0VGltZSgpID09PSAwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSB0aGlzIGdldHRlciB0byByZXR1cm4gdHJ1ZSBpZiB0aGV5IHdhbnQgb25seVxuICAgICAqIG9uZSBvZiB0aGlzIGl0ZW0gdG8gZXhpc3QsIGRlcGVuZGluZyBvbiBjdXN0b20gY3JpdGVyaWEuXG4gICAgICovXG4gICAgZ2V0IGlzU2luZ2xldG9uKCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8qKiBUaGUgcHJlZGljYXRlIGJ5IHdoaWNoIHNpbmdsZXRvbiBpdGVtcyBzaG91bGQgYmUgdW5pcXVlICovXG4gICAgZ2V0IHNpbmdsZXRvblByZWRpY2F0ZSgpIHtcbiAgICAgICAgdGhyb3cgJ011c3Qgb3ZlcnJpZGUgU05JdGVtLnNpbmdsZXRvblByZWRpY2F0ZSc7XG4gICAgfVxuICAgIGdldCBzaW5nbGV0b25TdHJhdGVneSgpIHtcbiAgICAgICAgcmV0dXJuIFNpbmdsZXRvblN0cmF0ZWd5LktlZXBFYXJsaWVzdDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBtZXRob2QgYW5kIHByb3ZpZGUgdGhlaXIgb3duIG9waW5pb24gb24gd2hldGhlclxuICAgICAqIHRoZXkgd2FudCB0byBiZSBkdXBsaWNhdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhpcy5jb250ZW50LnggPSAxMiBhbmRcbiAgICAgKiBpdGVtLmNvbnRlbnQueCA9IDEzLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBvdmVycmlkZW4gdG8gYWx3YXlzIHJldHVyblxuICAgICAqIENvbmZsaWN0U3RyYXRlZ3kuS2VlcExlZnQgdG8gc2F5ICdkb24ndCBjcmVhdGUgYSBkdXBsaWNhdGUgYXQgYWxsLCB0aGVcbiAgICAgKiBjaGFuZ2UgaXMgbm90IGltcG9ydGFudC4nXG4gICAgICpcbiAgICAgKiBJbiB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiwgd2UgY3JlYXRlIGEgZHVwbGljYXRlIGlmIGNvbnRlbnQgZGlmZmVycy5cbiAgICAgKiBIb3dldmVyLCBpZiB0aGV5IG9ubHkgZGlmZmVyIGJ5IHJlZmVyZW5jZXMsIHdlIEtFRVBfTEVGVF9NRVJHRV9SRUZTLlxuICAgICAqL1xuICAgIHN0cmF0ZWd5V2hlbkNvbmZsaWN0aW5nV2l0aEl0ZW0oaXRlbSkge1xuICAgICAgICBpZiAodGhpcy5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0RHVwbGljYXRlUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGV0b24pIHtcbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRlbGV0ZWQgfHwgaXRlbS5kZWxldGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwUmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGVudERpZmZlcnMgPSBJdGVtQ29udGVudHNEaWZmZXIodGhpcywgaXRlbSk7XG4gICAgICAgIGlmICghY29udGVudERpZmZlcnMpIHtcbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBSaWdodDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWZmZXJzRXhjbFJlZnMgPSBJdGVtQ29udGVudHNEaWZmZXIodGhpcywgaXRlbSwgWydyZWZlcmVuY2VzJ10pO1xuICAgICAgICBpZiAoZGlmZmVyc0V4Y2xSZWZzKSB7XG4gICAgICAgICAgICByZXR1cm4gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdER1cGxpY2F0ZVJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIElzIG9ubHkgcmVmZXJlbmNlcyBjaGFuZ2UgKi9cbiAgICAgICAgICAgIHJldHVybiBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0TWVyZ2VSZWZzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzSXRlbUNvbnRlbnRFcXVhbFdpdGgob3RoZXJJdGVtKSB7XG4gICAgICAgIHJldHVybiBJdGVtQ29udGVudHNFcXVhbCh0aGlzLnBheWxvYWQuY29udGVudE9iamVjdCwgb3RoZXJJdGVtLnBheWxvYWQuY29udGVudE9iamVjdCwgdGhpcy5jb250ZW50S2V5c1RvSWdub3JlV2hlbkNoZWNraW5nRXF1YWxpdHkoKSwgdGhpcy5hcHBEYXRhQ29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkpO1xuICAgIH1cbiAgICBzYXRpc2ZpZXNQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiBTTlByZWRpY2F0ZS5JdGVtU2F0aXNmaWVzUHJlZGljYXRlKHRoaXMsIHByZWRpY2F0ZSk7XG4gICAgfVxuICAgIHVwZGF0ZWRBdFRpbWVzdGFtcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlZF9hdD8uZ2V0VGltZSgpO1xuICAgIH1cbiAgICBkYXRlVG9Mb2NhbGl6ZWRTdHJpbmcoZGF0ZSkge1xuICAgICAgICBpZiAodHlwZW9mIEludGwgIT09ICd1bmRlZmluZWQnICYmIEludGwuRGF0ZVRpbWVGb3JtYXQpIHtcbiAgICAgICAgICAgIGlmICghU05JdGVtLnNoYXJlZERhdGVGb3JtYXR0ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NhbGUgPSAoKG5hdmlnYXRvci5sYW5ndWFnZXMgJiYgbmF2aWdhdG9yLmxhbmd1YWdlcy5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgID8gbmF2aWdhdG9yLmxhbmd1YWdlc1swXVxuICAgICAgICAgICAgICAgICAgICA6IG5hdmlnYXRvci5sYW5ndWFnZSk7XG4gICAgICAgICAgICAgICAgU05JdGVtLnNoYXJlZERhdGVGb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHtcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXk6ICdsb25nJyxcbiAgICAgICAgICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgICAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBTTkl0ZW0uc2hhcmVkRGF0ZUZvcm1hdHRlci5mb3JtYXQoZGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBJRSA8IDExLCBTYWZhcmkgPD0gOS4wLlxuICAgICAgICAgICAgLy8gSW4gRW5nbGlzaCwgdGhpcyBnZW5lcmF0ZXMgdGhlIHN0cmluZyBtb3N0IHNpbWlsYXIgdG9cbiAgICAgICAgICAgIC8vIHRoZSB0b0xvY2FsZURhdGVTdHJpbmcoKSByZXN1bHQgYWJvdmUuXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS50b0RhdGVTdHJpbmcoKSArICcgJyArIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4vKipcbiAqIEFuIGl0ZW0gbXV0YXRvciB0YWtlcyBpbiBhbiBpdGVtLCBhbmQgYW4gb3BlcmF0aW9uLCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIHBheWxvYWQuXG4gKiBTdWJjbGFzc2VzIG9mIG11dGF0b3JzIGNhbiBtb2RpZnkgdGhlIGNvbnRlbnQgZmllbGQgZGlyZWN0bHksIGJ1dCBjYW5ub3QgbW9kaWZ5IHRoZSBwYXlsb2FkIGRpcmVjdGx5LlxuICogQWxsIGNoYW5nZXMgdG8gdGhlIHBheWxvYWQgbXVzdCBvY2N1ciBieSBjb3B5aW5nIHRoZSBwYXlsb2FkIGFuZCByZWFzc2lnbmluZyBpdHMgdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtTXV0YXRvciB7XG4gICAgY29uc3RydWN0b3IoaXRlbSwgdHlwZSkge1xuICAgICAgICB0aGlzLml0ZW0gPSBpdGVtO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBpdGVtLnBheWxvYWQ7XG4gICAgICAgIGlmICh0aGlzLnBheWxvYWQuY29udGVudCkge1xuICAgICAgICAgICAgLyoqIHRoaXMuY29udGVudCBuZWVkcyB0byBiZSBtdXRhYmxlLCBzbyB3ZSBtYWtlIGEgY29weSAqL1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29weSh0aGlzLnBheWxvYWQuY29udGVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0VXVpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF5bG9hZC51dWlkO1xuICAgIH1cbiAgICBnZXRJdGVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtO1xuICAgIH1cbiAgICBnZXRSZXN1bHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IE11dGF0aW9uVHlwZS5Ob25EaXJ0eWluZykge1xuICAgICAgICAgICAgcmV0dXJuIENvcHlQYXlsb2FkKHRoaXMucGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5wYXlsb2FkLmRlbGV0ZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIHVzZXIgbW9kaWZpZWQgZGF0ZSB0byBub3cgaWYgbWFya2luZyB0aGUgaXRlbSBhcyBkaXJ0eVxuICAgICAgICAgICAgICAgIHRoaXMudXNlck1vZGlmaWVkRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLml0ZW0udXNlck1vZGlmaWVkRGF0ZTtcbiAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBkb24ndCBoYXZlIGFuIGV4cGxjaXQgcmF3IHZhbHVlLCB3ZSBpbml0aWFsaXplIGNsaWVudF91cGRhdGVkX2F0LlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSh0aGlzLml0ZW0udXBkYXRlZF9hdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENvcHlQYXlsb2FkKHRoaXMucGF5bG9hZCwge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLyoqIE1lcmdlcyB0aGUgaW5wdXQgcGF5bG9hZCB3aXRoIHRoZSBiYXNlIHBheWxvYWQgKi9cbiAgICBtZXJnZVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBQYXlsb2FkQnlNZXJnaW5nKHRoaXMucGF5bG9hZCwgcGF5bG9hZCk7XG4gICAgICAgIGlmICh0aGlzLnBheWxvYWQuY29udGVudCkge1xuICAgICAgICAgICAgLyoqIHRoaXMuY29udGVudCBuZWVkcyB0byBiZSBtdXRhYmxlLCBzbyB3ZSBtYWtlIGEgY29weSAqL1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gQ29weSh0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNldENvbnRlbnQoY29udGVudCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSBDb3B5KGNvbnRlbnQpO1xuICAgIH1cbiAgICBzZXREZWxldGVkKCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucGF5bG9hZCA9IENvcHlQYXlsb2FkKHRoaXMucGF5bG9hZCwge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgZGVsZXRlZDogdHJ1ZVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2V0IGxhc3RTeW5jQmVnYW4oYmVnYW4pIHtcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5wYXlsb2FkLCB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICBsYXN0U3luY0JlZ2FuOiBiZWdhblxuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2V0IGVycm9yRGVjcnlwdGluZyhlcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5wYXlsb2FkLCB7XG4gICAgICAgICAgICBjb250ZW50OiB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IGVycm9yRGVjcnlwdGluZ1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc2V0IHVwZGF0ZWRfYXQodXBkYXRlZF9hdCkge1xuICAgICAgICB0aGlzLnBheWxvYWQgPSBDb3B5UGF5bG9hZCh0aGlzLnBheWxvYWQsIHtcbiAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRfYXRcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHNldCB1c2VyTW9kaWZpZWREYXRlKGRhdGUpIHtcbiAgICAgICAgdGhpcy5zZXRBcHBEYXRhSXRlbShBcHBEYXRhRmllbGQuVXNlck1vZGlmaWVkRGF0ZSwgZGF0ZSk7XG4gICAgfVxuICAgIHNldCBjb25mbGljdE9mKGNvbmZsaWN0T2YpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LmNvbmZsaWN0X29mID0gY29uZmxpY3RPZjtcbiAgICB9XG4gICAgc2V0IHByb3RlY3RlZChpc1Byb3RlY3RlZCkge1xuICAgICAgICB0aGlzLmNvbnRlbnQucHJvdGVjdGVkID0gaXNQcm90ZWN0ZWQ7XG4gICAgfVxuICAgIHNldCB0cmFzaGVkKHRyYXNoZWQpIHtcbiAgICAgICAgdGhpcy5jb250ZW50LnRyYXNoZWQgPSB0cmFzaGVkO1xuICAgIH1cbiAgICBzZXQgcGlubmVkKHBpbm5lZCkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKEFwcERhdGFGaWVsZC5QaW5uZWQsIHBpbm5lZCk7XG4gICAgfVxuICAgIHNldCBhcmNoaXZlZChhcmNoaXZlZCkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKEFwcERhdGFGaWVsZC5BcmNoaXZlZCwgYXJjaGl2ZWQpO1xuICAgIH1cbiAgICBzZXQgbG9ja2VkKGxvY2tlZCkge1xuICAgICAgICB0aGlzLnNldEFwcERhdGFJdGVtKEFwcERhdGFGaWVsZC5Mb2NrZWQsIGxvY2tlZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE92ZXJ3cml0ZXMgdGhlIGVudGlyZXR5IG9mIHRoaXMgZG9tYWluJ3MgZGF0YSB3aXRoIHRoZSBkYXRhIGFyZy5cbiAgICAgKi9cbiAgICBzZXREb21haW5EYXRhKGRhdGEsIGRvbWFpbikge1xuICAgICAgICBpZiAodGhpcy5wYXlsb2FkLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29udGVudC5hcHBEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuYXBwRGF0YSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29udGVudC5hcHBEYXRhW2RvbWFpbl0gPSBkYXRhO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGaXJzdCBnZXRzIHRoZSBkb21haW4gZGF0YSBmb3IgdGhlIGlucHV0IGRvbWFpbi5cbiAgICAgKiBUaGVuIHNldHMgZGF0YVtrZXldID0gdmFsdWVcbiAgICAgKi9cbiAgICBzZXREb21haW5EYXRhS2V5KGtleSwgdmFsdWUsIGRvbWFpbikge1xuICAgICAgICBpZiAodGhpcy5wYXlsb2FkLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY29udGVudC5hcHBEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuYXBwRGF0YSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdsb2JhbERhdGEgPSB0aGlzLmNvbnRlbnQuYXBwRGF0YTtcbiAgICAgICAgaWYgKCFnbG9iYWxEYXRhW2RvbWFpbl0pIHtcbiAgICAgICAgICAgIGdsb2JhbERhdGFbZG9tYWluXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvbWFpbkRhdGEgPSBnbG9iYWxEYXRhW2RvbWFpbl07XG4gICAgICAgIGRvbWFpbkRhdGFba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICBzZXRBcHBEYXRhSXRlbShrZXksIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuc2V0RG9tYWluRGF0YUtleShrZXksIHZhbHVlLCBTTkl0ZW0uRGVmYXVsdEFwcERvbWFpbigpKTtcbiAgICB9XG4gICAgYWRkSXRlbUFzUmVsYXRpb25zaGlwKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IHRoaXMuY29udGVudC5yZWZlcmVuY2VzIHx8IFtdO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMuZmluZCgocikgPT4gci51dWlkID09PSBpdGVtLnV1aWQpKSB7XG4gICAgICAgICAgICByZWZlcmVuY2VzLnB1c2goe1xuICAgICAgICAgICAgICAgIHV1aWQ6IGl0ZW0udXVpZCxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU6IGl0ZW0uY29udGVudF90eXBlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbnRlbnQucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgfVxuICAgIHJlbW92ZUl0ZW1Bc1JlbGF0aW9uc2hpcChpdGVtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5jb250ZW50LnJlZmVyZW5jZXMgfHwgW107XG4gICAgICAgIHJlZmVyZW5jZXMgPSByZWZlcmVuY2VzLmZpbHRlcigocikgPT4gci51dWlkICE9PSBpdGVtLnV1aWQpO1xuICAgICAgICB0aGlzLmNvbnRlbnQucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgfVxufVxuZnVuY3Rpb24gSXRlbUNvbnRlbnRzRGlmZmVyKGl0ZW0xLCBpdGVtMiwgZXhjbHVkZUNvbnRlbnRLZXlzKSB7XG4gICAgaWYgKCFleGNsdWRlQ29udGVudEtleXMpIHtcbiAgICAgICAgZXhjbHVkZUNvbnRlbnRLZXlzID0gW107XG4gICAgfVxuICAgIHJldHVybiAhSXRlbUNvbnRlbnRzRXF1YWwoaXRlbTEuY29udGVudCwgaXRlbTIuY29udGVudCwgaXRlbTEuY29udGVudEtleXNUb0lnbm9yZVdoZW5DaGVja2luZ0VxdWFsaXR5KCkuY29uY2F0KGV4Y2x1ZGVDb250ZW50S2V5cyksIGl0ZW0xLmFwcERhdGFDb250ZW50S2V5c1RvSWdub3JlV2hlbkNoZWNraW5nRXF1YWxpdHkoKSk7XG59XG5mdW5jdGlvbiBJdGVtQ29udGVudHNFcXVhbChsZWZ0Q29udGVudCwgcmlnaHRDb250ZW50LCBrZXlzVG9JZ25vcmUsIGFwcERhdGFLZXlzVG9JZ25vcmUpIHtcbiAgICAvKiBDcmVhdGUgY29waWVzIG9mIG9iamVjdHMgYmVmb3JlIHJ1bm5pbmcgb21pdCBhcyBub3QgdG8gbW9kaWZ5IHNvdXJjZSB2YWx1ZXMgZGlyZWN0bHkuICovXG4gICAgbGVmdENvbnRlbnQgPSBzb3J0ZWRDb3B5KGxlZnRDb250ZW50KTtcbiAgICBpZiAobGVmdENvbnRlbnQuYXBwRGF0YSkge1xuICAgICAgICBjb25zdCBkb21haW5EYXRhID0gbGVmdENvbnRlbnQuYXBwRGF0YVtEZWZhdWx0QXBwRG9tYWluXTtcbiAgICAgICAgb21pdEluUGxhY2UoZG9tYWluRGF0YSwgYXBwRGF0YUtleXNUb0lnbm9yZSk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBkb24ndCB3YW50IHRvIGRpc3F1YWxpZnkgY29tcGFyaXNvbiBpZiBvbmUgb2JqZWN0IGNvbnRhaW5zIGFuIGVtcHR5IGRvbWFpbiBvYmplY3RcbiAgICAgICAgICogYW5kIHRoZSBvdGhlciBkb2Vzbid0IGNvbnRhaW4gYSBkb21haW4gb2JqZWN0LiBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IGNyZWF0ZSBhbiBpdGVtXG4gICAgICAgICAqIHdpdGhvdXQgc2V0dGluZyBkaXJ0eSwgd2hpY2ggbWVhbnMgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIGNsaWVudF91cGRhdGVkX2F0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZG9tYWluRGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRvbWFpbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBsZWZ0Q29udGVudC5hcHBEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGxlZnRDb250ZW50LmFwcERhdGE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb21pdEluUGxhY2UobGVmdENvbnRlbnQsIGtleXNUb0lnbm9yZSk7XG4gICAgcmlnaHRDb250ZW50ID0gc29ydGVkQ29weShyaWdodENvbnRlbnQpO1xuICAgIGlmIChyaWdodENvbnRlbnQuYXBwRGF0YSkge1xuICAgICAgICBjb25zdCBkb21haW5EYXRhID0gcmlnaHRDb250ZW50LmFwcERhdGFbRGVmYXVsdEFwcERvbWFpbl07XG4gICAgICAgIG9taXRJblBsYWNlKGRvbWFpbkRhdGEsIGFwcERhdGFLZXlzVG9JZ25vcmUpO1xuICAgICAgICBpZiAoZG9tYWluRGF0YSkge1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRvbWFpbkRhdGEpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSByaWdodENvbnRlbnQuYXBwRGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSByaWdodENvbnRlbnQuYXBwRGF0YTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbWl0SW5QbGFjZShyaWdodENvbnRlbnQsIGtleXNUb0lnbm9yZSk7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGxlZnRDb250ZW50KSA9PT0gSlNPTi5zdHJpbmdpZnkocmlnaHRDb250ZW50KTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7OztBQUlBO0FBQ0E7Ozs7O0FBSUE7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE5QkE7QUFBQTtBQUFBO0FBMkZBO0FBQ0E7QUE1RkE7QUFBQTtBQUFBO0FBNkZBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQW5HQTtBQUFBO0FBQUE7QUFrSEE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBeEhBO0FBQUE7QUFBQTtBQTBIQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQTdIQTtBQUFBO0FBQUE7QUFvSUE7QUFDQTtBQUNBO0FBQ0E7QUF2SUE7QUFBQTtBQUFBO0FBd0lBO0FBQ0E7QUF6SUE7QUFBQTtBQUFBO0FBMklBO0FBQ0E7QUFDQTtBQUNBO0FBOUlBO0FBQUE7QUFDQTtBQThKQTs7Ozs7Ozs7OztBQS9KQTtBQTBLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUEvTEE7QUFBQTtBQUFBO0FBaU1BO0FBQ0E7QUFsTUE7QUFBQTtBQUFBO0FBb01BO0FBQ0E7QUFyTUE7QUFBQTtBQUFBO0FBc01BO0FBQ0E7QUFBQTtBQUNBO0FBeE1BO0FBQUE7QUFBQTtBQTBNQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoT0E7QUFBQTtBQUFBO0FBa0NBO0FBQ0E7QUFuQ0E7QUFBQTtBQUFBO0FBcUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUFBO0FBMkNBO0FBQ0E7QUE1Q0E7QUFBQTtBQUFBO0FBOENBO0FBQ0E7QUEvQ0E7QUFBQTtBQUFBO0FBaURBO0FBQ0E7QUFsREE7QUFBQTtBQUFBO0FBb0RBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBdURBO0FBQ0E7QUF4REE7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUFDQTtBQTVEQTtBQUFBO0FBQUE7QUE4REE7QUFDQTtBQS9EQTtBQUFBO0FBQUE7QUFpRUE7QUFDQTtBQWxFQTtBQUFBO0FBQUE7QUFvRUE7QUFDQTtBQXJFQTtBQUFBO0FBQUE7QUF1RUE7QUFDQTtBQXhFQTtBQUFBO0FBQUE7QUEwRUE7QUFDQTtBQTNFQTtBQUFBO0FBQUE7QUE2RUE7QUFDQTtBQTlFQTtBQUFBO0FBQUE7QUFnRkE7QUFDQTtBQUNBO0FBQ0E7QUFuRkE7QUFBQTtBQUFBO0FBb0ZBO0FBQ0E7QUFDQTtBQUNBO0FBdkZBO0FBQUE7QUFBQTtBQXdGQTtBQUNBO0FBekZBO0FBQUE7QUFBQTtBQStJQTtBQUNBO0FBQ0E7Ozs7O0FBakpBO0FBQUE7QUFBQTtBQXNKQTtBQUNBO0FBQ0E7QUFDQTtBQXpKQTtBQUFBO0FBQUE7QUEwSkE7QUFDQTtBQTNKQTtBQUFBO0FBQUE7QUE2SkE7QUFDQTtBQTlKQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQWhDQTtBQUNBO0FBREE7QUFBQTtBQWtPQTs7Ozs7O0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBaUJBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUEzQ0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXBEQTtBQUFBO0FBQUE7QUFzREE7QUFDQTtBQXZEQTtBQUFBO0FBQUE7QUF5REE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBOURBO0FBQUE7QUFDQTtBQW9HQTs7O0FBckdBO0FBeUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBakhBO0FBQUE7QUFBQTtBQXNIQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbElBO0FBQUE7QUFBQTtBQW9JQTtBQUNBO0FBcklBO0FBQUE7QUFBQTtBQXVJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQS9JQTtBQUFBO0FBQUE7QUFpSkE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBcEpBO0FBQUE7QUFBQTtBQWdFQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBcEVBO0FBQUE7QUFBQTtBQXNFQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBMUVBO0FBQUE7QUFBQTtBQTRFQTtBQUNBO0FBREE7QUFHQTtBQS9FQTtBQUFBO0FBQUE7QUFpRkE7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFvRkE7QUFDQTtBQXJGQTtBQUFBO0FBQUE7QUF1RkE7QUFDQTtBQXhGQTtBQUFBO0FBQUE7QUEwRkE7QUFDQTtBQTNGQTtBQUFBO0FBQUE7QUE2RkE7QUFDQTtBQTlGQTtBQUFBO0FBQUE7QUFnR0E7QUFDQTtBQWpHQTtBQUFBO0FBQUE7QUFtR0E7QUFDQTtBQXBHQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBcUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/core/item.ts\n')},"./lib/models/core/predicate.ts": /*!**************************************!*\ !*** ./lib/models/core/predicate.ts ***! \**************************************/ /*! exports provided: SNPredicate */function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SNPredicate\", function() { return SNPredicate; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ \"./lib/utils.ts\");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * A local-only construct that defines a built query that can be used to\n * dynamically search items.\n */\n\nvar SNPredicate = /*#__PURE__*/function () {\n function SNPredicate(keypath, operator, value) {\n _classCallCheck(this, SNPredicate);\n\n this.keypath = keypath;\n this.operator = operator;\n this.value = value;\n\n if (this.isRecursive()) {\n var array = this.value;\n this.value = array.map(function (element) {\n if (Array.isArray(element)) {\n return SNPredicate.FromArray(element);\n } else {\n return element;\n }\n });\n } else if (this.value === 'true' || this.value === 'false') {\n /* If value is boolean string, convert to boolean */\n this.value = JSON.parse(this.value);\n }\n }\n\n _createClass(SNPredicate, [{\n key: \"isRecursive\",\n value: function isRecursive() {\n return ['and', 'or'].includes(this.operator);\n }\n }, {\n key: \"arrayRepresentation\",\n value: function arrayRepresentation() {\n return [this.keypath, this.operator, this.value];\n }\n }, {\n key: \"valueAsArray\",\n value: function valueAsArray() {\n return this.value;\n }\n }], [{\n key: \"FromJson\",\n value: function FromJson(values) {\n return new SNPredicate(values.keypath, values.operator, values.value);\n }\n }, {\n key: \"FromArray\",\n value: function FromArray(array) {\n return new SNPredicate(array[0], array[1], array[2]);\n }\n }, {\n key: \"CompoundPredicate\",\n value: function CompoundPredicate(predicates) {\n return new SNPredicate('ignored', 'and', predicates);\n }\n }, {\n key: \"ObjectSatisfiesPredicate\",\n value: function ObjectSatisfiesPredicate(object, predicate) {\n /* Predicates may not always be created using the official constructor\n so if it's still an array here, convert to object */\n if (Array.isArray(predicate)) {\n predicate = this.FromArray(predicate);\n }\n\n if (predicate.isRecursive()) {\n if (predicate.operator === 'and') {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = predicate.valueAsArray()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var subPredicate = _step.value;\n\n if (!this.ObjectSatisfiesPredicate(object, subPredicate)) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return true;\n }\n\n if (predicate.operator === 'or') {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = predicate.valueAsArray()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _subPredicate = _step2.value;\n\n if (this.ObjectSatisfiesPredicate(object, _subPredicate)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return false;\n }\n }\n\n var targetValue = predicate.value;\n\n if (typeof targetValue === 'string' && targetValue.includes('.ago')) {\n targetValue = this.DateFromString(targetValue);\n }\n\n var valueAtKeyPath = predicate.keypath.split('.').reduce(function (previous, current) {\n return previous && previous[current];\n }, object);\n var falseyValues = [false, '', null, undefined, NaN];\n /* If the value at keyPath is undefined, either because the\n property is nonexistent or the value is null. */\n\n if (valueAtKeyPath === undefined) {\n if (predicate.operator === '!=') {\n return !falseyValues.includes(predicate.value);\n } else {\n return falseyValues.includes(predicate.value);\n }\n }\n\n if (predicate.operator === '=') {\n /* Use array comparison */\n if (Array.isArray(valueAtKeyPath)) {\n return JSON.stringify(valueAtKeyPath) === JSON.stringify(targetValue);\n } else {\n return valueAtKeyPath === targetValue;\n }\n } else if (predicate.operator === '!=') {\n // Use array comparison\n if (Array.isArray(valueAtKeyPath)) {\n return JSON.stringify(valueAtKeyPath) !== JSON.stringify(targetValue);\n } else {\n return valueAtKeyPath !== targetValue;\n }\n } else if (predicate.operator === '<') {\n return valueAtKeyPath < targetValue;\n } else if (predicate.operator === '>') {\n return valueAtKeyPath > targetValue;\n } else if (predicate.operator === '<=') {\n return valueAtKeyPath <= targetValue;\n } else if (predicate.operator === '>=') {\n return valueAtKeyPath >= targetValue;\n } else if (predicate.operator === 'startsWith') {\n return valueAtKeyPath.startsWith(targetValue);\n } else if (predicate.operator === 'in') {\n return targetValue.indexOf(valueAtKeyPath) !== -1;\n } else if (predicate.operator === 'includes') {\n return this.resolveIncludesPredicate(valueAtKeyPath, targetValue);\n } else if (predicate.operator === 'matches') {\n var regex = new RegExp(targetValue);\n return regex.test(valueAtKeyPath);\n }\n\n return false;\n }\n /**\n * @param itemValueArray Because we are resolving the `includes` operator, the given\n * value should be an array.\n * @param containsValue The value we are checking to see if exists in itemValueArray\n */\n\n }, {\n key: \"resolveIncludesPredicate\",\n value: function resolveIncludesPredicate(itemValueArray, containsValue) {\n // includes can be a string or a predicate (in array form)\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__[\"isString\"])(containsValue)) {\n // if string, simply check if the itemValueArray includes the predicate value\n return itemValueArray.includes(containsValue);\n } else {\n // is a predicate array or predicate object\n var innerPredicate;\n\n if (Array.isArray(containsValue)) {\n innerPredicate = SNPredicate.FromArray(containsValue);\n } else {\n innerPredicate = containsValue;\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = itemValueArray[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var obj = _step3.value;\n\n if (this.ObjectSatisfiesPredicate(obj, innerPredicate)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return false;\n }\n }\n }, {\n key: \"ItemSatisfiesPredicate\",\n value: function ItemSatisfiesPredicate(item, predicate) {\n if (Array.isArray(predicate)) {\n predicate = SNPredicate.FromArray(predicate);\n }\n\n return this.ObjectSatisfiesPredicate(item, predicate);\n }\n }, {\n key: \"ItemSatisfiesPredicates\",\n value: function ItemSatisfiesPredicates(item, predicates) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = predicates[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var predicate = _step4.value;\n\n if (!this.ItemSatisfiesPredicate(item, predicate)) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return true;\n }\n /**\n * Predicate date strings are of form \"x.days.ago\" or \"x.hours.ago\"\n */\n\n }, {\n key: \"DateFromString\",\n value: function DateFromString(string) {\n var comps = string.split('.');\n var unit = comps[1];\n var date = new Date();\n var offset = parseInt(comps[0]);\n\n if (unit === 'days') {\n date.setDate(date.getDate() - offset);\n } else if (unit === 'hours') {\n date.setHours(date.getHours() - offset);\n }\n\n return date;\n }\n }]);\n\n return SNPredicate;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2NvcmUvcHJlZGljYXRlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9jb3JlL3ByZWRpY2F0ZS50cz8zOGRjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSAnQExpYi91dGlscyc7XG4vKipcbiAqIEEgbG9jYWwtb25seSBjb25zdHJ1Y3QgdGhhdCBkZWZpbmVzIGEgYnVpbHQgcXVlcnkgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICogZHluYW1pY2FsbHkgc2VhcmNoIGl0ZW1zLlxuICovXG5leHBvcnQgY2xhc3MgU05QcmVkaWNhdGUge1xuICAgIGNvbnN0cnVjdG9yKGtleXBhdGgsIG9wZXJhdG9yLCB2YWx1ZSkge1xuICAgICAgICB0aGlzLmtleXBhdGggPSBrZXlwYXRoO1xuICAgICAgICB0aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZWN1cnNpdmUoKSkge1xuICAgICAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IGFycmF5Lm1hcCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTTlByZWRpY2F0ZS5Gcm9tQXJyYXkoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnZhbHVlID09PSAndHJ1ZScgfHwgdGhpcy52YWx1ZSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICAgICAgLyogSWYgdmFsdWUgaXMgYm9vbGVhbiBzdHJpbmcsIGNvbnZlcnQgdG8gYm9vbGVhbiAqL1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IEpTT04ucGFyc2UodGhpcy52YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RhdGljIEZyb21Kc29uKHZhbHVlcykge1xuICAgICAgICByZXR1cm4gbmV3IFNOUHJlZGljYXRlKHZhbHVlcy5rZXlwYXRoLCB2YWx1ZXMub3BlcmF0b3IsIHZhbHVlcy52YWx1ZSk7XG4gICAgfVxuICAgIHN0YXRpYyBGcm9tQXJyYXkoYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTTlByZWRpY2F0ZShhcnJheVswXSwgYXJyYXlbMV0sIGFycmF5WzJdKTtcbiAgICB9XG4gICAgaXNSZWN1cnNpdmUoKSB7XG4gICAgICAgIHJldHVybiBbJ2FuZCcsICdvciddLmluY2x1ZGVzKHRoaXMub3BlcmF0b3IpO1xuICAgIH1cbiAgICBhcnJheVJlcHJlc2VudGF0aW9uKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5rZXlwYXRoLFxuICAgICAgICAgICAgdGhpcy5vcGVyYXRvcixcbiAgICAgICAgICAgIHRoaXMudmFsdWVcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFsdWVBc0FycmF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIENvbXBvdW5kUHJlZGljYXRlKHByZWRpY2F0ZXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTTlByZWRpY2F0ZSgnaWdub3JlZCcsICdhbmQnLCBwcmVkaWNhdGVzKTtcbiAgICB9XG4gICAgc3RhdGljIE9iamVjdFNhdGlzZmllc1ByZWRpY2F0ZShvYmplY3QsIHByZWRpY2F0ZSkge1xuICAgICAgICAvKiBQcmVkaWNhdGVzIG1heSBub3QgYWx3YXlzIGJlIGNyZWF0ZWQgdXNpbmcgdGhlIG9mZmljaWFsIGNvbnN0cnVjdG9yXG4gICAgICAgICAgIHNvIGlmIGl0J3Mgc3RpbGwgYW4gYXJyYXkgaGVyZSwgY29udmVydCB0byBvYmplY3QgKi9cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgcHJlZGljYXRlID0gdGhpcy5Gcm9tQXJyYXkocHJlZGljYXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlZGljYXRlLmlzUmVjdXJzaXZlKCkpIHtcbiAgICAgICAgICAgIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICdhbmQnKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJQcmVkaWNhdGUgb2YgcHJlZGljYXRlLnZhbHVlQXNBcnJheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5PYmplY3RTYXRpc2ZpZXNQcmVkaWNhdGUob2JqZWN0LCBzdWJQcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnb3InKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzdWJQcmVkaWNhdGUgb2YgcHJlZGljYXRlLnZhbHVlQXNBcnJheSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLk9iamVjdFNhdGlzZmllc1ByZWRpY2F0ZShvYmplY3QsIHN1YlByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFyZ2V0VmFsdWUgPSBwcmVkaWNhdGUudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgKHRhcmdldFZhbHVlKSA9PT0gJ3N0cmluZycgJiYgdGFyZ2V0VmFsdWUuaW5jbHVkZXMoJy5hZ28nKSkge1xuICAgICAgICAgICAgdGFyZ2V0VmFsdWUgPSB0aGlzLkRhdGVGcm9tU3RyaW5nKHRhcmdldFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZUF0S2V5UGF0aCA9IHByZWRpY2F0ZS5rZXlwYXRoLnNwbGl0KCcuJykucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzICYmIHByZXZpb3VzW2N1cnJlbnRdO1xuICAgICAgICB9LCBvYmplY3QpO1xuICAgICAgICBjb25zdCBmYWxzZXlWYWx1ZXMgPSBbZmFsc2UsICcnLCBudWxsLCB1bmRlZmluZWQsIE5hTl07XG4gICAgICAgIC8qIElmIHRoZSB2YWx1ZSBhdCBrZXlQYXRoIGlzIHVuZGVmaW5lZCwgZWl0aGVyIGJlY2F1c2UgdGhlXG4gICAgICAgICAgcHJvcGVydHkgaXMgbm9uZXhpc3RlbnQgb3IgdGhlIHZhbHVlIGlzIG51bGwuICovXG4gICAgICAgIGlmICh2YWx1ZUF0S2V5UGF0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnIT0nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICFmYWxzZXlWYWx1ZXMuaW5jbHVkZXMocHJlZGljYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZXlWYWx1ZXMuaW5jbHVkZXMocHJlZGljYXRlLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnPScpIHtcbiAgICAgICAgICAgIC8qIFVzZSBhcnJheSBjb21wYXJpc29uICovXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZUF0S2V5UGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWVBdEtleVBhdGgpID09PSBKU09OLnN0cmluZ2lmeSh0YXJnZXRWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWVBdEtleVBhdGggPT09IHRhcmdldFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJyE9Jykge1xuICAgICAgICAgICAgLy8gVXNlIGFycmF5IGNvbXBhcmlzb25cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlQXRLZXlQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZUF0S2V5UGF0aCkgIT09IEpTT04uc3RyaW5naWZ5KHRhcmdldFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCAhPT0gdGFyZ2V0VmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJlZGljYXRlLm9wZXJhdG9yID09PSAnPCcpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCA8IHRhcmdldFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJz4nKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVBdEtleVBhdGggPiB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICc8PScpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCA8PSB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICc+PScpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZUF0S2V5UGF0aCA+PSB0YXJnZXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICdzdGFydHNXaXRoJykge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlQXRLZXlQYXRoLnN0YXJ0c1dpdGgodGFyZ2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJ2luJykge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldFZhbHVlLmluZGV4T2YodmFsdWVBdEtleVBhdGgpICE9PSAtMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcmVkaWNhdGUub3BlcmF0b3IgPT09ICdpbmNsdWRlcycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc29sdmVJbmNsdWRlc1ByZWRpY2F0ZSh2YWx1ZUF0S2V5UGF0aCwgdGFyZ2V0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHByZWRpY2F0ZS5vcGVyYXRvciA9PT0gJ21hdGNoZXMnKSB7XG4gICAgICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAodGFyZ2V0VmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWVBdEtleVBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGl0ZW1WYWx1ZUFycmF5IEJlY2F1c2Ugd2UgYXJlIHJlc29sdmluZyB0aGUgYGluY2x1ZGVzYCBvcGVyYXRvciwgdGhlIGdpdmVuXG4gICAgICogdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5LlxuICAgICAqIEBwYXJhbSBjb250YWluc1ZhbHVlICBUaGUgdmFsdWUgd2UgYXJlIGNoZWNraW5nIHRvIHNlZSBpZiBleGlzdHMgaW4gaXRlbVZhbHVlQXJyYXlcbiAgICAgKi9cbiAgICBzdGF0aWMgcmVzb2x2ZUluY2x1ZGVzUHJlZGljYXRlKGl0ZW1WYWx1ZUFycmF5LCBjb250YWluc1ZhbHVlKSB7XG4gICAgICAgIC8vIGluY2x1ZGVzIGNhbiBiZSBhIHN0cmluZyBvciBhIHByZWRpY2F0ZSAoaW4gYXJyYXkgZm9ybSlcbiAgICAgICAgaWYgKGlzU3RyaW5nKGNvbnRhaW5zVmFsdWUpKSB7XG4gICAgICAgICAgICAvLyBpZiBzdHJpbmcsIHNpbXBseSBjaGVjayBpZiB0aGUgaXRlbVZhbHVlQXJyYXkgaW5jbHVkZXMgdGhlIHByZWRpY2F0ZSB2YWx1ZVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW1WYWx1ZUFycmF5LmluY2x1ZGVzKGNvbnRhaW5zVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gaXMgYSBwcmVkaWNhdGUgYXJyYXkgb3IgcHJlZGljYXRlIG9iamVjdFxuICAgICAgICAgICAgbGV0IGlubmVyUHJlZGljYXRlO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGFpbnNWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBpbm5lclByZWRpY2F0ZSA9IFNOUHJlZGljYXRlLkZyb21BcnJheShjb250YWluc1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlubmVyUHJlZGljYXRlID0gY29udGFpbnNWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb2JqIG9mIGl0ZW1WYWx1ZUFycmF5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuT2JqZWN0U2F0aXNmaWVzUHJlZGljYXRlKG9iaiwgaW5uZXJQcmVkaWNhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgSXRlbVNhdGlzZmllc1ByZWRpY2F0ZShpdGVtLCBwcmVkaWNhdGUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgcHJlZGljYXRlID0gU05QcmVkaWNhdGUuRnJvbUFycmF5KHByZWRpY2F0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0U2F0aXNmaWVzUHJlZGljYXRlKGl0ZW0sIHByZWRpY2F0ZSk7XG4gICAgfVxuICAgIHN0YXRpYyBJdGVtU2F0aXNmaWVzUHJlZGljYXRlcyhpdGVtLCBwcmVkaWNhdGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5JdGVtU2F0aXNmaWVzUHJlZGljYXRlKGl0ZW0sIHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFByZWRpY2F0ZSBkYXRlIHN0cmluZ3MgYXJlIG9mIGZvcm0gXCJ4LmRheXMuYWdvXCIgb3IgXCJ4LmhvdXJzLmFnb1wiXG4gICAgICovXG4gICAgc3RhdGljIERhdGVGcm9tU3RyaW5nKHN0cmluZykge1xuICAgICAgICBjb25zdCBjb21wcyA9IHN0cmluZy5zcGxpdCgnLicpO1xuICAgICAgICBjb25zdCB1bml0ID0gY29tcHNbMV07XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZTtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gcGFyc2VJbnQoY29tcHNbMF0pO1xuICAgICAgICBpZiAodW5pdCA9PT0gJ2RheXMnKSB7XG4gICAgICAgICAgICBkYXRlLnNldERhdGUoZGF0ZS5nZXREYXRlKCkgLSBvZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVuaXQgPT09ICdob3VycycpIHtcbiAgICAgICAgICAgIGRhdGUuc2V0SG91cnMoZGF0ZS5nZXRIb3VycygpIC0gb2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUE0QkE7QUFDQTtBQTdCQTtBQUFBO0FBQUE7QUErQkE7QUFLQTtBQXBDQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQXZDQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQXZCQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQTFCQTtBQUFBO0FBQUE7QUF5Q0E7QUFDQTtBQTFDQTtBQUFBO0FBQUE7QUE0Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQWxJQTtBQUFBO0FBQUE7QUF3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFTQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQTdKQTtBQUFBO0FBQUE7QUErSkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbktBO0FBQUE7QUFBQTtBQW9LQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7Ozs7QUE1S0E7QUFBQTtBQUFBO0FBZ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBM0xBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/models/core/predicate.ts\n")},"./lib/models/functions.ts": /*!*********************************!*\ !*** ./lib/models/functions.ts ***! \*********************************/ /*! exports provided: Uuids, FillItemContent */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Uuids", function() { return Uuids; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FillItemContent", function() { return FillItemContent; });\n/* harmony import */ var _content_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./content_types */ "./lib/models/content_types.ts");\n\n/**\n * Returns an array of uuids for the given items or payloads\n */\n\nfunction Uuids(items) {\n return items.map(function (item) {\n return item.uuid;\n });\n}\n/**\n * Modifies the input object to fill in any missing required values from the\n * content body.\n */\n\nfunction FillItemContent(content) {\n if (!content.references) {\n content.references = [];\n }\n\n if (!content.appData) {\n content.appData = {};\n }\n\n if (!content.appData[_content_types__WEBPACK_IMPORTED_MODULE_0__["DefaultAppDomain"]]) {\n content.appData[_content_types__WEBPACK_IMPORTED_MODULE_0__["DefaultAppDomain"]] = {};\n }\n\n return content;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2Z1bmN0aW9ucy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvZnVuY3Rpb25zLnRzPzViODYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEFwcERvbWFpbiB9IGZyb20gJy4vY29udGVudF90eXBlcyc7XG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2YgdXVpZHMgZm9yIHRoZSBnaXZlbiBpdGVtcyBvciBwYXlsb2Fkc1xuICovXG5leHBvcnQgZnVuY3Rpb24gVXVpZHMoaXRlbXMpIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLnV1aWQ7XG4gICAgfSk7XG59XG4vKipcbiAqIE1vZGlmaWVzIHRoZSBpbnB1dCBvYmplY3QgdG8gZmlsbCBpbiBhbnkgbWlzc2luZyByZXF1aXJlZCB2YWx1ZXMgZnJvbSB0aGVcbiAqIGNvbnRlbnQgYm9keS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEZpbGxJdGVtQ29udGVudChjb250ZW50KSB7XG4gICAgaWYgKCFjb250ZW50LnJlZmVyZW5jZXMpIHtcbiAgICAgICAgY29udGVudC5yZWZlcmVuY2VzID0gW107XG4gICAgfVxuICAgIGlmICghY29udGVudC5hcHBEYXRhKSB7XG4gICAgICAgIGNvbnRlbnQuYXBwRGF0YSA9IHt9O1xuICAgIH1cbiAgICBpZiAoIWNvbnRlbnQuYXBwRGF0YVtEZWZhdWx0QXBwRG9tYWluXSkge1xuICAgICAgICBjb250ZW50LmFwcERhdGFbRGVmYXVsdEFwcERvbWFpbl0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/models/functions.ts\n')},"./lib/models/generator.ts": /*!*********************************!*\ !*** ./lib/models/generator.ts ***! \*********************************/ /*! exports provided: CreateItemFromPayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateItemFromPayload", function() { return CreateItemFromPayload; });\n/* harmony import */ var _app_userPrefs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/userPrefs */ "./lib/models/app/userPrefs.ts");\n/* harmony import */ var _app_privileges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony import */ var _Models_app_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _app_theme__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/theme */ "./lib/models/app/theme.ts");\n/* harmony import */ var _app_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./app/editor */ "./lib/models/app/editor.ts");\n/* harmony import */ var _app_extension__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./app/extension */ "./lib/models/app/extension.ts");\n/* harmony import */ var _app_smartTag__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./app/smartTag */ "./lib/models/app/smartTag.ts");\n/* harmony import */ var _app_tag__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./app/tag */ "./lib/models/app/tag.ts");\n/* harmony import */ var _app_note__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./app/note */ "./lib/models/app/note.ts");\n/* harmony import */ var _core_item__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _app_items_key__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./app/items_key */ "./lib/models/app/items_key.ts");\nvar _ContentTypeClassMapp;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ContentTypeClassMapping = (_ContentTypeClassMapp = {}, _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Note, _app_note__WEBPACK_IMPORTED_MODULE_8__["SNNote"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Tag, _app_tag__WEBPACK_IMPORTED_MODULE_7__["SNTag"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].ItemsKey, _app_items_key__WEBPACK_IMPORTED_MODULE_11__["SNItemsKey"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].SmartTag, _app_smartTag__WEBPACK_IMPORTED_MODULE_6__["SNSmartTag"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].ActionsExtension, _app_extension__WEBPACK_IMPORTED_MODULE_5__["SNActionsExtension"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Editor, _app_editor__WEBPACK_IMPORTED_MODULE_4__["SNEditor"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Theme, _app_theme__WEBPACK_IMPORTED_MODULE_3__["SNTheme"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Component, _Models_app_component__WEBPACK_IMPORTED_MODULE_2__["SNComponent"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].Privileges, _app_privileges__WEBPACK_IMPORTED_MODULE_1__["SNPrivileges"]), _defineProperty(_ContentTypeClassMapp, _Models_content_types__WEBPACK_IMPORTED_MODULE_10__["ContentType"].UserPrefs, _app_userPrefs__WEBPACK_IMPORTED_MODULE_0__["SNUserPrefs"]), _ContentTypeClassMapp);\nfunction CreateItemFromPayload(payload) {\n var itemClass = ContentTypeClassMapping[payload.content_type] || _core_item__WEBPACK_IMPORTED_MODULE_9__["SNItem"]; // eslint-disable-next-line new-cap\n\n var item = new itemClass(payload);\n return item;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2dlbmVyYXRvci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvZ2VuZXJhdG9yLnRzP2NiZDkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05Vc2VyUHJlZnMgfSBmcm9tICcuL2FwcC91c2VyUHJlZnMnO1xuaW1wb3J0IHsgU05Qcml2aWxlZ2VzIH0gZnJvbSAnLi9hcHAvcHJpdmlsZWdlcyc7XG5pbXBvcnQgeyBTTkNvbXBvbmVudCB9IGZyb20gJ0BNb2RlbHMvYXBwL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBTTlRoZW1lIH0gZnJvbSAnLi9hcHAvdGhlbWUnO1xuaW1wb3J0IHsgU05FZGl0b3IgfSBmcm9tICcuL2FwcC9lZGl0b3InO1xuaW1wb3J0IHsgU05BY3Rpb25zRXh0ZW5zaW9uIH0gZnJvbSAnLi9hcHAvZXh0ZW5zaW9uJztcbmltcG9ydCB7IFNOU21hcnRUYWcgfSBmcm9tICcuL2FwcC9zbWFydFRhZyc7XG5pbXBvcnQgeyBTTlRhZyB9IGZyb20gJy4vYXBwL3RhZyc7XG5pbXBvcnQgeyBTTk5vdGUgfSBmcm9tICcuL2FwcC9ub3RlJztcbmltcG9ydCB7IFNOSXRlbSB9IGZyb20gJy4vY29yZS9pdGVtJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFNOSXRlbXNLZXkgfSBmcm9tICcuL2FwcC9pdGVtc19rZXknO1xuY29uc3QgQ29udGVudFR5cGVDbGFzc01hcHBpbmcgPSB7XG4gICAgW0NvbnRlbnRUeXBlLk5vdGVdOiBTTk5vdGUsXG4gICAgW0NvbnRlbnRUeXBlLlRhZ106IFNOVGFnLFxuICAgIFtDb250ZW50VHlwZS5JdGVtc0tleV06IFNOSXRlbXNLZXksXG4gICAgW0NvbnRlbnRUeXBlLlNtYXJ0VGFnXTogU05TbWFydFRhZyxcbiAgICBbQ29udGVudFR5cGUuQWN0aW9uc0V4dGVuc2lvbl06IFNOQWN0aW9uc0V4dGVuc2lvbixcbiAgICBbQ29udGVudFR5cGUuRWRpdG9yXTogU05FZGl0b3IsXG4gICAgW0NvbnRlbnRUeXBlLlRoZW1lXTogU05UaGVtZSxcbiAgICBbQ29udGVudFR5cGUuQ29tcG9uZW50XTogU05Db21wb25lbnQsXG4gICAgW0NvbnRlbnRUeXBlLlByaXZpbGVnZXNdOiBTTlByaXZpbGVnZXMsXG4gICAgW0NvbnRlbnRUeXBlLlVzZXJQcmVmc106IFNOVXNlclByZWZzXG59O1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkKSB7XG4gICAgY29uc3QgaXRlbUNsYXNzID0gQ29udGVudFR5cGVDbGFzc01hcHBpbmdbcGF5bG9hZC5jb250ZW50X3R5cGVdIHx8IFNOSXRlbTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgIGNvbnN0IGl0ZW0gPSBuZXcgaXRlbUNsYXNzKHBheWxvYWQpO1xuICAgIHJldHVybiBpdGVtO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/generator.ts\n')},"./lib/models/index.ts": /*!*****************************!*\ !*** ./lib/models/index.ts ***! \*****************************/ /*! exports provided: SNItem, ItemMutator, SingletonStrategy, AppDataField, SNItemsKey, SNPredicate, SNComponent, ComponentMutator, ComponentAction, SNEditor, SNActionsExtension, Action, SNNote, NoteMutator, SNTag, SNUserPrefs, UserPrefsMutator, WebPrefKey, SNPrivileges, PrivilegeMutator, SNSmartTag, SNTheme, ThemeMutator, ContentType, displayStringForContentType, CreateItemFromPayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItem", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SNItem"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemMutator", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["ItemMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SingletonStrategy", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["SingletonStrategy"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AppDataField", function() { return _Models_core_item__WEBPACK_IMPORTED_MODULE_0__["AppDataField"]; });\n\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNItemsKey", function() { return _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"]; });\n\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPredicate", function() { return _Models_core_predicate__WEBPACK_IMPORTED_MODULE_2__["SNPredicate"]; });\n\n/* harmony import */ var _app_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/component */ "./lib/models/app/component.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponent", function() { return _app_component__WEBPACK_IMPORTED_MODULE_3__["SNComponent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentMutator", function() { return _app_component__WEBPACK_IMPORTED_MODULE_3__["ComponentMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentAction", function() { return _app_component__WEBPACK_IMPORTED_MODULE_3__["ComponentAction"]; });\n\n/* harmony import */ var _Models_app_editor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Models/app/editor */ "./lib/models/app/editor.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNEditor", function() { return _Models_app_editor__WEBPACK_IMPORTED_MODULE_4__["SNEditor"]; });\n\n/* harmony import */ var _Models_app_extension__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Models/app/extension */ "./lib/models/app/extension.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNActionsExtension", function() { return _Models_app_extension__WEBPACK_IMPORTED_MODULE_5__["SNActionsExtension"]; });\n\n/* harmony import */ var _Models_app_action__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/app/action */ "./lib/models/app/action.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return _Models_app_action__WEBPACK_IMPORTED_MODULE_6__["Action"]; });\n\n/* harmony import */ var _Models_app_note__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Models/app/note */ "./lib/models/app/note.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNNote", function() { return _Models_app_note__WEBPACK_IMPORTED_MODULE_7__["SNNote"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NoteMutator", function() { return _Models_app_note__WEBPACK_IMPORTED_MODULE_7__["NoteMutator"]; });\n\n/* harmony import */ var _Models_app_tag__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/app/tag */ "./lib/models/app/tag.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTag", function() { return _Models_app_tag__WEBPACK_IMPORTED_MODULE_8__["SNTag"]; });\n\n/* harmony import */ var _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Models/app/userPrefs */ "./lib/models/app/userPrefs.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNUserPrefs", function() { return _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__["SNUserPrefs"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserPrefsMutator", function() { return _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__["UserPrefsMutator"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "WebPrefKey", function() { return _Models_app_userPrefs__WEBPACK_IMPORTED_MODULE_9__["WebPrefKey"]; });\n\n/* harmony import */ var _Models_app_privileges__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Models/app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivileges", function() { return _Models_app_privileges__WEBPACK_IMPORTED_MODULE_10__["SNPrivileges"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PrivilegeMutator", function() { return _Models_app_privileges__WEBPACK_IMPORTED_MODULE_10__["PrivilegeMutator"]; });\n\n/* harmony import */ var _Models_app_smartTag__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/app/smartTag */ "./lib/models/app/smartTag.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSmartTag", function() { return _Models_app_smartTag__WEBPACK_IMPORTED_MODULE_11__["SNSmartTag"]; });\n\n/* harmony import */ var _Models_app_theme__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Models/app/theme */ "./lib/models/app/theme.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNTheme", function() { return _Models_app_theme__WEBPACK_IMPORTED_MODULE_12__["SNTheme"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ThemeMutator", function() { return _Models_app_theme__WEBPACK_IMPORTED_MODULE_12__["ThemeMutator"]; });\n\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ContentType", function() { return _Models_content_types__WEBPACK_IMPORTED_MODULE_13__["ContentType"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "displayStringForContentType", function() { return _Models_content_types__WEBPACK_IMPORTED_MODULE_13__["displayStringForContentType"]; });\n\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateItemFromPayload", function() { return _Models_generator__WEBPACK_IMPORTED_MODULE_14__["CreateItemFromPayload"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2luZGV4LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL21vZGVscy9pbmRleC50cz9kMzNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFNOSXRlbSwgSXRlbU11dGF0b3IsIFNpbmdsZXRvblN0cmF0ZWd5LCBBcHBEYXRhRmllbGQgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5leHBvcnQgeyBTTkl0ZW1zS2V5IH0gZnJvbSAnQE1vZGVscy9hcHAvaXRlbXNfa2V5JztcbmV4cG9ydCB7IFNOUHJlZGljYXRlIH0gZnJvbSAnQE1vZGVscy9jb3JlL3ByZWRpY2F0ZSc7XG5leHBvcnQgeyBTTkNvbXBvbmVudCwgQ29tcG9uZW50TXV0YXRvciwgQ29tcG9uZW50QWN0aW9uIH0gZnJvbSAnLi9hcHAvY29tcG9uZW50JztcbmV4cG9ydCB7IFNORWRpdG9yIH0gZnJvbSAnQE1vZGVscy9hcHAvZWRpdG9yJztcbmV4cG9ydCB7IFNOQWN0aW9uc0V4dGVuc2lvbiB9IGZyb20gJ0BNb2RlbHMvYXBwL2V4dGVuc2lvbic7XG5leHBvcnQgeyBBY3Rpb24gfSBmcm9tICdATW9kZWxzL2FwcC9hY3Rpb24nO1xuZXhwb3J0IHsgU05Ob3RlLCBOb3RlTXV0YXRvciB9IGZyb20gJ0BNb2RlbHMvYXBwL25vdGUnO1xuZXhwb3J0IHsgU05UYWcgfSBmcm9tICdATW9kZWxzL2FwcC90YWcnO1xuZXhwb3J0IHsgU05Vc2VyUHJlZnMsIFVzZXJQcmVmc011dGF0b3IsIFdlYlByZWZLZXkgfSBmcm9tICdATW9kZWxzL2FwcC91c2VyUHJlZnMnO1xuZXhwb3J0IHsgU05Qcml2aWxlZ2VzLCBQcml2aWxlZ2VNdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9hcHAvcHJpdmlsZWdlcyc7XG5leHBvcnQgeyBTTlNtYXJ0VGFnIH0gZnJvbSAnQE1vZGVscy9hcHAvc21hcnRUYWcnO1xuZXhwb3J0IHsgU05UaGVtZSwgVGhlbWVNdXRhdG9yIH0gZnJvbSAnQE1vZGVscy9hcHAvdGhlbWUnO1xuZXhwb3J0IHsgQ29udGVudFR5cGUsIGRpc3BsYXlTdHJpbmdGb3JDb250ZW50VHlwZSB9IGZyb20gJ0BNb2RlbHMvY29udGVudF90eXBlcyc7XG5leHBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/index.ts\n')},"./lib/models/live_item.ts": /*!*********************************!*\ !*** ./lib/models/live_item.ts ***! \*********************************/ /*! exports provided: LiveItem */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LiveItem", function() { return LiveItem; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/** Keeps an item reference up to date with changes */\nvar LiveItem = /*#__PURE__*/function () {\n function LiveItem(uuid, application, onChange) {\n var _this = this;\n\n _classCallCheck(this, LiveItem);\n\n this.item = application.findItem(uuid);\n onChange && onChange(this.item);\n this.removeObserver = application.streamItems(this.item.content_type, /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(items) {\n var matchingItem;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n matchingItem = items.find(function (item) {\n return item.uuid === uuid;\n });\n\n if (matchingItem) {\n _this.item = matchingItem;\n onChange && onChange(_this.item);\n }\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n\n _createClass(LiveItem, [{\n key: "deinit",\n value: function deinit() {\n this.removeObserver();\n this.removeObserver = undefined;\n }\n }]);\n\n return LiveItem;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvbW9kZWxzL2xpdmVfaXRlbS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9tb2RlbHMvbGl2ZV9pdGVtLnRzP2E2ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEtlZXBzIGFuIGl0ZW0gcmVmZXJlbmNlIHVwIHRvIGRhdGUgd2l0aCBjaGFuZ2VzICovXG5leHBvcnQgY2xhc3MgTGl2ZUl0ZW0ge1xuICAgIGNvbnN0cnVjdG9yKHV1aWQsIGFwcGxpY2F0aW9uLCBvbkNoYW5nZSkge1xuICAgICAgICB0aGlzLml0ZW0gPSBhcHBsaWNhdGlvbi5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UodGhpcy5pdGVtKTtcbiAgICAgICAgdGhpcy5yZW1vdmVPYnNlcnZlciA9IGFwcGxpY2F0aW9uLnN0cmVhbUl0ZW1zKHRoaXMuaXRlbS5jb250ZW50X3R5cGUsIGFzeW5jIChpdGVtcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdJdGVtID0gaXRlbXMuZmluZCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnV1aWQgPT09IHV1aWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChtYXRjaGluZ0l0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW0gPSBtYXRjaGluZ0l0ZW07XG4gICAgICAgICAgICAgICAgb25DaGFuZ2UgJiYgb25DaGFuZ2UodGhpcy5pdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVPYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZU9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQWRBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFDQTtBQWpCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/models/live_item.ts\n')},"./lib/platforms.ts": /*!**************************!*\ !*** ./lib/platforms.ts ***! \**************************/ /*! exports provided: Environment, Platform, platformFromString, platformToString, environmentToString, isEnvironmentWebOrDesktop, isEnvironmentMobile */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return Environment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Platform", function() { return Platform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "platformFromString", function() { return platformFromString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "platformToString", function() { return platformToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "environmentToString", function() { return environmentToString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentWebOrDesktop", function() { return isEnvironmentWebOrDesktop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEnvironmentMobile", function() { return isEnvironmentMobile; });\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar Environment;\n\n(function (Environment) {\n Environment[Environment["Web"] = 1] = "Web";\n Environment[Environment["Desktop"] = 2] = "Desktop";\n Environment[Environment["Mobile"] = 3] = "Mobile";\n})(Environment || (Environment = {}));\n\n;\nvar Platform;\n\n(function (Platform) {\n Platform[Platform["Ios"] = 1] = "Ios";\n Platform[Platform["Android"] = 2] = "Android";\n Platform[Platform["MacWeb"] = 3] = "MacWeb";\n Platform[Platform["MacDesktop"] = 4] = "MacDesktop";\n Platform[Platform["WindowsWeb"] = 5] = "WindowsWeb";\n Platform[Platform["WindowsDesktop"] = 6] = "WindowsDesktop";\n Platform[Platform["LinuxWeb"] = 7] = "LinuxWeb";\n Platform[Platform["LinuxDesktop"] = 8] = "LinuxDesktop";\n})(Platform || (Platform = {}));\n\n;\nfunction platformFromString(string) {\n var map = {\n \'mac-web\': Platform.MacWeb,\n \'mac-desktop\': Platform.MacDesktop,\n \'linux-web\': Platform.LinuxWeb,\n \'linux-desktop\': Platform.LinuxDesktop,\n \'windows-web\': Platform.WindowsWeb,\n \'windows-desktop\': Platform.WindowsDesktop,\n \'ios\': Platform.Ios,\n \'android\': Platform.Android\n };\n return map[string];\n}\nfunction platformToString(platform) {\n var _map;\n\n var map = (_map = {}, _defineProperty(_map, Platform.MacWeb, \'mac-web\'), _defineProperty(_map, Platform.MacDesktop, \'mac-desktop\'), _defineProperty(_map, Platform.LinuxWeb, \'linux-web\'), _defineProperty(_map, Platform.LinuxDesktop, \'linux-desktop\'), _defineProperty(_map, Platform.WindowsWeb, \'windows-web\'), _defineProperty(_map, Platform.WindowsDesktop, \'windows-desktop\'), _defineProperty(_map, Platform.Ios, \'ios\'), _defineProperty(_map, Platform.Android, \'android\'), _map);\n return map[platform];\n}\nfunction environmentToString(environment) {\n var _map2;\n\n var map = (_map2 = {}, _defineProperty(_map2, Environment.Web, \'web\'), _defineProperty(_map2, Environment.Desktop, \'desktop\'), _defineProperty(_map2, Environment.Mobile, \'mobile\'), _map2);\n return map[environment];\n}\nfunction isEnvironmentWebOrDesktop(environment) {\n return environment === Environment.Web || environment === Environment.Desktop;\n}\nfunction isEnvironmentMobile(environment) {\n return environment === Environment.Mobile;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcGxhdGZvcm1zLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3BsYXRmb3Jtcy50cz8yNmNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgRW52aXJvbm1lbnQ7XG4oZnVuY3Rpb24gKEVudmlyb25tZW50KSB7XG4gICAgRW52aXJvbm1lbnRbRW52aXJvbm1lbnRbXCJXZWJcIl0gPSAxXSA9IFwiV2ViXCI7XG4gICAgRW52aXJvbm1lbnRbRW52aXJvbm1lbnRbXCJEZXNrdG9wXCJdID0gMl0gPSBcIkRlc2t0b3BcIjtcbiAgICBFbnZpcm9ubWVudFtFbnZpcm9ubWVudFtcIk1vYmlsZVwiXSA9IDNdID0gXCJNb2JpbGVcIjtcbn0pKEVudmlyb25tZW50IHx8IChFbnZpcm9ubWVudCA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFBsYXRmb3JtO1xuKGZ1bmN0aW9uIChQbGF0Zm9ybSkge1xuICAgIFBsYXRmb3JtW1BsYXRmb3JtW1wiSW9zXCJdID0gMV0gPSBcIklvc1wiO1xuICAgIFBsYXRmb3JtW1BsYXRmb3JtW1wiQW5kcm9pZFwiXSA9IDJdID0gXCJBbmRyb2lkXCI7XG4gICAgUGxhdGZvcm1bUGxhdGZvcm1bXCJNYWNXZWJcIl0gPSAzXSA9IFwiTWFjV2ViXCI7XG4gICAgUGxhdGZvcm1bUGxhdGZvcm1bXCJNYWNEZXNrdG9wXCJdID0gNF0gPSBcIk1hY0Rlc2t0b3BcIjtcbiAgICBQbGF0Zm9ybVtQbGF0Zm9ybVtcIldpbmRvd3NXZWJcIl0gPSA1XSA9IFwiV2luZG93c1dlYlwiO1xuICAgIFBsYXRmb3JtW1BsYXRmb3JtW1wiV2luZG93c0Rlc2t0b3BcIl0gPSA2XSA9IFwiV2luZG93c0Rlc2t0b3BcIjtcbiAgICBQbGF0Zm9ybVtQbGF0Zm9ybVtcIkxpbnV4V2ViXCJdID0gN10gPSBcIkxpbnV4V2ViXCI7XG4gICAgUGxhdGZvcm1bUGxhdGZvcm1bXCJMaW51eERlc2t0b3BcIl0gPSA4XSA9IFwiTGludXhEZXNrdG9wXCI7XG59KShQbGF0Zm9ybSB8fCAoUGxhdGZvcm0gPSB7fSkpO1xuO1xuZXhwb3J0IGZ1bmN0aW9uIHBsYXRmb3JtRnJvbVN0cmluZyhzdHJpbmcpIHtcbiAgICBjb25zdCBtYXAgPSB7XG4gICAgICAgICdtYWMtd2ViJzogUGxhdGZvcm0uTWFjV2ViLFxuICAgICAgICAnbWFjLWRlc2t0b3AnOiBQbGF0Zm9ybS5NYWNEZXNrdG9wLFxuICAgICAgICAnbGludXgtd2ViJzogUGxhdGZvcm0uTGludXhXZWIsXG4gICAgICAgICdsaW51eC1kZXNrdG9wJzogUGxhdGZvcm0uTGludXhEZXNrdG9wLFxuICAgICAgICAnd2luZG93cy13ZWInOiBQbGF0Zm9ybS5XaW5kb3dzV2ViLFxuICAgICAgICAnd2luZG93cy1kZXNrdG9wJzogUGxhdGZvcm0uV2luZG93c0Rlc2t0b3AsXG4gICAgICAgICdpb3MnOiBQbGF0Zm9ybS5Jb3MsXG4gICAgICAgICdhbmRyb2lkJzogUGxhdGZvcm0uQW5kcm9pZCxcbiAgICB9O1xuICAgIHJldHVybiBtYXBbc3RyaW5nXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwbGF0Zm9ybVRvU3RyaW5nKHBsYXRmb3JtKSB7XG4gICAgY29uc3QgbWFwID0ge1xuICAgICAgICBbUGxhdGZvcm0uTWFjV2ViXTogJ21hYy13ZWInLFxuICAgICAgICBbUGxhdGZvcm0uTWFjRGVza3RvcF06ICdtYWMtZGVza3RvcCcsXG4gICAgICAgIFtQbGF0Zm9ybS5MaW51eFdlYl06ICdsaW51eC13ZWInLFxuICAgICAgICBbUGxhdGZvcm0uTGludXhEZXNrdG9wXTogJ2xpbnV4LWRlc2t0b3AnLFxuICAgICAgICBbUGxhdGZvcm0uV2luZG93c1dlYl06ICd3aW5kb3dzLXdlYicsXG4gICAgICAgIFtQbGF0Zm9ybS5XaW5kb3dzRGVza3RvcF06ICd3aW5kb3dzLWRlc2t0b3AnLFxuICAgICAgICBbUGxhdGZvcm0uSW9zXTogJ2lvcycsXG4gICAgICAgIFtQbGF0Zm9ybS5BbmRyb2lkXTogJ2FuZHJvaWQnLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcFtwbGF0Zm9ybV07XG59XG5leHBvcnQgZnVuY3Rpb24gZW52aXJvbm1lbnRUb1N0cmluZyhlbnZpcm9ubWVudCkge1xuICAgIGNvbnN0IG1hcCA9IHtcbiAgICAgICAgW0Vudmlyb25tZW50LldlYl06ICd3ZWInLFxuICAgICAgICBbRW52aXJvbm1lbnQuRGVza3RvcF06ICdkZXNrdG9wJyxcbiAgICAgICAgW0Vudmlyb25tZW50Lk1vYmlsZV06ICdtb2JpbGUnLFxuICAgIH07XG4gICAgcmV0dXJuIG1hcFtlbnZpcm9ubWVudF07XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnZpcm9ubWVudFdlYk9yRGVza3RvcChlbnZpcm9ubWVudCkge1xuICAgIHJldHVybiBlbnZpcm9ubWVudCA9PT0gRW52aXJvbm1lbnQuV2ViIHx8XG4gICAgICAgIGVudmlyb25tZW50ID09PSBFbnZpcm9ubWVudC5EZXNrdG9wO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW52aXJvbm1lbnRNb2JpbGUoZW52aXJvbm1lbnQpIHtcbiAgICByZXR1cm4gZW52aXJvbm1lbnQgPT09IEVudmlyb25tZW50Lk1vYmlsZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/platforms.ts\n')},"./lib/protocol/collection/collection.ts": /*!***********************************************!*\ !*** ./lib/protocol/collection/collection.ts ***! \***********************************************/ /*! exports provided: MutableCollection */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MutableCollection", function() { return MutableCollection; });\n/* harmony import */ var _uuid_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uuid_map */ "./lib/protocol/collection/uuid_map.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_2__);\nfunction _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar MutableCollection = /*#__PURE__*/function () {\n function MutableCollection() {\n var _ref;\n\n var copy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var mapCopy = arguments.length > 1 ? arguments[1] : undefined;\n var typedMapCopy = arguments.length > 2 ? arguments[2] : undefined;\n var referenceMapCopy = arguments.length > 3 ? arguments[3] : undefined;\n var conflictMapCopy = arguments.length > 4 ? arguments[4] : undefined;\n\n _classCallCheck(this, MutableCollection);\n\n this.map = {};\n this.typedMap = (_ref = {}, _objectDestructuringEmpty(_ref), _ref);\n /** An array of uuids of items that are dirty */\n\n this.dirtyIndex = new Set();\n /** An array of uuids of items that are errorDecrypting or waitingForKey */\n\n this.invalidsIndex = new Set();\n /** An array of uuids of items that are not marked as deleted */\n\n this.nondeletedIndex = new Set();\n\n if (copy) {\n this.map = mapCopy;\n this.typedMap = typedMapCopy;\n this.referenceMap = referenceMapCopy;\n this.conflictMap = conflictMapCopy;\n } else {\n this.referenceMap = new _uuid_map__WEBPACK_IMPORTED_MODULE_0__["UuidMap"]();\n this.conflictMap = new _uuid_map__WEBPACK_IMPORTED_MODULE_0__["UuidMap"]();\n }\n }\n\n _createClass(MutableCollection, [{\n key: "uuids",\n value: function uuids() {\n return Object.keys(this.map);\n }\n }, {\n key: "all",\n value: function all(contentType) {\n var _this = this;\n\n if (contentType) {\n if (Array.isArray(contentType)) {\n var elements = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = contentType[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var type = _step.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["extendArray"])(elements, this.typedMap[type] || []);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return elements;\n } else {\n var _this$typedMap$conten;\n\n return ((_this$typedMap$conten = this.typedMap[contentType]) === null || _this$typedMap$conten === void 0 ? void 0 : _this$typedMap$conten.slice()) || [];\n }\n } else {\n return Object.keys(this.map).map(function (uuid) {\n return _this.map[uuid];\n });\n }\n }\n }, {\n key: "find",\n value: function find(uuid) {\n return this.map[uuid];\n }\n /** Returns all elements that are marked as dirty */\n\n }, {\n key: "dirtyElements",\n value: function dirtyElements() {\n var uuids = Array.from(this.dirtyIndex);\n return this.findAll(uuids);\n }\n /** Returns all elements that are errorDecrypting or waitingForKey */\n\n }, {\n key: "invalidElements",\n value: function invalidElements() {\n var uuids = Array.from(this.invalidsIndex);\n return this.findAll(uuids);\n }\n /** Returns all elements that are not marked as deleted */\n\n }, {\n key: "nondeletedElements",\n value: function nondeletedElements() {\n var uuids = Array.from(this.nondeletedIndex);\n return this.findAll(uuids);\n }\n /**\n * @param includeBlanks If true and an item is not found, an `undefined` element\n * will be inserted into the array.\n */\n\n }, {\n key: "findAll",\n value: function findAll(uuids) {\n var includeBlanks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var results = [];\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = uuids[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var id = _step2.value;\n var element = this.map[id];\n\n if (element || includeBlanks) {\n results.push(element);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return results;\n }\n }, {\n key: "set",\n value: function set(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n\n if (elements.length === 0) {\n console.warn(\'Attempting to set 0 elements onto collection\');\n return;\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = elements[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var element = _step3.value;\n this.map[element.uuid] = element;\n this.setToTypedMap(element);\n /** Dirty index */\n\n if (element.dirty) {\n this.dirtyIndex.add(element.uuid);\n } else {\n this.dirtyIndex.delete(element.uuid);\n }\n /** Invalids index */\n\n\n if (element.errorDecrypting || element.waitingForKey) {\n this.invalidsIndex.add(element.uuid);\n } else {\n this.invalidsIndex.delete(element.uuid);\n }\n\n if (element.deleted) {\n this.referenceMap.removeFromMap(element.uuid);\n this.nondeletedIndex.delete(element.uuid);\n } else {\n this.nondeletedIndex.add(element.uuid);\n var conflictOf = element.safeContent.conflict_of;\n\n if (conflictOf) {\n this.conflictMap.establishRelationship(conflictOf, element.uuid);\n }\n\n this.referenceMap.setAllRelationships(element.uuid, element.references.map(function (r) {\n return r.uuid;\n }));\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n }, {\n key: "discard",\n value: function discard(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = elements[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var element = _step4.value;\n this.conflictMap.removeFromMap(element.uuid);\n this.referenceMap.removeFromMap(element.uuid);\n this.deleteFromTypedMap(element);\n delete this.map[element.uuid];\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n }, {\n key: "setToTypedMap",\n value: function setToTypedMap(element) {\n var array = this.typedMap[element.content_type] || [];\n lodash_remove__WEBPACK_IMPORTED_MODULE_2___default()(array, {\n uuid: element.uuid\n });\n array.push(element);\n this.typedMap[element.content_type] = array;\n }\n }, {\n key: "deleteFromTypedMap",\n value: function deleteFromTypedMap(element) {\n var array = this.typedMap[element.content_type] || [];\n lodash_remove__WEBPACK_IMPORTED_MODULE_2___default()(array, {\n uuid: element.uuid\n });\n this.typedMap[element.content_type] = array;\n }\n }, {\n key: "uuidsThatReferenceUuid",\n value: function uuidsThatReferenceUuid(uuid) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isString"])(uuid)) {\n throw Error(\'Must use uuid string\');\n }\n\n return this.referenceMap.getInverseRelationships(uuid);\n }\n }, {\n key: "elementsReferencingElement",\n value: function elementsReferencingElement(element) {\n var uuids = this.uuidsThatReferenceUuid(element.uuid);\n return this.findAll(uuids);\n }\n }, {\n key: "conflictsOf",\n value: function conflictsOf(uuid) {\n var uuids = this.conflictMap.getDirectRelationships(uuid);\n return this.findAll(uuids);\n }\n }]);\n\n return MutableCollection;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9jb2xsZWN0aW9uLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL2NvbGxlY3Rpb24vY29sbGVjdGlvbi50cz85N2JjIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFV1aWRNYXAgfSBmcm9tICcuL3V1aWRfbWFwJztcbmltcG9ydCB7IGlzU3RyaW5nLCBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHJlbW92ZSBmcm9tICdsb2Rhc2gvcmVtb3ZlJztcbmV4cG9ydCBjbGFzcyBNdXRhYmxlQ29sbGVjdGlvbiB7XG4gICAgY29uc3RydWN0b3IoY29weSA9IGZhbHNlLCBtYXBDb3B5LCB0eXBlZE1hcENvcHksIHJlZmVyZW5jZU1hcENvcHksIGNvbmZsaWN0TWFwQ29weSkge1xuICAgICAgICB0aGlzLm1hcCA9IHt9O1xuICAgICAgICB0aGlzLnR5cGVkTWFwID0ge30gPSB7fTtcbiAgICAgICAgLyoqIEFuIGFycmF5IG9mIHV1aWRzIG9mIGl0ZW1zIHRoYXQgYXJlIGRpcnR5ICovXG4gICAgICAgIHRoaXMuZGlydHlJbmRleCA9IG5ldyBTZXQoKTtcbiAgICAgICAgLyoqIEFuIGFycmF5IG9mIHV1aWRzIG9mIGl0ZW1zIHRoYXQgYXJlIGVycm9yRGVjcnlwdGluZyBvciB3YWl0aW5nRm9yS2V5ICovXG4gICAgICAgIHRoaXMuaW52YWxpZHNJbmRleCA9IG5ldyBTZXQoKTtcbiAgICAgICAgLyoqIEFuIGFycmF5IG9mIHV1aWRzIG9mIGl0ZW1zIHRoYXQgYXJlIG5vdCBtYXJrZWQgYXMgZGVsZXRlZCAqL1xuICAgICAgICB0aGlzLm5vbmRlbGV0ZWRJbmRleCA9IG5ldyBTZXQoKTtcbiAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICAgIHRoaXMubWFwID0gbWFwQ29weTtcbiAgICAgICAgICAgIHRoaXMudHlwZWRNYXAgPSB0eXBlZE1hcENvcHk7XG4gICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcCA9IHJlZmVyZW5jZU1hcENvcHk7XG4gICAgICAgICAgICB0aGlzLmNvbmZsaWN0TWFwID0gY29uZmxpY3RNYXBDb3B5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VNYXAgPSBuZXcgVXVpZE1hcCgpO1xuICAgICAgICAgICAgdGhpcy5jb25mbGljdE1hcCA9IG5ldyBVdWlkTWFwKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdXVpZHMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLm1hcCk7XG4gICAgfVxuICAgIGFsbChjb250ZW50VHlwZSkge1xuICAgICAgICBpZiAoY29udGVudFR5cGUpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbnRlbnRUeXBlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIGNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZEFycmF5KGVsZW1lbnRzLCB0aGlzLnR5cGVkTWFwW3R5cGVdIHx8IFtdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRNYXBbY29udGVudFR5cGVdPy5zbGljZSgpIHx8IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWFwKS5tYXAoKHV1aWQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBbdXVpZF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5kKHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwW3V1aWRdO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgbWFya2VkIGFzIGRpcnR5ICovXG4gICAgZGlydHlFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBBcnJheS5mcm9tKHRoaXMuZGlydHlJbmRleCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRBbGwodXVpZHMpO1xuICAgIH1cbiAgICAvKiogUmV0dXJucyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgZXJyb3JEZWNyeXB0aW5nIG9yIHdhaXRpbmdGb3JLZXkgKi9cbiAgICBpbnZhbGlkRWxlbWVudHMoKSB7XG4gICAgICAgIGNvbnN0IHV1aWRzID0gQXJyYXkuZnJvbSh0aGlzLmludmFsaWRzSW5kZXgpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQWxsKHV1aWRzKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBtYXJrZWQgYXMgZGVsZXRlZCAqL1xuICAgIG5vbmRlbGV0ZWRFbGVtZW50cygpIHtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBBcnJheS5mcm9tKHRoaXMubm9uZGVsZXRlZEluZGV4KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbCh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBpbmNsdWRlQmxhbmtzIElmIHRydWUgYW5kIGFuIGl0ZW0gaXMgbm90IGZvdW5kLCBhbiBgdW5kZWZpbmVkYCBlbGVtZW50XG4gICAgICogd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBmaW5kQWxsKHV1aWRzLCBpbmNsdWRlQmxhbmtzID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIHV1aWRzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5tYXBbaWRdO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQgfHwgaW5jbHVkZUJsYW5rcykge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgc2V0KGVsZW1lbnRzKSB7XG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gICAgICAgIGlmIChlbGVtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignQXR0ZW1wdGluZyB0byBzZXQgMCBlbGVtZW50cyBvbnRvIGNvbGxlY3Rpb24nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMubWFwW2VsZW1lbnQudXVpZF0gPSBlbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5zZXRUb1R5cGVkTWFwKGVsZW1lbnQpO1xuICAgICAgICAgICAgLyoqIERpcnR5IGluZGV4ICovXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlydHlJbmRleC5hZGQoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlydHlJbmRleC5kZWxldGUoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKiBJbnZhbGlkcyBpbmRleCAqL1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZXJyb3JEZWNyeXB0aW5nIHx8IGVsZW1lbnQud2FpdGluZ0ZvcktleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZHNJbmRleC5hZGQoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZHNJbmRleC5kZWxldGUoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50LmRlbGV0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5yZW1vdmVGcm9tTWFwKGVsZW1lbnQudXVpZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ub25kZWxldGVkSW5kZXguZGVsZXRlKGVsZW1lbnQudXVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vbmRlbGV0ZWRJbmRleC5hZGQoZWxlbWVudC51dWlkKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25mbGljdE9mID0gZWxlbWVudC5zYWZlQ29udGVudC5jb25mbGljdF9vZjtcbiAgICAgICAgICAgICAgICBpZiAoY29uZmxpY3RPZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbmZsaWN0TWFwLmVzdGFibGlzaFJlbGF0aW9uc2hpcChjb25mbGljdE9mLCBlbGVtZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlZmVyZW5jZU1hcC5zZXRBbGxSZWxhdGlvbnNoaXBzKGVsZW1lbnQudXVpZCwgZWxlbWVudC5yZWZlcmVuY2VzLm1hcCgocikgPT4gci51dWlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGlzY2FyZChlbGVtZW50cykge1xuICAgICAgICBlbGVtZW50cyA9IEFycmF5LmlzQXJyYXkoZWxlbWVudHMpID8gZWxlbWVudHMgOiBbZWxlbWVudHNdO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZWxlbWVudHMpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmxpY3RNYXAucmVtb3ZlRnJvbU1hcChlbGVtZW50LnV1aWQpO1xuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VNYXAucmVtb3ZlRnJvbU1hcChlbGVtZW50LnV1aWQpO1xuICAgICAgICAgICAgdGhpcy5kZWxldGVGcm9tVHlwZWRNYXAoZWxlbWVudCk7XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5tYXBbZWxlbWVudC51dWlkXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRUb1R5cGVkTWFwKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnR5cGVkTWFwW2VsZW1lbnQuY29udGVudF90eXBlXSB8fCBbXTtcbiAgICAgICAgcmVtb3ZlKGFycmF5LCB7IHV1aWQ6IGVsZW1lbnQudXVpZCB9KTtcbiAgICAgICAgYXJyYXkucHVzaChlbGVtZW50KTtcbiAgICAgICAgdGhpcy50eXBlZE1hcFtlbGVtZW50LmNvbnRlbnRfdHlwZV0gPSBhcnJheTtcbiAgICB9XG4gICAgZGVsZXRlRnJvbVR5cGVkTWFwKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSB0aGlzLnR5cGVkTWFwW2VsZW1lbnQuY29udGVudF90eXBlXSB8fCBbXTtcbiAgICAgICAgcmVtb3ZlKGFycmF5LCB7IHV1aWQ6IGVsZW1lbnQudXVpZCB9KTtcbiAgICAgICAgdGhpcy50eXBlZE1hcFtlbGVtZW50LmNvbnRlbnRfdHlwZV0gPSBhcnJheTtcbiAgICB9XG4gICAgdXVpZHNUaGF0UmVmZXJlbmNlVXVpZCh1dWlkKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZU1hcC5nZXRJbnZlcnNlUmVsYXRpb25zaGlwcyh1dWlkKTtcbiAgICB9XG4gICAgZWxlbWVudHNSZWZlcmVuY2luZ0VsZW1lbnQoZWxlbWVudCkge1xuICAgICAgICBjb25zdCB1dWlkcyA9IHRoaXMudXVpZHNUaGF0UmVmZXJlbmNlVXVpZChlbGVtZW50LnV1aWQpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kQWxsKHV1aWRzKTtcbiAgICB9XG4gICAgY29uZmxpY3RzT2YodXVpZCkge1xuICAgICAgICBjb25zdCB1dWlkcyA9IHRoaXMuY29uZmxpY3RNYXAuZ2V0RGlyZWN0UmVsYXRpb25zaGlwcyh1dWlkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEFsbCh1dWlkcyk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQkE7QUFBQTtBQUFBO0FBc0JBO0FBQ0E7QUF2QkE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQ0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBL0NBO0FBQUE7QUFBQTtBQWdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcERBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBekRBO0FBQUE7QUFBQTtBQTBEQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE3REE7QUFBQTtBQUFBO0FBaUVBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU9BO0FBQ0E7QUExRUE7QUFBQTtBQUFBO0FBNEVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQU1BO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQW5DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb0NBO0FBL0dBO0FBQUE7QUFBQTtBQWlIQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQXhIQTtBQUFBO0FBQUE7QUEwSEE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE5SEE7QUFBQTtBQUFBO0FBZ0lBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQW5JQTtBQUFBO0FBQUE7QUFxSUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBeklBO0FBQUE7QUFBQTtBQTJJQTtBQUNBO0FBQ0E7QUE3SUE7QUFBQTtBQUFBO0FBK0lBO0FBQ0E7QUFDQTtBQWpKQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/collection.ts\n')},"./lib/protocol/collection/collection_set.ts": /*!***************************************************!*\ !*** ./lib/protocol/collection/collection_set.ts ***! \***************************************************/ /*! exports provided: ImmutablePayloadCollectionSet */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImmutablePayloadCollectionSet", function() { return ImmutablePayloadCollectionSet; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar ImmutablePayloadCollectionSet = /*#__PURE__*/function () {\n /**\n * @param collections An array of ImmutablePayloadCollection objects.\n */\n function ImmutablePayloadCollectionSet(collections) {\n _classCallCheck(this, ImmutablePayloadCollectionSet);\n\n this.collections = collections;\n Object.freeze(this);\n }\n\n _createClass(ImmutablePayloadCollectionSet, [{\n key: "collectionForSource",\n value: function collectionForSource(source) {\n return this.collections.find(function (collection) {\n return collection.source === source;\n });\n }\n }]);\n\n return ImmutablePayloadCollectionSet;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9jb2xsZWN0aW9uX3NldC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9jb2xsZWN0aW9uL2NvbGxlY3Rpb25fc2V0LnRzPzQ1YmMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uU2V0IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY29sbGVjdGlvbnMgQW4gYXJyYXkgb2YgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gb2JqZWN0cy5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zID0gY29sbGVjdGlvbnM7XG4gICAgICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gICAgfVxuICAgIGNvbGxlY3Rpb25Gb3JTb3VyY2Uoc291cmNlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zLmZpbmQoY29sbGVjdGlvbiA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5zb3VyY2UgPT09IHNvdXJjZTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7OztBQUdBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/collection_set.ts\n')},"./lib/protocol/collection/item_collection.ts": /*!****************************************************!*\ !*** ./lib/protocol/collection/item_collection.ts ***! \****************************************************/ /*! exports provided: CollectionSort, ItemCollection */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CollectionSort", function() { return CollectionSort; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemCollection", function() { return ItemCollection; });\n/* harmony import */ var _collection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./collection */ "./lib/protocol/collection/collection.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\nvar CollectionSort;\n\n(function (CollectionSort) {\n CollectionSort["CreatedAt"] = "created_at";\n CollectionSort["UpdatedAt"] = "userModifiedDate";\n CollectionSort["Title"] = "title";\n})(CollectionSort || (CollectionSort = {}));\n/** The item collection class builds on mutable collection by providing an option to keep\n * items sorted and filtered. */\n\n\nvar ItemCollection = /*#__PURE__*/function (_MutableCollection) {\n _inherits(ItemCollection, _MutableCollection);\n\n function ItemCollection() {\n var _this;\n\n _classCallCheck(this, ItemCollection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ItemCollection).apply(this, arguments));\n _this.displaySortBy = {};\n _this.displayFilter = {};\n /** A display ready map of uuids-to-position in sorted array. i.e filteredMap[contentType]\n * returns {uuid_123: 1, uuid_456: 2}, where 1 and 2 are the positions of the element\n * in the sorted array. We keep track of positions so that when we want to re-sort or remove\n * and element, we don\'t have to search the entire sorted array to do so. */\n\n _this.filteredMap = {};\n /** A sorted representation of the filteredMap, where sortedMap[contentType] returns\n * an array of sorted elements, based on the current displaySortBy */\n\n _this.sortedMap = {};\n return _this;\n }\n\n _createClass(ItemCollection, [{\n key: "set",\n value: function set(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n\n _get(_getPrototypeOf(ItemCollection.prototype), "set", this).call(this, elements);\n\n this.filterSortElements(elements);\n }\n }, {\n key: "discard",\n value: function discard(elements) {\n elements = Array.isArray(elements) ? elements : [elements];\n\n _get(_getPrototypeOf(ItemCollection.prototype), "discard", this).call(this, elements);\n\n this.filterSortElements(elements);\n }\n /**\n * Sets an optional sortBy and filter for a given content type. These options will be\n * applied against a separate "display-only" record and not the master record. Passing\n * null options removes any existing options. sortBy is always required, but a filter is\n * not always required.\n * Note that sorting and filtering only applies to collections of type SNItem, and not\n * payloads. This is because we access item properties such as `pinned` and `title`.\n * @param filter A function that receives an element and returns a boolean indicating\n * whether the element passes the filter and should be in displayable results.\n */\n\n }, {\n key: "setDisplayOptions",\n value: function setDisplayOptions(contentType, sortBy, direction, filter) {\n var existingSortBy = this.displaySortBy[contentType];\n var existingFilter = this.displayFilter[contentType];\n /** If the sort value is unchanged, and we are not setting a new filter,\n * we return, as to not rebuild and resort all elements */\n\n if (existingSortBy && existingSortBy.key === sortBy && existingSortBy.dir === direction && !existingFilter && !filter) {\n return;\n }\n\n this.displaySortBy[contentType] = sortBy ? {\n key: sortBy,\n dir: direction\n } : undefined;\n this.displayFilter[contentType] = filter;\n /** Reset existing maps */\n\n this.filteredMap[contentType] = {};\n this.sortedMap[contentType] = [];\n /** Re-process all elements */\n\n var elements = this.all(contentType);\n\n if (elements.length > 0) {\n this.filterSortElements(elements);\n }\n }\n /** Returns the filtered and sorted list of elements for this content type,\n * according to the options set via `setDisplayOptions` */\n\n }, {\n key: "displayElements",\n value: function displayElements(contentType) {\n var elements = this.sortedMap[contentType];\n\n if (!elements) {\n throw Error("Attempting to access display elements for \\n non-configured content type ".concat(contentType));\n }\n\n return elements.slice();\n }\n }, {\n key: "filterSortElements",\n value: function filterSortElements(elements) {\n if (Object.keys(this.displaySortBy).length === 0) {\n return;\n }\n /** If a content type is added to this set, we are indicating the entire sorted\n * array will need to be re-sorted. The reason for sorting the entire array and not\n * just inserting an element using binary search is that we need to keep track of the\n * sorted index of an item so that we can look up and change its value without having\n * to search the array for it. */\n\n\n var typesNeedingResort = new Set();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = elements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var element = _step.value;\n var contentType = element.content_type;\n var sortBy = this.displaySortBy[contentType];\n /** Sort by is required, but filter is not */\n\n if (!sortBy) {\n continue;\n }\n\n var filter = this.displayFilter[contentType];\n /** Filtered content type map */\n\n var filteredCTMap = this.filteredMap[contentType];\n var sortedElements = this.sortedMap[contentType];\n /** If the element is deleted, or if it no longer exists in the primary map (because\n * it was discarded without neccessarily being marked as deleted), it does not pass\n * the filter. If no filter the element passes by default. */\n\n var passes = element.deleted || !this.map[element.uuid] ? false : filter ? filter(element) : true;\n var currentIndex = filteredCTMap[element.uuid];\n\n if (passes) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(currentIndex)) {\n /** Check to see if the element has changed its sort value. If so, we need to re-sort */\n var currentElement = sortedElements[currentIndex];\n var previousValue = currentElement[sortBy.key];\n var newValue = element[sortBy.key];\n /** Replace the current element with the new one. */\n\n sortedElements[currentIndex] = element;\n /** If the pinned status of the element has changed, it needs to be resorted */\n\n var pinChanged = currentElement.pinned !== element.pinned;\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["compareValues"])(previousValue, newValue) || pinChanged) {\n /** Needs resort because its re-sort value has changed,\n * and thus its position might change */\n typesNeedingResort.add(contentType);\n }\n } else {\n /** Has not yet been inserted */\n sortedElements.push(element);\n /** Needs re-sort because we\'re just pushing the element to the end here */\n\n typesNeedingResort.add(contentType);\n }\n } else {\n /** Doesn\'t pass filter, remove from sorted and filtered */\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(currentIndex)) {\n delete filteredCTMap[element.uuid];\n /** We don\'t yet remove the element directly from the array, since mutating\n * the array inside a loop could render all other upcoming indexes invalid */\n\n sortedElements[currentIndex] = undefined;\n /** Since an element is being removed from the array, we need to recompute\n * the new positions for elements that are staying */\n\n typesNeedingResort.add(contentType);\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = typesNeedingResort.values()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _contentType = _step2.value;\n this.resortContentType(_contentType);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }, {\n key: "resortContentType",\n value: function resortContentType(contentType) {\n var sortedElements = this.sortedMap[contentType];\n var sortBy = this.displaySortBy[contentType];\n var filteredCTMap = this.filteredMap[contentType];\n /** Resort the elements array, and update the saved positions */\n\n /** @O(n * log(n)) */\n\n var sortFn = function sortFn(a, b) {\n var skipPinnedCheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n /** If the elements are undefined, move to beginning */\n if (!a) {\n return -1;\n }\n\n if (!b) {\n return 1;\n }\n\n if (!skipPinnedCheck) {\n if (a.pinned && b.pinned) {\n return sortFn(a, b, true);\n }\n\n if (a.pinned) {\n return -1;\n }\n\n if (b.pinned) {\n return 1;\n }\n }\n\n var aValue = a[sortBy.key] || \'\';\n var bValue = b[sortBy.key] || \'\';\n var vector = 1;\n\n if (sortBy.dir === \'asc\') {\n vector *= -1;\n }\n\n if (sortBy.key === CollectionSort.Title) {\n aValue = aValue.toLowerCase();\n bValue = bValue.toLowerCase();\n\n if (aValue.length === 0 && bValue.length === 0) {\n return 0;\n } else if (aValue.length === 0 && bValue.length !== 0) {\n return 1 * vector;\n } else if (aValue.length !== 0 && bValue.length === 0) {\n return -1 * vector;\n } else {\n vector *= -1;\n }\n }\n\n if (aValue > bValue) {\n return -1 * vector;\n } else if (aValue < bValue) {\n return 1 * vector;\n }\n\n return 0;\n };\n\n var resorted = sortedElements.sort(function (a, b) {\n return sortFn(a, b);\n });\n /** Now that resorted contains the sorted elements (but also can contain undefined element)\n * we create another array that filters out any of the undefinedes. We also keep track of the\n * current index while we loop and set that in the filteredCTMap. */\n\n var cleaned = [];\n var currentIndex = 0;\n /** @O(n) */\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = resorted[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var element = _step3.value;\n\n if (!element) {\n continue;\n }\n\n cleaned.push(element);\n filteredCTMap[element.uuid] = currentIndex;\n currentIndex++;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n this.sortedMap[contentType] = cleaned;\n }\n }]);\n\n return ItemCollection;\n}(_collection__WEBPACK_IMPORTED_MODULE_0__["MutableCollection"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9pdGVtX2NvbGxlY3Rpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9pdGVtX2NvbGxlY3Rpb24udHM/MzUzYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNdXRhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgY29tcGFyZVZhbHVlcyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IHZhciBDb2xsZWN0aW9uU29ydDtcbihmdW5jdGlvbiAoQ29sbGVjdGlvblNvcnQpIHtcbiAgICBDb2xsZWN0aW9uU29ydFtcIkNyZWF0ZWRBdFwiXSA9IFwiY3JlYXRlZF9hdFwiO1xuICAgIENvbGxlY3Rpb25Tb3J0W1wiVXBkYXRlZEF0XCJdID0gXCJ1c2VyTW9kaWZpZWREYXRlXCI7XG4gICAgQ29sbGVjdGlvblNvcnRbXCJUaXRsZVwiXSA9IFwidGl0bGVcIjtcbn0pKENvbGxlY3Rpb25Tb3J0IHx8IChDb2xsZWN0aW9uU29ydCA9IHt9KSk7XG4vKiogVGhlIGl0ZW0gY29sbGVjdGlvbiBjbGFzcyBidWlsZHMgb24gbXV0YWJsZSBjb2xsZWN0aW9uIGJ5IHByb3ZpZGluZyBhbiBvcHRpb24gdG8ga2VlcFxuICogaXRlbXMgc29ydGVkIGFuZCBmaWx0ZXJlZC4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtQ29sbGVjdGlvbiBleHRlbmRzIE11dGFibGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U29ydEJ5ID0ge307XG4gICAgICAgIHRoaXMuZGlzcGxheUZpbHRlciA9IHt9O1xuICAgICAgICAvKiogQSBkaXNwbGF5IHJlYWR5IG1hcCBvZiB1dWlkcy10by1wb3NpdGlvbiBpbiBzb3J0ZWQgYXJyYXkuIGkuZSBmaWx0ZXJlZE1hcFtjb250ZW50VHlwZV1cbiAgICAgICAgICogcmV0dXJucyB7dXVpZF8xMjM6IDEsIHV1aWRfNDU2OiAyfSwgd2hlcmUgMSBhbmQgMiBhcmUgdGhlIHBvc2l0aW9ucyBvZiB0aGUgZWxlbWVudFxuICAgICAgICAgKiBpbiB0aGUgc29ydGVkIGFycmF5LiBXZSBrZWVwIHRyYWNrIG9mIHBvc2l0aW9ucyBzbyB0aGF0IHdoZW4gd2Ugd2FudCB0byByZS1zb3J0IG9yIHJlbW92ZVxuICAgICAgICAgKiBhbmQgZWxlbWVudCwgd2UgZG9uJ3QgaGF2ZSB0byBzZWFyY2ggdGhlIGVudGlyZSBzb3J0ZWQgYXJyYXkgdG8gZG8gc28uICovXG4gICAgICAgIHRoaXMuZmlsdGVyZWRNYXAgPSB7fTtcbiAgICAgICAgLyoqIEEgc29ydGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBmaWx0ZXJlZE1hcCwgd2hlcmUgc29ydGVkTWFwW2NvbnRlbnRUeXBlXSByZXR1cm5zXG4gICAgICAgICAqIGFuIGFycmF5IG9mIHNvcnRlZCBlbGVtZW50cywgYmFzZWQgb24gdGhlIGN1cnJlbnQgZGlzcGxheVNvcnRCeSAqL1xuICAgICAgICB0aGlzLnNvcnRlZE1hcCA9IHt9O1xuICAgIH1cbiAgICBzZXQoZWxlbWVudHMpIHtcbiAgICAgICAgZWxlbWVudHMgPSBBcnJheS5pc0FycmF5KGVsZW1lbnRzKSA/IGVsZW1lbnRzIDogW2VsZW1lbnRzXTtcbiAgICAgICAgc3VwZXIuc2V0KGVsZW1lbnRzKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTb3J0RWxlbWVudHMoZWxlbWVudHMpO1xuICAgIH1cbiAgICBkaXNjYXJkKGVsZW1lbnRzKSB7XG4gICAgICAgIGVsZW1lbnRzID0gQXJyYXkuaXNBcnJheShlbGVtZW50cykgPyBlbGVtZW50cyA6IFtlbGVtZW50c107XG4gICAgICAgIHN1cGVyLmRpc2NhcmQoZWxlbWVudHMpO1xuICAgICAgICB0aGlzLmZpbHRlclNvcnRFbGVtZW50cyhlbGVtZW50cyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgYW4gb3B0aW9uYWwgc29ydEJ5IGFuZCBmaWx0ZXIgZm9yIGEgZ2l2ZW4gY29udGVudCB0eXBlLiBUaGVzZSBvcHRpb25zIHdpbGwgYmVcbiAgICAgKiBhcHBsaWVkIGFnYWluc3QgYSBzZXBhcmF0ZSBcImRpc3BsYXktb25seVwiIHJlY29yZCBhbmQgbm90IHRoZSBtYXN0ZXIgcmVjb3JkLiBQYXNzaW5nXG4gICAgICogbnVsbCBvcHRpb25zIHJlbW92ZXMgYW55IGV4aXN0aW5nIG9wdGlvbnMuIHNvcnRCeSBpcyBhbHdheXMgcmVxdWlyZWQsIGJ1dCBhIGZpbHRlciBpc1xuICAgICAqIG5vdCBhbHdheXMgcmVxdWlyZWQuXG4gICAgICogTm90ZSB0aGF0IHNvcnRpbmcgYW5kIGZpbHRlcmluZyBvbmx5IGFwcGxpZXMgdG8gY29sbGVjdGlvbnMgb2YgdHlwZSBTTkl0ZW0sIGFuZCBub3RcbiAgICAgKiBwYXlsb2Fkcy4gVGhpcyBpcyBiZWNhdXNlIHdlIGFjY2VzcyBpdGVtIHByb3BlcnRpZXMgc3VjaCBhcyBgcGlubmVkYCBhbmQgYHRpdGxlYC5cbiAgICAgKiBAcGFyYW0gZmlsdGVyIEEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBhbiBlbGVtZW50IGFuZCByZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nXG4gICAgICogd2hldGhlciB0aGUgZWxlbWVudCBwYXNzZXMgdGhlIGZpbHRlciBhbmQgc2hvdWxkIGJlIGluIGRpc3BsYXlhYmxlIHJlc3VsdHMuXG4gICAgICovXG4gICAgc2V0RGlzcGxheU9wdGlvbnMoY29udGVudFR5cGUsIHNvcnRCeSwgZGlyZWN0aW9uLCBmaWx0ZXIpIHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdTb3J0QnkgPSB0aGlzLmRpc3BsYXlTb3J0QnlbY29udGVudFR5cGVdO1xuICAgICAgICBjb25zdCBleGlzdGluZ0ZpbHRlciA9IHRoaXMuZGlzcGxheUZpbHRlcltjb250ZW50VHlwZV07XG4gICAgICAgIC8qKiBJZiB0aGUgc29ydCB2YWx1ZSBpcyB1bmNoYW5nZWQsIGFuZCB3ZSBhcmUgbm90IHNldHRpbmcgYSBuZXcgZmlsdGVyLFxuICAgICAgICAgKiB3ZSByZXR1cm4sIGFzIHRvIG5vdCByZWJ1aWxkIGFuZCByZXNvcnQgYWxsIGVsZW1lbnRzICovXG4gICAgICAgIGlmIChleGlzdGluZ1NvcnRCeSAmJlxuICAgICAgICAgICAgZXhpc3RpbmdTb3J0Qnkua2V5ID09PSBzb3J0QnkgJiYgZXhpc3RpbmdTb3J0QnkuZGlyID09PSBkaXJlY3Rpb24gJiZcbiAgICAgICAgICAgICFleGlzdGluZ0ZpbHRlciAmJiAhZmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5U29ydEJ5W2NvbnRlbnRUeXBlXSA9IHNvcnRCeVxuICAgICAgICAgICAgPyB7IGtleTogc29ydEJ5LCBkaXI6IGRpcmVjdGlvbiB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5kaXNwbGF5RmlsdGVyW2NvbnRlbnRUeXBlXSA9IGZpbHRlcjtcbiAgICAgICAgLyoqIFJlc2V0IGV4aXN0aW5nIG1hcHMgKi9cbiAgICAgICAgdGhpcy5maWx0ZXJlZE1hcFtjb250ZW50VHlwZV0gPSB7fTtcbiAgICAgICAgdGhpcy5zb3J0ZWRNYXBbY29udGVudFR5cGVdID0gW107XG4gICAgICAgIC8qKiBSZS1wcm9jZXNzIGFsbCBlbGVtZW50cyAqL1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuYWxsKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyU29ydEVsZW1lbnRzKGVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogUmV0dXJucyB0aGUgZmlsdGVyZWQgYW5kIHNvcnRlZCBsaXN0IG9mIGVsZW1lbnRzIGZvciB0aGlzIGNvbnRlbnQgdHlwZSxcbiAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMgc2V0IHZpYSBgc2V0RGlzcGxheU9wdGlvbnNgICovXG4gICAgZGlzcGxheUVsZW1lbnRzKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5zb3J0ZWRNYXBbY29udGVudFR5cGVdO1xuICAgICAgICBpZiAoIWVsZW1lbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgQXR0ZW1wdGluZyB0byBhY2Nlc3MgZGlzcGxheSBlbGVtZW50cyBmb3IgXG4gICAgICAgIG5vbi1jb25maWd1cmVkIGNvbnRlbnQgdHlwZSAke2NvbnRlbnRUeXBlfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbGVtZW50cy5zbGljZSgpO1xuICAgIH1cbiAgICBmaWx0ZXJTb3J0RWxlbWVudHMoZWxlbWVudHMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZGlzcGxheVNvcnRCeSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqIElmIGEgY29udGVudCB0eXBlIGlzIGFkZGVkIHRvIHRoaXMgc2V0LCB3ZSBhcmUgaW5kaWNhdGluZyB0aGUgZW50aXJlIHNvcnRlZFxuICAgICAgICAgKiBhcnJheSB3aWxsIG5lZWQgdG8gYmUgcmUtc29ydGVkLiBUaGUgcmVhc29uIGZvciBzb3J0aW5nIHRoZSBlbnRpcmUgYXJyYXkgYW5kIG5vdFxuICAgICAgICAgKiBqdXN0IGluc2VydGluZyBhbiBlbGVtZW50IHVzaW5nIGJpbmFyeSBzZWFyY2ggaXMgdGhhdCB3ZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgICAqIHNvcnRlZCBpbmRleCBvZiBhbiBpdGVtIHNvIHRoYXQgd2UgY2FuIGxvb2sgdXAgYW5kIGNoYW5nZSBpdHMgdmFsdWUgd2l0aG91dCBoYXZpbmdcbiAgICAgICAgICogdG8gc2VhcmNoIHRoZSBhcnJheSBmb3IgaXQuICovXG4gICAgICAgIGNvbnN0IHR5cGVzTmVlZGluZ1Jlc29ydCA9IG5ldyBTZXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IGVsZW1lbnQuY29udGVudF90eXBlO1xuICAgICAgICAgICAgY29uc3Qgc29ydEJ5ID0gdGhpcy5kaXNwbGF5U29ydEJ5W2NvbnRlbnRUeXBlXTtcbiAgICAgICAgICAgIC8qKiBTb3J0IGJ5IGlzIHJlcXVpcmVkLCBidXQgZmlsdGVyIGlzIG5vdCAqL1xuICAgICAgICAgICAgaWYgKCFzb3J0QnkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGlzcGxheUZpbHRlcltjb250ZW50VHlwZV07XG4gICAgICAgICAgICAvKiogRmlsdGVyZWQgY29udGVudCB0eXBlIG1hcCAqL1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRDVE1hcCA9IHRoaXMuZmlsdGVyZWRNYXBbY29udGVudFR5cGVdO1xuICAgICAgICAgICAgY29uc3Qgc29ydGVkRWxlbWVudHMgPSB0aGlzLnNvcnRlZE1hcFtjb250ZW50VHlwZV07XG4gICAgICAgICAgICAvKiogSWYgdGhlIGVsZW1lbnQgaXMgZGVsZXRlZCwgb3IgaWYgaXQgbm8gbG9uZ2VyIGV4aXN0cyBpbiB0aGUgcHJpbWFyeSBtYXAgKGJlY2F1c2VcbiAgICAgICAgICAgICAqIGl0IHdhcyBkaXNjYXJkZWQgd2l0aG91dCBuZWNjZXNzYXJpbHkgYmVpbmcgbWFya2VkIGFzIGRlbGV0ZWQpLCBpdCBkb2VzIG5vdCBwYXNzXG4gICAgICAgICAgICAgKiB0aGUgZmlsdGVyLiBJZiBubyBmaWx0ZXIgdGhlIGVsZW1lbnQgcGFzc2VzIGJ5IGRlZmF1bHQuICovXG4gICAgICAgICAgICBjb25zdCBwYXNzZXMgPSAoZWxlbWVudC5kZWxldGVkIHx8ICF0aGlzLm1hcFtlbGVtZW50LnV1aWRdKSA/IGZhbHNlIDogKGZpbHRlciA/IGZpbHRlcihlbGVtZW50KSA6IHRydWUpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gZmlsdGVyZWRDVE1hcFtlbGVtZW50LnV1aWRdO1xuICAgICAgICAgICAgaWYgKHBhc3Nlcykge1xuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoY3VycmVudEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICAvKiogQ2hlY2sgdG8gc2VlIGlmIHRoZSBlbGVtZW50IGhhcyBjaGFuZ2VkIGl0cyBzb3J0IHZhbHVlLiBJZiBzbywgd2UgbmVlZCB0byByZS1zb3J0ICovXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gc29ydGVkRWxlbWVudHNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGN1cnJlbnRFbGVtZW50W3NvcnRCeS5rZXldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGVsZW1lbnRbc29ydEJ5LmtleV07XG4gICAgICAgICAgICAgICAgICAgIC8qKiBSZXBsYWNlIHRoZSBjdXJyZW50IGVsZW1lbnQgd2l0aCB0aGUgbmV3IG9uZS4gKi9cbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRWxlbWVudHNbY3VycmVudEluZGV4XSA9IGVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBJZiB0aGUgcGlubmVkIHN0YXR1cyBvZiB0aGUgZWxlbWVudCBoYXMgY2hhbmdlZCwgaXQgbmVlZHMgdG8gYmUgcmVzb3J0ZWQgKi9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGluQ2hhbmdlZCA9IGN1cnJlbnRFbGVtZW50LnBpbm5lZCAhPT0gZWxlbWVudC5waW5uZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY29tcGFyZVZhbHVlcyhwcmV2aW91c1ZhbHVlLCBuZXdWYWx1ZSkgfHwgcGluQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLyoqIE5lZWRzIHJlc29ydCBiZWNhdXNlIGl0cyByZS1zb3J0IHZhbHVlIGhhcyBjaGFuZ2VkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIHRodXMgaXRzIHBvc2l0aW9uIG1pZ2h0IGNoYW5nZSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNOZWVkaW5nUmVzb3J0LmFkZChjb250ZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBIYXMgbm90IHlldCBiZWVuIGluc2VydGVkICovXG4gICAgICAgICAgICAgICAgICAgIHNvcnRlZEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIC8qKiBOZWVkcyByZS1zb3J0IGJlY2F1c2Ugd2UncmUganVzdCBwdXNoaW5nIHRoZSBlbGVtZW50IHRvIHRoZSBlbmQgaGVyZSAqL1xuICAgICAgICAgICAgICAgICAgICB0eXBlc05lZWRpbmdSZXNvcnQuYWRkKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiogRG9lc24ndCBwYXNzIGZpbHRlciwgcmVtb3ZlIGZyb20gc29ydGVkIGFuZCBmaWx0ZXJlZCAqL1xuICAgICAgICAgICAgICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoY3VycmVudEluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZmlsdGVyZWRDVE1hcFtlbGVtZW50LnV1aWRdO1xuICAgICAgICAgICAgICAgICAgICAvKiogV2UgZG9uJ3QgeWV0IHJlbW92ZSB0aGUgZWxlbWVudCBkaXJlY3RseSBmcm9tIHRoZSBhcnJheSwgc2luY2UgbXV0YXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICogdGhlIGFycmF5IGluc2lkZSBhIGxvb3AgY291bGQgcmVuZGVyIGFsbCBvdGhlciB1cGNvbWluZyBpbmRleGVzIGludmFsaWQgKi9cbiAgICAgICAgICAgICAgICAgICAgc29ydGVkRWxlbWVudHNbY3VycmVudEluZGV4XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgLyoqIFNpbmNlIGFuIGVsZW1lbnQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBhcnJheSwgd2UgbmVlZCB0byByZWNvbXB1dGVcbiAgICAgICAgICAgICAgICAgICAgICogdGhlIG5ldyBwb3NpdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgYXJlIHN0YXlpbmcgKi9cbiAgICAgICAgICAgICAgICAgICAgdHlwZXNOZWVkaW5nUmVzb3J0LmFkZChjb250ZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgY29udGVudFR5cGUgb2YgdHlwZXNOZWVkaW5nUmVzb3J0LnZhbHVlcygpKSB7XG4gICAgICAgICAgICB0aGlzLnJlc29ydENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXNvcnRDb250ZW50VHlwZShjb250ZW50VHlwZSkge1xuICAgICAgICBjb25zdCBzb3J0ZWRFbGVtZW50cyA9IHRoaXMuc29ydGVkTWFwW2NvbnRlbnRUeXBlXTtcbiAgICAgICAgY29uc3Qgc29ydEJ5ID0gdGhpcy5kaXNwbGF5U29ydEJ5W2NvbnRlbnRUeXBlXTtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRDVE1hcCA9IHRoaXMuZmlsdGVyZWRNYXBbY29udGVudFR5cGVdO1xuICAgICAgICAvKiogUmVzb3J0IHRoZSBlbGVtZW50cyBhcnJheSwgYW5kIHVwZGF0ZSB0aGUgc2F2ZWQgcG9zaXRpb25zICovXG4gICAgICAgIC8qKiBATyhuICogbG9nKG4pKSAqL1xuICAgICAgICBjb25zdCBzb3J0Rm4gPSAoYSwgYiwgc2tpcFBpbm5lZENoZWNrID0gZmFsc2UpID0+IHtcbiAgICAgICAgICAgIC8qKiBJZiB0aGUgZWxlbWVudHMgYXJlIHVuZGVmaW5lZCwgbW92ZSB0byBiZWdpbm5pbmcgKi9cbiAgICAgICAgICAgIGlmICghYSkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFza2lwUGlubmVkQ2hlY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoYS5waW5uZWQgJiYgYi5waW5uZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNvcnRGbihhLCBiLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGEucGlubmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGIucGlubmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBhVmFsdWUgPSBhW3NvcnRCeS5rZXldIHx8ICcnO1xuICAgICAgICAgICAgbGV0IGJWYWx1ZSA9IGJbc29ydEJ5LmtleV0gfHwgJyc7XG4gICAgICAgICAgICBsZXQgdmVjdG9yID0gMTtcbiAgICAgICAgICAgIGlmIChzb3J0QnkuZGlyID09PSAnYXNjJykge1xuICAgICAgICAgICAgICAgIHZlY3RvciAqPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzb3J0Qnkua2V5ID09PSBDb2xsZWN0aW9uU29ydC5UaXRsZSkge1xuICAgICAgICAgICAgICAgIGFWYWx1ZSA9IGFWYWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGJWYWx1ZSA9IGJWYWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIGlmIChhVmFsdWUubGVuZ3RoID09PSAwICYmIGJWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFWYWx1ZS5sZW5ndGggPT09IDAgJiYgYlZhbHVlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMSAqIHZlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVZhbHVlLmxlbmd0aCAhPT0gMCAmJiBiVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMSAqIHZlY3RvcjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZlY3RvciAqPSAtMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYVZhbHVlID4gYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xICogdmVjdG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYVZhbHVlIDwgYlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDEgKiB2ZWN0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzb3J0ZWQgPSBzb3J0ZWRFbGVtZW50cy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc29ydEZuKGEsIGIpO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqIE5vdyB0aGF0IHJlc29ydGVkIGNvbnRhaW5zIHRoZSBzb3J0ZWQgZWxlbWVudHMgKGJ1dCBhbHNvIGNhbiBjb250YWluIHVuZGVmaW5lZCBlbGVtZW50KVxuICAgICAgICAgKiB3ZSBjcmVhdGUgYW5vdGhlciBhcnJheSB0aGF0IGZpbHRlcnMgb3V0IGFueSBvZiB0aGUgdW5kZWZpbmVkZXMuIFdlIGFsc28ga2VlcCB0cmFjayBvZiB0aGVcbiAgICAgICAgICogY3VycmVudCBpbmRleCB3aGlsZSB3ZSBsb29wIGFuZCBzZXQgdGhhdCBpbiB0aGUgZmlsdGVyZWRDVE1hcC4gKi9cbiAgICAgICAgY29uc3QgY2xlYW5lZCA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgLyoqIEBPKG4pICovXG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiByZXNvcnRlZCkge1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjbGVhbmVkLnB1c2goZWxlbWVudCk7XG4gICAgICAgICAgICBmaWx0ZXJlZENUTWFwW2VsZW1lbnQudXVpZF0gPSBjdXJyZW50SW5kZXg7XG4gICAgICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNvcnRlZE1hcFtjb250ZW50VHlwZV0gPSBjbGVhbmVkO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTs7O0FBRUE7QUFYQTtBQVlBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFlQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQXhCQTtBQUFBO0FBQUE7QUFtQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBekRBO0FBQUE7QUFBQTtBQTREQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBbEVBO0FBQUE7QUFBQTtBQW9FQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQUtBO0FBVEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBN0RBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4REE7QUFBQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlFQTtBQXBJQTtBQUFBO0FBQUE7QUFzSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWdFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBdkVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXVFQTtBQUNBO0FBOU1BO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/collection/item_collection.ts\n')},"./lib/protocol/collection/payload_collection.ts": /*!*******************************************************!*\ !*** ./lib/protocol/collection/payload_collection.ts ***! \*******************************************************/ /*! exports provided: ImmutablePayloadCollection */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImmutablePayloadCollection", function() { return ImmutablePayloadCollection; });\n/* harmony import */ var _collection__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./collection */ "./lib/protocol/collection/collection.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n/**\n * A collection of payloads coming from a single source.\n */\n\nvar ImmutablePayloadCollection = /*#__PURE__*/function (_MutableCollection) {\n _inherits(ImmutablePayloadCollection, _MutableCollection);\n\n function ImmutablePayloadCollection() {\n _classCallCheck(this, ImmutablePayloadCollection);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(ImmutablePayloadCollection).apply(this, arguments));\n }\n\n _createClass(ImmutablePayloadCollection, [{\n key: "payloads",\n get: function get() {\n return this.all();\n }\n }], [{\n key: "WithPayloads",\n\n /** We don\'t use a constructor for this because we don\'t want the constructor to have\n * side-effects, such as calling collection.set(). */\n value: function WithPayloads() {\n var payloads = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var source = arguments.length > 1 ? arguments[1] : undefined;\n var collection = new ImmutablePayloadCollection();\n collection.source = source;\n\n if (payloads.length > 0) {\n collection.set(payloads);\n }\n\n Object.freeze(collection);\n return collection;\n }\n }, {\n key: "FromCollection",\n value: function FromCollection(collection) {\n var mapCopy = Object.freeze(Object.assign({}, collection.map));\n var typedMapCopy = Object.freeze(Object.assign({}, collection.typedMap));\n var referenceMapCopy = Object.freeze(collection.referenceMap.makeCopy());\n var conflictMapCopy = Object.freeze(collection.conflictMap.makeCopy());\n var result = new ImmutablePayloadCollection(true, mapCopy, typedMapCopy, referenceMapCopy, conflictMapCopy);\n Object.freeze(result);\n return result;\n }\n }]);\n\n return ImmutablePayloadCollection;\n}(_collection__WEBPACK_IMPORTED_MODULE_0__["MutableCollection"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb24udHM/MWYwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNdXRhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4vY29sbGVjdGlvbic7XG4vKipcbiAqIEEgY29sbGVjdGlvbiBvZiBwYXlsb2FkcyBjb21pbmcgZnJvbSBhIHNpbmdsZSBzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiBleHRlbmRzIE11dGFibGVDb2xsZWN0aW9uIHtcbiAgICAvKiogV2UgZG9uJ3QgdXNlIGEgY29uc3RydWN0b3IgZm9yIHRoaXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRoZSBjb25zdHJ1Y3RvciB0byBoYXZlXG4gICAgICogc2lkZS1lZmZlY3RzLCBzdWNoIGFzIGNhbGxpbmcgY29sbGVjdGlvbi5zZXQoKS4gKi9cbiAgICBzdGF0aWMgV2l0aFBheWxvYWRzKHBheWxvYWRzID0gW10sIHNvdXJjZSkge1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uKCk7XG4gICAgICAgIGNvbGxlY3Rpb24uc291cmNlID0gc291cmNlO1xuICAgICAgICBpZiAocGF5bG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sbGVjdGlvbi5zZXQocGF5bG9hZHMpO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5mcmVlemUoY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9uO1xuICAgIH1cbiAgICBzdGF0aWMgRnJvbUNvbGxlY3Rpb24oY29sbGVjdGlvbikge1xuICAgICAgICBjb25zdCBtYXBDb3B5ID0gT2JqZWN0LmZyZWV6ZShPYmplY3QuYXNzaWduKHt9LCBjb2xsZWN0aW9uLm1hcCkpO1xuICAgICAgICBjb25zdCB0eXBlZE1hcENvcHkgPSBPYmplY3QuZnJlZXplKE9iamVjdC5hc3NpZ24oe30sIGNvbGxlY3Rpb24udHlwZWRNYXApKTtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlTWFwQ29weSA9IE9iamVjdC5mcmVlemUoY29sbGVjdGlvbi5yZWZlcmVuY2VNYXAubWFrZUNvcHkoKSk7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0TWFwQ29weSA9IE9iamVjdC5mcmVlemUoY29sbGVjdGlvbi5jb25mbGljdE1hcC5tYWtlQ29weSgpKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gbmV3IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uKHRydWUsIG1hcENvcHksIHR5cGVkTWFwQ29weSwgcmVmZXJlbmNlTWFwQ29weSwgY29uZmxpY3RNYXBDb3B5KTtcbiAgICAgICAgT2JqZWN0LmZyZWV6ZShyZXN1bHQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBnZXQgcGF5bG9hZHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7OztBQUdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQXNCQTtBQUNBO0FBdkJBO0FBQUE7QUFDQTtBQUFBOztBQURBO0FBR0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXBCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/payload_collection.ts\n')},"./lib/protocol/collection/uuid_map.ts": /*!*********************************************!*\ !*** ./lib/protocol/collection/uuid_map.ts ***! \*********************************************/ /*! exports provided: UuidMap */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UuidMap", function() { return UuidMap; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar UuidMap = /*#__PURE__*/function () {\n function UuidMap() {\n _classCallCheck(this, UuidMap);\n\n /** uuid to uuids that we have a relationship with */\n this.directMap = {};\n /** uuid to uuids that have a relationship with us */\n\n this.inverseMap = {};\n }\n\n _createClass(UuidMap, [{\n key: "makeCopy",\n value: function makeCopy() {\n var copy = new UuidMap();\n copy.directMap = Object.assign({}, this.directMap);\n copy.inverseMap = Object.assign({}, this.inverseMap);\n return copy;\n }\n }, {\n key: "getDirectRelationships",\n value: function getDirectRelationships(uuid) {\n return this.directMap[uuid] || [];\n }\n }, {\n key: "getInverseRelationships",\n value: function getInverseRelationships(uuid) {\n return this.inverseMap[uuid] || [];\n }\n }, {\n key: "establishRelationship",\n value: function establishRelationship(uuidA, uuidB) {\n this.establishDirectRelationship(uuidA, uuidB);\n this.establishInverseRelationship(uuidA, uuidB);\n }\n }, {\n key: "deestablishRelationship",\n value: function deestablishRelationship(uuidA, uuidB) {\n this.deestablishDirectRelationship(uuidA, uuidB);\n this.deestablishInverseRelationship(uuidA, uuidB);\n }\n }, {\n key: "setAllRelationships",\n value: function setAllRelationships(uuid, relationships) {\n var previousDirect = this.directMap[uuid] || [];\n this.directMap[uuid] = relationships;\n /** Remove all previous values in case relationships have changed\n * The updated references will be added afterwards.\n */\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = previousDirect[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var previousRelationship = _step.value;\n this.deestablishInverseRelationship(uuid, previousRelationship);\n }\n /** Now map current relationships */\n\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = relationships[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var newRelationship = _step2.value;\n this.establishInverseRelationship(uuid, newRelationship);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }, {\n key: "removeFromMap",\n value: function removeFromMap(uuid) {\n /** Items that we reference */\n var directReferences = this.directMap[uuid] || [];\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = directReferences[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var directReference = _step3.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(this.inverseMap[directReference] || [], uuid);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n delete this.directMap[uuid];\n /** Items that are referencing us */\n\n var inverseReferences = this.inverseMap[uuid] || [];\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = inverseReferences[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var inverseReference = _step4.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(this.directMap[inverseReference] || [], uuid);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n delete this.inverseMap[uuid];\n }\n }, {\n key: "establishDirectRelationship",\n value: function establishDirectRelationship(uuidA, uuidB) {\n var index = this.directMap[uuidA] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["addIfUnique"])(index, uuidB);\n this.directMap[uuidA] = index;\n }\n }, {\n key: "establishInverseRelationship",\n value: function establishInverseRelationship(uuidA, uuidB) {\n var inverseIndex = this.inverseMap[uuidB] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["addIfUnique"])(inverseIndex, uuidA);\n this.inverseMap[uuidB] = inverseIndex;\n }\n }, {\n key: "deestablishDirectRelationship",\n value: function deestablishDirectRelationship(uuidA, uuidB) {\n var index = this.directMap[uuidA] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(index, uuidB);\n this.directMap[uuidA] = index;\n }\n }, {\n key: "deestablishInverseRelationship",\n value: function deestablishInverseRelationship(uuidA, uuidB) {\n var inverseIndex = this.inverseMap[uuidB] || [];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(inverseIndex, uuidA);\n this.inverseMap[uuidB] = inverseIndex;\n }\n }]);\n\n return UuidMap;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvY29sbGVjdGlvbi91dWlkX21hcC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9jb2xsZWN0aW9uL3V1aWRfbWFwLnRzP2U2ZmQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkSWZVbmlxdWUsIHJlbW92ZUZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIFV1aWRNYXAge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKiogdXVpZCB0byB1dWlkcyB0aGF0IHdlIGhhdmUgYSByZWxhdGlvbnNoaXAgd2l0aCAqL1xuICAgICAgICB0aGlzLmRpcmVjdE1hcCA9IHt9O1xuICAgICAgICAvKiogdXVpZCB0byB1dWlkcyB0aGF0IGhhdmUgYSByZWxhdGlvbnNoaXAgd2l0aCB1cyAqL1xuICAgICAgICB0aGlzLmludmVyc2VNYXAgPSB7fTtcbiAgICB9XG4gICAgbWFrZUNvcHkoKSB7XG4gICAgICAgIGNvbnN0IGNvcHkgPSBuZXcgVXVpZE1hcCgpO1xuICAgICAgICBjb3B5LmRpcmVjdE1hcCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuZGlyZWN0TWFwKTtcbiAgICAgICAgY29weS5pbnZlcnNlTWFwID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5pbnZlcnNlTWFwKTtcbiAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfVxuICAgIGdldERpcmVjdFJlbGF0aW9uc2hpcHModXVpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3RNYXBbdXVpZF0gfHwgW107XG4gICAgfVxuICAgIGdldEludmVyc2VSZWxhdGlvbnNoaXBzKHV1aWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW52ZXJzZU1hcFt1dWlkXSB8fCBbXTtcbiAgICB9XG4gICAgZXN0YWJsaXNoUmVsYXRpb25zaGlwKHV1aWRBLCB1dWlkQikge1xuICAgICAgICB0aGlzLmVzdGFibGlzaERpcmVjdFJlbGF0aW9uc2hpcCh1dWlkQSwgdXVpZEIpO1xuICAgICAgICB0aGlzLmVzdGFibGlzaEludmVyc2VSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKTtcbiAgICB9XG4gICAgZGVlc3RhYmxpc2hSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKSB7XG4gICAgICAgIHRoaXMuZGVlc3RhYmxpc2hEaXJlY3RSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKTtcbiAgICAgICAgdGhpcy5kZWVzdGFibGlzaEludmVyc2VSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKTtcbiAgICB9XG4gICAgc2V0QWxsUmVsYXRpb25zaGlwcyh1dWlkLCByZWxhdGlvbnNoaXBzKSB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRGlyZWN0ID0gdGhpcy5kaXJlY3RNYXBbdXVpZF0gfHwgW107XG4gICAgICAgIHRoaXMuZGlyZWN0TWFwW3V1aWRdID0gcmVsYXRpb25zaGlwcztcbiAgICAgICAgLyoqIFJlbW92ZSBhbGwgcHJldmlvdXMgdmFsdWVzIGluIGNhc2UgcmVsYXRpb25zaGlwcyBoYXZlIGNoYW5nZWRcbiAgICAgICAgICogVGhlIHVwZGF0ZWQgcmVmZXJlbmNlcyB3aWxsIGJlIGFkZGVkIGFmdGVyd2FyZHMuXG4gICAgICAgICovXG4gICAgICAgIGZvciAoY29uc3QgcHJldmlvdXNSZWxhdGlvbnNoaXAgb2YgcHJldmlvdXNEaXJlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuZGVlc3RhYmxpc2hJbnZlcnNlUmVsYXRpb25zaGlwKHV1aWQsIHByZXZpb3VzUmVsYXRpb25zaGlwKTtcbiAgICAgICAgfVxuICAgICAgICAvKiogTm93IG1hcCBjdXJyZW50IHJlbGF0aW9uc2hpcHMgKi9cbiAgICAgICAgZm9yIChjb25zdCBuZXdSZWxhdGlvbnNoaXAgb2YgcmVsYXRpb25zaGlwcykge1xuICAgICAgICAgICAgdGhpcy5lc3RhYmxpc2hJbnZlcnNlUmVsYXRpb25zaGlwKHV1aWQsIG5ld1JlbGF0aW9uc2hpcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlRnJvbU1hcCh1dWlkKSB7XG4gICAgICAgIC8qKiBJdGVtcyB0aGF0IHdlIHJlZmVyZW5jZSAqL1xuICAgICAgICBjb25zdCBkaXJlY3RSZWZlcmVuY2VzID0gdGhpcy5kaXJlY3RNYXBbdXVpZF0gfHwgW107XG4gICAgICAgIGZvciAoY29uc3QgZGlyZWN0UmVmZXJlbmNlIG9mIGRpcmVjdFJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmludmVyc2VNYXBbZGlyZWN0UmVmZXJlbmNlXSB8fCBbXSwgdXVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMuZGlyZWN0TWFwW3V1aWRdO1xuICAgICAgICAvKiogSXRlbXMgdGhhdCBhcmUgcmVmZXJlbmNpbmcgdXMgKi9cbiAgICAgICAgY29uc3QgaW52ZXJzZVJlZmVyZW5jZXMgPSB0aGlzLmludmVyc2VNYXBbdXVpZF0gfHwgW107XG4gICAgICAgIGZvciAoY29uc3QgaW52ZXJzZVJlZmVyZW5jZSBvZiBpbnZlcnNlUmVmZXJlbmNlcykge1xuICAgICAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMuZGlyZWN0TWFwW2ludmVyc2VSZWZlcmVuY2VdIHx8IFtdLCB1dWlkKTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5pbnZlcnNlTWFwW3V1aWRdO1xuICAgIH1cbiAgICBlc3RhYmxpc2hEaXJlY3RSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kaXJlY3RNYXBbdXVpZEFdIHx8IFtdO1xuICAgICAgICBhZGRJZlVuaXF1ZShpbmRleCwgdXVpZEIpO1xuICAgICAgICB0aGlzLmRpcmVjdE1hcFt1dWlkQV0gPSBpbmRleDtcbiAgICB9XG4gICAgZXN0YWJsaXNoSW52ZXJzZVJlbGF0aW9uc2hpcCh1dWlkQSwgdXVpZEIpIHtcbiAgICAgICAgY29uc3QgaW52ZXJzZUluZGV4ID0gdGhpcy5pbnZlcnNlTWFwW3V1aWRCXSB8fCBbXTtcbiAgICAgICAgYWRkSWZVbmlxdWUoaW52ZXJzZUluZGV4LCB1dWlkQSk7XG4gICAgICAgIHRoaXMuaW52ZXJzZU1hcFt1dWlkQl0gPSBpbnZlcnNlSW5kZXg7XG4gICAgfVxuICAgIGRlZXN0YWJsaXNoRGlyZWN0UmVsYXRpb25zaGlwKHV1aWRBLCB1dWlkQikge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlyZWN0TWFwW3V1aWRBXSB8fCBbXTtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KGluZGV4LCB1dWlkQik7XG4gICAgICAgIHRoaXMuZGlyZWN0TWFwW3V1aWRBXSA9IGluZGV4O1xuICAgIH1cbiAgICBkZWVzdGFibGlzaEludmVyc2VSZWxhdGlvbnNoaXAodXVpZEEsIHV1aWRCKSB7XG4gICAgICAgIGNvbnN0IGludmVyc2VJbmRleCA9IHRoaXMuaW52ZXJzZU1hcFt1dWlkQl0gfHwgW107XG4gICAgICAgIHJlbW92ZUZyb21BcnJheShpbnZlcnNlSW5kZXgsIHV1aWRBKTtcbiAgICAgICAgdGhpcy5pbnZlcnNlTWFwW3V1aWRCXSA9IGludmVyc2VJbmRleDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFjQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBaUJBO0FBQ0E7QUFsQkE7QUFBQTtBQUFBO0FBb0JBO0FBQ0E7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUF3QkE7QUFDQTtBQUNBO0FBMUJBO0FBQUE7QUFBQTtBQTRCQTtBQUNBO0FBQ0E7Ozs7QUFIQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBTUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVVBO0FBQUE7QUFDQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBO0FBeENBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFSQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBU0E7QUFBQTtBQUNBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFXQTtBQUNBO0FBdERBO0FBQUE7QUFBQTtBQXdEQTtBQUNBO0FBQ0E7QUFDQTtBQTNEQTtBQUFBO0FBQUE7QUE2REE7QUFDQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBa0VBO0FBQ0E7QUFDQTtBQUNBO0FBckVBO0FBQUE7QUFBQTtBQXVFQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/collection/uuid_map.ts\n')},"./lib/protocol/index.ts": /*!*******************************!*\ !*** ./lib/protocol/index.ts ***! \*******************************/ /*! exports provided: ProtocolVersion, compareVersions, EncryptionIntent, isDecryptedIntent, intentRequiresEncryption, SNRootKey, CreateKeyParams, SNProtocolOperator001, SNProtocolOperator002, SNProtocolOperator003, SNProtocolOperator004 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProtocolVersion", function() { return _Protocol_versions__WEBPACK_IMPORTED_MODULE_0__["ProtocolVersion"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compareVersions", function() { return _Protocol_versions__WEBPACK_IMPORTED_MODULE_0__["compareVersions"]; });\n\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EncryptionIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__["EncryptionIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isDecryptedIntent", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__["isDecryptedIntent"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intentRequiresEncryption", function() { return _Protocol_intents__WEBPACK_IMPORTED_MODULE_1__["intentRequiresEncryption"]; });\n\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNRootKey", function() { return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_2__["SNRootKey"]; });\n\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CreateKeyParams", function() { return _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"]; });\n\n/* harmony import */ var _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator001", function() { return _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator001"]; });\n\n/* harmony import */ var _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator002", function() { return _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_5__["SNProtocolOperator002"]; });\n\n/* harmony import */ var _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator003", function() { return _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__["SNProtocolOperator003"]; });\n\n/* harmony import */ var _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/operator/004/operator_004 */ "./lib/protocol/operator/004/operator_004.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator004", function() { return _Protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_7__["SNProtocolOperator004"]; });\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvaW5kZXgudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvaW5kZXgudHM/NzZlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQcm90b2NvbFZlcnNpb24sIGNvbXBhcmVWZXJzaW9ucyB9IGZyb20gJ0BQcm90b2NvbC92ZXJzaW9ucyc7XG5leHBvcnQgeyBFbmNyeXB0aW9uSW50ZW50IGFzIEVuY3J5cHRpb25JbnRlbnQsIGlzRGVjcnlwdGVkSW50ZW50LCBpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24gfSBmcm9tICdAUHJvdG9jb2wvaW50ZW50cyc7XG5leHBvcnQgeyBTTlJvb3RLZXkgfSBmcm9tICdAUHJvdG9jb2wvcm9vdF9rZXknO1xuZXhwb3J0IHsgQ3JlYXRlS2V5UGFyYW1zIH0gZnJvbSAnQFByb3RvY29sL2tleV9wYXJhbXMnO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAxIH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwMS9vcGVyYXRvcl8wMDEnO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAyIH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwMi9vcGVyYXRvcl8wMDInO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAzIH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwMy9vcGVyYXRvcl8wMDMnO1xuZXhwb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDA0IH0gZnJvbSAnQFByb3RvY29sL29wZXJhdG9yLzAwNC9vcGVyYXRvcl8wMDQnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/index.ts\n')},"./lib/protocol/intents.ts": /*!*********************************!*\ !*** ./lib/protocol/intents.ts ***! \*********************************/ /*! exports provided: EncryptionIntent, isLocalStorageIntent, isFileIntent, isDecryptedIntent, intentRequiresEncryption */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EncryptionIntent", function() { return EncryptionIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLocalStorageIntent", function() { return isLocalStorageIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFileIntent", function() { return isFileIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDecryptedIntent", function() { return isDecryptedIntent; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "intentRequiresEncryption", function() { return intentRequiresEncryption; });\nvar EncryptionIntent;\n\n(function (EncryptionIntent) {\n EncryptionIntent[EncryptionIntent["Sync"] = 0] = "Sync";\n /** Permissible only for server extensions */\n\n EncryptionIntent[EncryptionIntent["SyncDecrypted"] = 1] = "SyncDecrypted";\n EncryptionIntent[EncryptionIntent["LocalStorageEncrypted"] = 2] = "LocalStorageEncrypted";\n EncryptionIntent[EncryptionIntent["LocalStorageDecrypted"] = 3] = "LocalStorageDecrypted";\n /** Store encrypted if possible, but decrypted if not */\n\n EncryptionIntent[EncryptionIntent["LocalStoragePreferEncrypted"] = 4] = "LocalStoragePreferEncrypted";\n EncryptionIntent[EncryptionIntent["FileEncrypted"] = 5] = "FileEncrypted";\n EncryptionIntent[EncryptionIntent["FileDecrypted"] = 6] = "FileDecrypted";\n EncryptionIntent[EncryptionIntent["FilePreferEncrypted"] = 7] = "FilePreferEncrypted";\n})(EncryptionIntent || (EncryptionIntent = {}));\n\n;\nfunction isLocalStorageIntent(intent) {\n return intent === EncryptionIntent.LocalStorageEncrypted || intent === EncryptionIntent.LocalStorageDecrypted || intent === EncryptionIntent.LocalStoragePreferEncrypted;\n}\nfunction isFileIntent(intent) {\n return intent === EncryptionIntent.FileEncrypted || intent === EncryptionIntent.FileDecrypted || intent === EncryptionIntent.FilePreferEncrypted;\n}\nfunction isDecryptedIntent(intent) {\n return intent === EncryptionIntent.SyncDecrypted || intent === EncryptionIntent.LocalStorageDecrypted || intent === EncryptionIntent.FileDecrypted;\n}\n/**\n * @returns {boolean} True if the intent requires encryption.\n */\n\nfunction intentRequiresEncryption(intent) {\n return intent === EncryptionIntent.Sync || intent === EncryptionIntent.LocalStorageEncrypted || intent === EncryptionIntent.FileEncrypted;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvaW50ZW50cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9pbnRlbnRzLnRzP2VhODQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBFbmNyeXB0aW9uSW50ZW50O1xuKGZ1bmN0aW9uIChFbmNyeXB0aW9uSW50ZW50KSB7XG4gICAgRW5jcnlwdGlvbkludGVudFtFbmNyeXB0aW9uSW50ZW50W1wiU3luY1wiXSA9IDBdID0gXCJTeW5jXCI7XG4gICAgLyoqIFBlcm1pc3NpYmxlIG9ubHkgZm9yIHNlcnZlciBleHRlbnNpb25zICovXG4gICAgRW5jcnlwdGlvbkludGVudFtFbmNyeXB0aW9uSW50ZW50W1wiU3luY0RlY3J5cHRlZFwiXSA9IDFdID0gXCJTeW5jRGVjcnlwdGVkXCI7XG4gICAgRW5jcnlwdGlvbkludGVudFtFbmNyeXB0aW9uSW50ZW50W1wiTG9jYWxTdG9yYWdlRW5jcnlwdGVkXCJdID0gMl0gPSBcIkxvY2FsU3RvcmFnZUVuY3J5cHRlZFwiO1xuICAgIEVuY3J5cHRpb25JbnRlbnRbRW5jcnlwdGlvbkludGVudFtcIkxvY2FsU3RvcmFnZURlY3J5cHRlZFwiXSA9IDNdID0gXCJMb2NhbFN0b3JhZ2VEZWNyeXB0ZWRcIjtcbiAgICAvKiogU3RvcmUgZW5jcnlwdGVkIGlmIHBvc3NpYmxlLCBidXQgZGVjcnlwdGVkIGlmIG5vdCAqL1xuICAgIEVuY3J5cHRpb25JbnRlbnRbRW5jcnlwdGlvbkludGVudFtcIkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZFwiXSA9IDRdID0gXCJMb2NhbFN0b3JhZ2VQcmVmZXJFbmNyeXB0ZWRcIjtcbiAgICBFbmNyeXB0aW9uSW50ZW50W0VuY3J5cHRpb25JbnRlbnRbXCJGaWxlRW5jcnlwdGVkXCJdID0gNV0gPSBcIkZpbGVFbmNyeXB0ZWRcIjtcbiAgICBFbmNyeXB0aW9uSW50ZW50W0VuY3J5cHRpb25JbnRlbnRbXCJGaWxlRGVjcnlwdGVkXCJdID0gNl0gPSBcIkZpbGVEZWNyeXB0ZWRcIjtcbiAgICBFbmNyeXB0aW9uSW50ZW50W0VuY3J5cHRpb25JbnRlbnRbXCJGaWxlUHJlZmVyRW5jcnlwdGVkXCJdID0gN10gPSBcIkZpbGVQcmVmZXJFbmNyeXB0ZWRcIjtcbn0pKEVuY3J5cHRpb25JbnRlbnQgfHwgKEVuY3J5cHRpb25JbnRlbnQgPSB7fSkpO1xuO1xuZXhwb3J0IGZ1bmN0aW9uIGlzTG9jYWxTdG9yYWdlSW50ZW50KGludGVudCkge1xuICAgIHJldHVybiAoaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZUVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VQcmVmZXJFbmNyeXB0ZWQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRmlsZUludGVudChpbnRlbnQpIHtcbiAgICByZXR1cm4gKGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRW5jcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlUHJlZmVyRW5jcnlwdGVkKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RlY3J5cHRlZEludGVudChpbnRlbnQpIHtcbiAgICByZXR1cm4gKGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5TeW5jRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VEZWNyeXB0ZWQgfHxcbiAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkZpbGVEZWNyeXB0ZWQpO1xufVxuLyoqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gIFRydWUgaWYgdGhlIGludGVudCByZXF1aXJlcyBlbmNyeXB0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW50ZW50UmVxdWlyZXNFbmNyeXB0aW9uKGludGVudCkge1xuICAgIHJldHVybiAoaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LlN5bmMgfHxcbiAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZUVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZUVuY3J5cHRlZCk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUdBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/intents.ts\n')},"./lib/protocol/key_params.ts": /*!************************************!*\ !*** ./lib/protocol/key_params.ts ***! \************************************/ /*! exports provided: CreateKeyParams, SNRootKeyParams */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateKeyParams", function() { return CreateKeyParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNRootKeyParams", function() { return SNRootKeyParams; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nfunction CreateKeyParams(keyParams) {\n return new SNRootKeyParams(keyParams);\n}\n/**\n * Key params are public data that contain information about how a root key was created.\n * Given a keyParams object and a password, clients can compute a root key that was created\n * previously.\n */\n\nvar SNRootKeyParams = /*#__PURE__*/function () {\n function SNRootKeyParams(content) {\n _classCallCheck(this, SNRootKeyParams);\n\n this.content = content;\n }\n /**\n * For consumers to determine whether the object they are\n * working with is a proper RootKeyParams object.\n */\n\n\n _createClass(SNRootKeyParams, [{\n key: "getPortableValue",\n\n /**\n * @access public\n * When saving in a file or communicating with server,\n * use the original values.\n */\n value: function getPortableValue() {\n /**\n * For version >= 003, do not send kdfIterations, as this value is always deduced\n * locally depending on the version.\n * Versions <= 002 had dynamic kdfIterations, so these values must be transfered.\n */\n if (Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_1__["compareVersions"])(this.version, _Protocol_versions__WEBPACK_IMPORTED_MODULE_1__["ProtocolVersion"].V003) >= 0) {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["omitByCopy"])(this.content, [\'pw_cost\']);\n } else {\n return this.content;\n }\n }\n }, {\n key: "isKeyParamsObject",\n get: function get() {\n return true;\n }\n }, {\n key: "kdfIterations",\n get: function get() {\n return this.content.pw_cost;\n }\n }, {\n key: "seed",\n get: function get() {\n return this.content.pw_nonce;\n }\n }, {\n key: "identifier",\n get: function get() {\n return this.content.identifier || this.content.email;\n }\n }, {\n key: "salt",\n get: function get() {\n return this.content.pw_salt;\n }\n }, {\n key: "version",\n get: function get() {\n return this.content.version;\n }\n }]);\n\n return SNRootKeyParams;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wva2V5X3BhcmFtcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9rZXlfcGFyYW1zLnRzPzliM2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb21pdEJ5Q29weSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uLCBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUtleVBhcmFtcyhrZXlQYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFNOUm9vdEtleVBhcmFtcyhrZXlQYXJhbXMpO1xufVxuLyoqXG4gKiBLZXkgcGFyYW1zIGFyZSBwdWJsaWMgZGF0YSB0aGF0IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgcm9vdCBrZXkgd2FzIGNyZWF0ZWQuXG4gKiBHaXZlbiBhIGtleVBhcmFtcyBvYmplY3QgYW5kIGEgcGFzc3dvcmQsIGNsaWVudHMgY2FuIGNvbXB1dGUgYSByb290IGtleSB0aGF0IHdhcyBjcmVhdGVkXG4gKiBwcmV2aW91c2x5LlxuICovXG5leHBvcnQgY2xhc3MgU05Sb290S2V5UGFyYW1zIHtcbiAgICBjb25zdHJ1Y3Rvcihjb250ZW50KSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IGNvbnRlbnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZvciBjb25zdW1lcnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG9iamVjdCB0aGV5IGFyZVxuICAgICAqIHdvcmtpbmcgd2l0aCBpcyBhIHByb3BlciBSb290S2V5UGFyYW1zIG9iamVjdC5cbiAgICAgKi9cbiAgICBnZXQgaXNLZXlQYXJhbXNPYmplY3QoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXQga2RmSXRlcmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5wd19jb3N0O1xuICAgIH1cbiAgICBnZXQgc2VlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5wd19ub25jZTtcbiAgICB9XG4gICAgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQuaWRlbnRpZmllciB8fCB0aGlzLmNvbnRlbnQuZW1haWw7XG4gICAgfVxuICAgIGdldCBzYWx0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50LnB3X3NhbHQ7XG4gICAgfVxuICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50LnZlcnNpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBhY2Nlc3MgcHVibGljXG4gICAgICogV2hlbiBzYXZpbmcgaW4gYSBmaWxlIG9yIGNvbW11bmljYXRpbmcgd2l0aCBzZXJ2ZXIsXG4gICAgICogdXNlIHRoZSBvcmlnaW5hbCB2YWx1ZXMuXG4gICAgICovXG4gICAgZ2V0UG9ydGFibGVWYWx1ZSgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciB2ZXJzaW9uID49IDAwMywgZG8gbm90IHNlbmQga2RmSXRlcmF0aW9ucywgYXMgdGhpcyB2YWx1ZSBpcyBhbHdheXMgZGVkdWNlZFxuICAgICAgICAgKiBsb2NhbGx5IGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbi5cbiAgICAgICAgICogVmVyc2lvbnMgPD0gMDAyIGhhZCBkeW5hbWljIGtkZkl0ZXJhdGlvbnMsIHNvIHRoZXNlIHZhbHVlcyBtdXN0IGJlIHRyYW5zZmVyZWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoY29tcGFyZVZlcnNpb25zKHRoaXMudmVyc2lvbiwgUHJvdG9jb2xWZXJzaW9uLlYwMDMpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybiBvbWl0QnlDb3B5KHRoaXMuY29udGVudCwgWydwd19jb3N0J10pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7QUFKQTtBQUFBO0FBQ0E7QUF5QkE7Ozs7O0FBMUJBO0FBZ0NBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBVkE7QUFBQTtBQUFBO0FBWUE7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUF6QkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/key_params.ts\n')},"./lib/protocol/operator/001/operator_001.ts": /*!***************************************************!*\ !*** ./lib/protocol/operator/001/operator_001.ts ***! \***************************************************/ /*! exports provided: SNProtocolOperator001 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator001", function() { return SNProtocolOperator001; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _Protocol_operator_operator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/operator/operator */ "./lib/protocol/operator/operator.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Protocol/operator/algorithms */ "./lib/protocol/operator/algorithms.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar NO_IV = \'00000000000000000000000000000000\';\n/**\n * @deprecated\n * A legacy operator no longer used to generate new accounts\n */\n\nvar SNProtocolOperator001 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator001, _SNProtocolOperator);\n\n function SNProtocolOperator001() {\n _classCallCheck(this, SNProtocolOperator001);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator001).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator001, [{\n key: "generateNewItemsKeyContent",\n value: function () {\n var _generateNewItemsKeyContent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var keyLength, itemsKey, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n keyLength = _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].EncryptionKeyLength;\n _context.next = 3;\n return this.crypto.generateRandomKey(keyLength);\n\n case 3:\n itemsKey = _context.sent;\n response = {\n itemsKey: itemsKey,\n version: this.version\n };\n return _context.abrupt("return", response);\n\n case 6:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function generateNewItemsKeyContent() {\n return _generateNewItemsKeyContent.apply(this, arguments);\n }\n\n return generateNewItemsKeyContent;\n }()\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, password) {\n var pwCost, pwNonce, pwSalt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n pwCost = _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].PbkdfMinCost;\n _context2.next = 3;\n return this.crypto.generateRandomKey(_Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].SaltSeedLength);\n\n case 3:\n pwNonce = _context2.sent;\n _context2.next = 6;\n return this.crypto.unsafeSha1(identifier + \'SN\' + pwNonce);\n\n case 6:\n pwSalt = _context2.sent;\n _context2.next = 9;\n return this.deriveKey(password, pwSalt, pwCost);\n\n case 9:\n key = _context2.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"])({\n email: identifier,\n pw_cost: pwCost,\n pw_nonce: pwNonce,\n pw_salt: pwSalt,\n version: this.version\n });\n return _context2.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 12:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function createRootKey(_x, _x2) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(password, keyParams) {\n var key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.deriveKey(password, keyParams.salt, keyParams.kdfIterations);\n\n case 2:\n key = _context3.sent;\n return _context3.abrupt("return", key);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function computeRootKey(_x3, _x4) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n }, {\n key: "decryptString",\n value: function () {\n var _decryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(ciphertext, key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt("return", this.crypto.aes256CbcDecrypt(ciphertext, NO_IV, key));\n\n case 1:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function decryptString(_x5, _x6) {\n return _decryptString.apply(this, arguments);\n }\n\n return decryptString;\n }()\n }, {\n key: "encryptString",\n value: function () {\n var _encryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(text, key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", this.crypto.aes256CbcEncrypt(text, NO_IV, key));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function encryptString(_x7, _x8) {\n return _encryptString.apply(this, arguments);\n }\n\n return encryptString;\n }()\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(payload, format, key) {\n var itemKey, encItemKey, ek, ak, contentCiphertext, ciphertext, authHash;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context6.next = 2;\n break;\n }\n\n return _context6.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator001.prototype), "generateEncryptedParameters", this).call(this, payload, format, key));\n\n case 2:\n if (!(format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].EncryptedString)) {\n _context6.next = 4;\n break;\n }\n\n throw "Unsupport format for generateEncryptedParameters ".concat(format);\n\n case 4:\n if (key) {\n _context6.next = 6;\n break;\n }\n\n throw \'Attempting to generateEncryptedParameters with no itemsKey.\';\n\n case 6:\n _context6.next = 8;\n return this.crypto.generateRandomKey(_Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].EncryptionKeyLength * 2);\n\n case 8:\n itemKey = _context6.sent;\n _context6.next = 11;\n return this.encryptString(itemKey, key.itemsKey);\n\n case 11:\n encItemKey = _context6.sent;\n _context6.next = 14;\n return this.firstHalfOfKey(itemKey);\n\n case 14:\n ek = _context6.sent;\n _context6.next = 17;\n return this.secondHalfOfKey(itemKey);\n\n case 17:\n ak = _context6.sent;\n _context6.next = 20;\n return this.encryptString(JSON.stringify(payload.content), ek);\n\n case 20:\n contentCiphertext = _context6.sent;\n ciphertext = key.version + contentCiphertext;\n _context6.next = 24;\n return this.crypto.hmac256(ciphertext, ak);\n\n case 24:\n authHash = _context6.sent;\n return _context6.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateEncryptionParameters"])({\n uuid: payload.uuid,\n items_key_id: key instanceof _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"] ? key.uuid : undefined,\n content: ciphertext,\n enc_item_key: encItemKey,\n auth_hash: authHash\n }));\n\n case 26:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function generateEncryptedParameters(_x9, _x10, _x11) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(encryptedParameters, key) {\n var format, encryptedItemKey, itemKeyComponents, itemKey, ek, itemParams, content;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context7.next = 3;\n break;\n }\n\n return _context7.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator001.prototype), "generateDecryptedParameters", this).call(this, encryptedParameters, key));\n\n case 3:\n if (encryptedParameters.enc_item_key) {\n _context7.next = 6;\n break;\n }\n\n console.error(\'Missing item encryption key, skipping decryption.\');\n return _context7.abrupt("return", encryptedParameters);\n\n case 6:\n /** Decrypt encrypted key */\n encryptedItemKey = encryptedParameters.enc_item_key;\n encryptedItemKey = this.version + encryptedItemKey;\n itemKeyComponents = this.encryptionComponentsFromString(encryptedItemKey, key.itemsKey);\n _context7.next = 11;\n return this.decryptString(itemKeyComponents.ciphertext, itemKeyComponents.key);\n\n case 11:\n itemKey = _context7.sent;\n\n if (itemKey) {\n _context7.next = 15;\n break;\n }\n\n console.error(\'Error decrypting parameters\', encryptedParameters);\n return _context7.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 15:\n _context7.next = 17;\n return this.firstHalfOfKey(itemKey);\n\n case 17:\n ek = _context7.sent;\n itemParams = this.encryptionComponentsFromString(encryptedParameters.contentString, ek);\n _context7.next = 21;\n return this.decryptString(itemParams.ciphertext, itemParams.key);\n\n case 21:\n content = _context7.sent;\n\n if (content) {\n _context7.next = 26;\n break;\n }\n\n return _context7.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 26:\n return _context7.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n content: JSON.parse(content),\n items_key_id: undefined,\n enc_item_key: undefined,\n errorDecrypting: false,\n errorDecryptingValueChanged: encryptedParameters.errorDecrypting === true,\n waitingForKey: false\n }));\n\n case 27:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function generateDecryptedParameters(_x12, _x13) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }, {\n key: "encryptionComponentsFromString",\n value: function encryptionComponentsFromString(string, encryptionKey) {\n var encryptionVersion = string.substring(0, _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].VersionLength);\n return {\n ciphertext: string.substring(_Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].VersionLength, string.length),\n version: encryptionVersion,\n key: encryptionKey\n };\n }\n }, {\n key: "deriveKey",\n value: function () {\n var _deriveKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(password, pwSalt, pwCost) {\n var derivedKey, partitions, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.crypto.pbkdf2(password, pwSalt, pwCost, _Protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_8__["V001Algorithm"].PbkdfOutputLength);\n\n case 2:\n derivedKey = _context8.sent;\n _context8.next = 5;\n return this.splitKey(derivedKey, 2);\n\n case 5:\n partitions = _context8.sent;\n _context8.next = 8;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_7__["SNRootKey"].Create({\n serverPassword: partitions[0],\n masterKey: partitions[1],\n version: this.version\n });\n\n case 8:\n key = _context8.sent;\n return _context8.abrupt("return", key);\n\n case 10:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function deriveKey(_x14, _x15, _x16) {\n return _deriveKey.apply(this, arguments);\n }\n\n return deriveKey;\n }()\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].V001;\n }\n }]);\n\n return SNProtocolOperator001;\n}(_Protocol_operator_operator__WEBPACK_IMPORTED_MODULE_2__["SNProtocolOperator"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDAxL29wZXJhdG9yXzAwMS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxLnRzP2JhN2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05JdGVtc0tleSB9IGZyb20gJ0BNb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBTTlByb3RvY29sT3BlcmF0b3IgfSBmcm9tICdAUHJvdG9jb2wvb3BlcmF0b3Ivb3BlcmF0b3InO1xuaW1wb3J0IHsgQ3JlYXRlS2V5UGFyYW1zIH0gZnJvbSAnQFByb3RvY29sL2tleV9wYXJhbXMnO1xuaW1wb3J0IHsgUGF5bG9hZEZvcm1hdCB9IGZyb20gJ0BQYXlsb2Fkcy9mb3JtYXRzJztcbmltcG9ydCB7IENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzLCBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFByb3RvY29sVmVyc2lvbiB9IGZyb20gJ0BQcm90b2NvbC92ZXJzaW9ucyc7XG5pbXBvcnQgeyBTTlJvb3RLZXkgfSBmcm9tICdAUHJvdG9jb2wvcm9vdF9rZXknO1xuaW1wb3J0IHsgVjAwMUFsZ29yaXRobSB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci9hbGdvcml0aG1zJztcbmNvbnN0IE5PX0lWID0gJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJztcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEEgbGVnYWN5IG9wZXJhdG9yIG5vIGxvbmdlciB1c2VkIHRvIGdlbmVyYXRlIG5ldyBhY2NvdW50c1xuICovXG5leHBvcnQgY2xhc3MgU05Qcm90b2NvbE9wZXJhdG9yMDAxIGV4dGVuZHMgU05Qcm90b2NvbE9wZXJhdG9yIHtcbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIFByb3RvY29sVmVyc2lvbi5WMDAxO1xuICAgIH1cbiAgICBhc3luYyBnZW5lcmF0ZU5ld0l0ZW1zS2V5Q29udGVudCgpIHtcbiAgICAgICAgY29uc3Qga2V5TGVuZ3RoID0gVjAwMUFsZ29yaXRobS5FbmNyeXB0aW9uS2V5TGVuZ3RoO1xuICAgICAgICBjb25zdCBpdGVtc0tleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KGtleUxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgaXRlbXNLZXk6IGl0ZW1zS2V5LFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzd29yZCkge1xuICAgICAgICBjb25zdCBwd0Nvc3QgPSBWMDAxQWxnb3JpdGhtLlBia2RmTWluQ29zdDtcbiAgICAgICAgY29uc3QgcHdOb25jZSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDFBbGdvcml0aG0uU2FsdFNlZWRMZW5ndGgpO1xuICAgICAgICBjb25zdCBwd1NhbHQgPSBhd2FpdCB0aGlzLmNyeXB0by51bnNhZmVTaGExKGlkZW50aWZpZXIgKyAnU04nICsgcHdOb25jZSk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGVyaXZlS2V5KHBhc3N3b3JkLCBwd1NhbHQsIHB3Q29zdCk7XG4gICAgICAgIGNvbnN0IGtleVBhcmFtcyA9IENyZWF0ZUtleVBhcmFtcyh7XG4gICAgICAgICAgICBlbWFpbDogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHB3X2Nvc3Q6IHB3Q29zdCxcbiAgICAgICAgICAgIHB3X25vbmNlOiBwd05vbmNlLFxuICAgICAgICAgICAgcHdfc2FsdDogcHdTYWx0LFxuICAgICAgICAgICAgdmVyc2lvbjogdGhpcy52ZXJzaW9uXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBrZXk6IGtleSwga2V5UGFyYW1zOiBrZXlQYXJhbXMgfTtcbiAgICB9XG4gICAgYXN5bmMgY29tcHV0ZVJvb3RLZXkocGFzc3dvcmQsIGtleVBhcmFtcykge1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwga2V5UGFyYW1zLnNhbHQsIGtleVBhcmFtcy5rZGZJdGVyYXRpb25zKTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgYXN5bmMgZGVjcnlwdFN0cmluZyhjaXBoZXJ0ZXh0LCBrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3J5cHRvLmFlczI1NkNiY0RlY3J5cHQoY2lwaGVydGV4dCwgTk9fSVYsIGtleSk7XG4gICAgfVxuICAgIGFzeW5jIGVuY3J5cHRTdHJpbmcodGV4dCwga2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by5hZXMyNTZDYmNFbmNyeXB0KHRleHQsIE5PX0lWLCBrZXkpO1xuICAgIH1cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpIHtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgIT09IFBheWxvYWRGb3JtYXQuRW5jcnlwdGVkU3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5zdXBwb3J0IGZvcm1hdCBmb3IgZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzICR7Zm9ybWF0fWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyB3aXRoIG5vIGl0ZW1zS2V5Lic7XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdlbmVyYXRlIG5ldyBpdGVtIGtleSB0aGF0IGlzIGRvdWJsZSB0aGUga2V5IHNpemUuXG4gICAgICAgICAqIFdpbGwgYmUgc3BsaXQgdG8gY3JlYXRlIGVuY3J5cHRpb24ga2V5IGFuZCBhdXRoZW50aWNhdGlvbiBrZXkuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVtS2V5ID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoVjAwMUFsZ29yaXRobS5FbmNyeXB0aW9uS2V5TGVuZ3RoICogMik7XG4gICAgICAgIGNvbnN0IGVuY0l0ZW1LZXkgPSBhd2FpdCB0aGlzLmVuY3J5cHRTdHJpbmcoaXRlbUtleSwga2V5Lml0ZW1zS2V5KTtcbiAgICAgICAgLyoqIEVuY3J5cHQgY29udGVudCAqL1xuICAgICAgICBjb25zdCBlayA9IGF3YWl0IHRoaXMuZmlyc3RIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGFrID0gYXdhaXQgdGhpcy5zZWNvbmRIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRDaXBoZXJ0ZXh0ID0gYXdhaXQgdGhpcy5lbmNyeXB0U3RyaW5nKEpTT04uc3RyaW5naWZ5KHBheWxvYWQuY29udGVudCksIGVrKTtcbiAgICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGtleS52ZXJzaW9uICsgY29udGVudENpcGhlcnRleHQ7XG4gICAgICAgIGNvbnN0IGF1dGhIYXNoID0gYXdhaXQgdGhpcy5jcnlwdG8uaG1hYzI1NihjaXBoZXJ0ZXh0LCBhayk7XG4gICAgICAgIHJldHVybiBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycyh7XG4gICAgICAgICAgICB1dWlkOiBwYXlsb2FkLnV1aWQsXG4gICAgICAgICAgICBpdGVtc19rZXlfaWQ6IGtleSBpbnN0YW5jZW9mIFNOSXRlbXNLZXkgPyBrZXkudXVpZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGNpcGhlcnRleHQsXG4gICAgICAgICAgICBlbmNfaXRlbV9rZXk6IGVuY0l0ZW1LZXksXG4gICAgICAgICAgICBhdXRoX2hhc2g6IGF1dGhIYXNoLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIGtleSkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBlbmNyeXB0ZWRQYXJhbWV0ZXJzLmZvcm1hdDtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVuY3J5cHRlZFBhcmFtZXRlcnMuZW5jX2l0ZW1fa2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIGl0ZW0gZW5jcnlwdGlvbiBrZXksIHNraXBwaW5nIGRlY3J5cHRpb24uJyk7XG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkUGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgICAvKiogRGVjcnlwdCBlbmNyeXB0ZWQga2V5ICovXG4gICAgICAgIGxldCBlbmNyeXB0ZWRJdGVtS2V5ID0gZW5jcnlwdGVkUGFyYW1ldGVycy5lbmNfaXRlbV9rZXk7XG4gICAgICAgIGVuY3J5cHRlZEl0ZW1LZXkgPSB0aGlzLnZlcnNpb24gKyBlbmNyeXB0ZWRJdGVtS2V5O1xuICAgICAgICBjb25zdCBpdGVtS2V5Q29tcG9uZW50cyA9IHRoaXMuZW5jcnlwdGlvbkNvbXBvbmVudHNGcm9tU3RyaW5nKGVuY3J5cHRlZEl0ZW1LZXksIGtleS5pdGVtc0tleSk7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXkgPSBhd2FpdCB0aGlzLmRlY3J5cHRTdHJpbmcoaXRlbUtleUNvbXBvbmVudHMuY2lwaGVydGV4dCwgaXRlbUtleUNvbXBvbmVudHMua2V5KTtcbiAgICAgICAgaWYgKCFpdGVtS2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNyeXB0aW5nIHBhcmFtZXRlcnMnLCBlbmNyeXB0ZWRQYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6ICFlbmNyeXB0ZWRQYXJhbWV0ZXJzLmVycm9yRGVjcnlwdGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWsgPSBhd2FpdCB0aGlzLmZpcnN0SGFsZk9mS2V5KGl0ZW1LZXkpO1xuICAgICAgICBjb25zdCBpdGVtUGFyYW1zID0gdGhpcy5lbmNyeXB0aW9uQ29tcG9uZW50c0Zyb21TdHJpbmcoZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nLCBlayk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLmRlY3J5cHRTdHJpbmcoaXRlbVBhcmFtcy5jaXBoZXJ0ZXh0LCBpdGVtUGFyYW1zLmtleSk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogIWVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04ucGFyc2UoY29udGVudCksXG4gICAgICAgICAgICAgICAgaXRlbXNfa2V5X2lkOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW5jX2l0ZW1fa2V5OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6IGVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nID09PSB0cnVlLFxuICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JLZXk6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZW5jcnlwdGlvbkNvbXBvbmVudHNGcm9tU3RyaW5nKHN0cmluZywgZW5jcnlwdGlvbktleSkge1xuICAgICAgICBjb25zdCBlbmNyeXB0aW9uVmVyc2lvbiA9IHN0cmluZy5zdWJzdHJpbmcoMCwgUHJvdG9jb2xWZXJzaW9uLlZlcnNpb25MZW5ndGgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2lwaGVydGV4dDogc3RyaW5nLnN1YnN0cmluZyhQcm90b2NvbFZlcnNpb24uVmVyc2lvbkxlbmd0aCwgc3RyaW5nLmxlbmd0aCksXG4gICAgICAgICAgICB2ZXJzaW9uOiBlbmNyeXB0aW9uVmVyc2lvbixcbiAgICAgICAgICAgIGtleTogZW5jcnlwdGlvbktleVxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBkZXJpdmVLZXkocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0KSB7XG4gICAgICAgIGNvbnN0IGRlcml2ZWRLZXkgPSBhd2FpdCB0aGlzLmNyeXB0by5wYmtkZjIocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0LCBWMDAxQWxnb3JpdGhtLlBia2RmT3V0cHV0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcGFydGl0aW9ucyA9IGF3YWl0IHRoaXMuc3BsaXRLZXkoZGVyaXZlZEtleSwgMik7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoe1xuICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IHBhcnRpdGlvbnNbMF0sXG4gICAgICAgICAgICBtYXN0ZXJLZXk6IHBhcnRpdGlvbnNbMV0sXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFMQTtBQUFBO0FBQ0E7QUFEQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFQQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWNBO0FBZEE7QUFBQTtBQUNBO0FBREE7QUFlQTtBQWZBO0FBQUE7QUFDQTtBQURBO0FBZ0JBO0FBaEJBO0FBQUE7QUFDQTtBQURBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFsQkE7QUF5QkE7QUFBQTtBQUFBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNEJBO0FBNUJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFvREE7QUFwREE7QUFBQTtBQUNBO0FBREE7QUFxREE7QUFyREE7QUFBQTtBQUNBO0FBREE7QUF1REE7QUF2REE7QUFBQTtBQUNBO0FBREE7QUF3REE7QUF4REE7QUFBQTtBQUNBO0FBREE7QUF5REE7QUFDQTtBQTFEQTtBQUFBO0FBQ0E7QUFEQTtBQTJEQTtBQTNEQTtBQTZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFDQTtBQTdEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUVBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEwRUE7QUEzRUE7QUFDQTtBQURBO0FBOEVBO0FBQ0E7QUFDQTtBQUNBO0FBakZBO0FBQUE7QUFDQTtBQURBO0FBa0ZBO0FBQ0E7QUFuRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW1GQTtBQXBGQTtBQXNGQTtBQUNBO0FBRkE7QUFDQTtBQXRGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBMEZBO0FBQ0E7QUEzRkE7QUFBQTtBQUNBO0FBREE7QUE0RkE7QUFDQTtBQTdGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUErRkE7QUFDQTtBQUZBO0FBQ0E7QUEvRkE7QUFBQTtBQXFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUNBO0FBckdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFySEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF1SEE7QUF2SEE7QUFBQTtBQUNBO0FBREE7QUF3SEE7QUF4SEE7QUFBQTtBQTBIQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBMUhBO0FBeUhBO0FBekhBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/001/operator_001.ts\n')},"./lib/protocol/operator/002/operator_002.ts": /*!***************************************************!*\ !*** ./lib/protocol/operator/002/operator_002.ts ***! \***************************************************/ /*! exports provided: SNProtocolOperator002 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator002", function() { return SNProtocolOperator002; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _algorithms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n/**\n * @deprecated\n * A legacy operator no longer used to generate new accounts.\n */\n\nvar SNProtocolOperator002 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator002, _SNProtocolOperator);\n\n function SNProtocolOperator002() {\n _classCallCheck(this, SNProtocolOperator002);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator002).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator002, [{\n key: "generateNewItemsKeyContent",\n value: function () {\n var _generateNewItemsKeyContent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var keyLength, itemsKey, authKey, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n keyLength = _algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].EncryptionKeyLength;\n _context.next = 3;\n return this.crypto.generateRandomKey(keyLength);\n\n case 3:\n itemsKey = _context.sent;\n _context.next = 6;\n return this.crypto.generateRandomKey(keyLength);\n\n case 6:\n authKey = _context.sent;\n response = {\n itemsKey: itemsKey,\n dataAuthenticationKey: authKey,\n version: this.version\n };\n return _context.abrupt("return", response);\n\n case 9:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function generateNewItemsKeyContent() {\n return _generateNewItemsKeyContent.apply(this, arguments);\n }\n\n return generateNewItemsKeyContent;\n }()\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, password) {\n var pwCost, pwNonce, pwSalt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n pwCost = _algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].PbkdfMinCost;\n _context2.next = 3;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].SaltSeedLength);\n\n case 3:\n pwNonce = _context2.sent;\n _context2.next = 6;\n return this.crypto.unsafeSha1(identifier + \':\' + pwNonce);\n\n case 6:\n pwSalt = _context2.sent;\n _context2.next = 9;\n return this.deriveKey(password, pwSalt, pwCost);\n\n case 9:\n key = _context2.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"])({\n email: identifier,\n pw_cost: pwCost,\n pw_nonce: pwNonce,\n pw_salt: pwSalt,\n version: this.version\n });\n return _context2.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 12:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function createRootKey(_x, _x2) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n /**\n * Note that version 002 supported "dynamic" iteration counts. Some accounts\n * may have had costs of 5000, and others of 101000. Therefore, when computing\n * the root key, we must use the value returned by the server.\n */\n\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(password, keyParams) {\n var key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.deriveKey(password, keyParams.salt, keyParams.kdfIterations);\n\n case 2:\n key = _context3.sent;\n return _context3.abrupt("return", key);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function computeRootKey(_x3, _x4) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n }, {\n key: "decryptString002",\n value: function () {\n var _decryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(text, key, iv) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt("return", this.crypto.aes256CbcDecrypt(text, iv, key));\n\n case 1:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function decryptString002(_x5, _x6, _x7) {\n return _decryptString.apply(this, arguments);\n }\n\n return decryptString002;\n }()\n }, {\n key: "encryptString002",\n value: function () {\n var _encryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(text, key, iv) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", this.crypto.aes256CbcEncrypt(text, iv, key));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function encryptString002(_x8, _x9, _x10) {\n return _encryptString.apply(this, arguments);\n }\n\n return encryptString002;\n }()\n }, {\n key: "encryptTextParams",\n value: function () {\n var _encryptTextParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(string, encryptionKey, authKey, uuid, version) {\n var iv, contentCiphertext, ciphertextToAuth, authHash, fullCiphertext;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].EncryptionIvLength);\n\n case 2:\n iv = _context6.sent;\n _context6.next = 5;\n return this.encryptString002(string, encryptionKey, iv);\n\n case 5:\n contentCiphertext = _context6.sent;\n ciphertextToAuth = [version, uuid, iv, contentCiphertext].join(\':\');\n _context6.next = 9;\n return this.crypto.hmac256(ciphertextToAuth, authKey);\n\n case 9:\n authHash = _context6.sent;\n fullCiphertext = [version, authHash, uuid, iv, contentCiphertext].join(\':\');\n return _context6.abrupt("return", fullCiphertext);\n\n case 12:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function encryptTextParams(_x11, _x12, _x13, _x14, _x15) {\n return _encryptTextParams.apply(this, arguments);\n }\n\n return encryptTextParams;\n }()\n }, {\n key: "decryptTextParams",\n value: function () {\n var _decryptTextParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(ciphertextToAuth, contentCiphertext, encryptionKey, iv, authHash, authKey) {\n var localAuthHash;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (encryptionKey) {\n _context7.next = 2;\n break;\n }\n\n throw \'Attempting to decryptTextParams with null encryptionKey\';\n\n case 2:\n _context7.next = 4;\n return this.crypto.hmac256(ciphertextToAuth, authKey);\n\n case 4:\n localAuthHash = _context7.sent;\n\n if (!(this.crypto.timingSafeEqual(authHash, localAuthHash) === false)) {\n _context7.next = 8;\n break;\n }\n\n console.error(\'Auth hash does not match, returning null.\');\n return _context7.abrupt("return", null);\n\n case 8:\n return _context7.abrupt("return", this.decryptString002(contentCiphertext, encryptionKey, iv));\n\n case 9:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function decryptTextParams(_x16, _x17, _x18, _x19, _x20, _x21) {\n return _decryptTextParams.apply(this, arguments);\n }\n\n return decryptTextParams;\n }()\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload, format, key) {\n var itemKey, encItemKey, ek, ak, ciphertext;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator002.prototype), "generateEncryptedParameters", this).call(this, payload, format, key));\n\n case 2:\n if (!(format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].EncryptedString)) {\n _context8.next = 4;\n break;\n }\n\n throw "Unsupport format for generateEncryptedParameters ".concat(format);\n\n case 4:\n if (!(!key || !key.itemsKey)) {\n _context8.next = 6;\n break;\n }\n\n throw \'Attempting to generateEncryptedParameters with no itemsKey.\';\n\n case 6:\n _context8.next = 8;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].EncryptionKeyLength * 2);\n\n case 8:\n itemKey = _context8.sent;\n _context8.next = 11;\n return this.encryptTextParams(itemKey, key.itemsKey, key.dataAuthenticationKey, payload.uuid, key.version);\n\n case 11:\n encItemKey = _context8.sent;\n _context8.next = 14;\n return this.firstHalfOfKey(itemKey);\n\n case 14:\n ek = _context8.sent;\n _context8.next = 17;\n return this.secondHalfOfKey(itemKey);\n\n case 17:\n ak = _context8.sent;\n _context8.next = 20;\n return this.encryptTextParams(JSON.stringify(payload.content), ek, ak, payload.uuid, key.version);\n\n case 20:\n ciphertext = _context8.sent;\n return _context8.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CreateEncryptionParameters"])({\n uuid: payload.uuid,\n items_key_id: key instanceof _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"] ? key.uuid : undefined,\n content: ciphertext,\n enc_item_key: encItemKey\n }));\n\n case 22:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function generateEncryptedParameters(_x22, _x23, _x24) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(encryptedParameters, key) {\n var format, encryptedItemKey, itemKeyComponents, itemKey, ek, ak, itemParams, content, authParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context9.next = 3;\n break;\n }\n\n return _context9.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator002.prototype), "generateDecryptedParameters", this).call(this, encryptedParameters, key));\n\n case 3:\n if (encryptedParameters.enc_item_key) {\n _context9.next = 6;\n break;\n }\n\n console.error(\'Missing item encryption key, skipping decryption.\');\n return _context9.abrupt("return", encryptedParameters);\n\n case 6:\n if (!(!key || !key.itemsKey)) {\n _context9.next = 8;\n break;\n }\n\n throw \'Attempting to generateDecryptedParameters with no itemsKey.\';\n\n case 8:\n /* Decrypt encrypted key */\n encryptedItemKey = encryptedParameters.enc_item_key;\n itemKeyComponents = this.encryptionComponentsFromString002(encryptedItemKey, key.itemsKey, key.dataAuthenticationKey);\n _context9.next = 12;\n return this.decryptTextParams(itemKeyComponents.ciphertextToAuth, itemKeyComponents.contentCiphertext, itemKeyComponents.encryptionKey, itemKeyComponents.iv, itemKeyComponents.authHash, itemKeyComponents.authKey);\n\n case 12:\n itemKey = _context9.sent;\n\n if (itemKey) {\n _context9.next = 16;\n break;\n }\n\n console.error(\'Error decrypting item_key parameters\', encryptedParameters);\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 16:\n _context9.next = 18;\n return this.firstHalfOfKey(itemKey);\n\n case 18:\n ek = _context9.sent;\n _context9.next = 21;\n return this.secondHalfOfKey(itemKey);\n\n case 21:\n ak = _context9.sent;\n itemParams = this.encryptionComponentsFromString002(encryptedParameters.contentString, ek, ak);\n _context9.next = 25;\n return this.decryptTextParams(itemParams.ciphertextToAuth, itemParams.contentCiphertext, itemParams.encryptionKey, itemParams.iv, itemParams.authHash, itemParams.authKey);\n\n case 25:\n content = _context9.sent;\n\n if (content) {\n _context9.next = 30;\n break;\n }\n\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 30:\n _context9.prev = 30;\n _context9.t0 = JSON;\n _context9.next = 34;\n return this.crypto.base64Decode(itemParams.authParams);\n\n case 34:\n _context9.t1 = _context9.sent;\n authParams = _context9.t0.parse.call(_context9.t0, _context9.t1);\n _context9.next = 40;\n break;\n\n case 38:\n _context9.prev = 38;\n _context9.t2 = _context9["catch"](30);\n\n case 40:\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n content: JSON.parse(content),\n items_key_id: undefined,\n enc_item_key: undefined,\n auth_params: authParams,\n errorDecrypting: false,\n errorDecryptingValueChanged: encryptedParameters.errorDecrypting === true,\n waitingForKey: false\n }));\n\n case 41:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[30, 38]]);\n }));\n\n function generateDecryptedParameters(_x25, _x26) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }, {\n key: "deriveKey",\n value: function () {\n var _deriveKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(password, pwSalt, pwCost) {\n var derivedKey, partitions, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.crypto.pbkdf2(password, pwSalt, pwCost, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V002Algorithm"].PbkdfOutputLength);\n\n case 2:\n derivedKey = _context10.sent;\n _context10.next = 5;\n return this.splitKey(derivedKey, 3);\n\n case 5:\n partitions = _context10.sent;\n _context10.next = 8;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__["SNRootKey"].Create({\n serverPassword: partitions[0],\n masterKey: partitions[1],\n dataAuthenticationKey: partitions[2],\n version: this.version\n });\n\n case 8:\n key = _context10.sent;\n return _context10.abrupt("return", key);\n\n case 10:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function deriveKey(_x27, _x28, _x29) {\n return _deriveKey.apply(this, arguments);\n }\n\n return deriveKey;\n }()\n }, {\n key: "encryptionComponentsFromString002",\n value: function encryptionComponentsFromString002(string, encryptionKey, authKey) {\n var components = string.split(\':\');\n return {\n encryptionVersion: components[0],\n authHash: components[1],\n uuid: components[2],\n iv: components[3],\n contentCiphertext: components[4],\n authParams: components[5],\n ciphertextToAuth: [components[0], components[2], components[3], components[4]].join(\':\'),\n encryptionKey: encryptionKey,\n authKey: authKey\n };\n }\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__["ProtocolVersion"].V002;\n }\n }]);\n\n return SNProtocolOperator002;\n}(_Protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator001"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDAyL29wZXJhdG9yXzAwMi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDIvb3BlcmF0b3JfMDAyLnRzPzE3NDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05JdGVtc0tleSB9IGZyb20gJ0BNb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBWMDAyQWxnb3JpdGhtIH0gZnJvbSAnLi8uLi9hbGdvcml0aG1zJztcbmltcG9ydCB7IENyZWF0ZUtleVBhcmFtcyB9IGZyb20gJ0BQcm90b2NvbC9rZXlfcGFyYW1zJztcbmltcG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMSB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICdAUGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgU05Sb290S2V5IH0gZnJvbSAnQFByb3RvY29sL3Jvb3Rfa2V5Jztcbi8qKlxuICogQGRlcHJlY2F0ZWRcbiAqIEEgbGVnYWN5IG9wZXJhdG9yIG5vIGxvbmdlciB1c2VkIHRvIGdlbmVyYXRlIG5ldyBhY2NvdW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOUHJvdG9jb2xPcGVyYXRvcjAwMiBleHRlbmRzIFNOUHJvdG9jb2xPcGVyYXRvcjAwMSB7XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBQcm90b2NvbFZlcnNpb24uVjAwMjtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVOZXdJdGVtc0tleUNvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGtleUxlbmd0aCA9IFYwMDJBbGdvcml0aG0uRW5jcnlwdGlvbktleUxlbmd0aDtcbiAgICAgICAgY29uc3QgaXRlbXNLZXkgPSBhd2FpdCB0aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbUtleShrZXlMZW5ndGgpO1xuICAgICAgICBjb25zdCBhdXRoS2V5ID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoa2V5TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBpdGVtc0tleTogaXRlbXNLZXksXG4gICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IGF1dGhLZXksXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVSb290S2V5KGlkZW50aWZpZXIsIHBhc3N3b3JkKSB7XG4gICAgICAgIGNvbnN0IHB3Q29zdCA9IFYwMDJBbGdvcml0aG0uUGJrZGZNaW5Db3N0O1xuICAgICAgICBjb25zdCBwd05vbmNlID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoVjAwMkFsZ29yaXRobS5TYWx0U2VlZExlbmd0aCk7XG4gICAgICAgIGNvbnN0IHB3U2FsdCA9IGF3YWl0IHRoaXMuY3J5cHRvLnVuc2FmZVNoYTEoaWRlbnRpZmllciArICc6JyArIHB3Tm9uY2UpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwgcHdTYWx0LCBwd0Nvc3QpO1xuICAgICAgICBjb25zdCBrZXlQYXJhbXMgPSBDcmVhdGVLZXlQYXJhbXMoe1xuICAgICAgICAgICAgZW1haWw6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwd19jb3N0OiBwd0Nvc3QsXG4gICAgICAgICAgICBwd19ub25jZTogcHdOb25jZSxcbiAgICAgICAgICAgIHB3X3NhbHQ6IHB3U2FsdCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsga2V5LCBrZXlQYXJhbXMgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTm90ZSB0aGF0IHZlcnNpb24gMDAyIHN1cHBvcnRlZCBcImR5bmFtaWNcIiBpdGVyYXRpb24gY291bnRzLiBTb21lIGFjY291bnRzXG4gICAgICogbWF5IGhhdmUgaGFkIGNvc3RzIG9mIDUwMDAsIGFuZCBvdGhlcnMgb2YgMTAxMDAwLiBUaGVyZWZvcmUsIHdoZW4gY29tcHV0aW5nXG4gICAgICogdGhlIHJvb3Qga2V5LCB3ZSBtdXN0IHVzZSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIHNlcnZlci5cbiAgICAgKi9cbiAgICBhc3luYyBjb21wdXRlUm9vdEtleShwYXNzd29yZCwga2V5UGFyYW1zKSB7XG4gICAgICAgIC8qIFNhbHQgaXMgcmV0dXJuZWQgZnJvbSBzZXJ2ZXIgKi9cbiAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5kZXJpdmVLZXkocGFzc3dvcmQsIGtleVBhcmFtcy5zYWx0LCBrZXlQYXJhbXMua2RmSXRlcmF0aW9ucyk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIGFzeW5jIGRlY3J5cHRTdHJpbmcwMDIodGV4dCwga2V5LCBpdikge1xuICAgICAgICByZXR1cm4gdGhpcy5jcnlwdG8uYWVzMjU2Q2JjRGVjcnlwdCh0ZXh0LCBpdiwga2V5KTtcbiAgICB9XG4gICAgYXN5bmMgZW5jcnlwdFN0cmluZzAwMih0ZXh0LCBrZXksIGl2KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by5hZXMyNTZDYmNFbmNyeXB0KHRleHQsIGl2LCBrZXkpO1xuICAgIH1cbiAgICBhc3luYyBlbmNyeXB0VGV4dFBhcmFtcyhzdHJpbmcsIGVuY3J5cHRpb25LZXksIGF1dGhLZXksIHV1aWQsIHZlcnNpb24pIHtcbiAgICAgICAgY29uc3QgaXYgPSBhd2FpdCB0aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbUtleShWMDAyQWxnb3JpdGhtLkVuY3J5cHRpb25Jdkxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnRDaXBoZXJ0ZXh0ID0gYXdhaXQgdGhpcy5lbmNyeXB0U3RyaW5nMDAyKHN0cmluZywgZW5jcnlwdGlvbktleSwgaXYpO1xuICAgICAgICBjb25zdCBjaXBoZXJ0ZXh0VG9BdXRoID0gW3ZlcnNpb24sIHV1aWQsIGl2LCBjb250ZW50Q2lwaGVydGV4dF0uam9pbignOicpO1xuICAgICAgICBjb25zdCBhdXRoSGFzaCA9IGF3YWl0IHRoaXMuY3J5cHRvLmhtYWMyNTYoY2lwaGVydGV4dFRvQXV0aCwgYXV0aEtleSk7XG4gICAgICAgIGNvbnN0IGZ1bGxDaXBoZXJ0ZXh0ID0gW3ZlcnNpb24sIGF1dGhIYXNoLCB1dWlkLCBpdiwgY29udGVudENpcGhlcnRleHRdLmpvaW4oJzonKTtcbiAgICAgICAgcmV0dXJuIGZ1bGxDaXBoZXJ0ZXh0O1xuICAgIH1cbiAgICBhc3luYyBkZWNyeXB0VGV4dFBhcmFtcyhjaXBoZXJ0ZXh0VG9BdXRoLCBjb250ZW50Q2lwaGVydGV4dCwgZW5jcnlwdGlvbktleSwgaXYsIGF1dGhIYXNoLCBhdXRoS2V5KSB7XG4gICAgICAgIGlmICghZW5jcnlwdGlvbktleSkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gZGVjcnlwdFRleHRQYXJhbXMgd2l0aCBudWxsIGVuY3J5cHRpb25LZXknO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsQXV0aEhhc2ggPSBhd2FpdCB0aGlzLmNyeXB0by5obWFjMjU2KGNpcGhlcnRleHRUb0F1dGgsIGF1dGhLZXkpO1xuICAgICAgICBpZiAodGhpcy5jcnlwdG8udGltaW5nU2FmZUVxdWFsKGF1dGhIYXNoLCBsb2NhbEF1dGhIYXNoKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F1dGggaGFzaCBkb2VzIG5vdCBtYXRjaCwgcmV0dXJuaW5nIG51bGwuJyk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5kZWNyeXB0U3RyaW5nMDAyKGNvbnRlbnRDaXBoZXJ0ZXh0LCBlbmNyeXB0aW9uS2V5LCBpdik7XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyhwYXlsb2FkLCBmb3JtYXQsIGtleSkge1xuICAgICAgICBpZiAoKGZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0IHx8XG4gICAgICAgICAgICBmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFzZTY0U3RyaW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyhwYXlsb2FkLCBmb3JtYXQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZvcm1hdCAhPT0gUGF5bG9hZEZvcm1hdC5FbmNyeXB0ZWRTdHJpbmcpIHtcbiAgICAgICAgICAgIHRocm93IGBVbnN1cHBvcnQgZm9ybWF0IGZvciBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMgJHtmb3JtYXR9YDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSB8fCAha2V5Lml0ZW1zS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMgd2l0aCBubyBpdGVtc0tleS4nO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZW5lcmF0ZSBuZXcgaXRlbSBrZXkgdGhhdCBpcyBkb3VibGUgdGhlIGtleSBzaXplLlxuICAgICAgICAgKiBXaWxsIGJlIHNwbGl0IHRvIGNyZWF0ZSBlbmNyeXB0aW9uIGtleSBhbmQgYXV0aGVudGljYXRpb24ga2V5LlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDJBbGdvcml0aG0uRW5jcnlwdGlvbktleUxlbmd0aCAqIDIpO1xuICAgICAgICBjb25zdCBlbmNJdGVtS2V5ID0gYXdhaXQgdGhpcy5lbmNyeXB0VGV4dFBhcmFtcyhpdGVtS2V5LCBrZXkuaXRlbXNLZXksIGtleS5kYXRhQXV0aGVudGljYXRpb25LZXksIHBheWxvYWQudXVpZCwga2V5LnZlcnNpb24pO1xuICAgICAgICAvKiogRW5jcnlwdCBjb250ZW50ICovXG4gICAgICAgIGNvbnN0IGVrID0gYXdhaXQgdGhpcy5maXJzdEhhbGZPZktleShpdGVtS2V5KTtcbiAgICAgICAgY29uc3QgYWsgPSBhd2FpdCB0aGlzLnNlY29uZEhhbGZPZktleShpdGVtS2V5KTtcbiAgICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IHRoaXMuZW5jcnlwdFRleHRQYXJhbXMoSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5jb250ZW50KSwgZWssIGFrLCBwYXlsb2FkLnV1aWQsIGtleS52ZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIHV1aWQ6IHBheWxvYWQudXVpZCxcbiAgICAgICAgICAgIGl0ZW1zX2tleV9pZDoga2V5IGluc3RhbmNlb2YgU05JdGVtc0tleSA/IGtleS51dWlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGVudDogY2lwaGVydGV4dCxcbiAgICAgICAgICAgIGVuY19pdGVtX2tleTogZW5jSXRlbUtleVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIGtleSkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBlbmNyeXB0ZWRQYXJhbWV0ZXJzLmZvcm1hdDtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVuY3J5cHRlZFBhcmFtZXRlcnMuZW5jX2l0ZW1fa2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdNaXNzaW5nIGl0ZW0gZW5jcnlwdGlvbiBrZXksIHNraXBwaW5nIGRlY3J5cHRpb24uJyk7XG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkUGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSB8fCAha2V5Lml0ZW1zS2V5KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBnZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMgd2l0aCBubyBpdGVtc0tleS4nO1xuICAgICAgICB9XG4gICAgICAgIC8qIERlY3J5cHQgZW5jcnlwdGVkIGtleSAqL1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRJdGVtS2V5ID0gZW5jcnlwdGVkUGFyYW1ldGVycy5lbmNfaXRlbV9rZXk7XG4gICAgICAgIGNvbnN0IGl0ZW1LZXlDb21wb25lbnRzID0gdGhpcy5lbmNyeXB0aW9uQ29tcG9uZW50c0Zyb21TdHJpbmcwMDIoZW5jcnlwdGVkSXRlbUtleSwga2V5Lml0ZW1zS2V5LCBrZXkuZGF0YUF1dGhlbnRpY2F0aW9uS2V5KTtcbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuZGVjcnlwdFRleHRQYXJhbXMoaXRlbUtleUNvbXBvbmVudHMuY2lwaGVydGV4dFRvQXV0aCwgaXRlbUtleUNvbXBvbmVudHMuY29udGVudENpcGhlcnRleHQsIGl0ZW1LZXlDb21wb25lbnRzLmVuY3J5cHRpb25LZXksIGl0ZW1LZXlDb21wb25lbnRzLml2LCBpdGVtS2V5Q29tcG9uZW50cy5hdXRoSGFzaCwgaXRlbUtleUNvbXBvbmVudHMuYXV0aEtleSk7XG4gICAgICAgIGlmICghaXRlbUtleSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZGVjcnlwdGluZyBpdGVtX2tleSBwYXJhbWV0ZXJzJywgZW5jcnlwdGVkUGFyYW1ldGVycyk7XG4gICAgICAgICAgICByZXR1cm4gQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIHtcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkOiAhZW5jcnlwdGVkUGFyYW1ldGVycy5lcnJvckRlY3J5cHRpbmdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8qIERlY3J5cHQgY29udGVudCAqL1xuICAgICAgICBjb25zdCBlayA9IGF3YWl0IHRoaXMuZmlyc3RIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGFrID0gYXdhaXQgdGhpcy5zZWNvbmRIYWxmT2ZLZXkoaXRlbUtleSk7XG4gICAgICAgIGNvbnN0IGl0ZW1QYXJhbXMgPSB0aGlzLmVuY3J5cHRpb25Db21wb25lbnRzRnJvbVN0cmluZzAwMihlbmNyeXB0ZWRQYXJhbWV0ZXJzLmNvbnRlbnRTdHJpbmcsIGVrLCBhayk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCB0aGlzLmRlY3J5cHRUZXh0UGFyYW1zKGl0ZW1QYXJhbXMuY2lwaGVydGV4dFRvQXV0aCwgaXRlbVBhcmFtcy5jb250ZW50Q2lwaGVydGV4dCwgaXRlbVBhcmFtcy5lbmNyeXB0aW9uS2V5LCBpdGVtUGFyYW1zLml2LCBpdGVtUGFyYW1zLmF1dGhIYXNoLCBpdGVtUGFyYW1zLmF1dGhLZXkpO1xuICAgICAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6ICFlbmNyeXB0ZWRQYXJhbWV0ZXJzLmVycm9yRGVjcnlwdGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgYXV0aFBhcmFtcztcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXV0aFBhcmFtcyA9IEpTT04ucGFyc2UoYXdhaXQgdGhpcy5jcnlwdG8uYmFzZTY0RGVjb2RlKGl0ZW1QYXJhbXMuYXV0aFBhcmFtcykpO1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHsgfVxuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgY29udGVudDogSlNPTi5wYXJzZShjb250ZW50KSxcbiAgICAgICAgICAgICAgICBpdGVtc19rZXlfaWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBlbmNfaXRlbV9rZXk6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBhdXRoX3BhcmFtczogYXV0aFBhcmFtcyxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogZW5jcnlwdGVkUGFyYW1ldGVycy5lcnJvckRlY3J5cHRpbmcgPT09IHRydWUsXG4gICAgICAgICAgICAgICAgd2FpdGluZ0ZvcktleTogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBkZXJpdmVLZXkocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0KSB7XG4gICAgICAgIGNvbnN0IGRlcml2ZWRLZXkgPSBhd2FpdCB0aGlzLmNyeXB0by5wYmtkZjIocGFzc3dvcmQsIHB3U2FsdCwgcHdDb3N0LCBWMDAyQWxnb3JpdGhtLlBia2RmT3V0cHV0TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcGFydGl0aW9ucyA9IGF3YWl0IHRoaXMuc3BsaXRLZXkoZGVyaXZlZEtleSwgMyk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoe1xuICAgICAgICAgICAgc2VydmVyUGFzc3dvcmQ6IHBhcnRpdGlvbnNbMF0sXG4gICAgICAgICAgICBtYXN0ZXJLZXk6IHBhcnRpdGlvbnNbMV0sXG4gICAgICAgICAgICBkYXRhQXV0aGVudGljYXRpb25LZXk6IHBhcnRpdGlvbnNbMl0sXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIGVuY3J5cHRpb25Db21wb25lbnRzRnJvbVN0cmluZzAwMihzdHJpbmcsIGVuY3J5cHRpb25LZXksIGF1dGhLZXkpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHN0cmluZy5zcGxpdCgnOicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZW5jcnlwdGlvblZlcnNpb246IGNvbXBvbmVudHNbMF0sXG4gICAgICAgICAgICBhdXRoSGFzaDogY29tcG9uZW50c1sxXSxcbiAgICAgICAgICAgIHV1aWQ6IGNvbXBvbmVudHNbMl0sXG4gICAgICAgICAgICBpdjogY29tcG9uZW50c1szXSxcbiAgICAgICAgICAgIGNvbnRlbnRDaXBoZXJ0ZXh0OiBjb21wb25lbnRzWzRdLFxuICAgICAgICAgICAgYXV0aFBhcmFtczogY29tcG9uZW50c1s1XSxcbiAgICAgICAgICAgIGNpcGhlcnRleHRUb0F1dGg6IFtcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzWzBdLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbMl0sXG4gICAgICAgICAgICAgICAgY29tcG9uZW50c1szXSxcbiAgICAgICAgICAgICAgICBjb21wb25lbnRzWzRdXG4gICAgICAgICAgICBdLmpvaW4oJzonKSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25LZXk6IGVuY3J5cHRpb25LZXksXG4gICAgICAgICAgICBhdXRoS2V5OiBhdXRoS2V5LFxuICAgICAgICB9O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUxBO0FBQUE7QUFDQTtBQURBO0FBTUE7QUFOQTtBQUFBO0FBQ0E7QUFEQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQVJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBaEJBO0FBQUE7QUFDQTtBQURBO0FBaUJBO0FBakJBO0FBQUE7QUFDQTtBQURBO0FBa0JBO0FBbEJBO0FBQUE7QUFDQTtBQURBO0FBbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFwQkE7QUEyQkE7QUFBQTtBQUFBO0FBQ0E7QUE1QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZCQTs7Ozs7O0FBN0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBb0NBO0FBcENBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4Q0E7QUE5Q0E7QUFBQTtBQUNBO0FBREE7QUErQ0E7QUFDQTtBQWhEQTtBQUFBO0FBQ0E7QUFEQTtBQWlEQTtBQUNBO0FBbERBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeURBO0FBQ0E7QUExREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTBEQTtBQTNEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBK0VBO0FBL0VBO0FBQUE7QUFDQTtBQURBO0FBZ0ZBO0FBaEZBO0FBQUE7QUFDQTtBQURBO0FBa0ZBO0FBbEZBO0FBQUE7QUFDQTtBQURBO0FBbUZBO0FBbkZBO0FBQUE7QUFDQTtBQURBO0FBb0ZBO0FBcEZBO0FBc0ZBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQXRGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkZBO0FBQ0E7QUE5RkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrR0E7QUFuR0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlHQTtBQUNBO0FBQ0E7QUEzR0E7QUFBQTtBQUNBO0FBREE7QUE0R0E7QUFDQTtBQTdHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNkdBO0FBOUdBO0FBZ0hBO0FBQ0E7QUFGQTtBQUNBO0FBaEhBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxSEE7QUFySEE7QUFBQTtBQUNBO0FBREE7QUFzSEE7QUFDQTtBQXZIQTtBQUFBO0FBQ0E7QUFEQTtBQXdIQTtBQUNBO0FBekhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJIQTtBQUNBO0FBRkE7QUFDQTtBQTNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBa0lBO0FBbElBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUF2SUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa0pBO0FBbEpBO0FBQUE7QUFDQTtBQURBO0FBbUpBO0FBbkpBO0FBQUE7QUFxSkE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBckpBO0FBb0pBO0FBcEpBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFkQTtBQWdCQTtBQTlLQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBSEE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/operator/002/operator_002.ts\n')},"./lib/protocol/operator/003/operator_003.ts": /*!***************************************************!*\ !*** ./lib/protocol/operator/003/operator_003.ts ***! \***************************************************/ /*! exports provided: SNProtocolOperator003 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator003", function() { return SNProtocolOperator003; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _algorithms__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n/**\n * @deprecated\n * Non-expired operator but no longer used for generating new accounts.\n * This operator subclasses the 002 operator to share functionality that has not\n * changed, and overrides functions where behavior may differ.\n */\n\nvar SNProtocolOperator003 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator003, _SNProtocolOperator);\n\n function SNProtocolOperator003() {\n _classCallCheck(this, SNProtocolOperator003);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator003).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator003, [{\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(password, keyParams) {\n var pwCost, version, salt, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n /** Unlike 002, 003 uses a hardcoded cost and not a variable one.\n * Therefore, we always use our own hardcoded value and not what is offered by\n * input keyParams. */\n pwCost = _algorithms__WEBPACK_IMPORTED_MODULE_1__["V003Algorithm"].PbkdfCost;\n version = this.version;\n _context.next = 4;\n return this.generateSalt(keyParams.identifier, version, pwCost, keyParams.seed);\n\n case 4:\n salt = _context.sent;\n _context.next = 7;\n return this.deriveKey(password, salt, pwCost);\n\n case 7:\n key = _context.sent;\n return _context.abrupt("return", key);\n\n case 9:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function computeRootKey(_x, _x2) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, password) {\n var version, pwCost, pwNonce, pwSalt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n version = this.version;\n pwCost = _algorithms__WEBPACK_IMPORTED_MODULE_1__["V003Algorithm"].PbkdfCost;\n _context2.next = 4;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_1__["V003Algorithm"].SaltSeedLength);\n\n case 4:\n pwNonce = _context2.sent;\n _context2.next = 7;\n return this.generateSalt(identifier, version, pwCost, pwNonce);\n\n case 7:\n pwSalt = _context2.sent;\n _context2.next = 10;\n return this.deriveKey(password, pwSalt, pwCost);\n\n case 10:\n key = _context2.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_2__["CreateKeyParams"])({\n identifier: identifier,\n pw_cost: pwCost,\n pw_nonce: pwNonce,\n version: version\n });\n return _context2.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 13:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function createRootKey(_x3, _x4) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n }, {\n key: "generateSalt",\n value: function () {\n var _generateSalt = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(identifier, version, cost, nonce) {\n var result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.crypto.sha256([identifier, \'SF\', version, cost, nonce].join(\':\'));\n\n case 2:\n result = _context3.sent;\n return _context3.abrupt("return", result);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function generateSalt(_x5, _x6, _x7, _x8) {\n return _generateSalt.apply(this, arguments);\n }\n\n return generateSalt;\n }()\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_4__["ProtocolVersion"].V003;\n }\n }]);\n\n return SNProtocolOperator003;\n}(_Protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_3__["SNProtocolOperator002"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDAzL29wZXJhdG9yXzAwMy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDMvb3BlcmF0b3JfMDAzLnRzPzhhNmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVjAwM0FsZ29yaXRobSB9IGZyb20gJy4vLi4vYWxnb3JpdGhtcyc7XG5pbXBvcnQgeyBDcmVhdGVLZXlQYXJhbXMgfSBmcm9tICdAUHJvdG9jb2wva2V5X3BhcmFtcyc7XG5pbXBvcnQgeyBTTlByb3RvY29sT3BlcmF0b3IwMDIgfSBmcm9tICdAUHJvdG9jb2wvb3BlcmF0b3IvMDAyL29wZXJhdG9yXzAwMic7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogTm9uLWV4cGlyZWQgb3BlcmF0b3IgYnV0IG5vIGxvbmdlciB1c2VkIGZvciBnZW5lcmF0aW5nIG5ldyBhY2NvdW50cy5cbiAqIFRoaXMgb3BlcmF0b3Igc3ViY2xhc3NlcyB0aGUgMDAyIG9wZXJhdG9yIHRvIHNoYXJlIGZ1bmN0aW9uYWxpdHkgdGhhdCBoYXMgbm90XG4gKiBjaGFuZ2VkLCBhbmQgb3ZlcnJpZGVzIGZ1bmN0aW9ucyB3aGVyZSBiZWhhdmlvciBtYXkgZGlmZmVyLlxuICovXG5leHBvcnQgY2xhc3MgU05Qcm90b2NvbE9wZXJhdG9yMDAzIGV4dGVuZHMgU05Qcm90b2NvbE9wZXJhdG9yMDAyIHtcbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIFByb3RvY29sVmVyc2lvbi5WMDAzO1xuICAgIH1cbiAgICBhc3luYyBjb21wdXRlUm9vdEtleShwYXNzd29yZCwga2V5UGFyYW1zKSB7XG4gICAgICAgIC8qKiBVbmxpa2UgMDAyLCAwMDMgdXNlcyBhIGhhcmRjb2RlZCBjb3N0IGFuZCBub3QgYSB2YXJpYWJsZSBvbmUuXG4gICAgICAgICAqIFRoZXJlZm9yZSwgd2UgYWx3YXlzIHVzZSBvdXIgb3duIGhhcmRjb2RlZCB2YWx1ZSBhbmQgbm90IHdoYXQgaXMgb2ZmZXJlZCBieVxuICAgICAgICAgKiBpbnB1dCBrZXlQYXJhbXMuICovXG4gICAgICAgIGNvbnN0IHB3Q29zdCA9IFYwMDNBbGdvcml0aG0uUGJrZGZDb3N0O1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuICAgICAgICBjb25zdCBzYWx0ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVNhbHQoa2V5UGFyYW1zLmlkZW50aWZpZXIsIHZlcnNpb24sIHB3Q29zdCwga2V5UGFyYW1zLnNlZWQpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwgc2FsdCwgcHdDb3N0KTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgYXN5bmMgY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzd29yZCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuICAgICAgICBjb25zdCBwd0Nvc3QgPSBWMDAzQWxnb3JpdGhtLlBia2RmQ29zdDtcbiAgICAgICAgY29uc3QgcHdOb25jZSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDNBbGdvcml0aG0uU2FsdFNlZWRMZW5ndGgpO1xuICAgICAgICBjb25zdCBwd1NhbHQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlU2FsdChpZGVudGlmaWVyLCB2ZXJzaW9uLCBwd0Nvc3QsIHB3Tm9uY2UpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmRlcml2ZUtleShwYXNzd29yZCwgcHdTYWx0LCBwd0Nvc3QpO1xuICAgICAgICBjb25zdCBrZXlQYXJhbXMgPSBDcmVhdGVLZXlQYXJhbXMoe1xuICAgICAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgICAgIHB3X2Nvc3Q6IHB3Q29zdCxcbiAgICAgICAgICAgIHB3X25vbmNlOiBwd05vbmNlLFxuICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBrZXksIGtleVBhcmFtczoga2V5UGFyYW1zIH07XG4gICAgfVxuICAgIGFzeW5jIGdlbmVyYXRlU2FsdChpZGVudGlmaWVyLCB2ZXJzaW9uLCBjb3N0LCBub25jZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNyeXB0by5zaGEyNTYoW1xuICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgICdTRicsXG4gICAgICAgICAgICB2ZXJzaW9uLFxuICAgICAgICAgICAgY29zdCxcbiAgICAgICAgICAgIG5vbmNlXG4gICAgICAgIF0uam9pbignOicpKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQU1BO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBOzs7QUFHQTtBQUNBO0FBVEE7QUFBQTtBQUNBO0FBREE7QUFVQTtBQVZBO0FBQUE7QUFDQTtBQURBO0FBV0E7QUFYQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFoQkE7QUFBQTtBQUNBO0FBREE7QUFpQkE7QUFqQkE7QUFBQTtBQUNBO0FBREE7QUFrQkE7QUFsQkE7QUFBQTtBQUNBO0FBREE7QUFtQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFwQkE7QUEwQkE7QUFBQTtBQUFBO0FBQ0E7QUEzQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNkJBO0FBN0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUhBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/003/operator_003.ts\n')},"./lib/protocol/operator/004/operator_004.ts": /*!***************************************************!*\ !*** ./lib/protocol/operator/004/operator_004.ts ***! \***************************************************/ /*! exports provided: SNProtocolOperator004 */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator004", function() { return SNProtocolOperator004; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _algorithms__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\nvar PARTITION_CHARACTER = \':\';\nvar SNProtocolOperator004 = /*#__PURE__*/function (_SNProtocolOperator) {\n _inherits(SNProtocolOperator004, _SNProtocolOperator);\n\n function SNProtocolOperator004() {\n _classCallCheck(this, SNProtocolOperator004);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolOperator004).apply(this, arguments));\n }\n\n _createClass(SNProtocolOperator004, [{\n key: "generateNewItemsKeyContent",\n value: function () {\n var _generateNewItemsKeyContent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var itemsKey, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].EncryptionKeyLength);\n\n case 2:\n itemsKey = _context.sent;\n response = {\n itemsKey: itemsKey,\n version: this.version\n };\n return _context.abrupt("return", response);\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function generateNewItemsKeyContent() {\n return _generateNewItemsKeyContent.apply(this, arguments);\n }\n\n return generateNewItemsKeyContent;\n }()\n /**\n * We require both a client-side component and a server-side component in generating a\n * salt. This way, a comprimised server cannot benefit from sending the same seed value\n * for every user. We mix a client-controlled value that is globally unique\n * (their identifier), with a server controlled value to produce a salt for our KDF.\n * @param identifier\n * @param seed\n */\n\n }, {\n key: "generateSalt004",\n value: function () {\n var _generateSalt = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(identifier, seed) {\n var hash;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.crypto.sha256([identifier, seed].join(PARTITION_CHARACTER));\n\n case 2:\n hash = _context2.sent;\n return _context2.abrupt("return", Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_9__["truncateHexString"])(hash, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonSaltLength));\n\n case 4:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function generateSalt004(_x, _x2) {\n return _generateSalt.apply(this, arguments);\n }\n\n return generateSalt004;\n }()\n /**\n * Computes a root key given a password and previous keyParams\n * @param password - Plain string representing raw user password\n * @param keyParams - KeyParams object\n */\n\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(password, keyParams) {\n var salt, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.generateSalt004(keyParams.identifier, keyParams.seed);\n\n case 2:\n salt = _context3.sent;\n _context3.next = 5;\n return this.deriveKey(password, salt, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonIterations);\n\n case 5:\n key = _context3.sent;\n return _context3.abrupt("return", key);\n\n case 7:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function computeRootKey(_x3, _x4) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n /**\n * Creates a new root key given an identifier and a user password\n * @param identifier - Plain string representing a unique identifier\n * @param password - Plain string representing raw user password\n */\n\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(identifier, password) {\n var version, iterations, seed, salt, key, keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n version = this.version;\n iterations = _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonIterations;\n _context4.next = 4;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonSaltSeedLength);\n\n case 4:\n seed = _context4.sent;\n _context4.next = 7;\n return this.generateSalt004(identifier, seed);\n\n case 7:\n salt = _context4.sent;\n _context4.next = 10;\n return this.deriveKey(password, salt, iterations);\n\n case 10:\n key = _context4.sent;\n keyParams = Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_3__["CreateKeyParams"])({\n identifier: identifier,\n pw_cost: iterations,\n pw_nonce: seed,\n version: version\n });\n return _context4.abrupt("return", {\n key: key,\n keyParams: keyParams\n });\n\n case 13:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function createRootKey(_x5, _x6) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n /**\n * @param plaintext - The plaintext to encrypt.\n * @param rawKey - The key to use to encrypt the plaintext.\n * @param nonce - The nonce for encryption.\n * @param aad - JavaScript object (will be stringified) representing\n \'Additional authenticated data\': data you want to be included in authentication.\n */\n\n }, {\n key: "encryptString004",\n value: function () {\n var _encryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(plaintext, rawKey, nonce, aad) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (nonce) {\n _context5.next = 2;\n break;\n }\n\n throw \'encryptString null nonce\';\n\n case 2:\n if (rawKey) {\n _context5.next = 4;\n break;\n }\n\n throw \'encryptString null rawKey\';\n\n case 4:\n return _context5.abrupt("return", this.crypto.xchacha20Encrypt(plaintext, nonce, rawKey, JSON.stringify(aad)));\n\n case 5:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function encryptString004(_x7, _x8, _x9, _x10) {\n return _encryptString.apply(this, arguments);\n }\n\n return encryptString004;\n }()\n /**\n * @param {string} ciphertext The encrypted text to decrypt.\n * @param {string} rawKey The key to use to decrypt the ciphertext.\n * @param {string} nonce The nonce for decryption.\n * @param {object} aad JavaScript object (will be stringified) representing\n \'Additional authenticated data\' - data you want to be included in authentication.\n */\n\n }, {\n key: "decryptString004",\n value: function () {\n var _decryptString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(ciphertext, rawKey, nonce, aad) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt("return", this.crypto.xchacha20Decrypt(ciphertext, nonce, rawKey, JSON.stringify(aad)));\n\n case 1:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function decryptString004(_x11, _x12, _x13, _x14) {\n return _decryptString.apply(this, arguments);\n }\n\n return decryptString004;\n }()\n /**\n * @param plaintext The plaintext text to decrypt.\n * @param rawKey The key to use to encrypt the plaintext.\n * @param itemUuid The uuid of the item being encrypted\n */\n\n }, {\n key: "generateEncryptedProtocolString",\n value: function () {\n var _generateEncryptedProtocolString = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(plaintext, rawKey, itemUuid) {\n var nonce, version, ciphertext, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].EncryptionNonceLength);\n\n case 2:\n nonce = _context7.sent;\n version = this.version;\n _context7.next = 6;\n return this.encryptString004(plaintext, rawKey, nonce, {\n u: itemUuid,\n v: version\n });\n\n case 6:\n ciphertext = _context7.sent;\n payload = [version, nonce, ciphertext].join(PARTITION_CHARACTER);\n return _context7.abrupt("return", payload);\n\n case 9:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function generateEncryptedProtocolString(_x15, _x16, _x17) {\n return _generateEncryptedProtocolString.apply(this, arguments);\n }\n\n return generateEncryptedProtocolString;\n }()\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload, format, key) {\n var itemKey, contentPlaintext, encryptedContentString, encryptedItemKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator004.prototype), "generateEncryptedParameters", this).call(this, payload, format, key));\n\n case 2:\n if (!(format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].EncryptedString)) {\n _context8.next = 4;\n break;\n }\n\n throw "Unsupport format for generateEncryptedParameters ".concat(format);\n\n case 4:\n if (payload.uuid) {\n _context8.next = 6;\n break;\n }\n\n throw \'payload.uuid cannot be null\';\n\n case 6:\n if (!(!key || !key.itemsKey)) {\n _context8.next = 8;\n break;\n }\n\n throw \'Attempting to generateEncryptedParameters with no itemsKey.\';\n\n case 8:\n _context8.next = 10;\n return this.crypto.generateRandomKey(_algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].EncryptionKeyLength);\n\n case 10:\n itemKey = _context8.sent;\n\n /** Encrypt content with item_key */\n contentPlaintext = JSON.stringify(payload.content);\n _context8.next = 14;\n return this.generateEncryptedProtocolString(contentPlaintext, itemKey, payload.uuid);\n\n case 14:\n encryptedContentString = _context8.sent;\n _context8.next = 17;\n return this.generateEncryptedProtocolString(itemKey, key.itemsKey, payload.uuid);\n\n case 17:\n encryptedItemKey = _context8.sent;\n return _context8.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CreateEncryptionParameters"])({\n uuid: payload.uuid,\n items_key_id: key instanceof _Models_app_items_key__WEBPACK_IMPORTED_MODULE_1__["SNItemsKey"] ? key.uuid : undefined,\n content: encryptedContentString,\n enc_item_key: encryptedItemKey\n }));\n\n case 19:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function generateEncryptedParameters(_x18, _x19, _x20) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(encryptedParameters, key) {\n var format, itemKeyComponents, itemKey, contentComponents, content;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject || format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String)) {\n _context9.next = 3;\n break;\n }\n\n return _context9.abrupt("return", _get(_getPrototypeOf(SNProtocolOperator004.prototype), "generateDecryptedParameters", this).call(this, encryptedParameters, key));\n\n case 3:\n if (encryptedParameters.uuid) {\n _context9.next = 5;\n break;\n }\n\n throw \'encryptedParameters.uuid cannot be null\';\n\n case 5:\n if (!(!key || !key.itemsKey)) {\n _context9.next = 7;\n break;\n }\n\n throw \'Attempting to generateDecryptedParameters with no itemsKey.\';\n\n case 7:\n /** Decrypt item_key payload. */\n itemKeyComponents = this.deconstructEncryptedPayloadString(encryptedParameters.enc_item_key);\n _context9.next = 10;\n return this.decryptString004(itemKeyComponents.ciphertext, key.itemsKey, itemKeyComponents.nonce, {\n u: encryptedParameters.uuid,\n v: itemKeyComponents.version\n });\n\n case 10:\n itemKey = _context9.sent;\n\n if (itemKey) {\n _context9.next = 14;\n break;\n }\n\n console.error(\'Error decrypting itemKey parameters\', encryptedParameters);\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 14:\n /** Decrypt content payload. */\n contentComponents = this.deconstructEncryptedPayloadString(encryptedParameters.contentString);\n _context9.next = 17;\n return this.decryptString004(contentComponents.ciphertext, itemKey, contentComponents.nonce, {\n u: encryptedParameters.uuid,\n v: contentComponents.version\n });\n\n case 17:\n content = _context9.sent;\n\n if (content) {\n _context9.next = 22;\n break;\n }\n\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedParameters.errorDecrypting\n }));\n\n case 22:\n return _context9.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyEncryptionParameters"])(encryptedParameters, {\n content: JSON.parse(content),\n items_key_id: undefined,\n enc_item_key: undefined,\n errorDecrypting: false,\n errorDecryptingValueChanged: encryptedParameters.errorDecrypting === true,\n waitingForKey: false\n }));\n\n case 23:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function generateDecryptedParameters(_x21, _x22) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }, {\n key: "deconstructEncryptedPayloadString",\n value: function deconstructEncryptedPayloadString(payloadString) {\n var components = payloadString.split(PARTITION_CHARACTER);\n return {\n version: components[0],\n nonce: components[1],\n ciphertext: components[2]\n };\n }\n }, {\n key: "deriveKey",\n value: function () {\n var _deriveKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(password, salt, iterations) {\n var derivedKey, partitions, masterKey, serverPassword;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.crypto.argon2(password, salt, iterations, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonMemLimit, _algorithms__WEBPACK_IMPORTED_MODULE_2__["V004Algorithm"].ArgonOutputKeyBytes);\n\n case 2:\n derivedKey = _context10.sent;\n partitions = this.splitKey(derivedKey, 2);\n masterKey = partitions[0];\n serverPassword = partitions[1];\n return _context10.abrupt("return", _Protocol_root_key__WEBPACK_IMPORTED_MODULE_8__["SNRootKey"].Create({\n masterKey: masterKey,\n serverPassword: serverPassword,\n version: this.version\n }));\n\n case 7:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function deriveKey(_x23, _x24, _x25) {\n return _deriveKey.apply(this, arguments);\n }\n\n return deriveKey;\n }()\n }, {\n key: "version",\n get: function get() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_7__["ProtocolVersion"].V004;\n }\n }]);\n\n return SNProtocolOperator004;\n}(_Protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_4__["SNProtocolOperator003"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvMDA0L29wZXJhdG9yXzAwNC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci8wMDQvb3BlcmF0b3JfMDA0LnRzPzI4NzYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU05JdGVtc0tleSB9IGZyb20gJ0BNb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBWMDA0QWxnb3JpdGhtIH0gZnJvbSAnLi8uLi9hbGdvcml0aG1zJztcbmltcG9ydCB7IENyZWF0ZUtleVBhcmFtcyB9IGZyb20gJ0BQcm90b2NvbC9rZXlfcGFyYW1zJztcbmltcG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB9IGZyb20gJ0BQcm90b2NvbC9vcGVyYXRvci8wMDMvb3BlcmF0b3JfMDAzJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICdAUGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgU05Sb290S2V5IH0gZnJvbSAnQFByb3RvY29sL3Jvb3Rfa2V5JztcbmltcG9ydCB7IHRydW5jYXRlSGV4U3RyaW5nIH0gZnJvbSAnQExpYi91dGlscyc7XG5jb25zdCBQQVJUSVRJT05fQ0hBUkFDVEVSID0gJzonO1xuZXhwb3J0IGNsYXNzIFNOUHJvdG9jb2xPcGVyYXRvcjAwNCBleHRlbmRzIFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB7XG4gICAgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiBQcm90b2NvbFZlcnNpb24uVjAwNDtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVOZXdJdGVtc0tleUNvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5ID0gYXdhaXQgdGhpcy5jcnlwdG8uZ2VuZXJhdGVSYW5kb21LZXkoVjAwNEFsZ29yaXRobS5FbmNyeXB0aW9uS2V5TGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBpdGVtc0tleTogaXRlbXNLZXksXG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXZSByZXF1aXJlIGJvdGggYSBjbGllbnQtc2lkZSBjb21wb25lbnQgYW5kIGEgc2VydmVyLXNpZGUgY29tcG9uZW50IGluIGdlbmVyYXRpbmcgYVxuICAgICAqIHNhbHQuIFRoaXMgd2F5LCBhIGNvbXByaW1pc2VkIHNlcnZlciBjYW5ub3QgYmVuZWZpdCBmcm9tIHNlbmRpbmcgdGhlIHNhbWUgc2VlZCB2YWx1ZVxuICAgICAqIGZvciBldmVyeSB1c2VyLiBXZSBtaXggYSBjbGllbnQtY29udHJvbGxlZCB2YWx1ZSB0aGF0IGlzIGdsb2JhbGx5IHVuaXF1ZVxuICAgICAqICh0aGVpciBpZGVudGlmaWVyKSwgd2l0aCBhIHNlcnZlciBjb250cm9sbGVkIHZhbHVlIHRvIHByb2R1Y2UgYSBzYWx0IGZvciBvdXIgS0RGLlxuICAgICAqIEBwYXJhbSBpZGVudGlmaWVyXG4gICAgICogQHBhcmFtIHNlZWRcbiAgICAqL1xuICAgIGFzeW5jIGdlbmVyYXRlU2FsdDAwNChpZGVudGlmaWVyLCBzZWVkKSB7XG4gICAgICAgIGNvbnN0IGhhc2ggPSBhd2FpdCB0aGlzLmNyeXB0by5zaGEyNTYoW2lkZW50aWZpZXIsIHNlZWRdLmpvaW4oUEFSVElUSU9OX0NIQVJBQ1RFUikpO1xuICAgICAgICByZXR1cm4gdHJ1bmNhdGVIZXhTdHJpbmcoaGFzaCwgVjAwNEFsZ29yaXRobS5BcmdvblNhbHRMZW5ndGgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyBhIHJvb3Qga2V5IGdpdmVuIGEgcGFzc3dvcmQgYW5kIHByZXZpb3VzIGtleVBhcmFtc1xuICAgICAqIEBwYXJhbSBwYXNzd29yZCAtIFBsYWluIHN0cmluZyByZXByZXNlbnRpbmcgcmF3IHVzZXIgcGFzc3dvcmRcbiAgICAgKiBAcGFyYW0ga2V5UGFyYW1zIC0gS2V5UGFyYW1zIG9iamVjdFxuICAgICAqL1xuICAgIGFzeW5jIGNvbXB1dGVSb290S2V5KHBhc3N3b3JkLCBrZXlQYXJhbXMpIHtcbiAgICAgICAgY29uc3Qgc2FsdCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVTYWx0MDA0KGtleVBhcmFtcy5pZGVudGlmaWVyLCBrZXlQYXJhbXMuc2VlZCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGVyaXZlS2V5KHBhc3N3b3JkLCBzYWx0LCBWMDA0QWxnb3JpdGhtLkFyZ29uSXRlcmF0aW9ucyk7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcm9vdCBrZXkgZ2l2ZW4gYW4gaWRlbnRpZmllciBhbmQgYSB1c2VyIHBhc3N3b3JkXG4gICAgICogQHBhcmFtIGlkZW50aWZpZXIgLSBQbGFpbiBzdHJpbmcgcmVwcmVzZW50aW5nIGEgdW5pcXVlIGlkZW50aWZpZXJcbiAgICAgKiBAcGFyYW0gcGFzc3dvcmQgLSBQbGFpbiBzdHJpbmcgcmVwcmVzZW50aW5nIHJhdyB1c2VyIHBhc3N3b3JkXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlUm9vdEtleShpZGVudGlmaWVyLCBwYXNzd29yZCkge1xuICAgICAgICBjb25zdCB2ZXJzaW9uID0gdGhpcy52ZXJzaW9uO1xuICAgICAgICBjb25zdCBpdGVyYXRpb25zID0gVjAwNEFsZ29yaXRobS5Bcmdvbkl0ZXJhdGlvbnM7XG4gICAgICAgIGNvbnN0IHNlZWQgPSBhd2FpdCB0aGlzLmNyeXB0by5nZW5lcmF0ZVJhbmRvbUtleShWMDA0QWxnb3JpdGhtLkFyZ29uU2FsdFNlZWRMZW5ndGgpO1xuICAgICAgICBjb25zdCBzYWx0ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVNhbHQwMDQoaWRlbnRpZmllciwgc2VlZCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuZGVyaXZlS2V5KHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zKTtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gQ3JlYXRlS2V5UGFyYW1zKHtcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgICAgICBwd19jb3N0OiBpdGVyYXRpb25zLFxuICAgICAgICAgICAgcHdfbm9uY2U6IHNlZWQsXG4gICAgICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHsga2V5OiBrZXksIGtleVBhcmFtczoga2V5UGFyYW1zIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwbGFpbnRleHQgLSBUaGUgcGxhaW50ZXh0IHRvIGVuY3J5cHQuXG4gICAgICogQHBhcmFtIHJhd0tleSAtIFRoZSBrZXkgdG8gdXNlIHRvIGVuY3J5cHQgdGhlIHBsYWludGV4dC5cbiAgICAgKiBAcGFyYW0gbm9uY2UgLSBUaGUgbm9uY2UgZm9yIGVuY3J5cHRpb24uXG4gICAgICogQHBhcmFtIGFhZCAtIEphdmFTY3JpcHQgb2JqZWN0ICh3aWxsIGJlIHN0cmluZ2lmaWVkKSByZXByZXNlbnRpbmdcbiAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsIGF1dGhlbnRpY2F0ZWQgZGF0YSc6IGRhdGEgeW91IHdhbnQgdG8gYmUgaW5jbHVkZWQgaW4gYXV0aGVudGljYXRpb24uXG4gICAgICovXG4gICAgYXN5bmMgZW5jcnlwdFN0cmluZzAwNChwbGFpbnRleHQsIHJhd0tleSwgbm9uY2UsIGFhZCkge1xuICAgICAgICBpZiAoIW5vbmNlKSB7XG4gICAgICAgICAgICB0aHJvdyAnZW5jcnlwdFN0cmluZyBudWxsIG5vbmNlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJhd0tleSkge1xuICAgICAgICAgICAgdGhyb3cgJ2VuY3J5cHRTdHJpbmcgbnVsbCByYXdLZXknO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by54Y2hhY2hhMjBFbmNyeXB0KHBsYWludGV4dCwgbm9uY2UsIHJhd0tleSwgSlNPTi5zdHJpbmdpZnkoYWFkKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaXBoZXJ0ZXh0ICBUaGUgZW5jcnlwdGVkIHRleHQgdG8gZGVjcnlwdC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmF3S2V5ICBUaGUga2V5IHRvIHVzZSB0byBkZWNyeXB0IHRoZSBjaXBoZXJ0ZXh0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBub25jZSAgVGhlIG5vbmNlIGZvciBkZWNyeXB0aW9uLlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBhYWQgIEphdmFTY3JpcHQgb2JqZWN0ICh3aWxsIGJlIHN0cmluZ2lmaWVkKSByZXByZXNlbnRpbmdcbiAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsIGF1dGhlbnRpY2F0ZWQgZGF0YScgLSBkYXRhIHlvdSB3YW50IHRvIGJlIGluY2x1ZGVkIGluIGF1dGhlbnRpY2F0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGRlY3J5cHRTdHJpbmcwMDQoY2lwaGVydGV4dCwgcmF3S2V5LCBub25jZSwgYWFkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyeXB0by54Y2hhY2hhMjBEZWNyeXB0KGNpcGhlcnRleHQsIG5vbmNlLCByYXdLZXksIEpTT04uc3RyaW5naWZ5KGFhZCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcGxhaW50ZXh0ICBUaGUgcGxhaW50ZXh0IHRleHQgdG8gZGVjcnlwdC5cbiAgICAgKiBAcGFyYW0gcmF3S2V5ICBUaGUga2V5IHRvIHVzZSB0byBlbmNyeXB0IHRoZSBwbGFpbnRleHQuXG4gICAgICogQHBhcmFtIGl0ZW1VdWlkICBUaGUgdXVpZCBvZiB0aGUgaXRlbSBiZWluZyBlbmNyeXB0ZWRcbiAgICAgKi9cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFByb3RvY29sU3RyaW5nKHBsYWludGV4dCwgcmF3S2V5LCBpdGVtVXVpZCkge1xuICAgICAgICBjb25zdCBub25jZSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDRBbGdvcml0aG0uRW5jcnlwdGlvbk5vbmNlTGVuZ3RoKTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgICAgICAgY29uc3QgY2lwaGVydGV4dCA9IGF3YWl0IHRoaXMuZW5jcnlwdFN0cmluZzAwNChwbGFpbnRleHQsIHJhd0tleSwgbm9uY2UsIHsgdTogaXRlbVV1aWQsIHY6IHZlcnNpb24gfSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBbdmVyc2lvbiwgbm9uY2UsIGNpcGhlcnRleHRdLmpvaW4oUEFSVElUSU9OX0NIQVJBQ1RFUik7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH1cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpIHtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmb3JtYXQgIT09IFBheWxvYWRGb3JtYXQuRW5jcnlwdGVkU3RyaW5nKSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5zdXBwb3J0IGZvcm1hdCBmb3IgZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzICR7Zm9ybWF0fWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXlsb2FkLnV1aWQpIHtcbiAgICAgICAgICAgIHRocm93ICdwYXlsb2FkLnV1aWQgY2Fubm90IGJlIG51bGwnO1xuICAgICAgICB9XG4gICAgICAgIGlmICgha2V5IHx8ICFrZXkuaXRlbXNLZXkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGdlbmVyYXRlRW5jcnlwdGVkUGFyYW1ldGVycyB3aXRoIG5vIGl0ZW1zS2V5Lic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmdlbmVyYXRlUmFuZG9tS2V5KFYwMDRBbGdvcml0aG0uRW5jcnlwdGlvbktleUxlbmd0aCk7XG4gICAgICAgIC8qKiBFbmNyeXB0IGNvbnRlbnQgd2l0aCBpdGVtX2tleSAqL1xuICAgICAgICBjb25zdCBjb250ZW50UGxhaW50ZXh0ID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5jb250ZW50KTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkQ29udGVudFN0cmluZyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVFbmNyeXB0ZWRQcm90b2NvbFN0cmluZyhjb250ZW50UGxhaW50ZXh0LCBpdGVtS2V5LCBwYXlsb2FkLnV1aWQpO1xuICAgICAgICAvKiogRW5jcnlwdCBpdGVtX2tleSB3aXRoIG1hc3RlciBpdGVtRW5jcnlwdGlvbktleSAqL1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRJdGVtS2V5ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUVuY3J5cHRlZFByb3RvY29sU3RyaW5nKGl0ZW1LZXksIGtleS5pdGVtc0tleSwgcGF5bG9hZC51dWlkKTtcbiAgICAgICAgcmV0dXJuIENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIHV1aWQ6IHBheWxvYWQudXVpZCxcbiAgICAgICAgICAgIGl0ZW1zX2tleV9pZDoga2V5IGluc3RhbmNlb2YgU05JdGVtc0tleSA/IGtleS51dWlkIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgY29udGVudDogZW5jcnlwdGVkQ29udGVudFN0cmluZyxcbiAgICAgICAgICAgIGVuY19pdGVtX2tleTogZW5jcnlwdGVkSXRlbUtleVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRlZFBhcmFtZXRlcnMsIGtleSkge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSBlbmNyeXB0ZWRQYXJhbWV0ZXJzLmZvcm1hdDtcbiAgICAgICAgaWYgKChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCB8fFxuICAgICAgICAgICAgZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykpIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVuY3J5cHRlZFBhcmFtZXRlcnMudXVpZCkge1xuICAgICAgICAgICAgdGhyb3cgJ2VuY3J5cHRlZFBhcmFtZXRlcnMudXVpZCBjYW5ub3QgYmUgbnVsbCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFrZXkgfHwgIWtleS5pdGVtc0tleSkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzIHdpdGggbm8gaXRlbXNLZXkuJztcbiAgICAgICAgfVxuICAgICAgICAvKiogRGVjcnlwdCBpdGVtX2tleSBwYXlsb2FkLiAqL1xuICAgICAgICBjb25zdCBpdGVtS2V5Q29tcG9uZW50cyA9IHRoaXMuZGVjb25zdHJ1Y3RFbmNyeXB0ZWRQYXlsb2FkU3RyaW5nKGVuY3J5cHRlZFBhcmFtZXRlcnMuZW5jX2l0ZW1fa2V5KTtcbiAgICAgICAgY29uc3QgaXRlbUtleSA9IGF3YWl0IHRoaXMuZGVjcnlwdFN0cmluZzAwNChpdGVtS2V5Q29tcG9uZW50cy5jaXBoZXJ0ZXh0LCBrZXkuaXRlbXNLZXksIGl0ZW1LZXlDb21wb25lbnRzLm5vbmNlLCB7IHU6IGVuY3J5cHRlZFBhcmFtZXRlcnMudXVpZCwgdjogaXRlbUtleUNvbXBvbmVudHMudmVyc2lvbiB9KTtcbiAgICAgICAgaWYgKCFpdGVtS2V5KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNyeXB0aW5nIGl0ZW1LZXkgcGFyYW1ldGVycycsIGVuY3J5cHRlZFBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogIWVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKiogRGVjcnlwdCBjb250ZW50IHBheWxvYWQuICovXG4gICAgICAgIGNvbnN0IGNvbnRlbnRDb21wb25lbnRzID0gdGhpcy5kZWNvbnN0cnVjdEVuY3J5cHRlZFBheWxvYWRTdHJpbmcoZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuZGVjcnlwdFN0cmluZzAwNChjb250ZW50Q29tcG9uZW50cy5jaXBoZXJ0ZXh0LCBpdGVtS2V5LCBjb250ZW50Q29tcG9uZW50cy5ub25jZSwgeyB1OiBlbmNyeXB0ZWRQYXJhbWV0ZXJzLnV1aWQsIHY6IGNvbnRlbnRDb21wb25lbnRzLnZlcnNpb24gfSk7XG4gICAgICAgIGlmICghY29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhlbmNyeXB0ZWRQYXJhbWV0ZXJzLCB7XG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZDogIWVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEpTT04ucGFyc2UoY29udGVudCksXG4gICAgICAgICAgICAgICAgaXRlbXNfa2V5X2lkOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW5jX2l0ZW1fa2V5OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6IGVuY3J5cHRlZFBhcmFtZXRlcnMuZXJyb3JEZWNyeXB0aW5nID09PSB0cnVlLFxuICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JLZXk6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZGVjb25zdHJ1Y3RFbmNyeXB0ZWRQYXlsb2FkU3RyaW5nKHBheWxvYWRTdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY29tcG9uZW50cyA9IHBheWxvYWRTdHJpbmcuc3BsaXQoUEFSVElUSU9OX0NIQVJBQ1RFUik7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBjb21wb25lbnRzWzBdLFxuICAgICAgICAgICAgbm9uY2U6IGNvbXBvbmVudHNbMV0sXG4gICAgICAgICAgICBjaXBoZXJ0ZXh0OiBjb21wb25lbnRzWzJdLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBkZXJpdmVLZXkocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZGVyaXZlZEtleSA9IGF3YWl0IHRoaXMuY3J5cHRvLmFyZ29uMihwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywgVjAwNEFsZ29yaXRobS5Bcmdvbk1lbUxpbWl0LCBWMDA0QWxnb3JpdGhtLkFyZ29uT3V0cHV0S2V5Qnl0ZXMpO1xuICAgICAgICBjb25zdCBwYXJ0aXRpb25zID0gdGhpcy5zcGxpdEtleShkZXJpdmVkS2V5LCAyKTtcbiAgICAgICAgY29uc3QgbWFzdGVyS2V5ID0gcGFydGl0aW9uc1swXTtcbiAgICAgICAgY29uc3Qgc2VydmVyUGFzc3dvcmQgPSBwYXJ0aXRpb25zWzFdO1xuICAgICAgICByZXR1cm4gU05Sb290S2V5LkNyZWF0ZSh7XG4gICAgICAgICAgICBtYXN0ZXJLZXksXG4gICAgICAgICAgICBzZXJ2ZXJQYXNzd29yZCxcbiAgICAgICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvblxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFOQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQVlBOzs7Ozs7Ozs7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXFCQTtBQXJCQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdCQTs7Ozs7O0FBeEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBOEJBO0FBOUJBO0FBQUE7QUFDQTtBQURBO0FBK0JBO0FBL0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBa0NBOzs7Ozs7QUFsQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUNBO0FBREE7QUEwQ0E7QUExQ0E7QUFBQTtBQUNBO0FBREE7QUEyQ0E7QUEzQ0E7QUFBQTtBQUNBO0FBREE7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUE3Q0E7QUFtREE7QUFBQTtBQUFBO0FBQ0E7QUFwREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXFEQTs7Ozs7Ozs7QUFyREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxRUE7Ozs7Ozs7O0FBckVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStFQTs7Ozs7O0FBL0VBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBcUZBO0FBQ0E7QUF0RkE7QUFBQTtBQXVGQTtBQUFBO0FBQUE7QUFDQTtBQXhGQTtBQXVGQTtBQUNBO0FBeEZBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUdBO0FBQ0E7QUFBQTtBQUNBO0FBM0dBO0FBQUE7QUFDQTtBQURBO0FBNEdBO0FBNUdBO0FBQUE7QUFDQTtBQURBO0FBOEdBO0FBOUdBO0FBZ0hBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQWhIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUhBO0FBQ0E7QUF4SEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBa0lBO0FBQ0E7QUFuSUE7QUFBQTtBQW9JQTtBQUFBO0FBQUE7QUFDQTtBQXJJQTtBQW9JQTtBQUNBO0FBcklBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxSUE7QUF0SUE7QUF3SUE7QUFDQTtBQUZBO0FBQ0E7QUF4SUE7QUE0SUE7QUFDQTtBQTdJQTtBQUFBO0FBOElBO0FBQUE7QUFBQTtBQUNBO0FBL0lBO0FBOElBO0FBQ0E7QUEvSUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaUpBO0FBQ0E7QUFGQTtBQUNBO0FBakpBO0FBQUE7QUF1SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFDQTtBQXZKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBdktBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUtBO0FBQ0E7QUFDQTtBQUNBO0FBNUtBO0FBOEtBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUE5S0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/operator/004/operator_004.ts\n')},"./lib/protocol/operator/algorithms.ts": /*!*********************************************!*\ !*** ./lib/protocol/operator/algorithms.ts ***! \*********************************************/ /*! exports provided: V001Algorithm, V002Algorithm, V003Algorithm, V004Algorithm */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V001Algorithm", function() { return V001Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V002Algorithm", function() { return V002Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V003Algorithm", function() { return V003Algorithm; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "V004Algorithm", function() { return V004Algorithm; });\nvar V001Algorithm;\n\n(function (V001Algorithm) {\n V001Algorithm[V001Algorithm["SaltSeedLength"] = 128] = "SaltSeedLength";\n V001Algorithm[V001Algorithm["PbkdfMinCost"] = 3000] = "PbkdfMinCost";\n V001Algorithm[V001Algorithm["PbkdfOutputLength"] = 512] = "PbkdfOutputLength";\n V001Algorithm[V001Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n})(V001Algorithm || (V001Algorithm = {}));\n\nvar V002Algorithm;\n\n(function (V002Algorithm) {\n V002Algorithm[V002Algorithm["SaltSeedLength"] = 128] = "SaltSeedLength";\n V002Algorithm[V002Algorithm["PbkdfMinCost"] = 3000] = "PbkdfMinCost";\n V002Algorithm[V002Algorithm["PbkdfOutputLength"] = 768] = "PbkdfOutputLength";\n V002Algorithm[V002Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n V002Algorithm[V002Algorithm["EncryptionIvLength"] = 128] = "EncryptionIvLength";\n})(V002Algorithm || (V002Algorithm = {}));\n\nvar V003Algorithm;\n\n(function (V003Algorithm) {\n V003Algorithm[V003Algorithm["SaltSeedLength"] = 256] = "SaltSeedLength";\n V003Algorithm[V003Algorithm["PbkdfCost"] = 110000] = "PbkdfCost";\n V003Algorithm[V003Algorithm["PbkdfOutputLength"] = 768] = "PbkdfOutputLength";\n V003Algorithm[V003Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n V003Algorithm[V003Algorithm["EncryptionIvLength"] = 128] = "EncryptionIvLength";\n})(V003Algorithm || (V003Algorithm = {}));\n\nvar V004Algorithm;\n\n(function (V004Algorithm) {\n V004Algorithm[V004Algorithm["ArgonSaltSeedLength"] = 256] = "ArgonSaltSeedLength";\n V004Algorithm[V004Algorithm["ArgonSaltLength"] = 128] = "ArgonSaltLength";\n V004Algorithm[V004Algorithm["ArgonIterations"] = 5] = "ArgonIterations";\n V004Algorithm[V004Algorithm["ArgonMemLimit"] = 67108864] = "ArgonMemLimit";\n V004Algorithm[V004Algorithm["ArgonOutputKeyBytes"] = 64] = "ArgonOutputKeyBytes";\n V004Algorithm[V004Algorithm["EncryptionKeyLength"] = 256] = "EncryptionKeyLength";\n V004Algorithm[V004Algorithm["EncryptionNonceLength"] = 192] = "EncryptionNonceLength";\n})(V004Algorithm || (V004Algorithm = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3IvYWxnb3JpdGhtcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9vcGVyYXRvci9hbGdvcml0aG1zLnRzPzhkZDQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBWMDAxQWxnb3JpdGhtO1xuKGZ1bmN0aW9uIChWMDAxQWxnb3JpdGhtKSB7XG4gICAgVjAwMUFsZ29yaXRobVtWMDAxQWxnb3JpdGhtW1wiU2FsdFNlZWRMZW5ndGhcIl0gPSAxMjhdID0gXCJTYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDFBbGdvcml0aG1bVjAwMUFsZ29yaXRobVtcIlBia2RmTWluQ29zdFwiXSA9IDMwMDBdID0gXCJQYmtkZk1pbkNvc3RcIjtcbiAgICBWMDAxQWxnb3JpdGhtW1YwMDFBbGdvcml0aG1bXCJQYmtkZk91dHB1dExlbmd0aFwiXSA9IDUxMl0gPSBcIlBia2RmT3V0cHV0TGVuZ3RoXCI7XG4gICAgVjAwMUFsZ29yaXRobVtWMDAxQWxnb3JpdGhtW1wiRW5jcnlwdGlvbktleUxlbmd0aFwiXSA9IDI1Nl0gPSBcIkVuY3J5cHRpb25LZXlMZW5ndGhcIjtcbn0pKFYwMDFBbGdvcml0aG0gfHwgKFYwMDFBbGdvcml0aG0gPSB7fSkpO1xuZXhwb3J0IHZhciBWMDAyQWxnb3JpdGhtO1xuKGZ1bmN0aW9uIChWMDAyQWxnb3JpdGhtKSB7XG4gICAgVjAwMkFsZ29yaXRobVtWMDAyQWxnb3JpdGhtW1wiU2FsdFNlZWRMZW5ndGhcIl0gPSAxMjhdID0gXCJTYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDJBbGdvcml0aG1bVjAwMkFsZ29yaXRobVtcIlBia2RmTWluQ29zdFwiXSA9IDMwMDBdID0gXCJQYmtkZk1pbkNvc3RcIjtcbiAgICBWMDAyQWxnb3JpdGhtW1YwMDJBbGdvcml0aG1bXCJQYmtkZk91dHB1dExlbmd0aFwiXSA9IDc2OF0gPSBcIlBia2RmT3V0cHV0TGVuZ3RoXCI7XG4gICAgVjAwMkFsZ29yaXRobVtWMDAyQWxnb3JpdGhtW1wiRW5jcnlwdGlvbktleUxlbmd0aFwiXSA9IDI1Nl0gPSBcIkVuY3J5cHRpb25LZXlMZW5ndGhcIjtcbiAgICBWMDAyQWxnb3JpdGhtW1YwMDJBbGdvcml0aG1bXCJFbmNyeXB0aW9uSXZMZW5ndGhcIl0gPSAxMjhdID0gXCJFbmNyeXB0aW9uSXZMZW5ndGhcIjtcbn0pKFYwMDJBbGdvcml0aG0gfHwgKFYwMDJBbGdvcml0aG0gPSB7fSkpO1xuZXhwb3J0IHZhciBWMDAzQWxnb3JpdGhtO1xuKGZ1bmN0aW9uIChWMDAzQWxnb3JpdGhtKSB7XG4gICAgVjAwM0FsZ29yaXRobVtWMDAzQWxnb3JpdGhtW1wiU2FsdFNlZWRMZW5ndGhcIl0gPSAyNTZdID0gXCJTYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDNBbGdvcml0aG1bVjAwM0FsZ29yaXRobVtcIlBia2RmQ29zdFwiXSA9IDExMDAwMF0gPSBcIlBia2RmQ29zdFwiO1xuICAgIFYwMDNBbGdvcml0aG1bVjAwM0FsZ29yaXRobVtcIlBia2RmT3V0cHV0TGVuZ3RoXCJdID0gNzY4XSA9IFwiUGJrZGZPdXRwdXRMZW5ndGhcIjtcbiAgICBWMDAzQWxnb3JpdGhtW1YwMDNBbGdvcml0aG1bXCJFbmNyeXB0aW9uS2V5TGVuZ3RoXCJdID0gMjU2XSA9IFwiRW5jcnlwdGlvbktleUxlbmd0aFwiO1xuICAgIFYwMDNBbGdvcml0aG1bVjAwM0FsZ29yaXRobVtcIkVuY3J5cHRpb25Jdkxlbmd0aFwiXSA9IDEyOF0gPSBcIkVuY3J5cHRpb25Jdkxlbmd0aFwiO1xufSkoVjAwM0FsZ29yaXRobSB8fCAoVjAwM0FsZ29yaXRobSA9IHt9KSk7XG5leHBvcnQgdmFyIFYwMDRBbGdvcml0aG07XG4oZnVuY3Rpb24gKFYwMDRBbGdvcml0aG0pIHtcbiAgICBWMDA0QWxnb3JpdGhtW1YwMDRBbGdvcml0aG1bXCJBcmdvblNhbHRTZWVkTGVuZ3RoXCJdID0gMjU2XSA9IFwiQXJnb25TYWx0U2VlZExlbmd0aFwiO1xuICAgIFYwMDRBbGdvcml0aG1bVjAwNEFsZ29yaXRobVtcIkFyZ29uU2FsdExlbmd0aFwiXSA9IDEyOF0gPSBcIkFyZ29uU2FsdExlbmd0aFwiO1xuICAgIFYwMDRBbGdvcml0aG1bVjAwNEFsZ29yaXRobVtcIkFyZ29uSXRlcmF0aW9uc1wiXSA9IDVdID0gXCJBcmdvbkl0ZXJhdGlvbnNcIjtcbiAgICBWMDA0QWxnb3JpdGhtW1YwMDRBbGdvcml0aG1bXCJBcmdvbk1lbUxpbWl0XCJdID0gNjcxMDg4NjRdID0gXCJBcmdvbk1lbUxpbWl0XCI7XG4gICAgVjAwNEFsZ29yaXRobVtWMDA0QWxnb3JpdGhtW1wiQXJnb25PdXRwdXRLZXlCeXRlc1wiXSA9IDY0XSA9IFwiQXJnb25PdXRwdXRLZXlCeXRlc1wiO1xuICAgIFYwMDRBbGdvcml0aG1bVjAwNEFsZ29yaXRobVtcIkVuY3J5cHRpb25LZXlMZW5ndGhcIl0gPSAyNTZdID0gXCJFbmNyeXB0aW9uS2V5TGVuZ3RoXCI7XG4gICAgVjAwNEFsZ29yaXRobVtWMDA0QWxnb3JpdGhtW1wiRW5jcnlwdGlvbk5vbmNlTGVuZ3RoXCJdID0gMTkyXSA9IFwiRW5jcnlwdGlvbk5vbmNlTGVuZ3RoXCI7XG59KShWMDA0QWxnb3JpdGhtIHx8IChWMDA0QWxnb3JpdGhtID0ge30pKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/algorithms.ts\n')},"./lib/protocol/operator/operator.ts": /*!*******************************************!*\ !*** ./lib/protocol/operator/operator.ts ***! \*******************************************/ /*! exports provided: SNProtocolOperator */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolOperator", function() { return SNProtocolOperator; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _uuid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n/**w\n * An operator is responsible for performing crypto operations, such as generating keys\n * and encrypting/decrypting payloads. Operators interact directly with\n * platform dependent SNPureCrypto implementation to directly access cryptographic primitives.\n * Each operator is versioned according to the protocol version. Functions that are common\n * across all versions appear in this generic parent class.\n */\n\nvar SNProtocolOperator = /*#__PURE__*/function () {\n function SNProtocolOperator(crypto) {\n _classCallCheck(this, SNProtocolOperator);\n\n this.crypto = crypto;\n }\n\n _createClass(SNProtocolOperator, [{\n key: "firstHalfOfKey",\n value: function () {\n var _firstHalfOfKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", key.substring(0, key.length / 2));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function firstHalfOfKey(_x) {\n return _firstHalfOfKey.apply(this, arguments);\n }\n\n return firstHalfOfKey;\n }()\n }, {\n key: "secondHalfOfKey",\n value: function () {\n var _secondHalfOfKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(key) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt("return", key.substring(key.length / 2, key.length));\n\n case 1:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function secondHalfOfKey(_x2) {\n return _secondHalfOfKey.apply(this, arguments);\n }\n\n return secondHalfOfKey;\n }()\n }, {\n key: "splitKey",\n value: function splitKey(key, parts) {\n var outputLength = key.length;\n var partLength = outputLength / parts;\n var partitions = [];\n\n for (var i = 0; i < parts; i++) {\n var partition = key.slice(partLength * i, partLength * (i + 1));\n partitions.push(partition);\n }\n\n return partitions;\n }\n /**\n * Creates a new random SNItemsKey to use for item encryption.\n * The consumer must save/sync this item.\n */\n\n }, {\n key: "createItemsKey",\n value: function () {\n var _createItemsKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var content, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.generateNewItemsKeyContent();\n\n case 2:\n content = _context3.sent;\n _context3.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateMaxPayloadFromAnyObject"];\n _context3.next = 6;\n return _uuid__WEBPACK_IMPORTED_MODULE_2__["Uuid"].GenerateUuid();\n\n case 6:\n _context3.t1 = _context3.sent;\n _context3.t2 = _Lib_models__WEBPACK_IMPORTED_MODULE_7__["ContentType"].ItemsKey;\n _context3.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])(content);\n _context3.t4 = {\n uuid: _context3.t1,\n content_type: _context3.t2,\n content: _context3.t3\n };\n payload = (0, _context3.t0)(_context3.t4);\n return _context3.abrupt("return", Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payload));\n\n case 12:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function createItemsKey() {\n return _createItemsKey.apply(this, arguments);\n }\n\n return createItemsKey;\n }()\n /**\n * Converts a bare payload into an encrypted one in the desired format.\n * @param payload - The non-encrypted payload object to encrypt\n * @param key - The key to use to encrypt the payload. Can be either\n * a RootKey (when encrypting payloads that require root key encryption, such as encrypting\n * items keys), or an ItemsKey (if encrypted regular items)\n * @param format - The desired result format\n */\n\n }, {\n key: "generateEncryptedParameters",\n value: function () {\n var _generateEncryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(payload, format, key) {\n var jsonString, base64String, content;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject)) {\n _context4.next = 4;\n break;\n }\n\n return _context4.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateEncryptionParameters"])({\n content: payload.content\n }));\n\n case 4:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context4.next = 13;\n break;\n }\n\n jsonString = JSON.stringify(payload.content);\n _context4.next = 8;\n return this.crypto.base64Encode(jsonString);\n\n case 8:\n base64String = _context4.sent;\n content = _Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].V000Base64Decrypted + base64String;\n return _context4.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateEncryptionParameters"])({\n content: content\n }));\n\n case 13:\n throw "Must override generateEncryptedParameters to handle format ".concat(format, ".");\n\n case 14:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function generateEncryptedParameters(_x3, _x4, _x5) {\n return _generateEncryptedParameters.apply(this, arguments);\n }\n\n return generateEncryptedParameters;\n }()\n /**\n * Converts encrypted parameters (a subset of a Payload) into decrypted counterpart.\n * @param encryptedParameters - The encrypted payload object to decrypt\n * @param key - The key to use to decrypt the payload. Can be either\n * a RootKey (when encrypting payloads that require root key encryption, such as encrypting\n * items keys), or an ItemsKey (if encrypted regular items)\n */\n\n }, {\n key: "generateDecryptedParameters",\n value: function () {\n var _generateDecryptedParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(encryptedParameters, key) {\n var format, contentString, decodedContent, jsonString;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n format = encryptedParameters.format;\n\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBareObject)) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt("return", encryptedParameters);\n\n case 5:\n if (!(format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_4__["PayloadFormat"].DecryptedBase64String)) {\n _context5.next = 20;\n break;\n }\n\n contentString = encryptedParameters.contentString.substring(_Protocol_versions__WEBPACK_IMPORTED_MODULE_6__["ProtocolVersion"].VersionLength, encryptedParameters.contentString.length);\n _context5.prev = 7;\n _context5.next = 10;\n return this.crypto.base64Decode(contentString);\n\n case 10:\n jsonString = _context5.sent;\n decodedContent = JSON.parse(jsonString);\n _context5.next = 17;\n break;\n\n case 14:\n _context5.prev = 14;\n _context5.t0 = _context5["catch"](7);\n decodedContent = encryptedParameters.content;\n\n case 17:\n return _context5.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyEncryptionParameters"])(encryptedParameters, {\n content: decodedContent\n }));\n\n case 20:\n throw "Must override generateDecryptedParameters to handle format ".concat(format, ".");\n\n case 21:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[7, 14]]);\n }));\n\n function generateDecryptedParameters(_x6, _x7) {\n return _generateDecryptedParameters.apply(this, arguments);\n }\n\n return generateDecryptedParameters;\n }()\n }]);\n\n return SNProtocolOperator;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvb3BlcmF0b3Ivb3BlcmF0b3IudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvb3BlcmF0b3Ivb3BlcmF0b3IudHM/Y2FhZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxsSXRlbUNvbnRlbnQgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnLi8uLi8uLi91dWlkJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICdAUGF5bG9hZHMvZm9ybWF0cyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ29weUVuY3J5cHRpb25QYXJhbWV0ZXJzLCBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnQFByb3RvY29sL3ZlcnNpb25zJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQExpYi9tb2RlbHMnO1xuLyoqd1xuICogQW4gb3BlcmF0b3IgaXMgcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgY3J5cHRvIG9wZXJhdGlvbnMsIHN1Y2ggYXMgZ2VuZXJhdGluZyBrZXlzXG4gKiBhbmQgZW5jcnlwdGluZy9kZWNyeXB0aW5nIHBheWxvYWRzLiBPcGVyYXRvcnMgaW50ZXJhY3QgZGlyZWN0bHkgd2l0aFxuICogcGxhdGZvcm0gZGVwZW5kZW50IFNOUHVyZUNyeXB0byBpbXBsZW1lbnRhdGlvbiB0byBkaXJlY3RseSBhY2Nlc3MgY3J5cHRvZ3JhcGhpYyBwcmltaXRpdmVzLlxuICogRWFjaCBvcGVyYXRvciBpcyB2ZXJzaW9uZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBGdW5jdGlvbnMgdGhhdCBhcmUgY29tbW9uXG4gKiBhY3Jvc3MgYWxsIHZlcnNpb25zIGFwcGVhciBpbiB0aGlzIGdlbmVyaWMgcGFyZW50IGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgU05Qcm90b2NvbE9wZXJhdG9yIHtcbiAgICBjb25zdHJ1Y3RvcihjcnlwdG8pIHtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSBjcnlwdG87XG4gICAgfVxuICAgIGFzeW5jIGZpcnN0SGFsZk9mS2V5KGtleSkge1xuICAgICAgICByZXR1cm4ga2V5LnN1YnN0cmluZygwLCBrZXkubGVuZ3RoIC8gMik7XG4gICAgfVxuICAgIGFzeW5jIHNlY29uZEhhbGZPZktleShrZXkpIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdWJzdHJpbmcoa2V5Lmxlbmd0aCAvIDIsIGtleS5sZW5ndGgpO1xuICAgIH1cbiAgICBzcGxpdEtleShrZXksIHBhcnRzKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dExlbmd0aCA9IGtleS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBhcnRMZW5ndGggPSBvdXRwdXRMZW5ndGggLyBwYXJ0cztcbiAgICAgICAgY29uc3QgcGFydGl0aW9ucyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRpdGlvbiA9IGtleS5zbGljZShwYXJ0TGVuZ3RoICogaSwgcGFydExlbmd0aCAqIChpICsgMSkpO1xuICAgICAgICAgICAgcGFydGl0aW9ucy5wdXNoKHBhcnRpdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRpdGlvbnM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcgcmFuZG9tIFNOSXRlbXNLZXkgdG8gdXNlIGZvciBpdGVtIGVuY3J5cHRpb24uXG4gICAgICogVGhlIGNvbnN1bWVyIG11c3Qgc2F2ZS9zeW5jIHRoaXMgaXRlbS5cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVJdGVtc0tleSgpIHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVOZXdJdGVtc0tleUNvbnRlbnQoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IENvbnRlbnRUeXBlLkl0ZW1zS2V5LFxuICAgICAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KGNvbnRlbnQpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIENvbnZlcnRzIGEgYmFyZSBwYXlsb2FkIGludG8gYW4gZW5jcnlwdGVkIG9uZSBpbiB0aGUgZGVzaXJlZCBmb3JtYXQuXG4gICAgKiBAcGFyYW0gcGF5bG9hZCAtIFRoZSBub24tZW5jcnlwdGVkIHBheWxvYWQgb2JqZWN0IHRvIGVuY3J5cHRcbiAgICAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIHVzZSB0byBlbmNyeXB0IHRoZSBwYXlsb2FkLiBDYW4gYmUgZWl0aGVyXG4gICAgKiAgYSBSb290S2V5ICh3aGVuIGVuY3J5cHRpbmcgcGF5bG9hZHMgdGhhdCByZXF1aXJlIHJvb3Qga2V5IGVuY3J5cHRpb24sIHN1Y2ggYXMgZW5jcnlwdGluZ1xuICAgICogaXRlbXMga2V5cyksIG9yIGFuIEl0ZW1zS2V5IChpZiBlbmNyeXB0ZWQgcmVndWxhciBpdGVtcylcbiAgICAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgZGVzaXJlZCByZXN1bHQgZm9ybWF0XG4gICAgKi9cbiAgICBhc3luYyBnZW5lcmF0ZUVuY3J5cHRlZFBhcmFtZXRlcnMocGF5bG9hZCwgZm9ybWF0LCBrZXkpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlRW5jcnlwdGlvblBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBheWxvYWQuY29udGVudFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhc2U2NFN0cmluZykge1xuICAgICAgICAgICAgY29uc3QganNvblN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBheWxvYWQuY29udGVudCk7XG4gICAgICAgICAgICBjb25zdCBiYXNlNjRTdHJpbmcgPSBhd2FpdCB0aGlzLmNyeXB0by5iYXNlNjRFbmNvZGUoanNvblN0cmluZyk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gUHJvdG9jb2xWZXJzaW9uLlYwMDBCYXNlNjREZWNyeXB0ZWQgKyBiYXNlNjRTdHJpbmc7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlRW5jcnlwdGlvblBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgYE11c3Qgb3ZlcnJpZGUgZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzIHRvIGhhbmRsZSBmb3JtYXQgJHtmb3JtYXR9LmA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgKiBDb252ZXJ0cyBlbmNyeXB0ZWQgcGFyYW1ldGVycyAoYSBzdWJzZXQgb2YgYSBQYXlsb2FkKSBpbnRvIGRlY3J5cHRlZCBjb3VudGVycGFydC5cbiAgICAqIEBwYXJhbSBlbmNyeXB0ZWRQYXJhbWV0ZXJzIC0gVGhlIGVuY3J5cHRlZCBwYXlsb2FkIG9iamVjdCB0byBkZWNyeXB0XG4gICAgKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byB1c2UgdG8gZGVjcnlwdCB0aGUgcGF5bG9hZC4gQ2FuIGJlIGVpdGhlclxuICAgICogIGEgUm9vdEtleSAod2hlbiBlbmNyeXB0aW5nIHBheWxvYWRzIHRoYXQgcmVxdWlyZSByb290IGtleSBlbmNyeXB0aW9uLCBzdWNoIGFzIGVuY3J5cHRpbmdcbiAgICAqIGl0ZW1zIGtleXMpLCBvciBhbiBJdGVtc0tleSAoaWYgZW5jcnlwdGVkIHJlZ3VsYXIgaXRlbXMpXG4gICAgKi9cbiAgICBhc3luYyBnZW5lcmF0ZURlY3J5cHRlZFBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywga2V5KSB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IGVuY3J5cHRlZFBhcmFtZXRlcnMuZm9ybWF0O1xuICAgICAgICBpZiAoZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QpIHtcbiAgICAgICAgICAgIC8qKiBObyBkZWNyeXB0aW9uIHJlcXVpcmVkICovXG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkUGFyYW1ldGVycztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFzZTY0U3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50U3RyaW5nID0gZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nLnN1YnN0cmluZyhQcm90b2NvbFZlcnNpb24uVmVyc2lvbkxlbmd0aCwgZW5jcnlwdGVkUGFyYW1ldGVycy5jb250ZW50U3RyaW5nLmxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgZGVjb2RlZENvbnRlbnQ7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBhd2FpdCB0aGlzLmNyeXB0by5iYXNlNjREZWNvZGUoY29udGVudFN0cmluZyk7XG4gICAgICAgICAgICAgICAgZGVjb2RlZENvbnRlbnQgPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvZGVkQ29udGVudCA9IGVuY3J5cHRlZFBhcmFtZXRlcnMuY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDb3B5RW5jcnlwdGlvblBhcmFtZXRlcnMoZW5jcnlwdGVkUGFyYW1ldGVycywge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGRlY29kZWRDb250ZW50XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGBNdXN0IG92ZXJyaWRlIGdlbmVyYXRlRGVjcnlwdGVkUGFyYW1ldGVycyB0byBoYW5kbGUgZm9ybWF0ICR7Zm9ybWF0fS5gO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBcEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUJBO0FBekJBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTJCQTtBQUNBO0FBQ0E7QUE3QkE7QUEwQkE7QUExQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFpQ0E7Ozs7Ozs7OztBQWpDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0Q0E7QUFEQTtBQUNBO0FBNUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQStDQTtBQWhEQTtBQUFBO0FBQ0E7QUFEQTtBQWlEQTtBQUNBO0FBbERBO0FBb0RBO0FBREE7QUFDQTtBQXBEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBMkRBOzs7Ozs7OztBQTNEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtRUE7QUFDQTtBQXBFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdFQTtBQXpFQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNEVBO0FBQ0E7QUE3RUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFBQTtBQW1GQTtBQURBO0FBQ0E7QUFuRkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/operator/operator.ts\n')},"./lib/protocol/payloads/deltas/conflict.ts": /*!**************************************************!*\ !*** ./lib/protocol/payloads/deltas/conflict.ts ***! \**************************************************/ /*! exports provided: ConflictDelta */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConflictDelta", function() { return ConflictDelta; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/protocol/payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/payloads/deltas/strategies */ "./lib/protocol/payloads/deltas/strategies.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _fields__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../fields */ "./lib/protocol/payloads/fields.ts");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n\n\nvar ConflictDelta = /*#__PURE__*/function () {\n function ConflictDelta(baseCollection, basePayload, applyPayload, source) {\n _classCallCheck(this, ConflictDelta);\n\n this.baseCollection = baseCollection;\n this.basePayload = basePayload;\n this.applyPayload = applyPayload;\n this.source = source;\n }\n\n _createClass(ConflictDelta, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var tmpBaseItem, tmpApplyItem, strategy, results;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n tmpBaseItem = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(this.basePayload);\n tmpApplyItem = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(this.applyPayload);\n strategy = tmpBaseItem.strategyWhenConflictingWithItem(tmpApplyItem);\n _context.next = 5;\n return this.payloadsByHandlingStrategy(strategy);\n\n case 5:\n results = _context.sent;\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(results, this.source));\n\n case 7:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }, {\n key: "payloadsByHandlingStrategy",\n value: function () {\n var _payloadsByHandlingStrategy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(strategy) {\n var existingConflict, updatedAt, leftPayload, result, _updatedAt, _leftPayload, rightPayloads, leftPayloads, rightPayload, refs, _updatedAt2, payload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n /** Ensure no conflict has already been created with the incoming content.\n * This can occur in a multi-page sync request where in the middle of the request,\n * we make changes to many items, including duplicating, but since we are still not\n * uploading the changes until after the multi-page request completes, we may have\n * already conflicted this item. */\n existingConflict = this.baseCollection.conflictsOf(this.applyPayload.uuid)[0];\n\n if (!(existingConflict && Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadContentsEqual"])(existingConflict, this.applyPayload))) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt("return", []);\n\n case 3:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepLeft)) {\n _context2.next = 7;\n break;\n }\n\n updatedAt = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["greaterOfTwoDates"])(this.basePayload.updated_at, this.applyPayload.updated_at);\n leftPayload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(this.basePayload, {\n updated_at: updatedAt,\n dirty: true,\n dirtiedDate: new Date()\n });\n return _context2.abrupt("return", [leftPayload]);\n\n case 7:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepRight)) {\n _context2.next = 10;\n break;\n }\n\n result = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["PayloadByMerging"])(this.applyPayload, this.basePayload, [_fields__WEBPACK_IMPORTED_MODULE_7__["PayloadField"].LastSyncBegan], {\n lastSyncEnd: new Date()\n });\n return _context2.abrupt("return", [result]);\n\n case 10:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepLeftDuplicateRight)) {\n _context2.next = 17;\n break;\n }\n\n _updatedAt = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["greaterOfTwoDates"])(this.basePayload.updated_at, this.applyPayload.updated_at);\n _leftPayload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(this.basePayload, {\n updated_at: _updatedAt,\n dirty: true,\n dirtiedDate: new Date()\n });\n _context2.next = 15;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadsByDuplicating"])(this.applyPayload, this.baseCollection, true);\n\n case 15:\n rightPayloads = _context2.sent;\n return _context2.abrupt("return", [_leftPayload].concat(rightPayloads));\n\n case 17:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].DuplicateLeftKeepRight)) {\n _context2.next = 23;\n break;\n }\n\n _context2.next = 20;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadsByDuplicating"])(this.basePayload, this.baseCollection, true);\n\n case 20:\n leftPayloads = _context2.sent;\n rightPayload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["PayloadByMerging"])(this.applyPayload, this.basePayload, [_fields__WEBPACK_IMPORTED_MODULE_7__["PayloadField"].LastSyncBegan], {\n lastSyncEnd: new Date()\n });\n return _context2.abrupt("return", leftPayloads.concat([rightPayload]));\n\n case 23:\n if (!(strategy === _Protocol_payloads_deltas_strategies__WEBPACK_IMPORTED_MODULE_4__["ConflictStrategy"].KeepLeftMergeRefs)) {\n _context2.next = 28;\n break;\n }\n\n refs = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["uniqCombineObjArrays"])(this.basePayload.contentObject.references, this.applyPayload.contentObject.references, [\'uuid\', \'content_type\']);\n _updatedAt2 = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["greaterOfTwoDates"])(this.basePayload.updated_at, this.applyPayload.updated_at);\n payload = Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(this.basePayload, {\n updated_at: _updatedAt2,\n dirty: true,\n dirtiedDate: new Date(),\n content: _objectSpread({}, this.basePayload.safeContent, {\n references: refs\n })\n });\n return _context2.abrupt("return", [payload]);\n\n case 28:\n throw \'Unhandled strategy\';\n\n case 29:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function payloadsByHandlingStrategy(_x) {\n return _payloadsByHandlingStrategy.apply(this, arguments);\n }\n\n return payloadsByHandlingStrategy;\n }()\n }]);\n\n return ConflictDelta;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2NvbmZsaWN0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9jb25mbGljdC50cz9jMzA5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBheWxvYWRCeU1lcmdpbmcgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiB9IGZyb20gXCJAUHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb25cIjtcbmltcG9ydCB7IENvbmZsaWN0U3RyYXRlZ3kgfSBmcm9tICdAUHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3N0cmF0ZWdpZXMnO1xuaW1wb3J0IHsgQ29weVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBheWxvYWRzQnlEdXBsaWNhdGluZywgUGF5bG9hZENvbnRlbnRzRXF1YWwgfSBmcm9tICdAUGF5bG9hZHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IGdyZWF0ZXJPZlR3b0RhdGVzLCB1bmlxQ29tYmluZU9iakFycmF5cyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGF5bG9hZEZpZWxkIH0gZnJvbSAnLi4vZmllbGRzJztcbmV4cG9ydCBjbGFzcyBDb25mbGljdERlbHRhIHtcbiAgICBjb25zdHJ1Y3RvcihiYXNlQ29sbGVjdGlvbiwgYmFzZVBheWxvYWQsIGFwcGx5UGF5bG9hZCwgc291cmNlKSB7XG4gICAgICAgIHRoaXMuYmFzZUNvbGxlY3Rpb24gPSBiYXNlQ29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5iYXNlUGF5bG9hZCA9IGJhc2VQYXlsb2FkO1xuICAgICAgICB0aGlzLmFwcGx5UGF5bG9hZCA9IGFwcGx5UGF5bG9hZDtcbiAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAgIGFzeW5jIHJlc3VsdGluZ0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHRtcEJhc2VJdGVtID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHRoaXMuYmFzZVBheWxvYWQpO1xuICAgICAgICBjb25zdCB0bXBBcHBseUl0ZW0gPSBDcmVhdGVJdGVtRnJvbVBheWxvYWQodGhpcy5hcHBseVBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdHJhdGVneSA9IHRtcEJhc2VJdGVtLnN0cmF0ZWd5V2hlbkNvbmZsaWN0aW5nV2l0aEl0ZW0odG1wQXBwbHlJdGVtKTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMucGF5bG9hZHNCeUhhbmRsaW5nU3RyYXRlZ3koc3RyYXRlZ3kpO1xuICAgICAgICByZXR1cm4gSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uV2l0aFBheWxvYWRzKHJlc3VsdHMsIHRoaXMuc291cmNlKTtcbiAgICB9XG4gICAgYXN5bmMgcGF5bG9hZHNCeUhhbmRsaW5nU3RyYXRlZ3koc3RyYXRlZ3kpIHtcbiAgICAgICAgLyoqIEVuc3VyZSBubyBjb25mbGljdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQgd2l0aCB0aGUgaW5jb21pbmcgY29udGVudC5cbiAgICAgICAgICogVGhpcyBjYW4gb2NjdXIgaW4gYSBtdWx0aS1wYWdlIHN5bmMgcmVxdWVzdCB3aGVyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSByZXF1ZXN0LFxuICAgICAgICAgKiB3ZSBtYWtlIGNoYW5nZXMgdG8gbWFueSBpdGVtcywgaW5jbHVkaW5nIGR1cGxpY2F0aW5nLCBidXQgc2luY2Ugd2UgYXJlIHN0aWxsIG5vdFxuICAgICAgICAgKiB1cGxvYWRpbmcgdGhlIGNoYW5nZXMgdW50aWwgYWZ0ZXIgdGhlIG11bHRpLXBhZ2UgcmVxdWVzdCBjb21wbGV0ZXMsIHdlIG1heSBoYXZlXG4gICAgICAgICAqIGFscmVhZHkgY29uZmxpY3RlZCB0aGlzIGl0ZW0uICovXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ29uZmxpY3QgPSB0aGlzLmJhc2VDb2xsZWN0aW9uLmNvbmZsaWN0c09mKHRoaXMuYXBwbHlQYXlsb2FkLnV1aWQpWzBdO1xuICAgICAgICBpZiAoZXhpc3RpbmdDb25mbGljdCAmJiBQYXlsb2FkQ29udGVudHNFcXVhbChleGlzdGluZ0NvbmZsaWN0LCB0aGlzLmFwcGx5UGF5bG9hZCkpIHtcbiAgICAgICAgICAgIC8qKiBDb25mbGljdCBleGlzdHMgYW5kIGl0cyBjb250ZW50cyBhcmUgdGhlIHNhbWUgYXMgaW5jb21pbmcgdmFsdWUsIGRvIG5vdCBtYWtlIGR1cGxpY2F0ZSAqL1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdHJhdGVneSA9PT0gQ29uZmxpY3RTdHJhdGVneS5LZWVwTGVmdCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEF0ID0gZ3JlYXRlck9mVHdvRGF0ZXModGhpcy5iYXNlUGF5bG9hZC51cGRhdGVkX2F0LCB0aGlzLmFwcGx5UGF5bG9hZC51cGRhdGVkX2F0KTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5iYXNlUGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFtsZWZ0UGF5bG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBDb25mbGljdFN0cmF0ZWd5LktlZXBSaWdodCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gUGF5bG9hZEJ5TWVyZ2luZyh0aGlzLmFwcGx5UGF5bG9hZCwgdGhpcy5iYXNlUGF5bG9hZCwgW1BheWxvYWRGaWVsZC5MYXN0U3luY0JlZ2FuXSwge1xuICAgICAgICAgICAgICAgIGxhc3RTeW5jRW5kOiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBbcmVzdWx0XTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RyYXRlZ3kgPT09IENvbmZsaWN0U3RyYXRlZ3kuS2VlcExlZnREdXBsaWNhdGVSaWdodCkge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZEF0ID0gZ3JlYXRlck9mVHdvRGF0ZXModGhpcy5iYXNlUGF5bG9hZC51cGRhdGVkX2F0LCB0aGlzLmFwcGx5UGF5bG9hZC51cGRhdGVkX2F0KTtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5iYXNlUGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgcmlnaHRQYXlsb2FkcyA9IGF3YWl0IFBheWxvYWRzQnlEdXBsaWNhdGluZyh0aGlzLmFwcGx5UGF5bG9hZCwgdGhpcy5iYXNlQ29sbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm4gW2xlZnRQYXlsb2FkXS5jb25jYXQocmlnaHRQYXlsb2Fkcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBDb25mbGljdFN0cmF0ZWd5LkR1cGxpY2F0ZUxlZnRLZWVwUmlnaHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRQYXlsb2FkcyA9IGF3YWl0IFBheWxvYWRzQnlEdXBsaWNhdGluZyh0aGlzLmJhc2VQYXlsb2FkLCB0aGlzLmJhc2VDb2xsZWN0aW9uLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0UGF5bG9hZCA9IFBheWxvYWRCeU1lcmdpbmcodGhpcy5hcHBseVBheWxvYWQsIHRoaXMuYmFzZVBheWxvYWQsIFtQYXlsb2FkRmllbGQuTGFzdFN5bmNCZWdhbl0sIHtcbiAgICAgICAgICAgICAgICBsYXN0U3luY0VuZDogbmV3IERhdGUoKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbGVmdFBheWxvYWRzLmNvbmNhdChbcmlnaHRQYXlsb2FkXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmF0ZWd5ID09PSBDb25mbGljdFN0cmF0ZWd5LktlZXBMZWZ0TWVyZ2VSZWZzKSB7XG4gICAgICAgICAgICBjb25zdCByZWZzID0gdW5pcUNvbWJpbmVPYmpBcnJheXModGhpcy5iYXNlUGF5bG9hZC5jb250ZW50T2JqZWN0LnJlZmVyZW5jZXMsIHRoaXMuYXBwbHlQYXlsb2FkLmNvbnRlbnRPYmplY3QucmVmZXJlbmNlcywgWyd1dWlkJywgJ2NvbnRlbnRfdHlwZSddKTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRBdCA9IGdyZWF0ZXJPZlR3b0RhdGVzKHRoaXMuYmFzZVBheWxvYWQudXBkYXRlZF9hdCwgdGhpcy5hcHBseVBheWxvYWQudXBkYXRlZF9hdCk7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gQ29weVBheWxvYWQodGhpcy5iYXNlUGF5bG9hZCwge1xuICAgICAgICAgICAgICAgIHVwZGF0ZWRfYXQ6IHVwZGF0ZWRBdCxcbiAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuYmFzZVBheWxvYWQuc2FmZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXM6IHJlZnNcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBbcGF5bG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgJ1VuaGFuZGxlZCBzdHJhdGVneSc7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFDQTtBQURBO0FBV0E7QUFYQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBZUE7Ozs7O0FBS0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUEzQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtDQTtBQUNBO0FBREE7QUFuQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUExQ0E7QUFBQTtBQUNBO0FBREE7QUErQ0E7QUEvQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBbURBO0FBQ0E7QUFDQTtBQURBO0FBcERBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF5REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUZBO0FBSkE7QUE1REE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/conflict.ts\n')},"./lib/protocol/payloads/deltas/delta.ts": /*!***********************************************!*\ !*** ./lib/protocol/payloads/deltas/delta.ts ***! \***********************************************/ /*! exports provided: PayloadsDelta */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadsDelta", function() { return PayloadsDelta; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * A payload delta is a class that defines instructions that process an incoming collection\n * of payloads, applies some set of operations on those payloads wrt to the current base state,\n * and returns the resulting collection. Deltas are purely functional and do not modify\n * input data, instead returning what the collection would look like after its been\n * transformed. The consumer may choose to act as they wish with this end result.\n *\n * A delta object takes a baseCollection (the current state of the data) and an applyCollection\n * (the data another source is attempting to merge on top of our base data). The delta will\n * then iterate over this data and return a `resultingCollection` object that includes the final\n * state of the data after the class-specific operations have been applied.\n *\n * For example, the RemoteRetrieved delta will take the current state of local data as\n * baseCollection, the data the server is sending as applyCollection, and determine what\n * the end state of the data should look like.\n */\nvar PayloadsDelta = /*#__PURE__*/function () {\n /**\n * @param baseCollection The authoratitive collection on top of which to compute changes.\n * @param applyCollection The collection of payloads to apply, from one given source only.\n * @param relatedCollectionSet A collection set (many collections) that contain payloads\n * that may be neccessary to carry out computation.\n */\n function PayloadsDelta(baseCollection, applyCollection, relatedCollectionSet) {\n _classCallCheck(this, PayloadsDelta);\n\n this.baseCollection = baseCollection;\n this.applyCollection = applyCollection;\n this.relatedCollectionSet = relatedCollectionSet;\n }\n\n _createClass(PayloadsDelta, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n throw \'Must override PayloadDelta.resultingCollection.\';\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n /**\n * @param {string} id - The uuid of the payload to find\n */\n\n }, {\n key: "findBasePayload",\n value: function findBasePayload(id) {\n return this.baseCollection.find(id);\n }\n }, {\n key: "findRelatedPayload",\n value: function findRelatedPayload(id, source) {\n var _this$relatedCollecti;\n\n var collection = (_this$relatedCollecti = this.relatedCollectionSet) === null || _this$relatedCollecti === void 0 ? void 0 : _this$relatedCollecti.collectionForSource(source);\n return collection === null || collection === void 0 ? void 0 : collection.find(id);\n }\n }]);\n\n return PayloadsDelta;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2RlbHRhLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9kZWx0YS50cz8yMmNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBwYXlsb2FkIGRlbHRhIGlzIGEgY2xhc3MgdGhhdCBkZWZpbmVzIGluc3RydWN0aW9ucyB0aGF0IHByb2Nlc3MgYW4gaW5jb21pbmcgY29sbGVjdGlvblxuICogb2YgcGF5bG9hZHMsIGFwcGxpZXMgc29tZSBzZXQgb2Ygb3BlcmF0aW9ucyBvbiB0aG9zZSBwYXlsb2FkcyB3cnQgdG8gdGhlIGN1cnJlbnQgYmFzZSBzdGF0ZSxcbiAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgY29sbGVjdGlvbi4gRGVsdGFzIGFyZSBwdXJlbHkgZnVuY3Rpb25hbCBhbmQgZG8gbm90IG1vZGlmeVxuICogaW5wdXQgZGF0YSwgaW5zdGVhZCByZXR1cm5pbmcgd2hhdCB0aGUgY29sbGVjdGlvbiB3b3VsZCBsb29rIGxpa2UgYWZ0ZXIgaXRzIGJlZW5cbiAqIHRyYW5zZm9ybWVkLiBUaGUgY29uc3VtZXIgbWF5IGNob29zZSB0byBhY3QgYXMgdGhleSB3aXNoIHdpdGggdGhpcyBlbmQgcmVzdWx0LlxuICpcbiAqIEEgZGVsdGEgb2JqZWN0IHRha2VzIGEgYmFzZUNvbGxlY3Rpb24gKHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBkYXRhKSBhbmQgYW4gYXBwbHlDb2xsZWN0aW9uXG4gKiAodGhlIGRhdGEgYW5vdGhlciBzb3VyY2UgaXMgYXR0ZW1wdGluZyB0byBtZXJnZSBvbiB0b3Agb2Ygb3VyIGJhc2UgZGF0YSkuIFRoZSBkZWx0YSB3aWxsXG4gKiB0aGVuIGl0ZXJhdGUgb3ZlciB0aGlzIGRhdGEgYW5kIHJldHVybiBhIGByZXN1bHRpbmdDb2xsZWN0aW9uYCBvYmplY3QgdGhhdCBpbmNsdWRlcyB0aGUgZmluYWxcbiAqIHN0YXRlIG9mIHRoZSBkYXRhIGFmdGVyIHRoZSBjbGFzcy1zcGVjaWZpYyBvcGVyYXRpb25zIGhhdmUgYmVlbiBhcHBsaWVkLlxuICpcbiAqIEZvciBleGFtcGxlLCB0aGUgUmVtb3RlUmV0cmlldmVkIGRlbHRhIHdpbGwgdGFrZSB0aGUgY3VycmVudCBzdGF0ZSBvZiBsb2NhbCBkYXRhIGFzXG4gKiBiYXNlQ29sbGVjdGlvbiwgdGhlIGRhdGEgdGhlIHNlcnZlciBpcyBzZW5kaW5nIGFzIGFwcGx5Q29sbGVjdGlvbiwgYW5kIGRldGVybWluZSB3aGF0XG4gKiB0aGUgZW5kIHN0YXRlIG9mIHRoZSBkYXRhIHNob3VsZCBsb29rIGxpa2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXlsb2Fkc0RlbHRhIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gYmFzZUNvbGxlY3Rpb24gVGhlIGF1dGhvcmF0aXRpdmUgY29sbGVjdGlvbiBvbiB0b3Agb2Ygd2hpY2ggdG8gY29tcHV0ZSBjaGFuZ2VzLlxuICAgICAqIEBwYXJhbSBhcHBseUNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gb2YgcGF5bG9hZHMgdG8gYXBwbHksIGZyb20gb25lIGdpdmVuIHNvdXJjZSBvbmx5LlxuICAgICAqIEBwYXJhbSByZWxhdGVkQ29sbGVjdGlvblNldCBBIGNvbGxlY3Rpb24gc2V0IChtYW55IGNvbGxlY3Rpb25zKSB0aGF0IGNvbnRhaW4gcGF5bG9hZHNcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtYXkgYmUgbmVjY2Vzc2FyeSB0byBjYXJyeSBvdXQgY29tcHV0YXRpb24uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoYmFzZUNvbGxlY3Rpb24sIGFwcGx5Q29sbGVjdGlvbiwgcmVsYXRlZENvbGxlY3Rpb25TZXQpIHtcbiAgICAgICAgdGhpcy5iYXNlQ29sbGVjdGlvbiA9IGJhc2VDb2xsZWN0aW9uO1xuICAgICAgICB0aGlzLmFwcGx5Q29sbGVjdGlvbiA9IGFwcGx5Q29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5yZWxhdGVkQ29sbGVjdGlvblNldCA9IHJlbGF0ZWRDb2xsZWN0aW9uU2V0O1xuICAgIH1cbiAgICBhc3luYyByZXN1bHRpbmdDb2xsZWN0aW9uKCkge1xuICAgICAgICB0aHJvdyAnTXVzdCBvdmVycmlkZSBQYXlsb2FkRGVsdGEucmVzdWx0aW5nQ29sbGVjdGlvbi4nO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgIC0gVGhlIHV1aWQgb2YgdGhlIHBheWxvYWQgdG8gZmluZFxuICAgICAqL1xuICAgIGZpbmRCYXNlUGF5bG9hZChpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5iYXNlQ29sbGVjdGlvbi5maW5kKGlkKTtcbiAgICB9XG4gICAgZmluZFJlbGF0ZWRQYXlsb2FkKGlkLCBzb3VyY2UpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMucmVsYXRlZENvbGxlY3Rpb25TZXQ/LmNvbGxlY3Rpb25Gb3JTb3VyY2Uoc291cmNlKTtcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24/LmZpbmQoaWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBO0FBQ0E7Ozs7OztBQU1BO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFlQTs7OztBQWZBO0FBQUE7QUFBQTtBQW1CQTtBQUNBO0FBcEJBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBeEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/delta.ts\n')},"./lib/protocol/payloads/deltas/file_import.ts": /*!*****************************************************!*\ !*** ./lib/protocol/payloads/deltas/file_import.ts ***! \*****************************************************/ /*! exports provided: DeltaFileImport */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaFileImport", function() { return DeltaFileImport; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/deltas/conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar DeltaFileImport = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaFileImport, _PayloadsDelta);\n\n function DeltaFileImport() {\n _classCallCheck(this, DeltaFileImport);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaFileImport).apply(this, arguments));\n }\n\n _createClass(DeltaFileImport, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, handled, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 16;\n break;\n }\n\n payload = _step.value;\n _context.next = 10;\n return this.payloadsByHandlingPayload(payload, results);\n\n case 10:\n handled = _context.sent;\n payloads = handled.map(function (result) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(result, {\n dirty: true,\n dirtiedDate: new Date(),\n deleted: false\n });\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, payloads);\n\n case 13:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 16:\n _context.next = 22;\n break;\n\n case 18:\n _context.prev = 18;\n _context.t0 = _context["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 22:\n _context.prev = 22;\n _context.prev = 23;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 25:\n _context.prev = 25;\n\n if (!_didIteratorError) {\n _context.next = 28;\n break;\n }\n\n throw _iteratorError;\n\n case 28:\n return _context.finish(25);\n\n case 29:\n return _context.finish(22);\n\n case 30:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_5__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].FileImport));\n\n case 31:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }, {\n key: "payloadsByHandlingPayload",\n value: function () {\n var _payloadsByHandlingPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payload, currentResults) {\n var current, delta, deltaCollection;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n /**\n * Check to see if we\'ve already processed a payload for this id.\n * If so, that would be the latest value, and not what\'s in the base collection.\n */\n\n /*\n * Find the most recently created conflict if available, as that\n * would contain the most recent value.\n */\n current = currentResults.find(function (candidate) {\n return candidate.contentObject.conflict_of === payload.uuid;\n });\n /**\n * If no latest conflict, find by uuid directly.\n */\n\n if (!current) {\n current = currentResults.find(function (candidate) {\n return candidate.uuid === payload.uuid;\n });\n }\n /**\n * If not found in current results, use the base value.\n */\n\n\n if (!current) {\n current = this.findBasePayload(payload.uuid);\n }\n /**\n * If the current doesn\'t exist, we\'re creating a new item from payload.\n */\n\n\n if (current) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt("return", [payload]);\n\n case 5:\n delta = new _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_3__["ConflictDelta"](this.baseCollection, current, payload, _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].FileImport);\n _context2.next = 8;\n return delta.resultingCollection();\n\n case 8:\n deltaCollection = _context2.sent;\n return _context2.abrupt("return", deltaCollection.all());\n\n case 10:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function payloadsByHandlingPayload(_x, _x2) {\n return _payloadsByHandlingPayload.apply(this, arguments);\n }\n\n return payloadsByHandlingPayload;\n }()\n }]);\n\n return DeltaFileImport;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2ZpbGVfaW1wb3J0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9maWxlX2ltcG9ydC50cz83OGM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG5pbXBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9jb25mbGljdCc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIERlbHRhRmlsZUltcG9ydCBleHRlbmRzIFBheWxvYWRzRGVsdGEge1xuICAgIGFzeW5jIHJlc3VsdGluZ0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwYXlsb2FkIG9mIHRoaXMuYXBwbHlDb2xsZWN0aW9uLmFsbCgpKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVkID0gYXdhaXQgdGhpcy5wYXlsb2Fkc0J5SGFuZGxpbmdQYXlsb2FkKHBheWxvYWQsIHJlc3VsdHMpO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBoYW5kbGVkLm1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENvcHlQYXlsb2FkKHJlc3VsdCwge1xuICAgICAgICAgICAgICAgICAgICBkaXJ0eTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGlydGllZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGV4dGVuZEFycmF5KHJlc3VsdHMsIHBheWxvYWRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uV2l0aFBheWxvYWRzKHJlc3VsdHMsIFBheWxvYWRTb3VyY2UuRmlsZUltcG9ydCk7XG4gICAgfVxuICAgIGFzeW5jIHBheWxvYWRzQnlIYW5kbGluZ1BheWxvYWQocGF5bG9hZCwgY3VycmVudFJlc3VsdHMpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIHRvIHNlZSBpZiB3ZSd2ZSBhbHJlYWR5IHByb2Nlc3NlZCBhIHBheWxvYWQgZm9yIHRoaXMgaWQuXG4gICAgICAgICAqIElmIHNvLCB0aGF0IHdvdWxkIGJlIHRoZSBsYXRlc3QgdmFsdWUsIGFuZCBub3Qgd2hhdCdzIGluIHRoZSBiYXNlIGNvbGxlY3Rpb24uXG4gICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICAgKiBGaW5kIHRoZSBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgY29uZmxpY3QgaWYgYXZhaWxhYmxlLCBhcyB0aGF0XG4gICAgICAgICAqIHdvdWxkIGNvbnRhaW4gdGhlIG1vc3QgcmVjZW50IHZhbHVlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGN1cnJlbnQgPSBjdXJyZW50UmVzdWx0cy5maW5kKChjYW5kaWRhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGUuY29udGVudE9iamVjdC5jb25mbGljdF9vZiA9PT0gcGF5bG9hZC51dWlkO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIG5vIGxhdGVzdCBjb25mbGljdCwgZmluZCBieSB1dWlkIGRpcmVjdGx5LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFJlc3VsdHMuZmluZCgoY2FuZGlkYXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZS51dWlkID09PSBwYXlsb2FkLnV1aWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgbm90IGZvdW5kIGluIGN1cnJlbnQgcmVzdWx0cywgdXNlIHRoZSBiYXNlIHZhbHVlLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gdGhpcy5maW5kQmFzZVBheWxvYWQocGF5bG9hZC51dWlkKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIGN1cnJlbnQgZG9lc24ndCBleGlzdCwgd2UncmUgY3JlYXRpbmcgYSBuZXcgaXRlbSBmcm9tIHBheWxvYWQuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbcGF5bG9hZF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgQ29uZmxpY3REZWx0YSh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjdXJyZW50LCBwYXlsb2FkLCBQYXlsb2FkU291cmNlLkZpbGVJbXBvcnQpO1xuICAgICAgICBjb25zdCBkZWx0YUNvbGxlY3Rpb24gPSBhd2FpdCBkZWx0YS5yZXN1bHRpbmdDb2xsZWN0aW9uKCk7XG4gICAgICAgIHJldHVybiBkZWx0YUNvbGxlY3Rpb24uYWxsKCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBSEE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkE7Ozs7O0FBSUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUExQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWdEQTtBQWhEQTtBQUFBO0FBQ0E7QUFEQTtBQWlEQTtBQWpEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/file_import.ts\n')},"./lib/protocol/payloads/deltas/generator.ts": /*!***************************************************!*\ !*** ./lib/protocol/payloads/deltas/generator.ts ***! \***************************************************/ /*! exports provided: DeltaClassForSource */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaClassForSource", function() { return DeltaClassForSource; });\n/* harmony import */ var _remote_conflicts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./remote_conflicts */ "./lib/protocol/payloads/deltas/remote_conflicts.ts");\n/* harmony import */ var _remote_saved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./remote_saved */ "./lib/protocol/payloads/deltas/remote_saved.ts");\n/* harmony import */ var _remote_retrieved__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./remote_retrieved */ "./lib/protocol/payloads/deltas/remote_retrieved.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n\n\n\n\nfunction DeltaClassForSource(source) {\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved) {\n return _remote_retrieved__WEBPACK_IMPORTED_MODULE_2__["DeltaRemoteRetrieved"];\n } else if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteSaved) {\n return _remote_saved__WEBPACK_IMPORTED_MODULE_1__["DeltaRemoteSaved"];\n } else if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictUuid) {\n return _remote_conflicts__WEBPACK_IMPORTED_MODULE_0__["DeltaRemoteConflicts"];\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2dlbmVyYXRvci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9kZWx0YXMvZ2VuZXJhdG9yLnRzP2QyYmUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVsdGFSZW1vdGVDb25mbGljdHMgfSBmcm9tICcuL3JlbW90ZV9jb25mbGljdHMnO1xuaW1wb3J0IHsgRGVsdGFSZW1vdGVTYXZlZCB9IGZyb20gJy4vcmVtb3RlX3NhdmVkJztcbmltcG9ydCB7IERlbHRhUmVtb3RlUmV0cmlldmVkIH0gZnJvbSAnLi9yZW1vdGVfcmV0cmlldmVkJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5leHBvcnQgZnVuY3Rpb24gRGVsdGFDbGFzc0ZvclNvdXJjZShzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLlJlbW90ZVJldHJpZXZlZCkge1xuICAgICAgICByZXR1cm4gRGVsdGFSZW1vdGVSZXRyaWV2ZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCkge1xuICAgICAgICByZXR1cm4gRGVsdGFSZW1vdGVTYXZlZDtcbiAgICB9XG4gICAgZWxzZSBpZiAoKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Db25mbGljdERhdGEgfHxcbiAgICAgICAgc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbmZsaWN0VXVpZCkpIHtcbiAgICAgICAgcmV0dXJuIERlbHRhUmVtb3RlQ29uZmxpY3RzO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/generator.ts\n')},"./lib/protocol/payloads/deltas/index.ts": /*!***********************************************!*\ !*** ./lib/protocol/payloads/deltas/index.ts ***! \***********************************************/ /*! exports provided: DeltaFileImport, DeltaOutOfSync, DeltaRemoteConflicts, DeltaRemoteRetrieved, DeltaRemoteSaved, ConflictDelta, PayloadsDelta */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _file_import__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./file_import */ "./lib/protocol/payloads/deltas/file_import.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaFileImport", function() { return _file_import__WEBPACK_IMPORTED_MODULE_0__["DeltaFileImport"]; });\n\n/* harmony import */ var _out_of_sync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./out_of_sync */ "./lib/protocol/payloads/deltas/out_of_sync.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaOutOfSync", function() { return _out_of_sync__WEBPACK_IMPORTED_MODULE_1__["DeltaOutOfSync"]; });\n\n/* harmony import */ var _remote_conflicts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./remote_conflicts */ "./lib/protocol/payloads/deltas/remote_conflicts.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteConflicts", function() { return _remote_conflicts__WEBPACK_IMPORTED_MODULE_2__["DeltaRemoteConflicts"]; });\n\n/* harmony import */ var _remote_retrieved__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./remote_retrieved */ "./lib/protocol/payloads/deltas/remote_retrieved.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteRetrieved", function() { return _remote_retrieved__WEBPACK_IMPORTED_MODULE_3__["DeltaRemoteRetrieved"]; });\n\n/* harmony import */ var _remote_saved__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./remote_saved */ "./lib/protocol/payloads/deltas/remote_saved.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteSaved", function() { return _remote_saved__WEBPACK_IMPORTED_MODULE_4__["DeltaRemoteSaved"]; });\n\n/* harmony import */ var _conflict__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConflictDelta", function() { return _conflict__WEBPACK_IMPORTED_MODULE_5__["ConflictDelta"]; });\n\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadsDelta", function() { return _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_6__["PayloadsDelta"]; });\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL2luZGV4LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9pbmRleC50cz9iMDFkIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IERlbHRhRmlsZUltcG9ydCB9IGZyb20gJy4vZmlsZV9pbXBvcnQnO1xuZXhwb3J0IHsgRGVsdGFPdXRPZlN5bmMgfSBmcm9tICcuL291dF9vZl9zeW5jJztcbmV4cG9ydCB7IERlbHRhUmVtb3RlQ29uZmxpY3RzIH0gZnJvbSAnLi9yZW1vdGVfY29uZmxpY3RzJztcbmV4cG9ydCB7IERlbHRhUmVtb3RlUmV0cmlldmVkIH0gZnJvbSAnLi9yZW1vdGVfcmV0cmlldmVkJztcbmV4cG9ydCB7IERlbHRhUmVtb3RlU2F2ZWQgfSBmcm9tICcuL3JlbW90ZV9zYXZlZCc7XG5leHBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnLi9jb25mbGljdCc7XG5leHBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/index.ts\n')},"./lib/protocol/payloads/deltas/out_of_sync.ts": /*!*****************************************************!*\ !*** ./lib/protocol/payloads/deltas/out_of_sync.ts ***! \*****************************************************/ /*! exports provided: DeltaOutOfSync */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaOutOfSync", function() { return DeltaOutOfSync; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar DeltaOutOfSync = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaOutOfSync, _PayloadsDelta);\n\n function DeltaOutOfSync() {\n _classCallCheck(this, DeltaOutOfSync);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaOutOfSync).apply(this, arguments));\n }\n\n _createClass(DeltaOutOfSync, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, current, equal, copyResults;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n payload = _step.value;\n\n /**\n * Map the server payload as authoritive content. If client copy differs,\n * we will create a duplicate of it below.\n * This is also neccessary to map the updated_at value from the server\n */\n results.push(payload);\n current = this.findBasePayload(payload.uuid);\n\n if (current) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt("continue", 19);\n\n case 12:\n equal = Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_4__["PayloadContentsEqual"])(payload, current);\n\n if (!equal) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt("continue", 19);\n\n case 15:\n _context.next = 17;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_4__["PayloadsByDuplicating"])(current, this.baseCollection, true);\n\n case 17:\n copyResults = _context.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_5__["extendArray"])(results, copyResults);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t0 = _context["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved));\n\n case 37:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [29,, 31, 35]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }]);\n\n return DeltaOutOfSync;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL291dF9vZl9zeW5jLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2RlbHRhcy9vdXRfb2Zfc3luYy50cz82MzEwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBheWxvYWRzRGVsdGEgfSBmcm9tICdAUGF5bG9hZHMvZGVsdGFzL2RlbHRhJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiB9IGZyb20gXCJAUHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb25cIjtcbmltcG9ydCB7IFBheWxvYWRzQnlEdXBsaWNhdGluZywgUGF5bG9hZENvbnRlbnRzRXF1YWwgfSBmcm9tICdAUGF5bG9hZHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IGV4dGVuZEFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5leHBvcnQgY2xhc3MgRGVsdGFPdXRPZlN5bmMgZXh0ZW5kcyBQYXlsb2Fkc0RlbHRhIHtcbiAgICBhc3luYyByZXN1bHRpbmdDb2xsZWN0aW9uKCkge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiB0aGlzLmFwcGx5Q29sbGVjdGlvbi5hbGwoKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXAgdGhlIHNlcnZlciBwYXlsb2FkIGFzIGF1dGhvcml0aXZlIGNvbnRlbnQuIElmIGNsaWVudCBjb3B5IGRpZmZlcnMsXG4gICAgICAgICAgICAgKiB3ZSB3aWxsIGNyZWF0ZSBhIGR1cGxpY2F0ZSBvZiBpdCBiZWxvdy5cbiAgICAgICAgICAgICAqIFRoaXMgaXMgYWxzbyBuZWNjZXNzYXJ5IHRvIG1hcCB0aGUgdXBkYXRlZF9hdCB2YWx1ZSBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBheWxvYWQpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZmluZEJhc2VQYXlsb2FkKHBheWxvYWQudXVpZCk7XG4gICAgICAgICAgICBpZiAoIWN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGVxdWFsID0gUGF5bG9hZENvbnRlbnRzRXF1YWwocGF5bG9hZCwgY3VycmVudCk7XG4gICAgICAgICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2UgY3JlYXRlIGEgY29weSBvZiB0aGUgbG9jYWwgZXhpc3RpbmcgaXRlbSBhbmQgc3luYyB0aGF0IHVwLlxuICAgICAgICAgICAgICogSXQgd2lsbCBiZSBhICdjb25mbGljdCcgb2YgaXRzZWxmXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IGNvcHlSZXN1bHRzID0gYXdhaXQgUGF5bG9hZHNCeUR1cGxpY2F0aW5nKGN1cnJlbnQsIHRoaXMuYmFzZUNvbGxlY3Rpb24sIHRydWUpO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkocmVzdWx0cywgY29weVJlc3VsdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocmVzdWx0cywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzQkE7QUFDQTtBQUNBO0FBeEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/out_of_sync.ts\n')},"./lib/protocol/payloads/deltas/remote_conflicts.ts": /*!**********************************************************!*\ !*** ./lib/protocol/payloads/deltas/remote_conflicts.ts ***! \**********************************************************/ /*! exports provided: DeltaRemoteConflicts */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteConflicts", function() { return DeltaRemoteConflicts; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/deltas/conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar DeltaRemoteConflicts = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaRemoteConflicts, _PayloadsDelta);\n\n function DeltaRemoteConflicts() {\n _classCallCheck(this, DeltaRemoteConflicts);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaRemoteConflicts).apply(this, arguments));\n }\n\n _createClass(DeltaRemoteConflicts, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this.applyCollection.source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictUuid)) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt("return", this.collectionsByHandlingUuidConflicts());\n\n case 4:\n if (!(this.applyCollection.source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData)) {\n _context.next = 8;\n break;\n }\n\n return _context.abrupt("return", this.collectionsByHandlingDataConflicts());\n\n case 8:\n throw "Unhandled conflict type ".concat(this.applyCollection.source);\n\n case 9:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }, {\n key: "collectionsByHandlingDataConflicts",\n value: function () {\n var _collectionsByHandlingDataConflicts = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, current, decrypted, delta, deltaCollection, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 4;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context2.next = 27;\n break;\n }\n\n payload = _step.value;\n current = this.findBasePayload(payload.uuid);\n /** Could be deleted */\n\n if (current) {\n _context2.next = 12;\n break;\n }\n\n results.push(payload);\n return _context2.abrupt("continue", 24);\n\n case 12:\n decrypted = this.findRelatedPayload(payload.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n\n if (decrypted) {\n _context2.next = 18;\n break;\n }\n\n if (payload.deleted) {\n _context2.next = 16;\n break;\n }\n\n throw \'Unable to find decrypted counterpart for data conflict.\';\n\n case 16:\n results.push(payload);\n return _context2.abrupt("continue", 24);\n\n case 18:\n delta = new _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_2__["ConflictDelta"](this.baseCollection, current, decrypted, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData);\n _context2.next = 21;\n return delta.resultingCollection();\n\n case 21:\n deltaCollection = _context2.sent;\n payloads = deltaCollection.all();\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, payloads);\n\n case 24:\n _iteratorNormalCompletion = true;\n _context2.next = 6;\n break;\n\n case 27:\n _context2.next = 33;\n break;\n\n case 29:\n _context2.prev = 29;\n _context2.t0 = _context2["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context2.t0;\n\n case 33:\n _context2.prev = 33;\n _context2.prev = 34;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 36:\n _context2.prev = 36;\n\n if (!_didIteratorError) {\n _context2.next = 39;\n break;\n }\n\n throw _iteratorError;\n\n case 39:\n return _context2.finish(36);\n\n case 40:\n return _context2.finish(33);\n\n case 41:\n return _context2.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved));\n\n case 42:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 29, 33, 41], [34,, 36, 40]]);\n }));\n\n function collectionsByHandlingDataConflicts() {\n return _collectionsByHandlingDataConflicts.apply(this, arguments);\n }\n\n return collectionsByHandlingDataConflicts;\n }()\n /**\n * UUID conflicts can occur if a user attmpts to import an old data\n * backup with uuids from the old account into a new account.\n * In uuid_conflict, we receive the value we attmpted to save.\n */\n\n }, {\n key: "collectionsByHandlingUuidConflicts",\n value: function () {\n var _collectionsByHandlingUuidConflicts = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var results, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, payload, decrypted, alternateResults;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context3.prev = 4;\n _iterator2 = this.applyCollection.all()[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context3.next = 16;\n break;\n }\n\n payload = _step2.value;\n decrypted = this.findRelatedPayload(payload.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n _context3.next = 11;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_5__["PayloadsByAlternatingUuid"])(decrypted, this.baseCollection);\n\n case 11:\n alternateResults = _context3.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, alternateResults);\n\n case 13:\n _iteratorNormalCompletion2 = true;\n _context3.next = 6;\n break;\n\n case 16:\n _context3.next = 22;\n break;\n\n case 18:\n _context3.prev = 18;\n _context3.t0 = _context3["catch"](4);\n _didIteratorError2 = true;\n _iteratorError2 = _context3.t0;\n\n case 22:\n _context3.prev = 22;\n _context3.prev = 23;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 25:\n _context3.prev = 25;\n\n if (!_didIteratorError2) {\n _context3.next = 28;\n break;\n }\n\n throw _iteratorError2;\n\n case 28:\n return _context3.finish(25);\n\n case 29:\n return _context3.finish(22);\n\n case 30:\n return _context3.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollection"].WithPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved));\n\n case 31:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[4, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function collectionsByHandlingUuidConflicts() {\n return _collectionsByHandlingUuidConflicts.apply(this, arguments);\n }\n\n return collectionsByHandlingUuidConflicts;\n }()\n }]);\n\n return DeltaRemoteConflicts;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9jb25mbGljdHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9jb25mbGljdHMudHM/YjE0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG5pbXBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9jb25mbGljdCc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBQYXlsb2Fkc0J5QWx0ZXJuYXRpbmdVdWlkIH0gZnJvbSAnQFBheWxvYWRzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIERlbHRhUmVtb3RlQ29uZmxpY3RzIGV4dGVuZHMgUGF5bG9hZHNEZWx0YSB7XG4gICAgYXN5bmMgcmVzdWx0aW5nQ29sbGVjdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwbHlDb2xsZWN0aW9uLnNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Db25mbGljdFV1aWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb25zQnlIYW5kbGluZ1V1aWRDb25mbGljdHMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmFwcGx5Q29sbGVjdGlvbi5zb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuQ29uZmxpY3REYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc0J5SGFuZGxpbmdEYXRhQ29uZmxpY3RzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5oYW5kbGVkIGNvbmZsaWN0IHR5cGUgJHt0aGlzLmFwcGx5Q29sbGVjdGlvbi5zb3VyY2V9YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBjb2xsZWN0aW9uc0J5SGFuZGxpbmdEYXRhQ29uZmxpY3RzKCkge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiB0aGlzLmFwcGx5Q29sbGVjdGlvbi5hbGwoKSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudCA9IHRoaXMuZmluZEJhc2VQYXlsb2FkKHBheWxvYWQudXVpZCk7XG4gICAgICAgICAgICAvKiogQ291bGQgYmUgZGVsZXRlZCAqL1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5maW5kUmVsYXRlZFBheWxvYWQocGF5bG9hZC51dWlkLCBQYXlsb2FkU291cmNlLkRlY3J5cHRlZFRyYW5zaWVudCk7XG4gICAgICAgICAgICBpZiAoIWRlY3J5cHRlZCkge1xuICAgICAgICAgICAgICAgIC8qKiBEZWNyeXB0ZWQgc2hvdWxkIG9ubHkgYmUgbWlzc2luZyBpbiBjYXNlIG9mIGRlbGV0ZWQgcGF5bG9hZCAqL1xuICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZC5kZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93ICdVbmFibGUgdG8gZmluZCBkZWNyeXB0ZWQgY291bnRlcnBhcnQgZm9yIGRhdGEgY29uZmxpY3QuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgQ29uZmxpY3REZWx0YSh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjdXJyZW50LCBkZWNyeXB0ZWQsIFBheWxvYWRTb3VyY2UuQ29uZmxpY3REYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhQ29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWRzID0gZGVsdGFDb2xsZWN0aW9uLmFsbCgpO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkocmVzdWx0cywgcGF5bG9hZHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocmVzdWx0cywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBVVUlEIGNvbmZsaWN0cyBjYW4gb2NjdXIgaWYgYSB1c2VyIGF0dG1wdHMgdG8gaW1wb3J0IGFuIG9sZCBkYXRhXG4gICAgICogYmFja3VwIHdpdGggdXVpZHMgZnJvbSB0aGUgb2xkIGFjY291bnQgaW50byBhIG5ldyBhY2NvdW50LlxuICAgICAqIEluIHV1aWRfY29uZmxpY3QsIHdlIHJlY2VpdmUgdGhlIHZhbHVlIHdlIGF0dG1wdGVkIHRvIHNhdmUuXG4gICAgICovXG4gICAgYXN5bmMgY29sbGVjdGlvbnNCeUhhbmRsaW5nVXVpZENvbmZsaWN0cygpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgdGhpcy5hcHBseUNvbGxlY3Rpb24uYWxsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IHRoaXMuZmluZFJlbGF0ZWRQYXlsb2FkKHBheWxvYWQudXVpZCwgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpO1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJuYXRlUmVzdWx0cyA9IGF3YWl0IFBheWxvYWRzQnlBbHRlcm5hdGluZ1V1aWQoZGVjcnlwdGVkLCB0aGlzLmJhc2VDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgIGV4dGVuZEFycmF5KHJlc3VsdHMsIGFsdGVybmF0ZVJlc3VsdHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocmVzdWx0cywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFhQTtBQWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFpQkE7QUFsQkE7QUFDQTtBQURBO0FBcUJBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUEyQkE7QUEzQkE7QUFDQTtBQURBO0FBOEJBO0FBOUJBO0FBQUE7QUFDQTtBQURBO0FBK0JBO0FBQ0E7QUFDQTtBQUNBO0FBbENBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxQ0E7Ozs7OztBQXJDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTJDQTtBQTNDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEyQ0E7QUFDQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQThDQTtBQUNBO0FBQ0E7QUFoREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/remote_conflicts.ts\n')},"./lib/protocol/payloads/deltas/remote_retrieved.ts": /*!**********************************************************!*\ !*** ./lib/protocol/payloads/deltas/remote_retrieved.ts ***! \**********************************************************/ /*! exports provided: DeltaRemoteRetrieved */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteRetrieved", function() { return DeltaRemoteRetrieved; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/conflict */ "./lib/protocol/payloads/deltas/conflict.ts");\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar DeltaRemoteRetrieved = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaRemoteRetrieved, _PayloadsDelta);\n\n function DeltaRemoteRetrieved() {\n _classCallCheck(this, DeltaRemoteRetrieved);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaRemoteRetrieved).apply(this, arguments));\n }\n\n _createClass(DeltaRemoteRetrieved, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var filtered, conflicted, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, received, savedOrSaving, decrypted, base, conflictResults, _i, _conflicted, conflict, _decrypted, current, delta, deltaCollection, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n filtered = [];\n conflicted = [];\n /**\n * If we have retrieved an item that was saved as part of this ongoing sync operation,\n * or if the item is locally dirty, filter it out of retrieved_items, and add to potential conflicts.\n */\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 5;\n _iterator = this.applyCollection.all()[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 27;\n break;\n }\n\n received = _step.value;\n savedOrSaving = this.findRelatedPayload(received.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].SavedOrSaving);\n decrypted = this.findRelatedPayload(received.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n\n if (decrypted) {\n _context.next = 16;\n break;\n }\n\n if (received.deleted) {\n _context.next = 14;\n break;\n }\n\n throw \'Cannot find decrypted for non-deleted payload.\';\n\n case 14:\n filtered.push(received);\n return _context.abrupt("continue", 24);\n\n case 16:\n if (!savedOrSaving) {\n _context.next = 19;\n break;\n }\n\n conflicted.push(decrypted);\n return _context.abrupt("continue", 24);\n\n case 19:\n base = this.findBasePayload(received.uuid);\n\n if (!(base && base.dirty)) {\n _context.next = 23;\n break;\n }\n\n conflicted.push(decrypted);\n return _context.abrupt("continue", 24);\n\n case 23:\n filtered.push(decrypted);\n\n case 24:\n _iteratorNormalCompletion = true;\n _context.next = 7;\n break;\n\n case 27:\n _context.next = 33;\n break;\n\n case 29:\n _context.prev = 29;\n _context.t0 = _context["catch"](5);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 33:\n _context.prev = 33;\n _context.prev = 34;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 36:\n _context.prev = 36;\n\n if (!_didIteratorError) {\n _context.next = 39;\n break;\n }\n\n throw _iteratorError;\n\n case 39:\n return _context.finish(36);\n\n case 40:\n return _context.finish(33);\n\n case 41:\n /**\n * For any potential conflict above, we compare the values with current\n * local values, and if they differ, we create a new payload that is a copy\n * of the server payload.\n */\n conflictResults = [];\n _i = 0, _conflicted = conflicted;\n\n case 43:\n if (!(_i < _conflicted.length)) {\n _context.next = 60;\n break;\n }\n\n conflict = _conflicted[_i];\n _decrypted = this.findRelatedPayload(conflict.uuid, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].DecryptedTransient);\n\n if (_decrypted) {\n _context.next = 48;\n break;\n }\n\n return _context.abrupt("continue", 57);\n\n case 48:\n current = this.findBasePayload(conflict.uuid);\n\n if (current) {\n _context.next = 51;\n break;\n }\n\n return _context.abrupt("continue", 57);\n\n case 51:\n delta = new _Payloads_deltas_conflict__WEBPACK_IMPORTED_MODULE_1__["ConflictDelta"](this.baseCollection, current, _decrypted, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].ConflictData);\n _context.next = 54;\n return delta.resultingCollection();\n\n case 54:\n deltaCollection = _context.sent;\n payloads = deltaCollection.all();\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_5__["extendArray"])(conflictResults, payloads);\n\n case 57:\n _i++;\n _context.next = 43;\n break;\n\n case 60:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollection"].WithPayloads(filtered.concat(conflictResults), _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteRetrieved));\n\n case 61:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[5, 29, 33, 41], [34,, 36, 40]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }]);\n\n return DeltaRemoteRetrieved;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_2__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9yZXRyaWV2ZWQudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9yZXRyaWV2ZWQudHM/NGFjNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25mbGljdERlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9jb25mbGljdCc7XG5pbXBvcnQgeyBQYXlsb2Fkc0RlbHRhIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcy9kZWx0YSc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBleHRlbmRBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIERlbHRhUmVtb3RlUmV0cmlldmVkIGV4dGVuZHMgUGF5bG9hZHNEZWx0YSB7XG4gICAgYXN5bmMgcmVzdWx0aW5nQ29sbGVjdGlvbigpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbXTtcbiAgICAgICAgY29uc3QgY29uZmxpY3RlZCA9IFtdO1xuICAgICAgICAvKipcbiAgICAgICAgKiBJZiB3ZSBoYXZlIHJldHJpZXZlZCBhbiBpdGVtIHRoYXQgd2FzIHNhdmVkIGFzIHBhcnQgb2YgdGhpcyBvbmdvaW5nIHN5bmMgb3BlcmF0aW9uLFxuICAgICAgICAqIG9yIGlmIHRoZSBpdGVtIGlzIGxvY2FsbHkgZGlydHksIGZpbHRlciBpdCBvdXQgb2YgcmV0cmlldmVkX2l0ZW1zLCBhbmQgYWRkIHRvIHBvdGVudGlhbCBjb25mbGljdHMuXG4gICAgICAgICovXG4gICAgICAgIGZvciAoY29uc3QgcmVjZWl2ZWQgb2YgdGhpcy5hcHBseUNvbGxlY3Rpb24uYWxsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhdmVkT3JTYXZpbmcgPSB0aGlzLmZpbmRSZWxhdGVkUGF5bG9hZChyZWNlaXZlZC51dWlkLCBQYXlsb2FkU291cmNlLlNhdmVkT3JTYXZpbmcpO1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5maW5kUmVsYXRlZFBheWxvYWQocmVjZWl2ZWQudXVpZCwgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpO1xuICAgICAgICAgICAgaWYgKCFkZWNyeXB0ZWQpIHtcbiAgICAgICAgICAgICAgICAvKiogRGVjcnlwdGVkIHNob3VsZCBvbmx5IGJlIG1pc3NpbmcgaW4gY2FzZSBvZiBkZWxldGVkIHJldHJpZXZlZCBpdGVtICovXG4gICAgICAgICAgICAgICAgaWYgKCFyZWNlaXZlZC5kZWxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93ICdDYW5ub3QgZmluZCBkZWNyeXB0ZWQgZm9yIG5vbi1kZWxldGVkIHBheWxvYWQuJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmlsdGVyZWQucHVzaChyZWNlaXZlZCk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2F2ZWRPclNhdmluZykge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0ZWQucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuZmluZEJhc2VQYXlsb2FkKHJlY2VpdmVkLnV1aWQpO1xuICAgICAgICAgICAgaWYgKGJhc2UgJiYgYmFzZS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0ZWQucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgYW55IHBvdGVudGlhbCBjb25mbGljdCBhYm92ZSwgd2UgY29tcGFyZSB0aGUgdmFsdWVzIHdpdGggY3VycmVudFxuICAgICAgICAgKiBsb2NhbCB2YWx1ZXMsIGFuZCBpZiB0aGV5IGRpZmZlciwgd2UgY3JlYXRlIGEgbmV3IHBheWxvYWQgdGhhdCBpcyBhIGNvcHlcbiAgICAgICAgICogb2YgdGhlIHNlcnZlciBwYXlsb2FkLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgY29uZmxpY3RSZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY29uZmxpY3Qgb2YgY29uZmxpY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5maW5kUmVsYXRlZFBheWxvYWQoY29uZmxpY3QudXVpZCwgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpO1xuICAgICAgICAgICAgaWYgKCFkZWNyeXB0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmZpbmRCYXNlUGF5bG9hZChjb25mbGljdC51dWlkKTtcbiAgICAgICAgICAgIGlmICghY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgQ29uZmxpY3REZWx0YSh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjdXJyZW50LCBkZWNyeXB0ZWQsIFBheWxvYWRTb3VyY2UuQ29uZmxpY3REYXRhKTtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhQ29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWRzID0gZGVsdGFDb2xsZWN0aW9uLmFsbCgpO1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkoY29uZmxpY3RSZXN1bHRzLCBwYXlsb2Fkcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhmaWx0ZXJlZC5jb25jYXQoY29uZmxpY3RSZXN1bHRzKSwgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBOzs7OztBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFnQkE7QUFoQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW1CQTtBQXBCQTtBQUNBO0FBREE7QUF1QkE7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0JBO0FBekJBO0FBQ0E7QUFEQTtBQTRCQTtBQUNBO0FBN0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBOEJBOzs7OztBQUtBO0FBbkNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFtQ0E7QUFDQTtBQUNBO0FBdENBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5Q0E7QUFDQTtBQTFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBNkNBO0FBN0NBO0FBQUE7QUFDQTtBQURBO0FBOENBO0FBQ0E7QUFDQTtBQUNBO0FBakRBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/remote_retrieved.ts\n')},"./lib/protocol/payloads/deltas/remote_saved.ts": /*!******************************************************!*\ !*** ./lib/protocol/payloads/deltas/remote_saved.ts ***! \******************************************************/ /*! exports provided: DeltaRemoteSaved */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeltaRemoteSaved", function() { return DeltaRemoteSaved; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/delta */ "./lib/protocol/payloads/deltas/delta.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\nvar DeltaRemoteSaved = /*#__PURE__*/function (_PayloadsDelta) {\n _inherits(DeltaRemoteSaved, _PayloadsDelta);\n\n function DeltaRemoteSaved() {\n _classCallCheck(this, DeltaRemoteSaved);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(DeltaRemoteSaved).apply(this, arguments));\n }\n\n _createClass(DeltaRemoteSaved, [{\n key: "resultingCollection",\n value: function () {\n var _resultingCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var processed, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, current, deletedState, result;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n processed = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n\n for (_iterator = this.applyCollection.all()[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n payload = _step.value;\n current = this.findBasePayload(payload.uuid);\n /** If we save an item, but while in transit it is deleted locally, we want to keep\n * local deletion status, and not old deleted value that was sent to server. */\n\n deletedState = current ? current.deleted : payload.deleted;\n result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_4__["CreateSourcedPayloadFromObject"])(payload, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved, {\n lastSyncEnd: new Date(),\n deleted: deletedState\n });\n processed.push(result);\n }\n\n _context.next = 12;\n break;\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 12:\n _context.prev = 12;\n _context.prev = 13;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 15:\n _context.prev = 15;\n\n if (!_didIteratorError) {\n _context.next = 18;\n break;\n }\n\n throw _iteratorError;\n\n case 18:\n return _context.finish(15);\n\n case 19:\n return _context.finish(12);\n\n case 20:\n return _context.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(processed, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved));\n\n case 21:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 8, 12, 20], [13,, 15, 19]]);\n }));\n\n function resultingCollection() {\n return _resultingCollection.apply(this, arguments);\n }\n\n return resultingCollection;\n }()\n }]);\n\n return DeltaRemoteSaved;\n}(_Payloads_deltas_delta__WEBPACK_IMPORTED_MODULE_1__["PayloadsDelta"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3JlbW90ZV9zYXZlZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9kZWx0YXMvcmVtb3RlX3NhdmVkLnRzP2MyZGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGF5bG9hZHNEZWx0YSB9IGZyb20gJ0BQYXlsb2Fkcy9kZWx0YXMvZGVsdGEnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uIH0gZnJvbSBcIkBQcm90b2NvbC9jb2xsZWN0aW9uL3BheWxvYWRfY29sbGVjdGlvblwiO1xuaW1wb3J0IHsgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5leHBvcnQgY2xhc3MgRGVsdGFSZW1vdGVTYXZlZCBleHRlbmRzIFBheWxvYWRzRGVsdGEge1xuICAgIGFzeW5jIHJlc3VsdGluZ0NvbGxlY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgdGhpcy5hcHBseUNvbGxlY3Rpb24uYWxsKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmZpbmRCYXNlUGF5bG9hZChwYXlsb2FkLnV1aWQpO1xuICAgICAgICAgICAgLyoqIElmIHdlIHNhdmUgYW4gaXRlbSwgYnV0IHdoaWxlIGluIHRyYW5zaXQgaXQgaXMgZGVsZXRlZCBsb2NhbGx5LCB3ZSB3YW50IHRvIGtlZXBcbiAgICAgICAgICAgICAqIGxvY2FsIGRlbGV0aW9uIHN0YXR1cywgYW5kIG5vdCBvbGQgZGVsZXRlZCB2YWx1ZSB0aGF0IHdhcyBzZW50IHRvIHNlcnZlci4gKi9cbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZWRTdGF0ZSA9IGN1cnJlbnQgPyBjdXJyZW50LmRlbGV0ZWQgOiBwYXlsb2FkLmRlbGV0ZWQ7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QocGF5bG9hZCwgUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCwge1xuICAgICAgICAgICAgICAgIGxhc3RTeW5jRW5kOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgICAgIGRlbGV0ZWQ6IGRlbGV0ZWRTdGF0ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBwcm9jZXNzZWQucHVzaChyZXN1bHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMocHJvY2Vzc2VkLCBQYXlsb2FkU291cmNlLlJlbW90ZVNhdmVkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBZEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/remote_saved.ts\n')},"./lib/protocol/payloads/deltas/strategies.ts": /*!****************************************************!*\ !*** ./lib/protocol/payloads/deltas/strategies.ts ***! \****************************************************/ /*! exports provided: ConflictStrategy */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConflictStrategy", function() { return ConflictStrategy; });\nvar ConflictStrategy;\n\n(function (ConflictStrategy) {\n ConflictStrategy[ConflictStrategy["KeepLeft"] = 1] = "KeepLeft";\n ConflictStrategy[ConflictStrategy["KeepRight"] = 2] = "KeepRight";\n ConflictStrategy[ConflictStrategy["KeepLeftDuplicateRight"] = 3] = "KeepLeftDuplicateRight";\n ConflictStrategy[ConflictStrategy["DuplicateLeftKeepRight"] = 4] = "DuplicateLeftKeepRight";\n ConflictStrategy[ConflictStrategy["KeepLeftMergeRefs"] = 5] = "KeepLeftMergeRefs";\n})(ConflictStrategy || (ConflictStrategy = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3N0cmF0ZWdpZXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZGVsdGFzL3N0cmF0ZWdpZXMudHM/NGJlMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIENvbmZsaWN0U3RyYXRlZ3k7XG4oZnVuY3Rpb24gKENvbmZsaWN0U3RyYXRlZ3kpIHtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJLZWVwTGVmdFwiXSA9IDFdID0gXCJLZWVwTGVmdFwiO1xuICAgIENvbmZsaWN0U3RyYXRlZ3lbQ29uZmxpY3RTdHJhdGVneVtcIktlZXBSaWdodFwiXSA9IDJdID0gXCJLZWVwUmlnaHRcIjtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJLZWVwTGVmdER1cGxpY2F0ZVJpZ2h0XCJdID0gM10gPSBcIktlZXBMZWZ0RHVwbGljYXRlUmlnaHRcIjtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJEdXBsaWNhdGVMZWZ0S2VlcFJpZ2h0XCJdID0gNF0gPSBcIkR1cGxpY2F0ZUxlZnRLZWVwUmlnaHRcIjtcbiAgICBDb25mbGljdFN0cmF0ZWd5W0NvbmZsaWN0U3RyYXRlZ3lbXCJLZWVwTGVmdE1lcmdlUmVmc1wiXSA9IDVdID0gXCJLZWVwTGVmdE1lcmdlUmVmc1wiO1xufSkoQ29uZmxpY3RTdHJhdGVneSB8fCAoQ29uZmxpY3RTdHJhdGVneSA9IHt9KSk7XG47XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/deltas/strategies.ts\n')},"./lib/protocol/payloads/fields.ts": /*!*****************************************!*\ !*** ./lib/protocol/payloads/fields.ts ***! \*****************************************/ /*! exports provided: PayloadField */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadField", function() { return PayloadField; });\nvar PayloadField;\n\n(function (PayloadField) {\n PayloadField["Uuid"] = "uuid";\n PayloadField["ContentType"] = "content_type";\n PayloadField["ItemsKeyId"] = "items_key_id";\n PayloadField["EncItemKey"] = "enc_item_key";\n PayloadField["Content"] = "content";\n PayloadField["CreatedAt"] = "created_at";\n PayloadField["UpdatedAt"] = "updated_at";\n PayloadField["Deleted"] = "deleted";\n PayloadField["Legacy003AuthHash"] = "auth_hash";\n PayloadField["Legacy003AuthParams"] = "auth_params";\n PayloadField["Dirty"] = "dirty";\n PayloadField["DirtiedDate"] = "dirtiedDate";\n PayloadField["WaitingForKey"] = "waitingForKey";\n PayloadField["ErrorDecrypting"] = "errorDecrypting";\n PayloadField["ErrorDecryptingChanged"] = "errorDecryptingValueChanged";\n PayloadField["LastSyncBegan"] = "lastSyncBegan";\n PayloadField["LastSyncEnd"] = "lastSyncEnd";\n})(PayloadField || (PayloadField = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZmllbGRzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2ZpZWxkcy50cz9lMzAwIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgUGF5bG9hZEZpZWxkO1xuKGZ1bmN0aW9uIChQYXlsb2FkRmllbGQpIHtcbiAgICBQYXlsb2FkRmllbGRbXCJVdWlkXCJdID0gXCJ1dWlkXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiQ29udGVudFR5cGVcIl0gPSBcImNvbnRlbnRfdHlwZVwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkl0ZW1zS2V5SWRcIl0gPSBcIml0ZW1zX2tleV9pZFwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkVuY0l0ZW1LZXlcIl0gPSBcImVuY19pdGVtX2tleVwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkNvbnRlbnRcIl0gPSBcImNvbnRlbnRcIjtcbiAgICBQYXlsb2FkRmllbGRbXCJDcmVhdGVkQXRcIl0gPSBcImNyZWF0ZWRfYXRcIjtcbiAgICBQYXlsb2FkRmllbGRbXCJVcGRhdGVkQXRcIl0gPSBcInVwZGF0ZWRfYXRcIjtcbiAgICBQYXlsb2FkRmllbGRbXCJEZWxldGVkXCJdID0gXCJkZWxldGVkXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiTGVnYWN5MDAzQXV0aEhhc2hcIl0gPSBcImF1dGhfaGFzaFwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkxlZ2FjeTAwM0F1dGhQYXJhbXNcIl0gPSBcImF1dGhfcGFyYW1zXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiRGlydHlcIl0gPSBcImRpcnR5XCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiRGlydGllZERhdGVcIl0gPSBcImRpcnRpZWREYXRlXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiV2FpdGluZ0ZvcktleVwiXSA9IFwid2FpdGluZ0ZvcktleVwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkVycm9yRGVjcnlwdGluZ1wiXSA9IFwiZXJyb3JEZWNyeXB0aW5nXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiRXJyb3JEZWNyeXB0aW5nQ2hhbmdlZFwiXSA9IFwiZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkXCI7XG4gICAgUGF5bG9hZEZpZWxkW1wiTGFzdFN5bmNCZWdhblwiXSA9IFwibGFzdFN5bmNCZWdhblwiO1xuICAgIFBheWxvYWRGaWVsZFtcIkxhc3RTeW5jRW5kXCJdID0gXCJsYXN0U3luY0VuZFwiO1xufSkoUGF5bG9hZEZpZWxkIHx8IChQYXlsb2FkRmllbGQgPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/fields.ts\n')},"./lib/protocol/payloads/formats.ts": /*!******************************************!*\ !*** ./lib/protocol/payloads/formats.ts ***! \******************************************/ /*! exports provided: PayloadFormat */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadFormat", function() { return PayloadFormat; });\nvar PayloadFormat;\n\n(function (PayloadFormat) {\n PayloadFormat[PayloadFormat["EncryptedString"] = 0] = "EncryptedString";\n PayloadFormat[PayloadFormat["DecryptedBareObject"] = 1] = "DecryptedBareObject";\n PayloadFormat[PayloadFormat["DecryptedBase64String"] = 2] = "DecryptedBase64String";\n PayloadFormat[PayloadFormat["Deleted"] = 3] = "Deleted";\n})(PayloadFormat || (PayloadFormat = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZm9ybWF0cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9mb3JtYXRzLnRzPzczNjQiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXlsb2FkRm9ybWF0O1xuKGZ1bmN0aW9uIChQYXlsb2FkRm9ybWF0KSB7XG4gICAgUGF5bG9hZEZvcm1hdFtQYXlsb2FkRm9ybWF0W1wiRW5jcnlwdGVkU3RyaW5nXCJdID0gMF0gPSBcIkVuY3J5cHRlZFN0cmluZ1wiO1xuICAgIFBheWxvYWRGb3JtYXRbUGF5bG9hZEZvcm1hdFtcIkRlY3J5cHRlZEJhcmVPYmplY3RcIl0gPSAxXSA9IFwiRGVjcnlwdGVkQmFyZU9iamVjdFwiO1xuICAgIFBheWxvYWRGb3JtYXRbUGF5bG9hZEZvcm1hdFtcIkRlY3J5cHRlZEJhc2U2NFN0cmluZ1wiXSA9IDJdID0gXCJEZWNyeXB0ZWRCYXNlNjRTdHJpbmdcIjtcbiAgICBQYXlsb2FkRm9ybWF0W1BheWxvYWRGb3JtYXRbXCJEZWxldGVkXCJdID0gM10gPSBcIkRlbGV0ZWRcIjtcbn0pKFBheWxvYWRGb3JtYXQgfHwgKFBheWxvYWRGb3JtYXQgPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/formats.ts\n')},"./lib/protocol/payloads/functions.ts": /*!********************************************!*\ !*** ./lib/protocol/payloads/functions.ts ***! \********************************************/ /*! exports provided: PayloadsByDuplicating, PayloadsByAlternatingUuid, PayloadContentsEqual */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadsByDuplicating", function() { return PayloadsByDuplicating; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadsByAlternatingUuid", function() { return PayloadsByAlternatingUuid; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadContentsEqual", function() { return PayloadContentsEqual; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_core_item__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../../models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _models_app_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../../models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\n\nfunction NoteDuplicationAffectedPayloads(basePayload, duplicatePayload, baseCollection) {\n /** If note has editor, maintain editor relationship in duplicate note */\n var components = baseCollection.all(_Lib_models__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Component).map(function (payload) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payload);\n });\n var editor = components.filter(function (c) {\n return c.area === _models_app_component__WEBPACK_IMPORTED_MODULE_2__["ComponentArea"].Editor;\n }).find(function (e) {\n return e.isExplicitlyEnabledForItem(basePayload.uuid);\n });\n\n if (!editor) {\n return undefined;\n }\n /** Modify the editor to include new note */\n\n\n var mutator = new _models_app_component__WEBPACK_IMPORTED_MODULE_2__["ComponentMutator"](editor, _models_core_item__WEBPACK_IMPORTED_MODULE_1__["MutationType"].Internal);\n mutator.associateWithItem(duplicatePayload.uuid);\n var result = mutator.getResult();\n return [result];\n}\n\nvar AffectorMapping = _defineProperty({}, _Lib_models__WEBPACK_IMPORTED_MODULE_8__["ContentType"].Note, NoteDuplicationAffectedPayloads);\n/**\n * Copies payload and assigns it a new uuid.\n * @returns An array of payloads that have changed as a result of copying.\n */\n\n\nfunction PayloadsByDuplicating(_x, _x2, _x3) {\n return _PayloadsByDuplicating.apply(this, arguments);\n}\n/**\n * Return the payloads that result if you alternated the uuid for the payload.\n * Alternating a UUID involves instructing related items to drop old references of a uuid\n * for the new one.\n * @returns An array of payloads that have changed as a result of copying.\n */\n\nfunction _PayloadsByDuplicating() {\n _PayloadsByDuplicating = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(payload, baseCollection, isConflict) {\n var results, override, copy, referencing, updatedReferencing, affector, affected;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n results = [];\n _context.next = 3;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_7__["Uuid"].GenerateUuid();\n\n case 3:\n _context.t0 = _context.sent;\n _context.t1 = new Date();\n override = {\n uuid: _context.t0,\n dirty: true,\n dirtiedDate: _context.t1,\n lastSyncBegan: null,\n lastSyncEnd: null\n };\n\n if (isConflict) {\n override.content = _objectSpread({}, payload.safeContent, {\n conflict_of: payload.uuid\n });\n }\n\n copy = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, override);\n results.push(copy);\n /**\n * Get the payloads that make reference to payload and add the copy.\n */\n\n referencing = baseCollection.elementsReferencingElement(payload);\n _context.next = 12;\n return PayloadsByUpdatingReferences(referencing, [{\n uuid: copy.uuid,\n content_type: copy.content_type\n }]);\n\n case 12:\n updatedReferencing = _context.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, updatedReferencing);\n affector = AffectorMapping[payload.content_type];\n\n if (affector) {\n affected = affector(payload, copy, baseCollection);\n\n if (affected) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, affected);\n }\n }\n\n return _context.abrupt("return", results);\n\n case 17:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _PayloadsByDuplicating.apply(this, arguments);\n}\n\nfunction PayloadsByAlternatingUuid(_x4, _x5) {\n return _PayloadsByAlternatingUuid.apply(this, arguments);\n}\n\nfunction _PayloadsByAlternatingUuid() {\n _PayloadsByAlternatingUuid = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payload, baseCollection) {\n var results, copy, referencing, updatedReferencing, updatedSelf;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n results = [];\n /**\n * We need to clone payload and give it a new uuid,\n * then delete item with old uuid from db (cannot modify uuids in our IndexedDB setup)\n */\n\n _context2.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"];\n _context2.t1 = payload;\n _context2.next = 5;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_7__["Uuid"].GenerateUuid();\n\n case 5:\n _context2.t2 = _context2.sent;\n _context2.t3 = new Date();\n _context2.t4 = {\n uuid: _context2.t2,\n dirty: true,\n dirtiedDate: _context2.t3,\n lastSyncBegan: null,\n lastSyncEnd: null\n };\n copy = (0, _context2.t0)(_context2.t1, _context2.t4);\n results.push(copy);\n /**\n * Get the payloads that make reference to payload and remove\n * payload as a relationship, instead adding the new copy.\n */\n\n referencing = baseCollection.elementsReferencingElement(payload);\n _context2.next = 13;\n return PayloadsByUpdatingReferences(referencing, [{\n uuid: copy.uuid,\n content_type: copy.content_type\n }], [payload.uuid]);\n\n case 13:\n updatedReferencing = _context2.sent;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["extendArray"])(results, updatedReferencing);\n updatedSelf = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, {\n deleted: true,\n\n /** Do not set as dirty; this item is non-syncable\n and should be immediately discarded */\n dirty: false,\n content: undefined\n });\n results.push(updatedSelf);\n return _context2.abrupt("return", results);\n\n case 18:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _PayloadsByAlternatingUuid.apply(this, arguments);\n}\n\nfunction PayloadsByUpdatingReferences(_x6, _x7, _x8) {\n return _PayloadsByUpdatingReferences.apply(this, arguments);\n}\n/**\n * Compares the .content fields for equality, creating new SNItem objects\n * to properly handle .content intricacies.\n */\n\n\nfunction _PayloadsByUpdatingReferences() {\n _PayloadsByUpdatingReferences = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(payloads, add, removeIds) {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, references, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, reference, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, id, result;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context3.prev = 4;\n _iterator = payloads[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context3.next = 54;\n break;\n }\n\n payload = _step.value;\n references = payload.contentObject.references.slice();\n\n if (!add) {\n _context3.next = 29;\n break;\n }\n\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context3.prev = 13;\n\n for (_iterator2 = add[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n reference = _step2.value;\n references.push(reference);\n }\n\n _context3.next = 21;\n break;\n\n case 17:\n _context3.prev = 17;\n _context3.t0 = _context3["catch"](13);\n _didIteratorError2 = true;\n _iteratorError2 = _context3.t0;\n\n case 21:\n _context3.prev = 21;\n _context3.prev = 22;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 24:\n _context3.prev = 24;\n\n if (!_didIteratorError2) {\n _context3.next = 27;\n break;\n }\n\n throw _iteratorError2;\n\n case 27:\n return _context3.finish(24);\n\n case 28:\n return _context3.finish(21);\n\n case 29:\n if (!removeIds) {\n _context3.next = 49;\n break;\n }\n\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context3.prev = 33;\n\n for (_iterator3 = removeIds[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n id = _step3.value;\n lodash_remove__WEBPACK_IMPORTED_MODULE_4___default()(references, {\n uuid: id\n });\n }\n\n _context3.next = 41;\n break;\n\n case 37:\n _context3.prev = 37;\n _context3.t1 = _context3["catch"](33);\n _didIteratorError3 = true;\n _iteratorError3 = _context3.t1;\n\n case 41:\n _context3.prev = 41;\n _context3.prev = 42;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 44:\n _context3.prev = 44;\n\n if (!_didIteratorError3) {\n _context3.next = 47;\n break;\n }\n\n throw _iteratorError3;\n\n case 47:\n return _context3.finish(44);\n\n case 48:\n return _context3.finish(41);\n\n case 49:\n result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, {\n dirty: true,\n dirtiedDate: new Date(),\n content: _objectSpread({}, payload.safeContent, {\n references: references\n })\n });\n results.push(result);\n\n case 51:\n _iteratorNormalCompletion = true;\n _context3.next = 6;\n break;\n\n case 54:\n _context3.next = 60;\n break;\n\n case 56:\n _context3.prev = 56;\n _context3.t2 = _context3["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context3.t2;\n\n case 60:\n _context3.prev = 60;\n _context3.prev = 61;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 63:\n _context3.prev = 63;\n\n if (!_didIteratorError) {\n _context3.next = 66;\n break;\n }\n\n throw _iteratorError;\n\n case 66:\n return _context3.finish(63);\n\n case 67:\n return _context3.finish(60);\n\n case 68:\n return _context3.abrupt("return", results);\n\n case 69:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, null, [[4, 56, 60, 68], [13, 17, 21, 29], [22,, 24, 28], [33, 37, 41, 49], [42,, 44, 48], [61,, 63, 67]]);\n }));\n return _PayloadsByUpdatingReferences.apply(this, arguments);\n}\n\nfunction PayloadContentsEqual(payloadA, payloadB) {\n var itemA = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payloadA);\n var itemB = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_3__["CreateItemFromPayload"])(payloadB);\n return itemA.isItemContentEqualWith(itemB);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZnVuY3Rpb25zLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2Z1bmN0aW9ucy50cz81YjNhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE11dGF0aW9uVHlwZSB9IGZyb20gJy4vLi4vLi4vbW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBDb21wb25lbnRBcmVhLCBDb21wb25lbnRNdXRhdG9yIH0gZnJvbSAnLi8uLi8uLi9tb2RlbHMvYXBwL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG5pbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC9yZW1vdmUnO1xuaW1wb3J0IHsgQ29weVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IGV4dGVuZEFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnQExpYi91dWlkJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQExpYi9tb2RlbHMnO1xuZnVuY3Rpb24gTm90ZUR1cGxpY2F0aW9uQWZmZWN0ZWRQYXlsb2FkcyhiYXNlUGF5bG9hZCwgZHVwbGljYXRlUGF5bG9hZCwgYmFzZUNvbGxlY3Rpb24pIHtcbiAgICAvKiogSWYgbm90ZSBoYXMgZWRpdG9yLCBtYWludGFpbiBlZGl0b3IgcmVsYXRpb25zaGlwIGluIGR1cGxpY2F0ZSBub3RlICovXG4gICAgY29uc3QgY29tcG9uZW50cyA9IGJhc2VDb2xsZWN0aW9uLmFsbChDb250ZW50VHlwZS5Db21wb25lbnQpLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IGVkaXRvciA9IGNvbXBvbmVudHMuZmlsdGVyKChjKSA9PiBjLmFyZWEgPT09IENvbXBvbmVudEFyZWEuRWRpdG9yKS5maW5kKChlKSA9PiB7XG4gICAgICAgIHJldHVybiBlLmlzRXhwbGljaXRseUVuYWJsZWRGb3JJdGVtKGJhc2VQYXlsb2FkLnV1aWQpO1xuICAgIH0pO1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKiBNb2RpZnkgdGhlIGVkaXRvciB0byBpbmNsdWRlIG5ldyBub3RlICovXG4gICAgY29uc3QgbXV0YXRvciA9IG5ldyBDb21wb25lbnRNdXRhdG9yKGVkaXRvciwgTXV0YXRpb25UeXBlLkludGVybmFsKTtcbiAgICBtdXRhdG9yLmFzc29jaWF0ZVdpdGhJdGVtKGR1cGxpY2F0ZVBheWxvYWQudXVpZCk7XG4gICAgY29uc3QgcmVzdWx0ID0gbXV0YXRvci5nZXRSZXN1bHQoKTtcbiAgICByZXR1cm4gW3Jlc3VsdF07XG59XG5jb25zdCBBZmZlY3Rvck1hcHBpbmcgPSB7XG4gICAgW0NvbnRlbnRUeXBlLk5vdGVdOiBOb3RlRHVwbGljYXRpb25BZmZlY3RlZFBheWxvYWRzXG59O1xuLyoqXG4gKiBDb3BpZXMgcGF5bG9hZCBhbmQgYXNzaWducyBpdCBhIG5ldyB1dWlkLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGF5bG9hZHMgdGhhdCBoYXZlIGNoYW5nZWQgYXMgYSByZXN1bHQgb2YgY29weWluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIFBheWxvYWRzQnlEdXBsaWNhdGluZyhwYXlsb2FkLCBiYXNlQ29sbGVjdGlvbiwgaXNDb25mbGljdCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICBjb25zdCBvdmVycmlkZSA9IHtcbiAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgIGRpcnRpZWREYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICBsYXN0U3luY0JlZ2FuOiBudWxsLFxuICAgICAgICBsYXN0U3luY0VuZDogbnVsbCxcbiAgICB9O1xuICAgIGlmIChpc0NvbmZsaWN0KSB7XG4gICAgICAgIG92ZXJyaWRlLmNvbnRlbnQgPSB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLnNhZmVDb250ZW50LFxuICAgICAgICAgICAgY29uZmxpY3Rfb2Y6IHBheWxvYWQudXVpZCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgY29weSA9IENvcHlQYXlsb2FkKHBheWxvYWQsIG92ZXJyaWRlKTtcbiAgICByZXN1bHRzLnB1c2goY29weSk7XG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBwYXlsb2FkcyB0aGF0IG1ha2UgcmVmZXJlbmNlIHRvIHBheWxvYWQgYW5kIGFkZCB0aGUgY29weS5cbiAgICAgKi9cbiAgICBjb25zdCByZWZlcmVuY2luZyA9IGJhc2VDb2xsZWN0aW9uLmVsZW1lbnRzUmVmZXJlbmNpbmdFbGVtZW50KHBheWxvYWQpO1xuICAgIGNvbnN0IHVwZGF0ZWRSZWZlcmVuY2luZyA9IGF3YWl0IFBheWxvYWRzQnlVcGRhdGluZ1JlZmVyZW5jZXMocmVmZXJlbmNpbmcsIFt7XG4gICAgICAgICAgICB1dWlkOiBjb3B5LnV1aWQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGNvcHkuY29udGVudF90eXBlXG4gICAgICAgIH1dKTtcbiAgICBleHRlbmRBcnJheShyZXN1bHRzLCB1cGRhdGVkUmVmZXJlbmNpbmcpO1xuICAgIGNvbnN0IGFmZmVjdG9yID0gQWZmZWN0b3JNYXBwaW5nW3BheWxvYWQuY29udGVudF90eXBlXTtcbiAgICBpZiAoYWZmZWN0b3IpIHtcbiAgICAgICAgY29uc3QgYWZmZWN0ZWQgPSBhZmZlY3RvcihwYXlsb2FkLCBjb3B5LCBiYXNlQ29sbGVjdGlvbik7XG4gICAgICAgIGlmIChhZmZlY3RlZCkge1xuICAgICAgICAgICAgZXh0ZW5kQXJyYXkocmVzdWx0cywgYWZmZWN0ZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzO1xufVxuLyoqXG4gKiBSZXR1cm4gdGhlIHBheWxvYWRzIHRoYXQgcmVzdWx0IGlmIHlvdSBhbHRlcm5hdGVkIHRoZSB1dWlkIGZvciB0aGUgcGF5bG9hZC5cbiAqIEFsdGVybmF0aW5nIGEgVVVJRCBpbnZvbHZlcyBpbnN0cnVjdGluZyByZWxhdGVkIGl0ZW1zIHRvIGRyb3Agb2xkIHJlZmVyZW5jZXMgb2YgYSB1dWlkXG4gKiBmb3IgdGhlIG5ldyBvbmUuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBwYXlsb2FkcyB0aGF0IGhhdmUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiBjb3B5aW5nLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gUGF5bG9hZHNCeUFsdGVybmF0aW5nVXVpZChwYXlsb2FkLCBiYXNlQ29sbGVjdGlvbikge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAvKipcbiAgICAqIFdlIG5lZWQgdG8gY2xvbmUgcGF5bG9hZCBhbmQgZ2l2ZSBpdCBhIG5ldyB1dWlkLFxuICAgICogdGhlbiBkZWxldGUgaXRlbSB3aXRoIG9sZCB1dWlkIGZyb20gZGIgKGNhbm5vdCBtb2RpZnkgdXVpZHMgaW4gb3VyIEluZGV4ZWREQiBzZXR1cClcbiAgICAqL1xuICAgIGNvbnN0IGNvcHkgPSBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgbGFzdFN5bmNCZWdhbjogbnVsbCxcbiAgICAgICAgbGFzdFN5bmNFbmQ6IG51bGwsXG4gICAgfSk7XG4gICAgcmVzdWx0cy5wdXNoKGNvcHkpO1xuICAgIC8qKlxuICAgICAqIEdldCB0aGUgcGF5bG9hZHMgdGhhdCBtYWtlIHJlZmVyZW5jZSB0byBwYXlsb2FkIGFuZCByZW1vdmVcbiAgICAgKiBwYXlsb2FkIGFzIGEgcmVsYXRpb25zaGlwLCBpbnN0ZWFkIGFkZGluZyB0aGUgbmV3IGNvcHkuXG4gICAgICovXG4gICAgY29uc3QgcmVmZXJlbmNpbmcgPSBiYXNlQ29sbGVjdGlvbi5lbGVtZW50c1JlZmVyZW5jaW5nRWxlbWVudChwYXlsb2FkKTtcbiAgICBjb25zdCB1cGRhdGVkUmVmZXJlbmNpbmcgPSBhd2FpdCBQYXlsb2Fkc0J5VXBkYXRpbmdSZWZlcmVuY2VzKHJlZmVyZW5jaW5nLCBbe1xuICAgICAgICAgICAgdXVpZDogY29weS51dWlkLFxuICAgICAgICAgICAgY29udGVudF90eXBlOiBjb3B5LmNvbnRlbnRfdHlwZVxuICAgICAgICB9XSwgW3BheWxvYWQudXVpZF0pO1xuICAgIGV4dGVuZEFycmF5KHJlc3VsdHMsIHVwZGF0ZWRSZWZlcmVuY2luZyk7XG4gICAgY29uc3QgdXBkYXRlZFNlbGYgPSBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgIGRlbGV0ZWQ6IHRydWUsXG4gICAgICAgIC8qKiBEbyBub3Qgc2V0IGFzIGRpcnR5OyB0aGlzIGl0ZW0gaXMgbm9uLXN5bmNhYmxlXG4gICAgICAgICAgYW5kIHNob3VsZCBiZSBpbW1lZGlhdGVseSBkaXNjYXJkZWQgKi9cbiAgICAgICAgZGlydHk6IGZhbHNlLFxuICAgICAgICBjb250ZW50OiB1bmRlZmluZWRcbiAgICB9KTtcbiAgICByZXN1bHRzLnB1c2godXBkYXRlZFNlbGYpO1xuICAgIHJldHVybiByZXN1bHRzO1xufVxuYXN5bmMgZnVuY3Rpb24gUGF5bG9hZHNCeVVwZGF0aW5nUmVmZXJlbmNlcyhwYXlsb2FkcywgYWRkLCByZW1vdmVJZHMpIHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgZm9yIChjb25zdCBwYXlsb2FkIG9mIHBheWxvYWRzKSB7XG4gICAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBwYXlsb2FkLmNvbnRlbnRPYmplY3QucmVmZXJlbmNlcy5zbGljZSgpO1xuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiBhZGQpIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzLnB1c2gocmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtb3ZlSWRzKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIHJlbW92ZUlkcykge1xuICAgICAgICAgICAgICAgIHJlbW92ZShyZWZlcmVuY2VzLCB7IHV1aWQ6IGlkIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENvcHlQYXlsb2FkKHBheWxvYWQsIHtcbiAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICAgICAgZGlydGllZERhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZC5zYWZlQ29udGVudCxcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzOiByZWZlcmVuY2VzXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG4vKipcbiAqIENvbXBhcmVzIHRoZSAuY29udGVudCBmaWVsZHMgZm9yIGVxdWFsaXR5LCBjcmVhdGluZyBuZXcgU05JdGVtIG9iamVjdHNcbiAqIHRvIHByb3Blcmx5IGhhbmRsZSAuY29udGVudCBpbnRyaWNhY2llcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBheWxvYWRDb250ZW50c0VxdWFsKHBheWxvYWRBLCBwYXlsb2FkQikge1xuICAgIGNvbnN0IGl0ZW1BID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWRBKTtcbiAgICBjb25zdCBpdGVtQiA9IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkQik7XG4gICAgcmV0dXJuIGl0ZW1BLmlzSXRlbUNvbnRlbnRFcXVhbFdpdGgoaXRlbUIpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTs7Ozs7O0FBSUE7QUFBQTtBQUFBO0FBbUNBOzs7Ozs7OztBQW5DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUFRQTtBQUNBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQXBCQTtBQUFBO0FBc0JBO0FBQ0E7QUFGQTtBQUNBO0FBdEJBO0FBcUJBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7QUF5Q0E7QUFBQTtBQUFBO0FBQ0E7O0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBWEE7QUFNQTtBQU9BO0FBQ0E7Ozs7O0FBSUE7QUFsQkE7QUFBQTtBQW9CQTtBQUNBO0FBRkE7QUFDQTtBQXBCQTtBQW1CQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7O0FBRUE7QUFDQTtBQUxBO0FBT0E7QUEvQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBa0NBOzs7QUEwQkE7Ozs7Ozs7QUExQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFTQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQWJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUZBO0FBSEE7QUFRQTtBQUNBO0FBdkJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/functions.ts\n')},"./lib/protocol/payloads/generator.ts": /*!********************************************!*\ !*** ./lib/protocol/payloads/generator.ts ***! \********************************************/ /*! exports provided: CreateMaxPayloadFromAnyObject, PayloadByMerging, CreateIntentPayloadFromObject, CreateSourcedPayloadFromObject, CopyPayload, CreateEncryptionParameters, CopyEncryptionParameters, payloadFieldsForSource */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateMaxPayloadFromAnyObject", function() { return CreateMaxPayloadFromAnyObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadByMerging", function() { return PayloadByMerging; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateIntentPayloadFromObject", function() { return CreateIntentPayloadFromObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateSourcedPayloadFromObject", function() { return CreateSourcedPayloadFromObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CopyPayload", function() { return CopyPayload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateEncryptionParameters", function() { return CreateEncryptionParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CopyEncryptionParameters", function() { return CopyEncryptionParameters; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "payloadFieldsForSource", function() { return payloadFieldsForSource; });\n/* harmony import */ var _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Payloads/pure_payload */ "./lib/protocol/payloads/pure_payload.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/fields */ "./lib/protocol/payloads/fields.ts");\n\n\n\n\n\n/** The MaxItemPayload represents a payload with all possible fields */\n\nvar MaxPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthParams, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Dirty, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].DirtiedDate, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecrypting, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecryptingChanged, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].WaitingForKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].LastSyncBegan, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].LastSyncEnd];\nvar EncryptionParametersFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecrypting, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecryptingChanged, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].WaitingForKey];\nvar FilePayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash];\nvar StoragePayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthParams, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Dirty, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].DirtiedDate, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ErrorDecrypting, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].WaitingForKey];\nvar ServerPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ItemsKeyId, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].EncItemKey, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Legacy003AuthHash];\nvar SessionHistoryPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt];\n/** Represents a payload with permissible fields for when a\n * payload is retrieved from a component for saving */\n\nvar ComponentRetrievedPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt];\n/** Represents a payload with permissible fields for when a\n * component wants to create a new item */\n\nvar ComponentCreatedPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Content, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].CreatedAt];\n/**\n * The saved server item payload represents the payload we want to map\n * when mapping saved_items from the server. We only want to map the\n * updated_at value the server returns for the item, and basically\n * nothing else.\n */\n\nvar ServerSavedPayloadFields = [_Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Uuid, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].ContentType, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].UpdatedAt, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Deleted, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].Dirty, _Payloads_fields__WEBPACK_IMPORTED_MODULE_4__["PayloadField"].LastSyncEnd];\nfunction CreateMaxPayloadFromAnyObject(object, override) {\n return CreatePayload(object, MaxPayloadFields.slice(), undefined, override);\n}\n/**\n * Makes a new payload by starting with input payload, then overriding values of all\n * keys of mergeWith.fields. If wanting to merge only specific fields, pass an array of\n * fields. If override value is passed, values in here take final precedence, including\n * above both payload and mergeWith values.\n */\n\nfunction PayloadByMerging(payload, mergeWith, fields, override) {\n var resultOverride = {};\n var useFields = fields || mergeWith.fields;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = useFields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n resultOverride[field] = mergeWith[field];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (override) {\n var keys = Object.keys(override);\n\n for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {\n var key = _keys[_i];\n resultOverride[key] = override[key];\n }\n }\n\n return CopyPayload(payload, resultOverride);\n}\nfunction CreateIntentPayloadFromObject(object, intent, override) {\n var payloadFields = payloadFieldsForIntent(intent);\n return CreatePayload(object, payloadFields, _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].Constructor, override);\n}\nfunction CreateSourcedPayloadFromObject(object, source, override) {\n var payloadFields = payloadFieldsForSource(source);\n return CreatePayload(object, payloadFields, source, override);\n}\nfunction CopyPayload(payload, override) {\n return CreatePayload(payload, payload.fields, payload.source, override);\n}\n\nfunction CreatePayload(object, fields, source, override) {\n var rawPayload = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["pickByCopy"])(object, fields);\n var overrideFields = override instanceof _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_0__["PurePayload"] ? override.fields.slice() : Object.keys(override || []);\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = overrideFields[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var field = _step2.value;\n var value = override[field];\n rawPayload[field] = value ? Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["Copy"])(value) : value;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var newFields = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_3__["uniqueArray"])(fields.concat(overrideFields));\n return new _Payloads_pure_payload__WEBPACK_IMPORTED_MODULE_0__["PurePayload"](rawPayload, newFields, source || _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].Constructor);\n}\n\nfunction CreateEncryptionParameters(raw) {\n var fields = Object.keys(raw);\n return CreatePayload(raw, fields);\n}\nfunction CopyEncryptionParameters(raw, override) {\n return CreatePayload(raw, EncryptionParametersFields.slice(), undefined, override);\n}\n\nfunction payloadFieldsForIntent(intent) {\n if (intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileEncrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileDecrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted) {\n return FilePayloadFields.slice();\n }\n\n if (intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStoragePreferEncrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageDecrypted || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageEncrypted) {\n return StoragePayloadFields.slice();\n }\n\n if (intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].Sync || intent === _Protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].SyncDecrypted) {\n return ServerPayloadFields.slice();\n } else {\n throw "No payload fields found for intent ".concat(intent);\n }\n}\n\nfunction payloadFieldsForSource(source) {\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].FileImport) {\n return FilePayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].SessionHistory) {\n return SessionHistoryPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ComponentRetrieved) {\n return ComponentRetrievedPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ComponentCreated) {\n return ComponentCreatedPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].LocalRetrieved || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].LocalChanged) {\n return StoragePayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].RemoteRetrieved || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ConflictData || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].ConflictUuid) {\n return ServerPayloadFields.slice();\n }\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].LocalSaved || source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_1__["PayloadSource"].RemoteSaved) {\n return ServerSavedPayloadFields.slice();\n } else {\n throw "No payload fields found for source ".concat(source);\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvZ2VuZXJhdG9yLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL2dlbmVyYXRvci50cz85NzkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1cmVQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL3B1cmVfcGF5bG9hZCc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgRW5jcnlwdGlvbkludGVudCB9IGZyb20gJ0BQcm90b2NvbC9pbnRlbnRzJztcbmltcG9ydCB7IENvcHksIHBpY2tCeUNvcHksIHVuaXF1ZUFycmF5LCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGF5bG9hZEZpZWxkIH0gZnJvbSAnQFBheWxvYWRzL2ZpZWxkcyc7XG4vKiogVGhlIE1heEl0ZW1QYXlsb2FkIHJlcHJlc2VudHMgYSBwYXlsb2FkIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyAqL1xuY29uc3QgTWF4UGF5bG9hZEZpZWxkcyA9IFtcbiAgICBQYXlsb2FkRmllbGQuVXVpZCxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudFR5cGUsXG4gICAgUGF5bG9hZEZpZWxkLkl0ZW1zS2V5SWQsXG4gICAgUGF5bG9hZEZpZWxkLkVuY0l0ZW1LZXksXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnQsXG4gICAgUGF5bG9hZEZpZWxkLkNyZWF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuVXBkYXRlZEF0LFxuICAgIFBheWxvYWRGaWVsZC5EZWxldGVkLFxuICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICBQYXlsb2FkRmllbGQuTGVnYWN5MDAzQXV0aFBhcmFtcyxcbiAgICBQYXlsb2FkRmllbGQuRGlydHksXG4gICAgUGF5bG9hZEZpZWxkLkRpcnRpZWREYXRlLFxuICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmcsXG4gICAgUGF5bG9hZEZpZWxkLkVycm9yRGVjcnlwdGluZ0NoYW5nZWQsXG4gICAgUGF5bG9hZEZpZWxkLldhaXRpbmdGb3JLZXksXG4gICAgUGF5bG9hZEZpZWxkLkxhc3RTeW5jQmVnYW4sXG4gICAgUGF5bG9hZEZpZWxkLkxhc3RTeW5jRW5kLFxuXTtcbmNvbnN0IEVuY3J5cHRpb25QYXJhbWV0ZXJzRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5JdGVtc0tleUlkLFxuICAgIFBheWxvYWRGaWVsZC5FbmNJdGVtS2V5LFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50LFxuICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICBQYXlsb2FkRmllbGQuRXJyb3JEZWNyeXB0aW5nLFxuICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmdDaGFuZ2VkLFxuICAgIFBheWxvYWRGaWVsZC5XYWl0aW5nRm9yS2V5XG5dO1xuY29uc3QgRmlsZVBheWxvYWRGaWVsZHMgPSBbXG4gICAgUGF5bG9hZEZpZWxkLlV1aWQsXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnRUeXBlLFxuICAgIFBheWxvYWRGaWVsZC5JdGVtc0tleUlkLFxuICAgIFBheWxvYWRGaWVsZC5FbmNJdGVtS2V5LFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50LFxuICAgIFBheWxvYWRGaWVsZC5DcmVhdGVkQXQsXG4gICAgUGF5bG9hZEZpZWxkLlVwZGF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuTGVnYWN5MDAzQXV0aEhhc2hcbl07XG5jb25zdCBTdG9yYWdlUGF5bG9hZEZpZWxkcyA9IFtcbiAgICBQYXlsb2FkRmllbGQuVXVpZCxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudFR5cGUsXG4gICAgUGF5bG9hZEZpZWxkLkl0ZW1zS2V5SWQsXG4gICAgUGF5bG9hZEZpZWxkLkVuY0l0ZW1LZXksXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnQsXG4gICAgUGF5bG9hZEZpZWxkLkNyZWF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuVXBkYXRlZEF0LFxuICAgIFBheWxvYWRGaWVsZC5EZWxldGVkLFxuICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICBQYXlsb2FkRmllbGQuTGVnYWN5MDAzQXV0aFBhcmFtcyxcbiAgICBQYXlsb2FkRmllbGQuRGlydHksXG4gICAgUGF5bG9hZEZpZWxkLkRpcnRpZWREYXRlLFxuICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmcsXG4gICAgUGF5bG9hZEZpZWxkLldhaXRpbmdGb3JLZXlcbl07XG5jb25zdCBTZXJ2ZXJQYXlsb2FkRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50VHlwZSxcbiAgICBQYXlsb2FkRmllbGQuSXRlbXNLZXlJZCxcbiAgICBQYXlsb2FkRmllbGQuRW5jSXRlbUtleSxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudCxcbiAgICBQYXlsb2FkRmllbGQuQ3JlYXRlZEF0LFxuICAgIFBheWxvYWRGaWVsZC5VcGRhdGVkQXQsXG4gICAgUGF5bG9hZEZpZWxkLkRlbGV0ZWQsXG4gICAgUGF5bG9hZEZpZWxkLkxlZ2FjeTAwM0F1dGhIYXNoXG5dO1xuY29uc3QgU2Vzc2lvbkhpc3RvcnlQYXlsb2FkRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50VHlwZSxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudCxcbiAgICBQYXlsb2FkRmllbGQuVXBkYXRlZEF0LFxuXTtcbi8qKiBSZXByZXNlbnRzIGEgcGF5bG9hZCB3aXRoIHBlcm1pc3NpYmxlIGZpZWxkcyBmb3Igd2hlbiBhXG4gKiBwYXlsb2FkIGlzIHJldHJpZXZlZCBmcm9tIGEgY29tcG9uZW50IGZvciBzYXZpbmcgKi9cbmNvbnN0IENvbXBvbmVudFJldHJpZXZlZFBheWxvYWRGaWVsZHMgPSBbXG4gICAgUGF5bG9hZEZpZWxkLlV1aWQsXG4gICAgUGF5bG9hZEZpZWxkLkNvbnRlbnQsXG4gICAgUGF5bG9hZEZpZWxkLkNyZWF0ZWRBdFxuXTtcbi8qKiBSZXByZXNlbnRzIGEgcGF5bG9hZCB3aXRoIHBlcm1pc3NpYmxlIGZpZWxkcyBmb3Igd2hlbiBhXG4gKiBjb21wb25lbnQgd2FudHMgdG8gY3JlYXRlIGEgbmV3IGl0ZW0gKi9cbmNvbnN0IENvbXBvbmVudENyZWF0ZWRQYXlsb2FkRmllbGRzID0gW1xuICAgIFBheWxvYWRGaWVsZC5VdWlkLFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50LFxuICAgIFBheWxvYWRGaWVsZC5Db250ZW50VHlwZSxcbiAgICBQYXlsb2FkRmllbGQuQ3JlYXRlZEF0XG5dO1xuLyoqXG4gKiBUaGUgc2F2ZWQgc2VydmVyIGl0ZW0gcGF5bG9hZCByZXByZXNlbnRzIHRoZSBwYXlsb2FkIHdlIHdhbnQgdG8gbWFwXG4gKiB3aGVuIG1hcHBpbmcgc2F2ZWRfaXRlbXMgZnJvbSB0aGUgc2VydmVyLiBXZSBvbmx5IHdhbnQgdG8gbWFwIHRoZVxuICogdXBkYXRlZF9hdCB2YWx1ZSB0aGUgc2VydmVyIHJldHVybnMgZm9yIHRoZSBpdGVtLCBhbmQgYmFzaWNhbGx5XG4gKiBub3RoaW5nIGVsc2UuXG4gKi9cbmNvbnN0IFNlcnZlclNhdmVkUGF5bG9hZEZpZWxkcyA9IFtcbiAgICBQYXlsb2FkRmllbGQuVXVpZCxcbiAgICBQYXlsb2FkRmllbGQuQ29udGVudFR5cGUsXG4gICAgUGF5bG9hZEZpZWxkLlVwZGF0ZWRBdCxcbiAgICBQYXlsb2FkRmllbGQuRGVsZXRlZCxcbiAgICBQYXlsb2FkRmllbGQuRGlydHksXG4gICAgUGF5bG9hZEZpZWxkLkxhc3RTeW5jRW5kXG5dO1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KG9iamVjdCwgb3ZlcnJpZGUpIHtcbiAgICByZXR1cm4gQ3JlYXRlUGF5bG9hZChvYmplY3QsIE1heFBheWxvYWRGaWVsZHMuc2xpY2UoKSwgdW5kZWZpbmVkLCBvdmVycmlkZSk7XG59XG4vKipcbiAqIE1ha2VzIGEgbmV3IHBheWxvYWQgYnkgc3RhcnRpbmcgd2l0aCBpbnB1dCBwYXlsb2FkLCB0aGVuIG92ZXJyaWRpbmcgdmFsdWVzIG9mIGFsbFxuICoga2V5cyBvZiBtZXJnZVdpdGguZmllbGRzLiBJZiB3YW50aW5nIHRvIG1lcmdlIG9ubHkgc3BlY2lmaWMgZmllbGRzLCBwYXNzIGFuIGFycmF5IG9mXG4gKiBmaWVsZHMuIElmIG92ZXJyaWRlIHZhbHVlIGlzIHBhc3NlZCwgdmFsdWVzIGluIGhlcmUgdGFrZSBmaW5hbCBwcmVjZWRlbmNlLCBpbmNsdWRpbmdcbiAqIGFib3ZlIGJvdGggcGF5bG9hZCBhbmQgbWVyZ2VXaXRoIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFBheWxvYWRCeU1lcmdpbmcocGF5bG9hZCwgbWVyZ2VXaXRoLCBmaWVsZHMsIG92ZXJyaWRlKSB7XG4gICAgY29uc3QgcmVzdWx0T3ZlcnJpZGUgPSB7fTtcbiAgICBjb25zdCB1c2VGaWVsZHMgPSBmaWVsZHMgfHwgbWVyZ2VXaXRoLmZpZWxkcztcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHVzZUZpZWxkcykge1xuICAgICAgICByZXN1bHRPdmVycmlkZVtmaWVsZF0gPSBtZXJnZVdpdGhbZmllbGRdO1xuICAgIH1cbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG92ZXJyaWRlKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgICAgcmVzdWx0T3ZlcnJpZGVba2V5XSA9IG92ZXJyaWRlW2tleV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIENvcHlQYXlsb2FkKHBheWxvYWQsIHJlc3VsdE92ZXJyaWRlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBDcmVhdGVJbnRlbnRQYXlsb2FkRnJvbU9iamVjdChvYmplY3QsIGludGVudCwgb3ZlcnJpZGUpIHtcbiAgICBjb25zdCBwYXlsb2FkRmllbGRzID0gcGF5bG9hZEZpZWxkc0ZvckludGVudChpbnRlbnQpO1xuICAgIHJldHVybiBDcmVhdGVQYXlsb2FkKG9iamVjdCwgcGF5bG9hZEZpZWxkcywgUGF5bG9hZFNvdXJjZS5Db25zdHJ1Y3Rvciwgb3ZlcnJpZGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChvYmplY3QsIHNvdXJjZSwgb3ZlcnJpZGUpIHtcbiAgICBjb25zdCBwYXlsb2FkRmllbGRzID0gcGF5bG9hZEZpZWxkc0ZvclNvdXJjZShzb3VyY2UpO1xuICAgIHJldHVybiBDcmVhdGVQYXlsb2FkKG9iamVjdCwgcGF5bG9hZEZpZWxkcywgc291cmNlLCBvdmVycmlkZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gQ29weVBheWxvYWQocGF5bG9hZCwgb3ZlcnJpZGUpIHtcbiAgICByZXR1cm4gQ3JlYXRlUGF5bG9hZChwYXlsb2FkLCBwYXlsb2FkLmZpZWxkcywgcGF5bG9hZC5zb3VyY2UsIG92ZXJyaWRlKTtcbn1cbmZ1bmN0aW9uIENyZWF0ZVBheWxvYWQob2JqZWN0LCBmaWVsZHMsIHNvdXJjZSwgb3ZlcnJpZGUpIHtcbiAgICBjb25zdCByYXdQYXlsb2FkID0gcGlja0J5Q29weShvYmplY3QsIGZpZWxkcyk7XG4gICAgY29uc3Qgb3ZlcnJpZGVGaWVsZHMgPSBvdmVycmlkZSBpbnN0YW5jZW9mIFB1cmVQYXlsb2FkXG4gICAgICAgID8gb3ZlcnJpZGUuZmllbGRzLnNsaWNlKClcbiAgICAgICAgOiBPYmplY3Qua2V5cyhvdmVycmlkZSB8fCBbXSk7XG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiBvdmVycmlkZUZpZWxkcykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG92ZXJyaWRlW2ZpZWxkXTtcbiAgICAgICAgcmF3UGF5bG9hZFtmaWVsZF0gPSB2YWx1ZSA/IENvcHkodmFsdWUpIDogdmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IG5ld0ZpZWxkcyA9IHVuaXF1ZUFycmF5KGZpZWxkcy5jb25jYXQob3ZlcnJpZGVGaWVsZHMpKTtcbiAgICByZXR1cm4gbmV3IFB1cmVQYXlsb2FkKHJhd1BheWxvYWQsIG5ld0ZpZWxkcywgc291cmNlIHx8IFBheWxvYWRTb3VyY2UuQ29uc3RydWN0b3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHJhdykge1xuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHJhdyk7XG4gICAgcmV0dXJuIENyZWF0ZVBheWxvYWQocmF3LCBmaWVsZHMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIENvcHlFbmNyeXB0aW9uUGFyYW1ldGVycyhyYXcsIG92ZXJyaWRlKSB7XG4gICAgcmV0dXJuIENyZWF0ZVBheWxvYWQocmF3LCBFbmNyeXB0aW9uUGFyYW1ldGVyc0ZpZWxkcy5zbGljZSgpLCB1bmRlZmluZWQsIG92ZXJyaWRlKTtcbn1cbmZ1bmN0aW9uIHBheWxvYWRGaWVsZHNGb3JJbnRlbnQoaW50ZW50KSB7XG4gICAgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZUVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZURlY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuRmlsZVByZWZlckVuY3J5cHRlZCkpIHtcbiAgICAgICAgcmV0dXJuIEZpbGVQYXlsb2FkRmllbGRzLnNsaWNlKCk7XG4gICAgfVxuICAgIGlmICgoaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCB8fFxuICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5Mb2NhbFN0b3JhZ2VFbmNyeXB0ZWQpKSB7XG4gICAgICAgIHJldHVybiBTdG9yYWdlUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoKGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5TeW5jIHx8XG4gICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5TeW5jRGVjcnlwdGVkKSkge1xuICAgICAgICByZXR1cm4gU2VydmVyUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgYE5vIHBheWxvYWQgZmllbGRzIGZvdW5kIGZvciBpbnRlbnQgJHtpbnRlbnR9YDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gcGF5bG9hZEZpZWxkc0ZvclNvdXJjZShzb3VyY2UpIHtcbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkZpbGVJbXBvcnQpIHtcbiAgICAgICAgcmV0dXJuIEZpbGVQYXlsb2FkRmllbGRzLnNsaWNlKCk7XG4gICAgfVxuICAgIGlmIChzb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuU2Vzc2lvbkhpc3RvcnkpIHtcbiAgICAgICAgcmV0dXJuIFNlc3Npb25IaXN0b3J5UGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbXBvbmVudFJldHJpZXZlZCkge1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50UmV0cmlldmVkUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbXBvbmVudENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIENvbXBvbmVudENyZWF0ZWRQYXlsb2FkRmllbGRzLnNsaWNlKCk7XG4gICAgfVxuICAgIGlmICgoc291cmNlID09PSBQYXlsb2FkU291cmNlLkxvY2FsUmV0cmlldmVkIHx8XG4gICAgICAgIHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpKSB7XG4gICAgICAgIHJldHVybiBTdG9yYWdlUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQgfHxcbiAgICAgICAgc291cmNlID09PSBQYXlsb2FkU291cmNlLkNvbmZsaWN0RGF0YSB8fFxuICAgICAgICBzb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuQ29uZmxpY3RVdWlkKSkge1xuICAgICAgICByZXR1cm4gU2VydmVyUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBpZiAoKHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5Mb2NhbFNhdmVkIHx8XG4gICAgICAgIHNvdXJjZSA9PT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCkpIHtcbiAgICAgICAgcmV0dXJuIFNlcnZlclNhdmVkUGF5bG9hZEZpZWxkcy5zbGljZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgYE5vIHBheWxvYWQgZmllbGRzIGZvdW5kIGZvciBzb3VyY2UgJHtzb3VyY2V9YDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbUJBO0FBVUE7QUFVQTtBQWdCQTtBQVdBO0FBTUE7OztBQUVBO0FBS0E7OztBQUVBO0FBTUE7Ozs7Ozs7QUFNQTtBQVFBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFLQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/generator.ts\n')},"./lib/protocol/payloads/pure_payload.ts": /*!***********************************************!*\ !*** ./lib/protocol/payloads/pure_payload.ts ***! \***********************************************/ /*! exports provided: PurePayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PurePayload", function() { return PurePayload; });\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _fields__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/formats */ "./lib/protocol/payloads/formats.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n\n/**\n * A payload is a vehicle in which item data is transported or persisted.\n * This class represents an abstract PurePayload which does not have any fields. Instead,\n * subclasses must override the `fields` static method to return which fields this particular\n * class of payload contains. For example, a ServerItemPayload is a transmission vehicle for\n * transporting an item to the server, and does not contain fields like PayloadFields.Dirty.\n * However, a StorageItemPayload is a persistence vehicle for saving payloads to disk, and does contain\n * PayloadsFields.Dirty.\n *\n * Payloads are completely immutable and may not be modified after creation. Payloads should\n * not be created directly using the constructor, but instead created using the generators avaiable\n * in generator.js.\n *\n * Payloads also have a content format. Formats can either be\n * DecryptedBase64String, EncryptedString, or DecryptedBareObject.\n */\n\nvar PurePayload = /*#__PURE__*/function () {\n function PurePayload(rawPayload, fields, source) {\n _classCallCheck(this, PurePayload);\n\n if (fields) {\n this.fields = fields;\n } else {\n this.fields = Object.keys(rawPayload);\n }\n\n if (source) {\n this.source = source;\n } else {\n this.source = _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].Constructor;\n }\n\n this.uuid = rawPayload.uuid;\n\n if (!this.uuid && this.fields.includes(_fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].Uuid)) {\n throw Error(\'uuid is null, yet this payloads fields indicate it shouldnt be.\');\n }\n\n this.content_type = rawPayload.content_type;\n\n if (rawPayload.content) {\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isObject"])(rawPayload.content)) {\n this.content = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_0__["FillItemContent"])(rawPayload.content);\n } else {\n this.content = rawPayload.content;\n }\n }\n\n this.deleted = rawPayload.deleted;\n this.items_key_id = rawPayload.items_key_id;\n this.enc_item_key = rawPayload.enc_item_key;\n /** Fallback to initializing with now date */\n\n this.created_at = new Date(rawPayload.created_at || new Date());\n /** Fallback to initializing with 0 epoch date */\n\n this.updated_at = new Date(rawPayload.updated_at || new Date(0));\n this.dirtiedDate = new Date(rawPayload.dirtiedDate);\n this.dirty = rawPayload.dirty;\n this.errorDecrypting = rawPayload.errorDecrypting;\n this.waitingForKey = rawPayload.waitingForKey;\n this.errorDecryptingValueChanged = rawPayload.errorDecryptingValueChanged;\n this.lastSyncBegan = rawPayload.lastSyncBegan ? new Date(rawPayload.lastSyncBegan) : undefined;\n this.lastSyncEnd = rawPayload.lastSyncEnd ? new Date(rawPayload.lastSyncEnd) : undefined;\n this.auth_hash = rawPayload.auth_hash;\n this.auth_params = rawPayload.auth_params;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isString"])(this.content)) {\n if (this.content.startsWith(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V000Base64Decrypted)) {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBase64String;\n } else {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].EncryptedString;\n }\n } else if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isObject"])(this.content)) {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject;\n } else {\n this.format = _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].Deleted;\n }\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isString"])(this.content)) {\n this.version = this.content.substring(0, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].VersionLength);\n } else if (this.content) {\n this.version = this.content.version;\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["deepFreeze"])(this);\n }\n /**\n * Returns a generic object with all payload fields except any that are meta-data\n * related (such as `fields`, `dirtiedDate`, etc). "Ejected" means a payload for\n * generic, non-contextual consumption, such as saving to a backup file or syncing\n * with a server.\n */\n\n\n _createClass(PurePayload, [{\n key: "ejected",\n value: function ejected() {\n var optionalFields = [_fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].Legacy003AuthHash, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].Deleted];\n var nonRequiredFields = [_fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].DirtiedDate, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].ErrorDecrypting, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].ErrorDecryptingChanged, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].WaitingForKey, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].LastSyncBegan, _fields__WEBPACK_IMPORTED_MODULE_1__["PayloadField"].LastSyncEnd];\n var result = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n\n if (nonRequiredFields.includes(field)) {\n continue;\n }\n\n var value = this[field];\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(value) && optionalFields.includes(field)) {\n continue;\n }\n\n result[field] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return result;\n }\n }, {\n key: "safeContent",\n get: function get() {\n if (this.format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject) {\n return this.content;\n } else {\n return {};\n }\n }\n /** Defined to allow singular API with Payloadable type (PurePayload | SNItem) */\n\n }, {\n key: "references",\n get: function get() {\n return this.safeReferences;\n }\n }, {\n key: "safeReferences",\n get: function get() {\n return this.safeContent.references || [];\n }\n }, {\n key: "contentObject",\n get: function get() {\n if (this.format !== _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject) {\n throw Error(\'Attempting to access non-object content as object\');\n }\n\n return this.content;\n }\n }, {\n key: "contentString",\n get: function get() {\n if (this.format === _Payloads_formats__WEBPACK_IMPORTED_MODULE_5__["PayloadFormat"].DecryptedBareObject) {\n throw Error(\'Attempting to access non-string content as string\');\n }\n\n return this.content;\n }\n /**\n * Whether a payload can be discarded and removed from storage.\n * This value is true if a payload is marked as deleted and not dirty.\n */\n\n }, {\n key: "discardable",\n get: function get() {\n return this.deleted && !this.dirty;\n }\n }]);\n\n return PurePayload;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvcHVyZV9wYXlsb2FkLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3Byb3RvY29sL3BheWxvYWRzL3B1cmVfcGF5bG9hZC50cz9iZjJkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IFBheWxvYWRGaWVsZCB9IGZyb20gJy4vZmllbGRzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBQcm90b2NvbFZlcnNpb24gfSBmcm9tICdAUHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIGlzT2JqZWN0LCBkZWVwRnJlZXplLCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGF5bG9hZEZvcm1hdCB9IGZyb20gJ0BQYXlsb2Fkcy9mb3JtYXRzJztcbi8qKlxuICogQSBwYXlsb2FkIGlzIGEgdmVoaWNsZSBpbiB3aGljaCBpdGVtIGRhdGEgaXMgdHJhbnNwb3J0ZWQgb3IgcGVyc2lzdGVkLlxuICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuIGFic3RyYWN0IFB1cmVQYXlsb2FkIHdoaWNoIGRvZXMgbm90IGhhdmUgYW55IGZpZWxkcy4gSW5zdGVhZCxcbiAqIHN1YmNsYXNzZXMgbXVzdCBvdmVycmlkZSB0aGUgYGZpZWxkc2Agc3RhdGljIG1ldGhvZCB0byByZXR1cm4gd2hpY2ggZmllbGRzIHRoaXMgcGFydGljdWxhclxuICogY2xhc3Mgb2YgcGF5bG9hZCBjb250YWlucy4gRm9yIGV4YW1wbGUsIGEgU2VydmVySXRlbVBheWxvYWQgaXMgYSB0cmFuc21pc3Npb24gdmVoaWNsZSBmb3JcbiAqIHRyYW5zcG9ydGluZyBhbiBpdGVtIHRvIHRoZSBzZXJ2ZXIsIGFuZCBkb2VzIG5vdCBjb250YWluIGZpZWxkcyBsaWtlIFBheWxvYWRGaWVsZHMuRGlydHkuXG4gKiBIb3dldmVyLCBhIFN0b3JhZ2VJdGVtUGF5bG9hZCBpcyBhIHBlcnNpc3RlbmNlIHZlaGljbGUgZm9yIHNhdmluZyBwYXlsb2FkcyB0byBkaXNrLCBhbmQgZG9lcyBjb250YWluXG4gKiBQYXlsb2Fkc0ZpZWxkcy5EaXJ0eS5cbiAqXG4gKiBQYXlsb2FkcyBhcmUgY29tcGxldGVseSBpbW11dGFibGUgYW5kIG1heSBub3QgYmUgbW9kaWZpZWQgYWZ0ZXIgY3JlYXRpb24uIFBheWxvYWRzIHNob3VsZFxuICogbm90IGJlIGNyZWF0ZWQgZGlyZWN0bHkgdXNpbmcgdGhlIGNvbnN0cnVjdG9yLCBidXQgaW5zdGVhZCBjcmVhdGVkIHVzaW5nIHRoZSBnZW5lcmF0b3JzIGF2YWlhYmxlXG4gKiBpbiBnZW5lcmF0b3IuanMuXG4gKlxuICogUGF5bG9hZHMgYWxzbyBoYXZlIGEgY29udGVudCBmb3JtYXQuIEZvcm1hdHMgY2FuIGVpdGhlciBiZVxuICogRGVjcnlwdGVkQmFzZTY0U3RyaW5nLCBFbmNyeXB0ZWRTdHJpbmcsIG9yIERlY3J5cHRlZEJhcmVPYmplY3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdXJlUGF5bG9hZCB7XG4gICAgY29uc3RydWN0b3IocmF3UGF5bG9hZCwgZmllbGRzLCBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGZpZWxkcykge1xuICAgICAgICAgICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkcyA9IE9iamVjdC5rZXlzKHJhd1BheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBQYXlsb2FkU291cmNlLkNvbnN0cnVjdG9yO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXVpZCA9IHJhd1BheWxvYWQudXVpZDtcbiAgICAgICAgaWYgKCF0aGlzLnV1aWQgJiYgdGhpcy5maWVsZHMuaW5jbHVkZXMoUGF5bG9hZEZpZWxkLlV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcigndXVpZCBpcyBudWxsLCB5ZXQgdGhpcyBwYXlsb2FkcyBmaWVsZHMgaW5kaWNhdGUgaXQgc2hvdWxkbnQgYmUuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb250ZW50X3R5cGUgPSByYXdQYXlsb2FkLmNvbnRlbnRfdHlwZTtcbiAgICAgICAgaWYgKHJhd1BheWxvYWQuY29udGVudCkge1xuICAgICAgICAgICAgaWYgKGlzT2JqZWN0KHJhd1BheWxvYWQuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQgPSBGaWxsSXRlbUNvbnRlbnQocmF3UGF5bG9hZC5jb250ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHJhd1BheWxvYWQuY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlbGV0ZWQgPSByYXdQYXlsb2FkLmRlbGV0ZWQ7XG4gICAgICAgIHRoaXMuaXRlbXNfa2V5X2lkID0gcmF3UGF5bG9hZC5pdGVtc19rZXlfaWQ7XG4gICAgICAgIHRoaXMuZW5jX2l0ZW1fa2V5ID0gcmF3UGF5bG9hZC5lbmNfaXRlbV9rZXk7XG4gICAgICAgIC8qKiBGYWxsYmFjayB0byBpbml0aWFsaXppbmcgd2l0aCBub3cgZGF0ZSAqL1xuICAgICAgICB0aGlzLmNyZWF0ZWRfYXQgPSBuZXcgRGF0ZShyYXdQYXlsb2FkLmNyZWF0ZWRfYXQgfHwgbmV3IERhdGUoKSk7XG4gICAgICAgIC8qKiBGYWxsYmFjayB0byBpbml0aWFsaXppbmcgd2l0aCAwIGVwb2NoIGRhdGUgKi9cbiAgICAgICAgdGhpcy51cGRhdGVkX2F0ID0gbmV3IERhdGUocmF3UGF5bG9hZC51cGRhdGVkX2F0IHx8IG5ldyBEYXRlKDApKTtcbiAgICAgICAgdGhpcy5kaXJ0aWVkRGF0ZSA9IG5ldyBEYXRlKHJhd1BheWxvYWQuZGlydGllZERhdGUpO1xuICAgICAgICB0aGlzLmRpcnR5ID0gcmF3UGF5bG9hZC5kaXJ0eTtcbiAgICAgICAgdGhpcy5lcnJvckRlY3J5cHRpbmcgPSByYXdQYXlsb2FkLmVycm9yRGVjcnlwdGluZztcbiAgICAgICAgdGhpcy53YWl0aW5nRm9yS2V5ID0gcmF3UGF5bG9hZC53YWl0aW5nRm9yS2V5O1xuICAgICAgICB0aGlzLmVycm9yRGVjcnlwdGluZ1ZhbHVlQ2hhbmdlZCA9IHJhd1BheWxvYWQuZXJyb3JEZWNyeXB0aW5nVmFsdWVDaGFuZ2VkO1xuICAgICAgICB0aGlzLmxhc3RTeW5jQmVnYW4gPSByYXdQYXlsb2FkLmxhc3RTeW5jQmVnYW4gPyBuZXcgRGF0ZShyYXdQYXlsb2FkLmxhc3RTeW5jQmVnYW4pIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmxhc3RTeW5jRW5kID0gcmF3UGF5bG9hZC5sYXN0U3luY0VuZCA/IG5ldyBEYXRlKHJhd1BheWxvYWQubGFzdFN5bmNFbmQpIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmF1dGhfaGFzaCA9IHJhd1BheWxvYWQuYXV0aF9oYXNoO1xuICAgICAgICB0aGlzLmF1dGhfcGFyYW1zID0gcmF3UGF5bG9hZC5hdXRoX3BhcmFtcztcbiAgICAgICAgaWYgKGlzU3RyaW5nKHRoaXMuY29udGVudCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNvbnRlbnQuc3RhcnRzV2l0aChQcm90b2NvbFZlcnNpb24uVjAwMEJhc2U2NERlY3J5cHRlZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdCA9IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFzZTY0U3RyaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtYXQgPSBQYXlsb2FkRm9ybWF0LkVuY3J5cHRlZFN0cmluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc09iamVjdCh0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdCA9IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0ID0gUGF5bG9hZEZvcm1hdC5EZWxldGVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1N0cmluZyh0aGlzLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnZlcnNpb24gPSB0aGlzLmNvbnRlbnQuc3Vic3RyaW5nKDAsIFByb3RvY29sVmVyc2lvbi5WZXJzaW9uTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMudmVyc2lvbiA9IHRoaXMuY29udGVudC52ZXJzaW9uO1xuICAgICAgICB9XG4gICAgICAgIGRlZXBGcmVlemUodGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBnZW5lcmljIG9iamVjdCB3aXRoIGFsbCBwYXlsb2FkIGZpZWxkcyBleGNlcHQgYW55IHRoYXQgYXJlIG1ldGEtZGF0YVxuICAgICAqIHJlbGF0ZWQgKHN1Y2ggYXMgYGZpZWxkc2AsIGBkaXJ0aWVkRGF0ZWAsIGV0YykuIFwiRWplY3RlZFwiIG1lYW5zIGEgcGF5bG9hZCBmb3JcbiAgICAgKiBnZW5lcmljLCBub24tY29udGV4dHVhbCBjb25zdW1wdGlvbiwgc3VjaCBhcyBzYXZpbmcgdG8gYSBiYWNrdXAgZmlsZSBvciBzeW5jaW5nXG4gICAgICogd2l0aCBhIHNlcnZlci5cbiAgICAgKi9cbiAgICBlamVjdGVkKCkge1xuICAgICAgICBjb25zdCBvcHRpb25hbEZpZWxkcyA9IFtcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5MZWdhY3kwMDNBdXRoSGFzaCxcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5EZWxldGVkXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IG5vblJlcXVpcmVkRmllbGRzID0gW1xuICAgICAgICAgICAgUGF5bG9hZEZpZWxkLkRpcnRpZWREYXRlLFxuICAgICAgICAgICAgUGF5bG9hZEZpZWxkLkVycm9yRGVjcnlwdGluZyxcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5FcnJvckRlY3J5cHRpbmdDaGFuZ2VkLFxuICAgICAgICAgICAgUGF5bG9hZEZpZWxkLldhaXRpbmdGb3JLZXksXG4gICAgICAgICAgICBQYXlsb2FkRmllbGQuTGFzdFN5bmNCZWdhbixcbiAgICAgICAgICAgIFBheWxvYWRGaWVsZC5MYXN0U3luY0VuZFxuICAgICAgICBdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkcykge1xuICAgICAgICAgICAgaWYgKG5vblJlcXVpcmVkRmllbGRzLmluY2x1ZGVzKGZpZWxkKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzW2ZpZWxkXTtcbiAgICAgICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZCh2YWx1ZSkgJiYgb3B0aW9uYWxGaWVsZHMuaW5jbHVkZXMoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbZmllbGRdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgZ2V0IHNhZmVDb250ZW50KCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogRGVmaW5lZCB0byBhbGxvdyBzaW5ndWxhciBBUEkgd2l0aCBQYXlsb2FkYWJsZSB0eXBlIChQdXJlUGF5bG9hZCB8IFNOSXRlbSkgKi9cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVJlZmVyZW5jZXM7XG4gICAgfVxuICAgIGdldCBzYWZlUmVmZXJlbmNlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZUNvbnRlbnQucmVmZXJlbmNlcyB8fCBbXTtcbiAgICB9XG4gICAgZ2V0IGNvbnRlbnRPYmplY3QoKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm1hdCAhPT0gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXJlT2JqZWN0KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBhY2Nlc3Mgbm9uLW9iamVjdCBjb250ZW50IGFzIG9iamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQ7XG4gICAgfVxuICAgIGdldCBjb250ZW50U3RyaW5nKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtYXQgPT09IFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gYWNjZXNzIG5vbi1zdHJpbmcgY29udGVudCBhcyBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGEgcGF5bG9hZCBjYW4gYmUgZGlzY2FyZGVkIGFuZCByZW1vdmVkIGZyb20gc3RvcmFnZS5cbiAgICAgKiBUaGlzIHZhbHVlIGlzIHRydWUgaWYgYSBwYXlsb2FkIGlzIG1hcmtlZCBhcyBkZWxldGVkIGFuZCBub3QgZGlydHkuXG4gICAgICovXG4gICAgZ2V0IGRpc2NhcmRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWxldGVkICYmICF0aGlzLmRpcnR5O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7OztBQWpFQTtBQUFBO0FBQUE7QUF3RUE7QUFJQTtBQVFBO0FBYkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF1QkE7QUFDQTtBQWhHQTtBQUFBO0FBQUE7QUFrR0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFHQTtBQUFBO0FBQUE7QUEyR0E7QUFDQTtBQTVHQTtBQUFBO0FBQUE7QUE4R0E7QUFDQTtBQS9HQTtBQUFBO0FBQUE7QUFpSEE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBckhBO0FBQUE7QUFBQTtBQXVIQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7QUE1SEE7QUFBQTtBQUFBO0FBaUlBO0FBQ0E7QUFsSUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/pure_payload.ts\n')},"./lib/protocol/payloads/sources.ts": /*!******************************************!*\ !*** ./lib/protocol/payloads/sources.ts ***! \******************************************/ /*! exports provided: PayloadSource, isPayloadSourceRetrieved */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadSource", function() { return PayloadSource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPayloadSourceRetrieved", function() { return isPayloadSourceRetrieved; });\nvar PayloadSource;\n\n(function (PayloadSource) {\n PayloadSource[PayloadSource["RemoteRetrieved"] = 1] = "RemoteRetrieved";\n PayloadSource[PayloadSource["RemoteSaved"] = 2] = "RemoteSaved";\n /* The payload returned by offline sync operation */\n\n PayloadSource[PayloadSource["LocalSaved"] = 3] = "LocalSaved";\n PayloadSource[PayloadSource["LocalRetrieved"] = 4] = "LocalRetrieved";\n /* Payload when a client modifies item property then maps it to update UI.\n This also indicates that the item was dirtied*/\n\n PayloadSource[PayloadSource["LocalChanged"] = 5] = "LocalChanged";\n /** Payloads retrieved from an external\n extension/component */\n\n PayloadSource[PayloadSource["ComponentRetrieved"] = 6] = "ComponentRetrieved";\n /** When a component is installed by the desktop\n and some of its values change */\n\n PayloadSource[PayloadSource["DesktopInstalled"] = 7] = "DesktopInstalled";\n /** aciton-based Extensions like note history */\n\n PayloadSource[PayloadSource["RemoteActionRetrieved"] = 8] = "RemoteActionRetrieved";\n PayloadSource[PayloadSource["FileImport"] = 9] = "FileImport";\n PayloadSource[PayloadSource["RemoteConflict"] = 10] = "RemoteConflict";\n PayloadSource[PayloadSource["ImportConflict"] = 11] = "ImportConflict";\n /** Payloads that are saved or saving in the\n current sync request */\n\n PayloadSource[PayloadSource["SavedOrSaving"] = 12] = "SavedOrSaving";\n /** Payloads that have been decrypted for the convenience\n of consumers who can only work with decrypted formats. The\n decrypted payloads exist in transient, ephemeral space, and\n are not used in anyway. */\n\n PayloadSource[PayloadSource["DecryptedTransient"] = 13] = "DecryptedTransient";\n PayloadSource[PayloadSource["ConflictUuid"] = 14] = "ConflictUuid";\n PayloadSource[PayloadSource["ConflictData"] = 15] = "ConflictData";\n PayloadSource[PayloadSource["SessionHistory"] = 16] = "SessionHistory";\n /** Payloads with a source of Constructor means that the payload was created\n * in isolated space by the caller, and does not yet have any app-related affiliation. */\n\n PayloadSource[PayloadSource["Constructor"] = 17] = "Constructor";\n /** Payloads received from an external component with the intention of creating a new item */\n\n PayloadSource[PayloadSource["ComponentCreated"] = 18] = "ComponentCreated";\n /** When the payloads are about to sync, they are emitted by the sync service with updated\n * values of lastSyncBegan. Payloads emitted from this source indicate that these payloads\n * have been saved to disk, and are about to be synced */\n\n PayloadSource[PayloadSource["PreSyncSave"] = 19] = "PreSyncSave";\n})(PayloadSource || (PayloadSource = {}));\n\n;\nfunction isPayloadSourceRetrieved(source) {\n return [PayloadSource.RemoteRetrieved, PayloadSource.ComponentRetrieved, PayloadSource.RemoteActionRetrieved].includes(source);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9wcm90b2NvbC9wYXlsb2Fkcy9zb3VyY2VzLnRzP2U5MTciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHZhciBQYXlsb2FkU291cmNlO1xuKGZ1bmN0aW9uIChQYXlsb2FkU291cmNlKSB7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiUmVtb3RlUmV0cmlldmVkXCJdID0gMV0gPSBcIlJlbW90ZVJldHJpZXZlZFwiO1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIlJlbW90ZVNhdmVkXCJdID0gMl0gPSBcIlJlbW90ZVNhdmVkXCI7XG4gICAgLyogVGhlIHBheWxvYWQgcmV0dXJuZWQgYnkgb2ZmbGluZSBzeW5jIG9wZXJhdGlvbiAqL1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkxvY2FsU2F2ZWRcIl0gPSAzXSA9IFwiTG9jYWxTYXZlZFwiO1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkxvY2FsUmV0cmlldmVkXCJdID0gNF0gPSBcIkxvY2FsUmV0cmlldmVkXCI7XG4gICAgLyogUGF5bG9hZCB3aGVuIGEgY2xpZW50IG1vZGlmaWVzIGl0ZW0gcHJvcGVydHkgdGhlbiBtYXBzIGl0IHRvIHVwZGF0ZSBVSS5cbiAgICBUaGlzIGFsc28gaW5kaWNhdGVzIHRoYXQgdGhlIGl0ZW0gd2FzIGRpcnRpZWQqL1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkxvY2FsQ2hhbmdlZFwiXSA9IDVdID0gXCJMb2NhbENoYW5nZWRcIjtcbiAgICAvKiogUGF5bG9hZHMgcmV0cmlldmVkIGZyb20gYW4gZXh0ZXJuYWxcbiAgICAgZXh0ZW5zaW9uL2NvbXBvbmVudCAqL1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkNvbXBvbmVudFJldHJpZXZlZFwiXSA9IDZdID0gXCJDb21wb25lbnRSZXRyaWV2ZWRcIjtcbiAgICAvKiogV2hlbiBhIGNvbXBvbmVudCBpcyBpbnN0YWxsZWQgYnkgdGhlIGRlc2t0b3BcbiAgICAgYW5kIHNvbWUgb2YgaXRzIHZhbHVlcyBjaGFuZ2UgKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJEZXNrdG9wSW5zdGFsbGVkXCJdID0gN10gPSBcIkRlc2t0b3BJbnN0YWxsZWRcIjtcbiAgICAvKiogYWNpdG9uLWJhc2VkIEV4dGVuc2lvbnMgbGlrZSBub3RlIGhpc3RvcnkgKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJSZW1vdGVBY3Rpb25SZXRyaWV2ZWRcIl0gPSA4XSA9IFwiUmVtb3RlQWN0aW9uUmV0cmlldmVkXCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiRmlsZUltcG9ydFwiXSA9IDldID0gXCJGaWxlSW1wb3J0XCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiUmVtb3RlQ29uZmxpY3RcIl0gPSAxMF0gPSBcIlJlbW90ZUNvbmZsaWN0XCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiSW1wb3J0Q29uZmxpY3RcIl0gPSAxMV0gPSBcIkltcG9ydENvbmZsaWN0XCI7XG4gICAgLyoqIFBheWxvYWRzIHRoYXQgYXJlIHNhdmVkIG9yIHNhdmluZyBpbiB0aGVcbiAgICAgY3VycmVudCBzeW5jIHJlcXVlc3QgKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJTYXZlZE9yU2F2aW5nXCJdID0gMTJdID0gXCJTYXZlZE9yU2F2aW5nXCI7XG4gICAgLyoqIFBheWxvYWRzIHRoYXQgaGF2ZSBiZWVuIGRlY3J5cHRlZCBmb3IgdGhlIGNvbnZlbmllbmNlXG4gICAgIG9mIGNvbnN1bWVycyB3aG8gY2FuIG9ubHkgd29yayB3aXRoIGRlY3J5cHRlZCBmb3JtYXRzLiBUaGVcbiAgICAgZGVjcnlwdGVkIHBheWxvYWRzIGV4aXN0IGluIHRyYW5zaWVudCwgZXBoZW1lcmFsIHNwYWNlLCBhbmRcbiAgICAgYXJlIG5vdCB1c2VkIGluIGFueXdheS4gKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJEZWNyeXB0ZWRUcmFuc2llbnRcIl0gPSAxM10gPSBcIkRlY3J5cHRlZFRyYW5zaWVudFwiO1xuICAgIFBheWxvYWRTb3VyY2VbUGF5bG9hZFNvdXJjZVtcIkNvbmZsaWN0VXVpZFwiXSA9IDE0XSA9IFwiQ29uZmxpY3RVdWlkXCI7XG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiQ29uZmxpY3REYXRhXCJdID0gMTVdID0gXCJDb25mbGljdERhdGFcIjtcbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJTZXNzaW9uSGlzdG9yeVwiXSA9IDE2XSA9IFwiU2Vzc2lvbkhpc3RvcnlcIjtcbiAgICAvKiogUGF5bG9hZHMgd2l0aCBhIHNvdXJjZSBvZiBDb25zdHJ1Y3RvciBtZWFucyB0aGF0IHRoZSBwYXlsb2FkIHdhcyBjcmVhdGVkXG4gICAgICogaW4gaXNvbGF0ZWQgc3BhY2UgYnkgdGhlIGNhbGxlciwgYW5kIGRvZXMgbm90IHlldCBoYXZlIGFueSBhcHAtcmVsYXRlZCBhZmZpbGlhdGlvbi4gKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJDb25zdHJ1Y3RvclwiXSA9IDE3XSA9IFwiQ29uc3RydWN0b3JcIjtcbiAgICAvKiogUGF5bG9hZHMgcmVjZWl2ZWQgZnJvbSBhbiBleHRlcm5hbCBjb21wb25lbnQgd2l0aCB0aGUgaW50ZW50aW9uIG9mIGNyZWF0aW5nIGEgbmV3IGl0ZW0gKi9cbiAgICBQYXlsb2FkU291cmNlW1BheWxvYWRTb3VyY2VbXCJDb21wb25lbnRDcmVhdGVkXCJdID0gMThdID0gXCJDb21wb25lbnRDcmVhdGVkXCI7XG4gICAgLyoqIFdoZW4gdGhlIHBheWxvYWRzIGFyZSBhYm91dCB0byBzeW5jLCB0aGV5IGFyZSBlbWl0dGVkIGJ5IHRoZSBzeW5jIHNlcnZpY2Ugd2l0aCB1cGRhdGVkXG4gICAgICogdmFsdWVzIG9mIGxhc3RTeW5jQmVnYW4uIFBheWxvYWRzIGVtaXR0ZWQgZnJvbSB0aGlzIHNvdXJjZSBpbmRpY2F0ZSB0aGF0IHRoZXNlIHBheWxvYWRzXG4gICAgICogaGF2ZSBiZWVuIHNhdmVkIHRvIGRpc2ssIGFuZCBhcmUgYWJvdXQgdG8gYmUgc3luY2VkICovXG4gICAgUGF5bG9hZFNvdXJjZVtQYXlsb2FkU291cmNlW1wiUHJlU3luY1NhdmVcIl0gPSAxOV0gPSBcIlByZVN5bmNTYXZlXCI7XG59KShQYXlsb2FkU291cmNlIHx8IChQYXlsb2FkU291cmNlID0ge30pKTtcbjtcbmV4cG9ydCBmdW5jdGlvbiBpc1BheWxvYWRTb3VyY2VSZXRyaWV2ZWQoc291cmNlKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQsXG4gICAgICAgIFBheWxvYWRTb3VyY2UuQ29tcG9uZW50UmV0cmlldmVkLFxuICAgICAgICBQYXlsb2FkU291cmNlLlJlbW90ZUFjdGlvblJldHJpZXZlZFxuICAgIF0uaW5jbHVkZXMoc291cmNlKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7OztBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/protocol/payloads/sources.ts\n')},"./lib/protocol/root_key.ts": /*!**********************************!*\ !*** ./lib/protocol/root_key.ts ***! \**********************************/ /*! exports provided: SNRootKey */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNRootKey", function() { return SNRootKey; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n/**\n * A root key is a local only construct that houses the key used for the encryption\n * and decryption of items keys. A root key extends SNItem for local convenience, but is\n * not part of the syncing or storage ecosystem—root keys are managed independently.\n */\n\nvar SNRootKey = /*#__PURE__*/function (_SNItem) {\n _inherits(SNRootKey, _SNItem);\n\n function SNRootKey() {\n _classCallCheck(this, SNRootKey);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNRootKey).apply(this, arguments));\n }\n\n _createClass(SNRootKey, [{\n key: "compare",\n\n /**\n * Compares two keys for equality\n */\n value: function compare(otherKey) {\n if (this.version !== otherKey.version) {\n return false;\n }\n\n var hasServerPassword = this.serverPassword && otherKey.serverPassword;\n return this.masterKey === otherKey.masterKey && (!hasServerPassword || this.serverPassword === otherKey.serverPassword);\n }\n /**\n * @returns Object containg key/values that should be extracted from key for local saving.\n */\n\n }, {\n key: "getPersistableValue",\n value: function getPersistableValue() {\n var values = {\n version: this.version\n };\n\n if (this.masterKey) {\n values.masterKey = this.masterKey;\n }\n\n if (this.dataAuthenticationKey) {\n values.dataAuthenticationKey = this.dataAuthenticationKey;\n }\n\n return values;\n }\n }, {\n key: "version",\n get: function get() {\n if (!this.payload.safeContent.version) {\n throw \'Attempting to create key without version.\';\n }\n\n return this.payload.safeContent.version;\n }\n }, {\n key: "isRootKey",\n get: function get() {\n return true;\n }\n /**\n * When the root key is used to encrypt items, we use the masterKey directly.\n */\n\n }, {\n key: "itemsKey",\n get: function get() {\n return this.masterKey;\n }\n }, {\n key: "masterKey",\n get: function get() {\n return this.payload.safeContent.masterKey;\n }\n }, {\n key: "serverPassword",\n get: function get() {\n return this.payload.safeContent.serverPassword;\n }\n /** 003 and below only. */\n\n }, {\n key: "dataAuthenticationKey",\n get: function get() {\n return this.payload.safeContent.dataAuthenticationKey;\n }\n }], [{\n key: "Create",\n value: function () {\n var _Create = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(content, uuid) {\n var payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (uuid) {\n _context.next = 4;\n break;\n }\n\n _context.next = 3;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__["Uuid"].GenerateUuid();\n\n case 3:\n uuid = _context.sent;\n\n case 4:\n if (!content.version) {\n if (content.dataAuthenticationKey) {\n /**\n * If there\'s no version stored, it must be either 001 or 002.\n * If there\'s a dataAuthenticationKey, it has to be 002. Otherwise it\'s 001.\n */\n content.version = _Protocol_versions__WEBPACK_IMPORTED_MODULE_5__["ProtocolVersion"].V002;\n } else {\n content.version = _Protocol_versions__WEBPACK_IMPORTED_MODULE_5__["ProtocolVersion"].V001;\n }\n }\n\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_2__["CreateMaxPayloadFromAnyObject"])({\n uuid: uuid,\n content_type: _Models_content_types__WEBPACK_IMPORTED_MODULE_4__["ContentType"].RootKey,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])(content)\n });\n return _context.abrupt("return", new SNRootKey(payload));\n\n case 7:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function Create(_x, _x2) {\n return _Create.apply(this, arguments);\n }\n\n return Create;\n }()\n }]);\n\n return SNRootKey;\n}(_Models_core_item__WEBPACK_IMPORTED_MODULE_3__["SNItem"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvcm9vdF9rZXkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvcm9vdF9rZXkudHM/OGE1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxsSXRlbUNvbnRlbnQgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgU05JdGVtIH0gZnJvbSAnQE1vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgUHJvdG9jb2xWZXJzaW9uIH0gZnJvbSAnQFByb3RvY29sL3ZlcnNpb25zJztcbmltcG9ydCB7IFV1aWQgfSBmcm9tICdATGliL3V1aWQnO1xuLyoqXG4gKiBBIHJvb3Qga2V5IGlzIGEgbG9jYWwgb25seSBjb25zdHJ1Y3QgdGhhdCBob3VzZXMgdGhlIGtleSB1c2VkIGZvciB0aGUgZW5jcnlwdGlvblxuICogYW5kIGRlY3J5cHRpb24gb2YgaXRlbXMga2V5cy4gQSByb290IGtleSBleHRlbmRzIFNOSXRlbSBmb3IgbG9jYWwgY29udmVuaWVuY2UsIGJ1dCBpc1xuICogbm90IHBhcnQgb2YgdGhlIHN5bmNpbmcgb3Igc3RvcmFnZSBlY29zeXN0ZW3igJRyb290IGtleXMgYXJlIG1hbmFnZWQgaW5kZXBlbmRlbnRseS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOUm9vdEtleSBleHRlbmRzIFNOSXRlbSB7XG4gICAgc3RhdGljIGFzeW5jIENyZWF0ZShjb250ZW50LCB1dWlkKSB7XG4gICAgICAgIGlmICghdXVpZCkge1xuICAgICAgICAgICAgdXVpZCA9IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjb250ZW50LnZlcnNpb24pIHtcbiAgICAgICAgICAgIGlmIChjb250ZW50LmRhdGFBdXRoZW50aWNhdGlvbktleSkge1xuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIElmIHRoZXJlJ3Mgbm8gdmVyc2lvbiBzdG9yZWQsIGl0IG11c3QgYmUgZWl0aGVyIDAwMSBvciAwMDIuXG4gICAgICAgICAgICAgICAgICogSWYgdGhlcmUncyBhIGRhdGFBdXRoZW50aWNhdGlvbktleSwgaXQgaGFzIHRvIGJlIDAwMi4gT3RoZXJ3aXNlIGl0J3MgMDAxLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGNvbnRlbnQudmVyc2lvbiA9IFByb3RvY29sVmVyc2lvbi5WMDAyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGVudC52ZXJzaW9uID0gUHJvdG9jb2xWZXJzaW9uLlYwMDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgIHV1aWQ6IHV1aWQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IENvbnRlbnRUeXBlLlJvb3RLZXksXG4gICAgICAgICAgICBjb250ZW50OiBGaWxsSXRlbUNvbnRlbnQoY29udGVudClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBuZXcgU05Sb290S2V5KHBheWxvYWQpO1xuICAgIH1cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQudmVyc2lvbikge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gY3JlYXRlIGtleSB3aXRob3V0IHZlcnNpb24uJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnZlcnNpb247XG4gICAgfVxuICAgIGdldCBpc1Jvb3RLZXkoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIHRoZSByb290IGtleSBpcyB1c2VkIHRvIGVuY3J5cHQgaXRlbXMsIHdlIHVzZSB0aGUgbWFzdGVyS2V5IGRpcmVjdGx5LlxuICAgICAqL1xuICAgIGdldCBpdGVtc0tleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzdGVyS2V5O1xuICAgIH1cbiAgICBnZXQgbWFzdGVyS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50Lm1hc3RlcktleTtcbiAgICB9XG4gICAgZ2V0IHNlcnZlclBhc3N3b3JkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnNhZmVDb250ZW50LnNlcnZlclBhc3N3b3JkO1xuICAgIH1cbiAgICAvKiogMDAzIGFuZCBiZWxvdyBvbmx5LiAqL1xuICAgIGdldCBkYXRhQXV0aGVudGljYXRpb25LZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWQuc2FmZUNvbnRlbnQuZGF0YUF1dGhlbnRpY2F0aW9uS2V5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wYXJlcyB0d28ga2V5cyBmb3IgZXF1YWxpdHlcbiAgICAgKi9cbiAgICBjb21wYXJlKG90aGVyS2V5KSB7XG4gICAgICAgIGlmICh0aGlzLnZlcnNpb24gIT09IG90aGVyS2V5LnZlcnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoYXNTZXJ2ZXJQYXNzd29yZCA9IHRoaXMuc2VydmVyUGFzc3dvcmQgJiYgb3RoZXJLZXkuc2VydmVyUGFzc3dvcmQ7XG4gICAgICAgIHJldHVybiAodGhpcy5tYXN0ZXJLZXkgPT09IG90aGVyS2V5Lm1hc3RlcktleSAmJlxuICAgICAgICAgICAgKCFoYXNTZXJ2ZXJQYXNzd29yZCB8fCB0aGlzLnNlcnZlclBhc3N3b3JkID09PSBvdGhlcktleS5zZXJ2ZXJQYXNzd29yZCkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmcga2V5L3ZhbHVlcyB0aGF0IHNob3VsZCBiZSBleHRyYWN0ZWQgZnJvbSBrZXkgZm9yIGxvY2FsIHNhdmluZy5cbiAgICAgKi9cbiAgICBnZXRQZXJzaXN0YWJsZVZhbHVlKCkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSB7XG4gICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLnZlcnNpb25cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMubWFzdGVyS2V5KSB7XG4gICAgICAgICAgICB2YWx1ZXMubWFzdGVyS2V5ID0gdGhpcy5tYXN0ZXJLZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YUF1dGhlbnRpY2F0aW9uS2V5KSB7XG4gICAgICAgICAgICB2YWx1ZXMuZGF0YUF1dGhlbnRpY2F0aW9uS2V5ID0gdGhpcy5kYXRhQXV0aGVudGljYXRpb25LZXk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBZ0RBOzs7QUFqREE7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTs7OztBQTVEQTtBQUFBO0FBQUE7QUFnRUE7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTFFQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBN0JBO0FBQUE7QUFBQTtBQStCQTtBQUNBO0FBQ0E7Ozs7QUFqQ0E7QUFBQTtBQUFBO0FBcUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUFBO0FBMkNBO0FBQ0E7QUFDQTtBQUNBO0FBOUNBO0FBQUE7QUFBQTtBQStDQTtBQUNBO0FBaERBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFKQTtBQUtBO0FBQ0E7QUFDQTs7OztBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFqQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/protocol/root_key.ts\n')},"./lib/protocol/versions.ts": /*!**********************************!*\ !*** ./lib/protocol/versions.ts ***! \**********************************/ /*! exports provided: ProtocolVersion, compareVersions */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProtocolVersion", function() { return ProtocolVersion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareVersions", function() { return compareVersions; });\nvar ProtocolVersion;\n\n(function (ProtocolVersion) {\n ProtocolVersion["V000Base64Decrypted"] = "000";\n ProtocolVersion["V001"] = "001";\n ProtocolVersion["V002"] = "002";\n ProtocolVersion["V003"] = "003";\n ProtocolVersion["V004"] = "004";\n ProtocolVersion[ProtocolVersion["VersionLength"] = 3] = "VersionLength";\n})(ProtocolVersion || (ProtocolVersion = {}));\n\n;\n/**\n * -1 if a < b\n * 0 if a == b\n * 1 is a > b\n */\n\nfunction compareVersions(a, b) {\n var aNum = Number(a);\n var bNum = Number(b);\n return aNum - bNum;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvcHJvdG9jb2wvdmVyc2lvbnMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvcHJvdG9jb2wvdmVyc2lvbnMudHM/NmNlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFByb3RvY29sVmVyc2lvbjtcbihmdW5jdGlvbiAoUHJvdG9jb2xWZXJzaW9uKSB7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwMEJhc2U2NERlY3J5cHRlZFwiXSA9IFwiMDAwXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwMVwiXSA9IFwiMDAxXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwMlwiXSA9IFwiMDAyXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwM1wiXSA9IFwiMDAzXCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1wiVjAwNFwiXSA9IFwiMDA0XCI7XG4gICAgUHJvdG9jb2xWZXJzaW9uW1Byb3RvY29sVmVyc2lvbltcIlZlcnNpb25MZW5ndGhcIl0gPSAzXSA9IFwiVmVyc2lvbkxlbmd0aFwiO1xufSkoUHJvdG9jb2xWZXJzaW9uIHx8IChQcm90b2NvbFZlcnNpb24gPSB7fSkpO1xuO1xuLyoqXG4gKiAgLTEgaWYgYSA8IGJcbiAqICAwIGlmIGEgPT0gYlxuICogIDEgaXMgYSA+IGJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBhcmVWZXJzaW9ucyhhLCBiKSB7XG4gICAgY29uc3QgYU51bSA9IE51bWJlcihhKTtcbiAgICBjb25zdCBiTnVtID0gTnVtYmVyKGIpO1xuICAgIHJldHVybiBhTnVtIC0gYk51bTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/protocol/versions.ts\n')},"./lib/services/actions_service.ts": /*!*****************************************!*\ !*** ./lib/services/actions_service.ts ***! \*****************************************/ /*! exports provided: SNActionsService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNActionsService", function() { return SNActionsService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_app_action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../models/app/action */ "./lib/models/app/action.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n/**\n * The Actions Service allows clients to interact with action-based extensions.\n * Action-based extensions are mostly RESTful actions that can push a local value or\n * retrieve a remote value and act on it accordingly.\n * There are 4 action types:\n * `get`: performs a GET request on an endpoint to retrieve an item value, and merges the\n * value onto the local item value. For example, you can GET an item\'s older revision\n * value and replace the current value with the revision.\n * `render`: performs a GET request, and displays the result in the UI. This action does not\n * affect data unless action is taken explicitely in the UI after the data is presented.\n * `show`: opens the action\'s URL in a browser.\n * `post`: sends an item\'s data to a remote service. This is used for example by Listed\n * to allow publishing a note to a user\'s blog.\n */\n\nvar SNActionsService = /*#__PURE__*/function (_PureService) {\n _inherits(SNActionsService, _PureService);\n\n function SNActionsService(itemManager, alertService, deviceInterface, httpService, modelManager, protocolService, syncService) {\n var _this;\n\n _classCallCheck(this, SNActionsService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNActionsService).call(this));\n _this.previousPasswords = [];\n _this.itemManager = itemManager;\n _this.alertService = alertService;\n _this.deviceInterface = deviceInterface;\n _this.httpService = httpService;\n _this.modelManager = modelManager;\n _this.protocolService = protocolService;\n _this.syncService = syncService;\n _this.previousPasswords = [];\n return _this;\n }\n /** @override */\n\n\n _createClass(SNActionsService, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.alertService = undefined;\n this.deviceInterface = undefined;\n this.httpService = undefined;\n this.modelManager = undefined;\n this.protocolService = undefined;\n this.syncService = undefined;\n this.previousPasswords.length = 0;\n\n _get(_getPrototypeOf(SNActionsService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "getExtensions",\n value: function getExtensions() {\n return this.itemManager.nonErroredItemsForContentType(_models_content_types__WEBPACK_IMPORTED_MODULE_2__["ContentType"].ActionsExtension);\n }\n }, {\n key: "extensionsInContextOfItem",\n value: function extensionsInContextOfItem(item) {\n return this.getExtensions().filter(function (ext) {\n return ext.supported_types.includes(item.content_type) || ext.actionsWithContextForItem(item).length > 0;\n });\n }\n /**\n * Loads an extension in the context of a certain item.\n * The server then has the chance to respond with actions that are\n * relevant just to this item. The response extension is not saved,\n * just displayed as a one-time thing.\n */\n\n }, {\n key: "loadExtensionInContextOfItem",\n value: function () {\n var _loadExtensionInContextOfItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(extension, item) {\n var _this2 = this;\n\n var params;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n params = {\n content_type: item.content_type,\n item_uuid: item.uuid\n };\n return _context.abrupt("return", this.httpService.getAbsolute(extension.url, params).then(function (response) {\n var description = response.description || extension.description;\n var supported_types = response.supported_types || extension.supported_types;\n var actions = response.actions ? response.actions.map(function (action) {\n return new _models_app_action__WEBPACK_IMPORTED_MODULE_1__["Action"](action);\n }) : [];\n\n _this2.itemManager.changeActionsExtension(extension.uuid, function (mutator) {\n mutator.description = description;\n mutator.supported_types = supported_types;\n mutator.actions = actions;\n });\n\n return extension;\n }).catch(function (response) {\n console.error(\'Error loading extension\', response);\n return null;\n }));\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function loadExtensionInContextOfItem(_x, _x2) {\n return _loadExtensionInContextOfItem.apply(this, arguments);\n }\n\n return loadExtensionInContextOfItem;\n }()\n }, {\n key: "runAction",\n value: function () {\n var _runAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(action, item, passwordRequestHandler) {\n var result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n action.running = true;\n _context2.t0 = action.verb;\n _context2.next = _context2.t0 === \'get\' ? 4 : _context2.t0 === \'render\' ? 8 : _context2.t0 === \'show\' ? 12 : _context2.t0 === \'post\' ? 16 : 20;\n break;\n\n case 4:\n _context2.next = 6;\n return this.handleGetAction(action, passwordRequestHandler);\n\n case 6:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 8:\n _context2.next = 10;\n return this.handleRenderAction(action, passwordRequestHandler);\n\n case 10:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 12:\n _context2.next = 14;\n return this.handleShowAction(action);\n\n case 14:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 16:\n _context2.next = 18;\n return this.handlePostAction(action, item);\n\n case 18:\n result = _context2.sent;\n return _context2.abrupt("break", 21);\n\n case 20:\n return _context2.abrupt("break", 21);\n\n case 21:\n action.lastExecuted = new Date();\n action.running = false;\n return _context2.abrupt("return", result);\n\n case 24:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function runAction(_x3, _x4, _x5) {\n return _runAction.apply(this, arguments);\n }\n\n return runAction;\n }()\n }, {\n key: "handleGetAction",\n value: function () {\n var _handleGetAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(action, passwordRequestHandler) {\n var _this3 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt("return", new Promise(function (resolve) {\n _this3.alertService.confirm("Are you sure you want to replace the current note contents with this action\'s results?", undefined, undefined, undefined, function () {\n _this3.runConfirmedGetAction(action, passwordRequestHandler).then(function (response) {\n resolve(response);\n });\n });\n }));\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function handleGetAction(_x6, _x7) {\n return _handleGetAction.apply(this, arguments);\n }\n\n return handleGetAction;\n }()\n }, {\n key: "runConfirmedGetAction",\n value: function () {\n var _runConfirmedGetAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(action, passwordRequestHandler) {\n var _this4 = this;\n\n var response, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.httpService.getAbsolute(action.url).catch(function (response) {\n var error = response && response.error || {\n message: \'An issue occurred while processing this action. Please try again.\'\n };\n\n _this4.alertService.alert(error.message);\n\n action.error = true;\n return {\n error: error\n };\n });\n\n case 2:\n response = _context4.sent;\n\n if (!response.error) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt("return", {\n response: response\n });\n\n case 5:\n action.error = false;\n _context4.next = 8;\n return this.payloadByDecryptingResponse(response, passwordRequestHandler);\n\n case 8:\n payload = _context4.sent;\n _context4.next = 11;\n return this.modelManager.emitPayload(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CopyPayload"])(payload, {\n dirty: true,\n dirtiedDate: new Date()\n }), _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].RemoteActionRetrieved);\n\n case 11:\n this.syncService.sync();\n return _context4.abrupt("return", {\n response: response,\n item: response.item\n });\n\n case 13:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function runConfirmedGetAction(_x8, _x9) {\n return _runConfirmedGetAction.apply(this, arguments);\n }\n\n return runConfirmedGetAction;\n }()\n }, {\n key: "handleRenderAction",\n value: function () {\n var _handleRenderAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(action, passwordRequestHandler) {\n var _this5 = this;\n\n var response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.httpService.getAbsolute(action.url).then( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(response) {\n var payload, item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n action.error = false;\n _context5.next = 3;\n return _this5.payloadByDecryptingResponse(response, passwordRequestHandler);\n\n case 3:\n payload = _context5.sent;\n\n if (!payload) {\n _context5.next = 7;\n break;\n }\n\n item = _this5.itemManager.createItem(payload.content_type, payload.contentObject);\n return _context5.abrupt("return", {\n response: response,\n item: item\n });\n\n case 7:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n return function (_x12) {\n return _ref.apply(this, arguments);\n };\n }()).catch(function (response) {\n var error = response && response.error || {\n message: \'An issue occurred while processing this action. Please try again.\'\n };\n\n _this5.alertService.alert(error.message);\n\n action.error = true;\n return {\n error: error\n };\n });\n\n case 2:\n response = _context6.sent;\n return _context6.abrupt("return", {\n response: response\n });\n\n case 4:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function handleRenderAction(_x10, _x11) {\n return _handleRenderAction.apply(this, arguments);\n }\n\n return handleRenderAction;\n }()\n }, {\n key: "payloadByDecryptingResponse",\n value: function () {\n var _payloadByDecryptingResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(response, passwordRequestHandler, key) {\n var payload, decryptedPayload, triedPasswords, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, passwordCandidate, _key, nestedResponse, password;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_6__["CreateMaxPayloadFromAnyObject"])(response.item);\n _context7.next = 3;\n return this.protocolService.payloadByDecryptingPayload(payload, key);\n\n case 3:\n decryptedPayload = _context7.sent;\n\n if (decryptedPayload.errorDecrypting) {\n _context7.next = 6;\n break;\n }\n\n return _context7.abrupt("return", decryptedPayload);\n\n case 6:\n if (response.auth_params) {\n _context7.next = 9;\n break;\n }\n\n /**\n * In some cases revisions were missing auth params.\n * Instruct the user to email us to get this remedied.\n */\n this.alertService.alert("We were unable to decrypt this revision using your current keys, \\n and this revision is missing metadata that would allow us to try different \\n keys to decrypt it. This can likely be fixed with some manual intervention. \\n Please email hello@standardnotes.org for assistance.");\n return _context7.abrupt("return", undefined);\n\n case 9:\n /* Try previous passwords */\n triedPasswords = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context7.prev = 13;\n _iterator = this.previousPasswords[Symbol.iterator]();\n\n case 15:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context7.next = 33;\n break;\n }\n\n passwordCandidate = _step.value;\n\n if (!triedPasswords.includes(passwordCandidate)) {\n _context7.next = 19;\n break;\n }\n\n return _context7.abrupt("continue", 30);\n\n case 19:\n triedPasswords.push(passwordCandidate);\n _context7.next = 22;\n return this.protocolService.computeRootKey(passwordCandidate, response.auth_params);\n\n case 22:\n _key = _context7.sent;\n\n if (_key) {\n _context7.next = 25;\n break;\n }\n\n return _context7.abrupt("continue", 30);\n\n case 25:\n _context7.next = 27;\n return this.payloadByDecryptingResponse(response, passwordRequestHandler, _key);\n\n case 27:\n nestedResponse = _context7.sent;\n\n if (!nestedResponse) {\n _context7.next = 30;\n break;\n }\n\n return _context7.abrupt("return", nestedResponse);\n\n case 30:\n _iteratorNormalCompletion = true;\n _context7.next = 15;\n break;\n\n case 33:\n _context7.next = 39;\n break;\n\n case 35:\n _context7.prev = 35;\n _context7.t0 = _context7["catch"](13);\n _didIteratorError = true;\n _iteratorError = _context7.t0;\n\n case 39:\n _context7.prev = 39;\n _context7.prev = 40;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 42:\n _context7.prev = 42;\n\n if (!_didIteratorError) {\n _context7.next = 45;\n break;\n }\n\n throw _iteratorError;\n\n case 45:\n return _context7.finish(42);\n\n case 46:\n return _context7.finish(39);\n\n case 47:\n _context7.next = 49;\n return passwordRequestHandler();\n\n case 49:\n password = _context7.sent;\n this.previousPasswords.push(password);\n return _context7.abrupt("return", this.payloadByDecryptingResponse(response, passwordRequestHandler, key));\n\n case 52:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[13, 35, 39, 47], [40,, 42, 46]]);\n }));\n\n function payloadByDecryptingResponse(_x13, _x14, _x15) {\n return _payloadByDecryptingResponse.apply(this, arguments);\n }\n\n return payloadByDecryptingResponse;\n }()\n }, {\n key: "handlePostAction",\n value: function () {\n var _handlePostAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(action, item) {\n var _this6 = this;\n\n var decrypted, itemParams, params;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n decrypted = action.access_type === \'decrypted\';\n _context8.next = 3;\n return this.outgoingPayloadForItem(item, decrypted);\n\n case 3:\n itemParams = _context8.sent;\n params = {\n items: [itemParams]\n };\n return _context8.abrupt("return", this.httpService.postAbsolute(action.url, params).then(function (response) {\n action.error = false;\n return {\n response: response\n };\n }).catch(function (response) {\n action.error = true;\n console.error(\'Action error response:\', response);\n\n _this6.alertService.alert(\'An issue occurred while processing this action. Please try again.\');\n\n return {\n response: response\n };\n }));\n\n case 6:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function handlePostAction(_x16, _x17) {\n return _handlePostAction.apply(this, arguments);\n }\n\n return handlePostAction;\n }()\n }, {\n key: "handleShowAction",\n value: function () {\n var _handleShowAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(action) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n this.deviceInterface.openUrl(action.url);\n return _context9.abrupt("return", {\n response: undefined\n });\n\n case 2:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function handleShowAction(_x18) {\n return _handleShowAction.apply(this, arguments);\n }\n\n return handleShowAction;\n }()\n }, {\n key: "outgoingPayloadForItem",\n value: function () {\n var _outgoingPayloadForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(item) {\n var decrypted,\n intent,\n encrypted,\n _args10 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n decrypted = _args10.length > 1 && _args10[1] !== undefined ? _args10[1] : false;\n intent = decrypted ? _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].FileDecrypted : _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].FileEncrypted;\n _context10.next = 4;\n return this.protocolService.payloadByEncryptingPayload(item.payloadRepresentation(), intent);\n\n case 4:\n encrypted = _context10.sent;\n return _context10.abrupt("return", encrypted.ejected());\n\n case 6:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function outgoingPayloadForItem(_x19) {\n return _outgoingPayloadForItem.apply(this, arguments);\n }\n\n return outgoingPayloadForItem;\n }()\n }]);\n\n return SNActionsService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYWN0aW9uc19zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2FjdGlvbnNfc2VydmljZS50cz8wNDJmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vLi4vbW9kZWxzL2FwcC9hY3Rpb24nO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICcuLy4uL21vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBFbmNyeXB0aW9uSW50ZW50IH0gZnJvbSAnQFByb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBDb3B5UGF5bG9hZCwgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbi8qKlxuICogVGhlIEFjdGlvbnMgU2VydmljZSBhbGxvd3MgY2xpZW50cyB0byBpbnRlcmFjdCB3aXRoIGFjdGlvbi1iYXNlZCBleHRlbnNpb25zLlxuICogQWN0aW9uLWJhc2VkIGV4dGVuc2lvbnMgYXJlIG1vc3RseSBSRVNUZnVsIGFjdGlvbnMgdGhhdCBjYW4gcHVzaCBhIGxvY2FsIHZhbHVlIG9yXG4gKiByZXRyaWV2ZSBhIHJlbW90ZSB2YWx1ZSBhbmQgYWN0IG9uIGl0IGFjY29yZGluZ2x5LlxuICogVGhlcmUgYXJlIDQgYWN0aW9uIHR5cGVzOlxuICogYGdldGA6IHBlcmZvcm1zIGEgR0VUIHJlcXVlc3Qgb24gYW4gZW5kcG9pbnQgdG8gcmV0cmlldmUgYW4gaXRlbSB2YWx1ZSwgYW5kIG1lcmdlcyB0aGVcbiAqICAgICAgdmFsdWUgb250byB0aGUgbG9jYWwgaXRlbSB2YWx1ZS4gRm9yIGV4YW1wbGUsIHlvdSBjYW4gR0VUIGFuIGl0ZW0ncyBvbGRlciByZXZpc2lvblxuICogICAgICB2YWx1ZSBhbmQgcmVwbGFjZSB0aGUgY3VycmVudCB2YWx1ZSB3aXRoIHRoZSByZXZpc2lvbi5cbiAqIGByZW5kZXJgOiBwZXJmb3JtcyBhIEdFVCByZXF1ZXN0LCBhbmQgZGlzcGxheXMgdGhlIHJlc3VsdCBpbiB0aGUgVUkuIFRoaXMgYWN0aW9uIGRvZXMgbm90XG4gKiAgICAgICAgIGFmZmVjdCBkYXRhIHVubGVzcyBhY3Rpb24gaXMgdGFrZW4gZXhwbGljaXRlbHkgaW4gdGhlIFVJIGFmdGVyIHRoZSBkYXRhIGlzIHByZXNlbnRlZC5cbiAqIGBzaG93YDogb3BlbnMgdGhlIGFjdGlvbidzIFVSTCBpbiBhIGJyb3dzZXIuXG4gKiBgcG9zdGA6IHNlbmRzIGFuIGl0ZW0ncyBkYXRhIHRvIGEgcmVtb3RlIHNlcnZpY2UuIFRoaXMgaXMgdXNlZCBmb3IgZXhhbXBsZSBieSBMaXN0ZWRcbiAqICAgICAgIHRvIGFsbG93IHB1Ymxpc2hpbmcgYSBub3RlIHRvIGEgdXNlcidzIGJsb2cuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTkFjdGlvbnNTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBhbGVydFNlcnZpY2UsIGRldmljZUludGVyZmFjZSwgaHR0cFNlcnZpY2UsIG1vZGVsTWFuYWdlciwgcHJvdG9jb2xTZXJ2aWNlLCBzeW5jU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzID0gW107XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSBpdGVtTWFuYWdlcjtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UgPSBhbGVydFNlcnZpY2U7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gZGV2aWNlSW50ZXJmYWNlO1xuICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlID0gaHR0cFNlcnZpY2U7XG4gICAgICAgIHRoaXMubW9kZWxNYW5hZ2VyID0gbW9kZWxNYW5hZ2VyO1xuICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZSA9IHByb3RvY29sU2VydmljZTtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZSA9IHN5bmNTZXJ2aWNlO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzID0gW107XG4gICAgfVxuICAgIC8qKiBAb3ZlcnJpZGUgKi9cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5odHRwU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzLmxlbmd0aCA9IDA7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBnZXRFeHRlbnNpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlclxuICAgICAgICAgICAgLm5vbkVycm9yZWRJdGVtc0ZvckNvbnRlbnRUeXBlKENvbnRlbnRUeXBlLkFjdGlvbnNFeHRlbnNpb24pO1xuICAgIH1cbiAgICBleHRlbnNpb25zSW5Db250ZXh0T2ZJdGVtKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXh0ZW5zaW9ucygpLmZpbHRlcigoZXh0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZXh0LnN1cHBvcnRlZF90eXBlcy5pbmNsdWRlcyhpdGVtLmNvbnRlbnRfdHlwZSkgfHxcbiAgICAgICAgICAgICAgICBleHQuYWN0aW9uc1dpdGhDb250ZXh0Rm9ySXRlbShpdGVtKS5sZW5ndGggPiAwO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogTG9hZHMgYW4gZXh0ZW5zaW9uIGluIHRoZSBjb250ZXh0IG9mIGEgY2VydGFpbiBpdGVtLlxuICAgICAqIFRoZSBzZXJ2ZXIgdGhlbiBoYXMgdGhlIGNoYW5jZSB0byByZXNwb25kIHdpdGggYWN0aW9ucyB0aGF0IGFyZVxuICAgICAqIHJlbGV2YW50IGp1c3QgdG8gdGhpcyBpdGVtLiBUaGUgcmVzcG9uc2UgZXh0ZW5zaW9uIGlzIG5vdCBzYXZlZCxcbiAgICAgKiBqdXN0IGRpc3BsYXllZCBhcyBhIG9uZS10aW1lIHRoaW5nLlxuICAgICovXG4gICAgYXN5bmMgbG9hZEV4dGVuc2lvbkluQ29udGV4dE9mSXRlbShleHRlbnNpb24sIGl0ZW0pIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgY29udGVudF90eXBlOiBpdGVtLmNvbnRlbnRfdHlwZSxcbiAgICAgICAgICAgIGl0ZW1fdXVpZDogaXRlbS51dWlkXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmdldEFic29sdXRlKGV4dGVuc2lvbi51cmwsIHBhcmFtcykudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVzcG9uc2UuZGVzY3JpcHRpb24gfHwgZXh0ZW5zaW9uLmRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgY29uc3Qgc3VwcG9ydGVkX3R5cGVzID0gcmVzcG9uc2Uuc3VwcG9ydGVkX3R5cGVzIHx8IGV4dGVuc2lvbi5zdXBwb3J0ZWRfdHlwZXM7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gKHJlc3BvbnNlLmFjdGlvbnNcbiAgICAgICAgICAgICAgICA/IHJlc3BvbnNlLmFjdGlvbnMubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIDogW10pO1xuICAgICAgICAgICAgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VBY3Rpb25zRXh0ZW5zaW9uKGV4dGVuc2lvbi51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICAgICAgICAgICAgICBtdXRhdG9yLnN1cHBvcnRlZF90eXBlcyA9IHN1cHBvcnRlZF90eXBlcztcbiAgICAgICAgICAgICAgICBtdXRhdG9yLmFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICAgICAgICB9KS5jYXRjaCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZXh0ZW5zaW9uJywgcmVzcG9uc2UpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBydW5BY3Rpb24oYWN0aW9uLCBpdGVtLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgIGFjdGlvbi5ydW5uaW5nID0gdHJ1ZTtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgc3dpdGNoIChhY3Rpb24udmVyYikge1xuICAgICAgICAgICAgY2FzZSAnZ2V0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmhhbmRsZUdldEFjdGlvbihhY3Rpb24sIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncmVuZGVyJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmhhbmRsZVJlbmRlckFjdGlvbihhY3Rpb24sIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2hvdyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgdGhpcy5oYW5kbGVTaG93QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb3N0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBhd2FpdCB0aGlzLmhhbmRsZVBvc3RBY3Rpb24oYWN0aW9uLCBpdGVtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgYWN0aW9uLmxhc3RFeGVjdXRlZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGFjdGlvbi5ydW5uaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZUdldEFjdGlvbihhY3Rpb24sIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgbm90ZSBjb250ZW50cyB3aXRoIHRoaXMgYWN0aW9uJ3MgcmVzdWx0cz9cIiwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucnVuQ29uZmlybWVkR2V0QWN0aW9uKGFjdGlvbiwgcGFzc3dvcmRSZXF1ZXN0SGFuZGxlcilcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBydW5Db25maXJtZWRHZXRBY3Rpb24oYWN0aW9uLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5nZXRBYnNvbHV0ZShhY3Rpb24udXJsKVxuICAgICAgICAgICAgLmNhdGNoKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJyb3IgPSAocmVzcG9uc2UgJiYgcmVzcG9uc2UuZXJyb3IpXG4gICAgICAgICAgICAgICAgfHwgeyBtZXNzYWdlOiAnQW4gaXNzdWUgb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGlzIGFjdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi4nIH07XG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hbGVydChlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgIGFjdGlvbi5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4geyBlcnJvcjogZXJyb3IgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2UgfTtcbiAgICAgICAgfVxuICAgICAgICBhY3Rpb24uZXJyb3IgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1Jlc3BvbnNlKHJlc3BvbnNlLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQoQ29weVBheWxvYWQocGF5bG9hZCwge1xuICAgICAgICAgICAgZGlydHk6IHRydWUsXG4gICAgICAgICAgICBkaXJ0aWVkRGF0ZTogbmV3IERhdGUoKVxuICAgICAgICB9KSwgUGF5bG9hZFNvdXJjZS5SZW1vdGVBY3Rpb25SZXRyaWV2ZWQpO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAgICAgICAgIGl0ZW06IHJlc3BvbnNlLml0ZW1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlUmVuZGVyQWN0aW9uKGFjdGlvbiwgcGFzc3dvcmRSZXF1ZXN0SGFuZGxlcikge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cFNlcnZpY2UuZ2V0QWJzb2x1dGUoYWN0aW9uLnVybCkudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGFjdGlvbi5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1Jlc3BvbnNlKHJlc3BvbnNlLCBwYXNzd29yZFJlcXVlc3RIYW5kbGVyKTtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaXRlbU1hbmFnZXIuY3JlYXRlSXRlbShwYXlsb2FkLmNvbnRlbnRfdHlwZSwgcGF5bG9hZC5jb250ZW50T2JqZWN0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gKHJlc3BvbnNlICYmIHJlc3BvbnNlLmVycm9yKVxuICAgICAgICAgICAgICAgIHx8IHsgbWVzc2FnZTogJ0FuIGlzc3VlIG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyBhY3Rpb24uIFBsZWFzZSB0cnkgYWdhaW4uJyB9O1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgICBhY3Rpb24uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGVycm9yIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyByZXNwb25zZSB9O1xuICAgIH1cbiAgICBhc3luYyBwYXlsb2FkQnlEZWNyeXB0aW5nUmVzcG9uc2UocmVzcG9uc2UsIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIsIGtleSkge1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocmVzcG9uc2UuaXRlbSk7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBheWxvYWQgPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5wYXlsb2FkQnlEZWNyeXB0aW5nUGF5bG9hZChwYXlsb2FkLCBrZXkpO1xuICAgICAgICBpZiAoIWRlY3J5cHRlZFBheWxvYWQuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjcnlwdGVkUGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXJlc3BvbnNlLmF1dGhfcGFyYW1zKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEluIHNvbWUgY2FzZXMgcmV2aXNpb25zIHdlcmUgbWlzc2luZyBhdXRoIHBhcmFtcy5cbiAgICAgICAgICAgICAqIEluc3RydWN0IHRoZSB1c2VyIHRvIGVtYWlsIHVzIHRvIGdldCB0aGlzIHJlbWVkaWVkLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hbGVydChgV2Ugd2VyZSB1bmFibGUgdG8gZGVjcnlwdCB0aGlzIHJldmlzaW9uIHVzaW5nIHlvdXIgY3VycmVudCBrZXlzLCBcbiAgICAgICAgYW5kIHRoaXMgcmV2aXNpb24gaXMgbWlzc2luZyBtZXRhZGF0YSB0aGF0IHdvdWxkIGFsbG93IHVzIHRvIHRyeSBkaWZmZXJlbnQgXG4gICAgICAgIGtleXMgdG8gZGVjcnlwdCBpdC4gVGhpcyBjYW4gbGlrZWx5IGJlIGZpeGVkIHdpdGggc29tZSBtYW51YWwgaW50ZXJ2ZW50aW9uLiBcbiAgICAgICAgUGxlYXNlIGVtYWlsIGhlbGxvQHN0YW5kYXJkbm90ZXMub3JnIGZvciBhc3Npc3RhbmNlLmApO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICAvKiBUcnkgcHJldmlvdXMgcGFzc3dvcmRzICovXG4gICAgICAgIGNvbnN0IHRyaWVkUGFzc3dvcmRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGFzc3dvcmRDYW5kaWRhdGUgb2YgdGhpcy5wcmV2aW91c1Bhc3N3b3Jkcykge1xuICAgICAgICAgICAgaWYgKHRyaWVkUGFzc3dvcmRzLmluY2x1ZGVzKHBhc3N3b3JkQ2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJpZWRQYXNzd29yZHMucHVzaChwYXNzd29yZENhbmRpZGF0ZSk7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5jb21wdXRlUm9vdEtleShwYXNzd29yZENhbmRpZGF0ZSwgcmVzcG9uc2UuYXV0aF9wYXJhbXMpO1xuICAgICAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5lc3RlZFJlc3BvbnNlID0gYXdhaXQgdGhpcy5wYXlsb2FkQnlEZWNyeXB0aW5nUmVzcG9uc2UocmVzcG9uc2UsIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIsIGtleSk7XG4gICAgICAgICAgICBpZiAobmVzdGVkUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmVzdGVkUmVzcG9uc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyoqIFByb21wdCBmb3Igb3RoZXIgcGFzc3dvcmRzICovXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gYXdhaXQgcGFzc3dvcmRSZXF1ZXN0SGFuZGxlcigpO1xuICAgICAgICB0aGlzLnByZXZpb3VzUGFzc3dvcmRzLnB1c2gocGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkQnlEZWNyeXB0aW5nUmVzcG9uc2UocmVzcG9uc2UsIHBhc3N3b3JkUmVxdWVzdEhhbmRsZXIsIGtleSk7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVBvc3RBY3Rpb24oYWN0aW9uLCBpdGVtKSB7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGFjdGlvbi5hY2Nlc3NfdHlwZSA9PT0gJ2RlY3J5cHRlZCc7XG4gICAgICAgIGNvbnN0IGl0ZW1QYXJhbXMgPSBhd2FpdCB0aGlzLm91dGdvaW5nUGF5bG9hZEZvckl0ZW0oaXRlbSwgZGVjcnlwdGVkKTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgaXRlbXM6IFtpdGVtUGFyYW1zXVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5wb3N0QWJzb2x1dGUoYWN0aW9uLnVybCwgcGFyYW1zKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgYWN0aW9uLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4geyByZXNwb25zZTogcmVzcG9uc2UgfTtcbiAgICAgICAgfSkuY2F0Y2goKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBhY3Rpb24uZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQWN0aW9uIGVycm9yIHJlc3BvbnNlOicsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KCdBbiBpc3N1ZSBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nIHRoaXMgYWN0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLicpO1xuICAgICAgICAgICAgcmV0dXJuIHsgcmVzcG9uc2U6IHJlc3BvbnNlIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVTaG93QWN0aW9uKGFjdGlvbikge1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZS5vcGVuVXJsKGFjdGlvbi51cmwpO1xuICAgICAgICByZXR1cm4geyByZXNwb25zZTogdW5kZWZpbmVkIH07XG4gICAgfVxuICAgIGFzeW5jIG91dGdvaW5nUGF5bG9hZEZvckl0ZW0oaXRlbSwgZGVjcnlwdGVkID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaW50ZW50ID0gZGVjcnlwdGVkXG4gICAgICAgICAgICA/IEVuY3J5cHRpb25JbnRlbnQuRmlsZURlY3J5cHRlZFxuICAgICAgICAgICAgOiBFbmNyeXB0aW9uSW50ZW50LkZpbGVFbmNyeXB0ZWQ7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZCA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKGl0ZW0ucGF5bG9hZFJlcHJlc2VudGF0aW9uKCksIGludGVudCk7XG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQuZWplY3RlZCgpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBVkE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBMEJBO0FBRUE7QUE1QkE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFuQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBQ0E7QUFGQTtBQTFDQTtBQStDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtFQTtBQWxFQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzRUE7QUF0RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF5RUE7QUF6RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0RUE7QUE1RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUErRUE7QUEvRUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBb0ZBO0FBQ0E7QUFyRkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMEZBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBakdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUEzR0E7QUFtR0E7QUFDQTtBQXBHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0R0E7QUFBQTtBQUNBO0FBN0dBO0FBOEdBO0FBOUdBO0FBQUE7QUFDQTtBQURBO0FBK0dBO0FBL0dBO0FBQUE7QUFpSEE7QUFDQTtBQUZBO0FBQ0E7QUFqSEE7QUFvSEE7QUFwSEE7QUFzSEE7QUFDQTtBQUZBO0FBQ0E7QUF0SEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUdBO0FBSkE7QUFNQTtBQUNBO0FBRkE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQTVJQTtBQTJIQTtBQTNIQTtBQTRJQTtBQUFBO0FBQ0E7QUE3SUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBK0lBO0FBL0lBO0FBQUE7QUFDQTtBQURBO0FBZ0pBO0FBQ0E7QUFqSkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvSkE7Ozs7QUFJQTtBQXpKQTtBQUNBO0FBREE7QUErSkE7QUFDQTtBQWhLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFnS0E7QUFDQTtBQWxLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBcUtBO0FBcktBO0FBQUE7QUFDQTtBQURBO0FBc0tBO0FBQ0E7QUF2S0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBMEtBO0FBQ0E7QUEzS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBZ0xBO0FBQ0E7QUFqTEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUxBO0FBckxBO0FBQUE7QUFDQTtBQURBO0FBc0xBO0FBQ0E7QUFDQTtBQURBO0FBdkxBO0FBMkxBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQW5NQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFNQTtBQXJNQTtBQXNNQTtBQUFBO0FBQ0E7QUF2TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdNQTtBQUNBO0FBek1BO0FBQUE7QUFDQTtBQURBO0FBNE1BO0FBNU1BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/actions_service.ts\n')},"./lib/services/alert_service.ts": /*!***************************************!*\ !*** ./lib/services/alert_service.ts ***! \***************************************/ /*! exports provided: SNAlertService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNAlertService", function() { return SNAlertService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n/**\n * Can be subclassed to provide custom alert/confirm implementation.\n * Defaults to using browser alert() and confirm().\n */\n\nvar SNAlertService = /*#__PURE__*/function (_PureService) {\n _inherits(SNAlertService, _PureService);\n\n function SNAlertService(deviceInterface) {\n var _this;\n\n _classCallCheck(this, SNAlertService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNAlertService).call(this));\n _this.deviceInterface = deviceInterface;\n return _this;\n }\n\n _createClass(SNAlertService, [{\n key: "deinit",\n value: function deinit() {\n this.deviceInterface = undefined;\n\n _get(_getPrototypeOf(SNAlertService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "alert",\n value: function () {\n var _alert = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(text, title) {\n var closeButtonText,\n onClose,\n _args = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n closeButtonText = _args.length > 2 && _args[2] !== undefined ? _args[2] : \'OK\';\n onClose = _args.length > 3 ? _args[3] : undefined;\n return _context.abrupt("return", new Promise(function (resolve, reject) {\n window.alert(text);\n resolve();\n }));\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function alert(_x, _x2) {\n return _alert.apply(this, arguments);\n }\n\n return alert;\n }()\n }, {\n key: "confirm",\n value: function () {\n var _confirm = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(text, title) {\n var confirmButtonText,\n cancelButtonText,\n onConfirm,\n onCancel,\n destructive,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n confirmButtonText = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : \'Confirm\';\n cancelButtonText = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : \'Cancel\';\n onConfirm = _args2.length > 4 ? _args2[4] : undefined;\n onCancel = _args2.length > 5 ? _args2[5] : undefined;\n destructive = _args2.length > 6 && _args2[6] !== undefined ? _args2[6] : false;\n return _context2.abrupt("return", new Promise(function (resolve, reject) {\n if (window.confirm(text)) {\n resolve();\n } else {\n // eslint-disable-next-line prefer-promise-reject-errors\n reject();\n }\n }));\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function confirm(_x3, _x4) {\n return _confirm.apply(this, arguments);\n }\n\n return confirm;\n }()\n }]);\n\n return SNAlertService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYWxlcnRfc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hbGVydF9zZXJ2aWNlLnRzP2YyNTEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG4vKipcbiAqIENhbiBiZSBzdWJjbGFzc2VkIHRvIHByb3ZpZGUgY3VzdG9tIGFsZXJ0L2NvbmZpcm0gaW1wbGVtZW50YXRpb24uXG4gKiBEZWZhdWx0cyB0byB1c2luZyBicm93c2VyIGFsZXJ0KCkgYW5kIGNvbmZpcm0oKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOQWxlcnRTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGRldmljZUludGVyZmFjZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IGRldmljZUludGVyZmFjZTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgfVxuICAgIGFzeW5jIGFsZXJ0KHRleHQsIHRpdGxlLCBjbG9zZUJ1dHRvblRleHQgPSAnT0snLCBvbkNsb3NlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB3aW5kb3cuYWxlcnQodGV4dCk7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBjb25maXJtKHRleHQsIHRpdGxlLCBjb25maXJtQnV0dG9uVGV4dCA9ICdDb25maXJtJywgY2FuY2VsQnV0dG9uVGV4dCA9ICdDYW5jZWwnLCBvbkNvbmZpcm0sIG9uQ2FuY2VsLCBkZXN0cnVjdGl2ZSA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAod2luZG93LmNvbmZpcm0odGV4dCkpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXByb21pc2UtcmVqZWN0LWVycm9yc1xuICAgICAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUdBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFTQTtBQUFBO0FBVEE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQWRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWZBO0FBaUJBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/alert_service.ts\n')},"./lib/services/api/api_service.ts": /*!*****************************************!*\ !*** ./lib/services/api/api_service.ts ***! \*****************************************/ /*! exports provided: SNApiService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNApiService", function() { return SNApiService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./lib/services/api/session.ts");\n/* harmony import */ var _http_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./http_service */ "./lib/services/api/http_service.ts");\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js");\n/* harmony import */ var lodash_merge__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_merge__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Services/api/keys */ "./lib/services/api/keys.ts");\n/* harmony import */ var _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/api/messages */ "./lib/services/api/messages.ts");\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar REQUEST_PATH_KEY_PARAMS = \'/auth/params\';\nvar REQUEST_PATH_REGISTER = \'/auth\';\nvar REQUEST_PATH_LOGIN = \'/auth/sign_in\';\nvar REQUEST_PATH_CHANGE_PW = \'/auth/change_pw\';\nvar REQUEST_PATH_SYNC = \'/items/sync\';\nvar REQUEST_PATH_LOGOUT = \'/auth/sign_out\';\nvar REQUEST_PATH_SESSION_REFRESH = \'/session/refresh\';\nvar API_VERSION = \'20200115\';\nvar SNApiService = /*#__PURE__*/function (_PureService) {\n _inherits(SNApiService, _PureService);\n\n function SNApiService(httpService, storageService) {\n var _this;\n\n _classCallCheck(this, SNApiService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNApiService).call(this));\n _this.registering = false;\n _this.authenticating = false;\n _this.changing = false;\n _this.refreshingSession = false;\n _this.httpService = httpService;\n _this.storageService = storageService;\n return _this;\n }\n /** @override */\n\n\n _createClass(SNApiService, [{\n key: "deinit",\n value: function deinit() {\n this.httpService = undefined;\n this.storageService = undefined;\n this.host = undefined;\n this.session = undefined;\n\n _get(_getPrototypeOf(SNApiService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "loadHost",\n value: function () {\n var _loadHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var storedValue;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__["StorageKey"].ServerHost);\n\n case 2:\n storedValue = _context.sent;\n this.host = storedValue || window._default_sync_server;\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function loadHost() {\n return _loadHost.apply(this, arguments);\n }\n\n return loadHost;\n }()\n }, {\n key: "setHost",\n value: function () {\n var _setHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(host) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.host = host;\n _context2.next = 3;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__["StorageKey"].ServerHost, host);\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setHost(_x) {\n return _setHost.apply(this, arguments);\n }\n\n return setHost;\n }()\n }, {\n key: "getHost",\n value: function () {\n var _getHost = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt("return", this.host);\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getHost() {\n return _getHost.apply(this, arguments);\n }\n\n return getHost;\n }()\n }, {\n key: "setSession",\n value: function () {\n var _setSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(session) {\n var persist,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n persist = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : true;\n this.session = session;\n\n if (!persist) {\n _context4.next = 5;\n break;\n }\n\n _context4.next = 5;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_8__["StorageKey"].Session, session);\n\n case 5:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function setSession(_x2) {\n return _setSession.apply(this, arguments);\n }\n\n return setSession;\n }()\n }, {\n key: "getSession",\n value: function getSession() {\n return this.session;\n }\n }, {\n key: "path",\n value: function () {\n var _path2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(_path) {\n var host;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.getHost();\n\n case 2:\n host = _context5.sent;\n\n if (host) {\n _context5.next = 5;\n break;\n }\n\n throw "Attempting to build path ".concat(_path, " with no host.");\n\n case 5:\n if (_path) {\n _context5.next = 7;\n break;\n }\n\n throw \'Attempting to build path with null path.\';\n\n case 7:\n return _context5.abrupt("return", Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["joinPaths"])(host, _path));\n\n case 8:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function path(_x3) {\n return _path2.apply(this, arguments);\n }\n\n return path;\n }()\n }, {\n key: "params",\n value: function params(inParams) {\n var params = lodash_merge__WEBPACK_IMPORTED_MODULE_3___default()(inParams, _defineProperty({}, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].ApiVersion, API_VERSION));\n return params;\n }\n }, {\n key: "createErrorResponse",\n value: function createErrorResponse(message) {\n return {\n error: {\n message: message\n }\n };\n }\n }, {\n key: "errorResponseWithFallbackMessage",\n value: function errorResponseWithFallbackMessage(response, message) {\n if (!response.error.message) {\n response.error.message = message;\n }\n\n return response;\n }\n /**\n * @param mfaKeyPath The params path the server expects for authentication against\n * a particular mfa challenge. A value of foo would mean the server\n * would receive parameters as params[\'foo\'] with value equal to mfaCode.\n * @param mfaCode The mfa challenge response value.\n */\n\n }, {\n key: "getAccountKeyParams",\n value: function () {\n var _getAccountKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(email, mfaKeyPath, mfaCode) {\n var _this2 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.path(REQUEST_PATH_KEY_PARAMS);\n\n case 2:\n url = _context6.sent;\n params = this.params({\n email: email\n });\n\n if (mfaKeyPath) {\n params[mfaKeyPath] = mfaCode;\n }\n\n _context6.next = 7;\n return this.httpService.getAbsolute(url, params).catch(function (errorResponse) {\n return _this2.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_INVALID_LOGIN"]);\n });\n\n case 7:\n response = _context6.sent;\n return _context6.abrupt("return", response);\n\n case 9:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getAccountKeyParams(_x4, _x5, _x6) {\n return _getAccountKeyParams.apply(this, arguments);\n }\n\n return getAccountKeyParams;\n }()\n }, {\n key: "register",\n value: function () {\n var _register = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(email, serverPassword, keyParams) {\n var _this3 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (!this.registering) {\n _context7.next = 2;\n break;\n }\n\n return _context7.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_REGISTRATION_IN_PROGRESS"]));\n\n case 2:\n this.registering = true;\n _context7.next = 5;\n return this.path(REQUEST_PATH_REGISTER);\n\n case 5:\n url = _context7.sent;\n params = this.params(_objectSpread({\n password: serverPassword,\n email: email\n }, keyParams.getPortableValue()));\n _context7.next = 9;\n return this.httpService.postAbsolute(url, params).catch(function (errorResponse) {\n return _this3.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_REGISTRATION_FAIL"]);\n });\n\n case 9:\n response = _context7.sent;\n this.registering = false;\n return _context7.abrupt("return", response);\n\n case 12:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function register(_x7, _x8, _x9) {\n return _register.apply(this, arguments);\n }\n\n return register;\n }()\n }, {\n key: "signIn",\n value: function () {\n var _signIn = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(email, serverPassword, mfaKeyPath, mfaCode) {\n var _this4 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!this.authenticating) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_LOGIN_IN_PROGRESS"]));\n\n case 2:\n this.authenticating = true;\n _context8.next = 5;\n return this.path(REQUEST_PATH_LOGIN);\n\n case 5:\n url = _context8.sent;\n params = this.params({\n email: email,\n password: serverPassword\n });\n\n if (mfaKeyPath) {\n params[mfaKeyPath] = mfaCode;\n }\n\n _context8.next = 10;\n return this.httpService.postAbsolute(url, params).catch(function (errorResponse) {\n return _this4.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_INVALID_LOGIN"]);\n });\n\n case 10:\n response = _context8.sent;\n this.authenticating = false;\n return _context8.abrupt("return", response);\n\n case 13:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function signIn(_x10, _x11, _x12, _x13) {\n return _signIn.apply(this, arguments);\n }\n\n return signIn;\n }()\n }, {\n key: "signOut",\n value: function () {\n var _signOut = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var url;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.path(REQUEST_PATH_LOGOUT);\n\n case 2:\n url = _context9.sent;\n return _context9.abrupt("return", this.httpService.postAbsolute(url, undefined, this.session.accessToken));\n\n case 4:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function signOut() {\n return _signOut.apply(this, arguments);\n }\n\n return signOut;\n }()\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(currentServerPassword, newServerPassword, newKeyParams) {\n var _this5 = this;\n\n var url, params, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!this.changing) {\n _context11.next = 2;\n break;\n }\n\n return _context11.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_CHANGE_PW_IN_PROGRESS"]));\n\n case 2:\n if (!this.refreshingSession) {\n _context11.next = 4;\n break;\n }\n\n return _context11.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS"]));\n\n case 4:\n this.changing = true;\n _context11.next = 7;\n return this.path(REQUEST_PATH_CHANGE_PW);\n\n case 7:\n url = _context11.sent;\n params = this.params(_objectSpread({\n current_password: currentServerPassword,\n new_password: newServerPassword\n }, newKeyParams.getPortableValue()));\n _context11.next = 11;\n return this.httpService.postAbsolute(url, params, this.session.accessToken).catch( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(errorResponse) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!_this5.httpService.isErrorResponseExpiredToken(errorResponse)) {\n _context10.next = 2;\n break;\n }\n\n return _context10.abrupt("return", _this5.refreshSessionThenRetryRequest({\n verb: _http_service__WEBPACK_IMPORTED_MODULE_2__["HttpVerb"].Post,\n url: url,\n params: params\n }));\n\n case 2:\n return _context10.abrupt("return", _this5.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_CHANGE_PW_FAIL"]));\n\n case 3:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10);\n }));\n\n return function (_x17) {\n return _ref.apply(this, arguments);\n };\n }());\n\n case 11:\n response = _context11.sent;\n this.changing = false;\n return _context11.abrupt("return", response);\n\n case 14:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function changePassword(_x14, _x15, _x16) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }, {\n key: "sync",\n value: function () {\n var _sync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(payloads, lastSyncToken, paginationToken, limit) {\n var _this$params,\n _this6 = this;\n\n var checkIntegrity,\n contentType,\n customEvent,\n url,\n params,\n response,\n _args13 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n checkIntegrity = _args13.length > 4 && _args13[4] !== undefined ? _args13[4] : false;\n contentType = _args13.length > 5 ? _args13[5] : undefined;\n customEvent = _args13.length > 6 ? _args13[6] : undefined;\n\n if (!this.refreshingSession) {\n _context13.next = 5;\n break;\n }\n\n return _context13.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS"]));\n\n case 5:\n _context13.next = 7;\n return this.path(REQUEST_PATH_SYNC);\n\n case 7:\n url = _context13.sent;\n params = this.params((_this$params = {}, _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].SyncPayloads, payloads.map(function (p) {\n return p.ejected();\n })), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].LastSyncToken, lastSyncToken), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].PaginationToken, paginationToken), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].IntegrityCheck, checkIntegrity), _defineProperty(_this$params, _Services_api_keys__WEBPACK_IMPORTED_MODULE_4__["ApiEndpointParam"].SyncDlLimit, limit), _defineProperty(_this$params, "content_type", contentType), _defineProperty(_this$params, "event", customEvent), _this$params));\n _context13.next = 11;\n return this.httpService.postAbsolute(url, params, this.session.accessToken).catch( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(errorResponse) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n if (!_this6.httpService.isErrorResponseExpiredToken(errorResponse)) {\n _context12.next = 2;\n break;\n }\n\n return _context12.abrupt("return", _this6.refreshSessionThenRetryRequest({\n verb: _http_service__WEBPACK_IMPORTED_MODULE_2__["HttpVerb"].Post,\n url: url,\n params: params\n }));\n\n case 2:\n return _context12.abrupt("return", _this6.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_SYNC_FAIL"]));\n\n case 3:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12);\n }));\n\n return function (_x22) {\n return _ref2.apply(this, arguments);\n };\n }());\n\n case 11:\n response = _context13.sent;\n return _context13.abrupt("return", response);\n\n case 13:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function sync(_x18, _x19, _x20, _x21) {\n return _sync.apply(this, arguments);\n }\n\n return sync;\n }()\n }, {\n key: "refreshSessionThenRetryRequest",\n value: function () {\n var _refreshSessionThenRetryRequest = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(httpRequest) {\n var _this7 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n return _context14.abrupt("return", this.refreshSession().then(function (sessionResponse) {\n if (sessionResponse === null || sessionResponse === void 0 ? void 0 : sessionResponse.error) {\n return sessionResponse;\n } else {\n return _this7.httpService.runHttp(_objectSpread({}, httpRequest, {\n authentication: _this7.session.accessToken\n }));\n }\n }));\n\n case 1:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function refreshSessionThenRetryRequest(_x23) {\n return _refreshSessionThenRetryRequest.apply(this, arguments);\n }\n\n return refreshSessionThenRetryRequest;\n }()\n }, {\n key: "refreshSession",\n value: function () {\n var _refreshSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16() {\n var _this8 = this;\n\n var url, params, result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n if (!this.refreshingSession) {\n _context16.next = 2;\n break;\n }\n\n return _context16.abrupt("return", this.createErrorResponse(_Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS"]));\n\n case 2:\n this.refreshingSession = true;\n _context16.next = 5;\n return this.path(REQUEST_PATH_SESSION_REFRESH);\n\n case 5:\n url = _context16.sent;\n params = this.params({\n access_token: this.session.accessToken,\n refresh_token: this.session.refreshToken\n });\n _context16.next = 9;\n return this.httpService.postAbsolute(url, params).then( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(response) {\n var session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n session = _session__WEBPACK_IMPORTED_MODULE_1__["Session"].FromResponse(response);\n _context15.next = 3;\n return _this8.setSession(session);\n\n case 3:\n return _context15.abrupt("return", response);\n\n case 4:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15);\n }));\n\n return function (_x24) {\n return _ref3.apply(this, arguments);\n };\n }()).catch(function (errorResponse) {\n return _this8.errorResponseWithFallbackMessage(errorResponse, _Services_api_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL"]);\n });\n\n case 9:\n result = _context16.sent;\n this.refreshingSession = false;\n return _context16.abrupt("return", result);\n\n case 12:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function refreshSession() {\n return _refreshSession.apply(this, arguments);\n }\n\n return refreshSession;\n }()\n }]);\n\n return SNApiService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_6__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL2FwaV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2FwaS9hcGlfc2VydmljZS50cz80MDQ3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlc3Npb24gfSBmcm9tICcuL3Nlc3Npb24nO1xuaW1wb3J0IHsgSHR0cFZlcmIgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnbG9kYXNoL21lcmdlJztcbmltcG9ydCB7IEFwaUVuZHBvaW50UGFyYW0gfSBmcm9tICdAU2VydmljZXMvYXBpL2tleXMnO1xuaW1wb3J0ICogYXMgbWVzc2FnZXMgZnJvbSAnQFNlcnZpY2VzL2FwaS9tZXNzYWdlcyc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9wdXJlX3NlcnZpY2UnO1xuaW1wb3J0IHsgam9pblBhdGhzIH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBTdG9yYWdlS2V5IH0gZnJvbSAnQExpYi9zdG9yYWdlX2tleXMnO1xuY29uc3QgUkVRVUVTVF9QQVRIX0tFWV9QQVJBTVMgPSAnL2F1dGgvcGFyYW1zJztcbmNvbnN0IFJFUVVFU1RfUEFUSF9SRUdJU1RFUiA9ICcvYXV0aCc7XG5jb25zdCBSRVFVRVNUX1BBVEhfTE9HSU4gPSAnL2F1dGgvc2lnbl9pbic7XG5jb25zdCBSRVFVRVNUX1BBVEhfQ0hBTkdFX1BXID0gJy9hdXRoL2NoYW5nZV9wdyc7XG5jb25zdCBSRVFVRVNUX1BBVEhfU1lOQyA9ICcvaXRlbXMvc3luYyc7XG5jb25zdCBSRVFVRVNUX1BBVEhfTE9HT1VUID0gJy9hdXRoL3NpZ25fb3V0JztcbmNvbnN0IFJFUVVFU1RfUEFUSF9TRVNTSU9OX1JFRlJFU0ggPSAnL3Nlc3Npb24vcmVmcmVzaCc7XG5jb25zdCBBUElfVkVSU0lPTiA9ICcyMDIwMDExNSc7XG5leHBvcnQgY2xhc3MgU05BcGlTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGh0dHBTZXJ2aWNlLCBzdG9yYWdlU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGFuZ2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZnJlc2hpbmdTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBodHRwU2VydmljZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHN0b3JhZ2VTZXJ2aWNlO1xuICAgIH1cbiAgICAvKiogQG92ZXJyaWRlICovXG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLmh0dHBTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgfVxuICAgIGFzeW5jIGxvYWRIb3N0KCkge1xuICAgICAgICBjb25zdCBzdG9yZWRWYWx1ZSA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5TZXJ2ZXJIb3N0KTtcbiAgICAgICAgdGhpcy5ob3N0ID0gc3RvcmVkVmFsdWUgfHwgd2luZG93Ll9kZWZhdWx0X3N5bmNfc2VydmVyO1xuICAgIH1cbiAgICBhc3luYyBzZXRIb3N0KGhvc3QpIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlcnZlckhvc3QsIGhvc3QpO1xuICAgIH1cbiAgICBhc3luYyBnZXRIb3N0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ob3N0O1xuICAgIH1cbiAgICBhc3luYyBzZXRTZXNzaW9uKHNlc3Npb24sIHBlcnNpc3QgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgICAgIGlmIChwZXJzaXN0KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbiwgc2Vzc2lvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0U2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbjtcbiAgICB9XG4gICAgYXN5bmMgcGF0aChwYXRoKSB7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBhd2FpdCB0aGlzLmdldEhvc3QoKTtcbiAgICAgICAgaWYgKCFob3N0KSB7XG4gICAgICAgICAgICB0aHJvdyBgQXR0ZW1wdGluZyB0byBidWlsZCBwYXRoICR7cGF0aH0gd2l0aCBubyBob3N0LmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBidWlsZCBwYXRoIHdpdGggbnVsbCBwYXRoLic7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGpvaW5QYXRocyhob3N0LCBwYXRoKTtcbiAgICB9XG4gICAgcGFyYW1zKGluUGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG1lcmdlKGluUGFyYW1zLCB7XG4gICAgICAgICAgICBbQXBpRW5kcG9pbnRQYXJhbS5BcGlWZXJzaW9uXTogQVBJX1ZFUlNJT05cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuICAgIGNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4geyBlcnJvcjogeyBtZXNzYWdlOiBtZXNzYWdlIH0gfTtcbiAgICB9XG4gICAgZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UocmVzcG9uc2UsIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvci5tZXNzYWdlKSB7XG4gICAgICAgICAgICByZXNwb25zZS5lcnJvci5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtZmFLZXlQYXRoICBUaGUgcGFyYW1zIHBhdGggdGhlIHNlcnZlciBleHBlY3RzIGZvciBhdXRoZW50aWNhdGlvbiBhZ2FpbnN0XG4gICAgICogICAgICAgICAgICAgICAgICAgIGEgcGFydGljdWxhciBtZmEgY2hhbGxlbmdlLiBBIHZhbHVlIG9mIGZvbyB3b3VsZCBtZWFuIHRoZSBzZXJ2ZXJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgd291bGQgcmVjZWl2ZSBwYXJhbWV0ZXJzIGFzIHBhcmFtc1snZm9vJ10gd2l0aCB2YWx1ZSBlcXVhbCB0byBtZmFDb2RlLlxuICAgICAqIEBwYXJhbSBtZmFDb2RlICAgICBUaGUgbWZhIGNoYWxsZW5nZSByZXNwb25zZSB2YWx1ZS5cbiAgICAgKi9cbiAgICBhc3luYyBnZXRBY2NvdW50S2V5UGFyYW1zKGVtYWlsLCBtZmFLZXlQYXRoLCBtZmFDb2RlKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMucGF0aChSRVFVRVNUX1BBVEhfS0VZX1BBUkFNUyk7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zKHtcbiAgICAgICAgICAgIGVtYWlsOiBlbWFpbFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG1mYUtleVBhdGgpIHtcbiAgICAgICAgICAgIHBhcmFtc1ttZmFLZXlQYXRoXSA9IG1mYUNvZGU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBTZXJ2aWNlLmdldEFic29sdXRlKHVybCwgcGFyYW1zKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlV2l0aEZhbGxiYWNrTWVzc2FnZShlcnJvclJlc3BvbnNlLCBtZXNzYWdlcy5BUElfTUVTU0FHRV9HRU5FUklDX0lOVkFMSURfTE9HSU4pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyByZWdpc3RlcihlbWFpbCwgc2VydmVyUGFzc3dvcmQsIGtleVBhcmFtcykge1xuICAgICAgICBpZiAodGhpcy5yZWdpc3RlcmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9SRUdJU1RSQVRJT05fSU5fUFJPR1JFU1MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVnaXN0ZXJpbmcgPSB0cnVlO1xuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLnBhdGgoUkVRVUVTVF9QQVRIX1JFR0lTVEVSKTtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5wYXJhbXMoe1xuICAgICAgICAgICAgcGFzc3dvcmQ6IHNlcnZlclBhc3N3b3JkLFxuICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxuICAgICAgICAgICAgLi4ua2V5UGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RBYnNvbHV0ZSh1cmwsIHBhcmFtcylcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UoZXJyb3JSZXNwb25zZSwgbWVzc2FnZXMuQVBJX01FU1NBR0VfR0VORVJJQ19SRUdJU1RSQVRJT05fRkFJTCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgYXN5bmMgc2lnbkluKGVtYWlsLCBzZXJ2ZXJQYXNzd29yZCwgbWZhS2V5UGF0aCwgbWZhQ29kZSkge1xuICAgICAgICBpZiAodGhpcy5hdXRoZW50aWNhdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9MT0dJTl9JTl9QUk9HUkVTUyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMucGF0aChSRVFVRVNUX1BBVEhfTE9HSU4pO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcyh7XG4gICAgICAgICAgICBlbWFpbDogZW1haWwsXG4gICAgICAgICAgICBwYXNzd29yZDogc2VydmVyUGFzc3dvcmRcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChtZmFLZXlQYXRoKSB7XG4gICAgICAgICAgICBwYXJhbXNbbWZhS2V5UGF0aF0gPSBtZmFDb2RlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5wb3N0QWJzb2x1dGUodXJsLCBwYXJhbXMpLmNhdGNoKChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlV2l0aEZhbGxiYWNrTWVzc2FnZShlcnJvclJlc3BvbnNlLCBtZXNzYWdlcy5BUElfTUVTU0FHRV9HRU5FUklDX0lOVkFMSURfTE9HSU4pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hdXRoZW50aWNhdGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGFzeW5jIHNpZ25PdXQoKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMucGF0aChSRVFVRVNUX1BBVEhfTE9HT1VUKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucG9zdEFic29sdXRlKHVybCwgdW5kZWZpbmVkLCB0aGlzLnNlc3Npb24uYWNjZXNzVG9rZW4pO1xuICAgIH1cbiAgICBhc3luYyBjaGFuZ2VQYXNzd29yZChjdXJyZW50U2VydmVyUGFzc3dvcmQsIG5ld1NlcnZlclBhc3N3b3JkLCBuZXdLZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZXMuQVBJX01FU1NBR0VfQ0hBTkdFX1BXX0lOX1BST0dSRVNTKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZWZyZXNoaW5nU2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9UT0tFTl9SRUZSRVNIX0lOX1BST0dSRVNTKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5naW5nID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgdGhpcy5wYXRoKFJFUVVFU1RfUEFUSF9DSEFOR0VfUFcpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcyh7XG4gICAgICAgICAgICBjdXJyZW50X3Bhc3N3b3JkOiBjdXJyZW50U2VydmVyUGFzc3dvcmQsXG4gICAgICAgICAgICBuZXdfcGFzc3dvcmQ6IG5ld1NlcnZlclBhc3N3b3JkLFxuICAgICAgICAgICAgLi4ubmV3S2V5UGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmh0dHBTZXJ2aWNlLnBvc3RBYnNvbHV0ZSh1cmwsIHBhcmFtcywgdGhpcy5zZXNzaW9uLmFjY2Vzc1Rva2VuKS5jYXRjaChhc3luYyAoZXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaHR0cFNlcnZpY2UuaXNFcnJvclJlc3BvbnNlRXhwaXJlZFRva2VuKGVycm9yUmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb25UaGVuUmV0cnlSZXF1ZXN0KHtcbiAgICAgICAgICAgICAgICAgICAgdmVyYjogSHR0cFZlcmIuUG9zdCxcbiAgICAgICAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXNcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2VXaXRoRmFsbGJhY2tNZXNzYWdlKGVycm9yUmVzcG9uc2UsIG1lc3NhZ2VzLkFQSV9NRVNTQUdFX0dFTkVSSUNfQ0hBTkdFX1BXX0ZBSUwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jaGFuZ2luZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICAgIGFzeW5jIHN5bmMocGF5bG9hZHMsIGxhc3RTeW5jVG9rZW4sIHBhZ2luYXRpb25Ub2tlbiwgbGltaXQsIGNoZWNrSW50ZWdyaXR5ID0gZmFsc2UsIGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWZyZXNoaW5nU2Vzc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9UT0tFTl9SRUZSRVNIX0lOX1BST0dSRVNTKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLnBhdGgoUkVRVUVTVF9QQVRIX1NZTkMpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLnBhcmFtcyh7XG4gICAgICAgICAgICBbQXBpRW5kcG9pbnRQYXJhbS5TeW5jUGF5bG9hZHNdOiBwYXlsb2Fkcy5tYXAoKHApID0+IHAuZWplY3RlZCgpKSxcbiAgICAgICAgICAgIFtBcGlFbmRwb2ludFBhcmFtLkxhc3RTeW5jVG9rZW5dOiBsYXN0U3luY1Rva2VuLFxuICAgICAgICAgICAgW0FwaUVuZHBvaW50UGFyYW0uUGFnaW5hdGlvblRva2VuXTogcGFnaW5hdGlvblRva2VuLFxuICAgICAgICAgICAgW0FwaUVuZHBvaW50UGFyYW0uSW50ZWdyaXR5Q2hlY2tdOiBjaGVja0ludGVncml0eSxcbiAgICAgICAgICAgIFtBcGlFbmRwb2ludFBhcmFtLlN5bmNEbExpbWl0XTogbGltaXQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGNvbnRlbnRUeXBlLFxuICAgICAgICAgICAgZXZlbnQ6IGN1c3RvbUV2ZW50XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaHR0cFNlcnZpY2UucG9zdEFic29sdXRlKHVybCwgcGFyYW1zLCB0aGlzLnNlc3Npb24uYWNjZXNzVG9rZW4pLmNhdGNoKGFzeW5jIChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5odHRwU2VydmljZS5pc0Vycm9yUmVzcG9uc2VFeHBpcmVkVG9rZW4oZXJyb3JSZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWZyZXNoU2Vzc2lvblRoZW5SZXRyeVJlcXVlc3Qoe1xuICAgICAgICAgICAgICAgICAgICB2ZXJiOiBIdHRwVmVyYi5Qb3N0LFxuICAgICAgICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UoZXJyb3JSZXNwb25zZSwgbWVzc2FnZXMuQVBJX01FU1NBR0VfR0VORVJJQ19TWU5DX0ZBSUwpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgICBhc3luYyByZWZyZXNoU2Vzc2lvblRoZW5SZXRyeVJlcXVlc3QoaHR0cFJlcXVlc3QpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFNlc3Npb24oKS50aGVuKChzZXNzaW9uUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChzZXNzaW9uUmVzcG9uc2U/LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25SZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJ1bkh0dHAoe1xuICAgICAgICAgICAgICAgICAgICAuLi5odHRwUmVxdWVzdCxcbiAgICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb246IHRoaXMuc2Vzc2lvbi5hY2Nlc3NUb2tlblxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcmVmcmVzaFNlc3Npb24oKSB7XG4gICAgICAgIGlmICh0aGlzLnJlZnJlc2hpbmdTZXNzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2VzLkFQSV9NRVNTQUdFX1RPS0VOX1JFRlJFU0hfSU5fUFJPR1JFU1MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVmcmVzaGluZ1Nlc3Npb24gPSB0cnVlO1xuICAgICAgICBjb25zdCB1cmwgPSBhd2FpdCB0aGlzLnBhdGgoUkVRVUVTVF9QQVRIX1NFU1NJT05fUkVGUkVTSCk7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMucGFyYW1zKHtcbiAgICAgICAgICAgIGFjY2Vzc190b2tlbjogdGhpcy5zZXNzaW9uLmFjY2Vzc1Rva2VuLFxuICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogdGhpcy5zZXNzaW9uLnJlZnJlc2hUb2tlblxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5odHRwU2VydmljZS5wb3N0QWJzb2x1dGUodXJsLCBwYXJhbXMpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXNzaW9uID0gU2Vzc2lvbi5Gcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXRTZXNzaW9uKHNlc3Npb24pO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KS5jYXRjaCgoZXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JSZXNwb25zZVdpdGhGYWxsYmFja01lc3NhZ2UoZXJyb3JSZXNwb25zZSwgbWVzc2FnZXMuQVBJX01FU1NBR0VfR0VORVJJQ19UT0tFTl9SRUZSRVNIX0ZBSUwpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZWZyZXNoaW5nU2Vzc2lvbiA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1CQTtBQUNBO0FBQ0E7QUFyQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1QkE7QUF2QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQS9CQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9DQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdUNBO0FBQ0E7QUF4Q0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlEQTtBQUdBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBdURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXhEQTtBQUFBO0FBQUE7QUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7QUEvREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBc0VBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQTdFQTtBQUFBO0FBK0VBO0FBQ0E7QUFDQTtBQWpGQTtBQTZFQTtBQTdFQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBdUZBO0FBdkZBO0FBQUE7QUFDQTtBQURBO0FBd0ZBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUF6RkE7QUFBQTtBQWdHQTtBQUNBO0FBQ0E7QUFsR0E7QUE4RkE7QUFJQTtBQWxHQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBeUdBO0FBekdBO0FBQUE7QUFDQTtBQURBO0FBMEdBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBbEhBO0FBQUE7QUFtSEE7QUFDQTtBQUNBO0FBckhBO0FBa0hBO0FBR0E7QUFySEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXlIQTtBQXpIQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW1JQTtBQW5JQTtBQUFBO0FBQ0E7QUFEQTtBQW9JQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBcklBO0FBQUE7QUEwSUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFIQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTNJQTtBQTBJQTtBQVVBO0FBcEpBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdUpBO0FBQUE7QUFBQTtBQUNBO0FBeEpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJKQTtBQUNBO0FBQ0E7QUFBQTtBQTdKQTtBQUFBO0FBcUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBSEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF0S0E7QUFxS0E7QUFyS0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUxBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQTdMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFrTUE7QUFsTUE7QUFBQTtBQUNBO0FBREE7QUFtTUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQXBNQTtBQUFBO0FBd01BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFDQTtBQUNBO0FBL01BO0FBd01BO0FBT0E7QUEvTUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/api_service.ts\n')},"./lib/services/api/http_service.ts": /*!******************************************!*\ !*** ./lib/services/api/http_service.ts ***! \******************************************/ /*! exports provided: HttpVerb, SNHttpService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpVerb", function() { return HttpVerb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNHttpService", function() { return SNHttpService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\nvar HttpVerb;\n\n(function (HttpVerb) {\n HttpVerb["Get"] = "get";\n HttpVerb["Post"] = "post";\n HttpVerb["Patch"] = "patch";\n})(HttpVerb || (HttpVerb = {}));\n\nvar REQUEST_READY_STATE_COMPLETED = 4;\nvar HTTP_STATUS_MIN_SUCCESS = 200;\nvar HTTP_STATUS_MAX_SUCCESS = 299;\nvar HTTP_STATUS_EXPIRED_ACCESS_TOKEN = 498;\n/**\n * A non-SNJS specific wrapper for XMLHttpRequests\n */\n\nvar SNHttpService = /*#__PURE__*/function (_PureService) {\n _inherits(SNHttpService, _PureService);\n\n function SNHttpService() {\n _classCallCheck(this, SNHttpService);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(SNHttpService).apply(this, arguments));\n }\n\n _createClass(SNHttpService, [{\n key: "getAbsolute",\n value: function () {\n var _getAbsolute = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(url, params, authentication) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", this.runHttp({\n url: url,\n params: params,\n verb: HttpVerb.Get,\n authentication: authentication\n }));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAbsolute(_x, _x2, _x3) {\n return _getAbsolute.apply(this, arguments);\n }\n\n return getAbsolute;\n }()\n }, {\n key: "postAbsolute",\n value: function () {\n var _postAbsolute = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(url, params, authentication) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt("return", this.runHttp({\n url: url,\n params: params,\n verb: HttpVerb.Post,\n authentication: authentication\n }));\n\n case 1:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function postAbsolute(_x4, _x5, _x6) {\n return _postAbsolute.apply(this, arguments);\n }\n\n return postAbsolute;\n }()\n }, {\n key: "patchAbsolute",\n value: function () {\n var _patchAbsolute = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(url, params, authentication) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n return _context3.abrupt("return", this.runHttp({\n url: url,\n params: params,\n verb: HttpVerb.Patch,\n authentication: authentication\n }));\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function patchAbsolute(_x7, _x8, _x9) {\n return _patchAbsolute.apply(this, arguments);\n }\n\n return patchAbsolute;\n }()\n }, {\n key: "runHttp",\n value: function () {\n var _runHttp = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(httpRequest) {\n var request;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n request = this.createXmlRequest(httpRequest);\n return _context4.abrupt("return", this.runRequest(request, httpRequest.verb, httpRequest.params));\n\n case 2:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function runHttp(_x10) {\n return _runHttp.apply(this, arguments);\n }\n\n return runHttp;\n }()\n }, {\n key: "createXmlRequest",\n value: function createXmlRequest(httpRequest) {\n var request = new XMLHttpRequest();\n\n if (httpRequest.params && httpRequest.verb === HttpVerb.Get && Object.keys(httpRequest.params).length > 0) {\n httpRequest.url = this.urlForUrlAndParams(httpRequest.url, httpRequest.params);\n }\n\n request.open(httpRequest.verb, httpRequest.url, true);\n request.setRequestHeader(\'Content-type\', \'application/json\');\n\n if (httpRequest.authentication) {\n request.setRequestHeader(\'Authorization\', \'Bearer \' + httpRequest.authentication);\n }\n\n return request;\n }\n }, {\n key: "runRequest",\n value: function () {\n var _runRequest = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(request, verb, params) {\n var _this = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", new Promise(function (resolve, reject) {\n request.onreadystatechange = function () {\n _this.stateChangeHandlerForRequest(request, resolve, reject);\n };\n\n if (verb === HttpVerb.Post || verb === HttpVerb.Patch) {\n request.send(JSON.stringify(params));\n } else {\n request.send();\n }\n }));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n function runRequest(_x11, _x12, _x13) {\n return _runRequest.apply(this, arguments);\n }\n\n return runRequest;\n }()\n }, {\n key: "stateChangeHandlerForRequest",\n value: function stateChangeHandlerForRequest(request, resolve, reject) {\n if (request.readyState !== REQUEST_READY_STATE_COMPLETED) {\n return;\n }\n\n var httpStatus = request.status;\n var response = {\n status: httpStatus\n };\n\n try {\n var body = JSON.parse(request.responseText);\n Object.assign(response, body);\n } catch (error) {}\n\n if (httpStatus >= HTTP_STATUS_MIN_SUCCESS && httpStatus <= HTTP_STATUS_MAX_SUCCESS) {\n resolve(response);\n } else {\n if (!response.error) {\n response.error = {\n status: httpStatus\n };\n }\n\n reject(response);\n }\n }\n }, {\n key: "urlForUrlAndParams",\n value: function urlForUrlAndParams(url, params) {\n var keyValueString = Object.keys(params).map(function (key) {\n return key + \'=\' + encodeURIComponent(params[key]);\n }).join(\'&\');\n\n if (url.includes(\'?\')) {\n return url + \'&\' + keyValueString;\n } else {\n return url + \'?\' + keyValueString;\n }\n }\n }, {\n key: "isErrorResponseExpiredToken",\n value: function isErrorResponseExpiredToken(errorResponse) {\n return errorResponse.status === HTTP_STATUS_EXPIRED_ACCESS_TOKEN;\n }\n }]);\n\n return SNHttpService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL2h0dHBfc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hcGkvaHR0cF9zZXJ2aWNlLnRzPzllNTkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5leHBvcnQgdmFyIEh0dHBWZXJiO1xuKGZ1bmN0aW9uIChIdHRwVmVyYikge1xuICAgIEh0dHBWZXJiW1wiR2V0XCJdID0gXCJnZXRcIjtcbiAgICBIdHRwVmVyYltcIlBvc3RcIl0gPSBcInBvc3RcIjtcbiAgICBIdHRwVmVyYltcIlBhdGNoXCJdID0gXCJwYXRjaFwiO1xufSkoSHR0cFZlcmIgfHwgKEh0dHBWZXJiID0ge30pKTtcbmNvbnN0IFJFUVVFU1RfUkVBRFlfU1RBVEVfQ09NUExFVEVEID0gNDtcbmNvbnN0IEhUVFBfU1RBVFVTX01JTl9TVUNDRVNTID0gMjAwO1xuY29uc3QgSFRUUF9TVEFUVVNfTUFYX1NVQ0NFU1MgPSAyOTk7XG5jb25zdCBIVFRQX1NUQVRVU19FWFBJUkVEX0FDQ0VTU19UT0tFTiA9IDQ5ODtcbi8qKlxuICogQSBub24tU05KUyBzcGVjaWZpYyB3cmFwcGVyIGZvciBYTUxIdHRwUmVxdWVzdHNcbiAqL1xuZXhwb3J0IGNsYXNzIFNOSHR0cFNlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgYXN5bmMgZ2V0QWJzb2x1dGUodXJsLCBwYXJhbXMsIGF1dGhlbnRpY2F0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJ1bkh0dHAoeyB1cmwsIHBhcmFtcywgdmVyYjogSHR0cFZlcmIuR2V0LCBhdXRoZW50aWNhdGlvbiB9KTtcbiAgICB9XG4gICAgYXN5bmMgcG9zdEFic29sdXRlKHVybCwgcGFyYW1zLCBhdXRoZW50aWNhdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW5IdHRwKHsgdXJsLCBwYXJhbXMsIHZlcmI6IEh0dHBWZXJiLlBvc3QsIGF1dGhlbnRpY2F0aW9uIH0pO1xuICAgIH1cbiAgICBhc3luYyBwYXRjaEFic29sdXRlKHVybCwgcGFyYW1zLCBhdXRoZW50aWNhdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ydW5IdHRwKHsgdXJsLCBwYXJhbXMsIHZlcmI6IEh0dHBWZXJiLlBhdGNoLCBhdXRoZW50aWNhdGlvbiB9KTtcbiAgICB9XG4gICAgYXN5bmMgcnVuSHR0cChodHRwUmVxdWVzdCkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5jcmVhdGVYbWxSZXF1ZXN0KGh0dHBSZXF1ZXN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMucnVuUmVxdWVzdChyZXF1ZXN0LCBodHRwUmVxdWVzdC52ZXJiLCBodHRwUmVxdWVzdC5wYXJhbXMpO1xuICAgIH1cbiAgICBjcmVhdGVYbWxSZXF1ZXN0KGh0dHBSZXF1ZXN0KSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICAgICAgaWYgKGh0dHBSZXF1ZXN0LnBhcmFtcyAmJlxuICAgICAgICAgICAgaHR0cFJlcXVlc3QudmVyYiA9PT0gSHR0cFZlcmIuR2V0XG4gICAgICAgICAgICAmJiBPYmplY3Qua2V5cyhodHRwUmVxdWVzdC5wYXJhbXMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGh0dHBSZXF1ZXN0LnVybCA9IHRoaXMudXJsRm9yVXJsQW5kUGFyYW1zKGh0dHBSZXF1ZXN0LnVybCwgaHR0cFJlcXVlc3QucGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0Lm9wZW4oaHR0cFJlcXVlc3QudmVyYiwgaHR0cFJlcXVlc3QudXJsLCB0cnVlKTtcbiAgICAgICAgcmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xuICAgICAgICBpZiAoaHR0cFJlcXVlc3QuYXV0aGVudGljYXRpb24pIHtcbiAgICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIGh0dHBSZXF1ZXN0LmF1dGhlbnRpY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVxdWVzdDtcbiAgICB9XG4gICAgYXN5bmMgcnVuUmVxdWVzdChyZXF1ZXN0LCB2ZXJiLCBwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVDaGFuZ2VIYW5kbGVyRm9yUmVxdWVzdChyZXF1ZXN0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh2ZXJiID09PSBIdHRwVmVyYi5Qb3N0IHx8IHZlcmIgPT09IEh0dHBWZXJiLlBhdGNoKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5zZW5kKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdC5zZW5kKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0ZUNoYW5nZUhhbmRsZXJGb3JSZXF1ZXN0KHJlcXVlc3QsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAocmVxdWVzdC5yZWFkeVN0YXRlICE9PSBSRVFVRVNUX1JFQURZX1NUQVRFX0NPTVBMRVRFRCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGh0dHBTdGF0dXMgPSByZXF1ZXN0LnN0YXR1cztcbiAgICAgICAgbGV0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgc3RhdHVzOiBodHRwU3RhdHVzXG4gICAgICAgIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCk7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHJlc3BvbnNlLCBib2R5KTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHsgfVxuICAgICAgICBpZiAoKGh0dHBTdGF0dXMgPj0gSFRUUF9TVEFUVVNfTUlOX1NVQ0NFU1NcbiAgICAgICAgICAgICYmIGh0dHBTdGF0dXMgPD0gSFRUUF9TVEFUVVNfTUFYX1NVQ0NFU1MpKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5lcnJvciA9IHsgc3RhdHVzOiBodHRwU3RhdHVzIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZWplY3QocmVzcG9uc2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHVybEZvclVybEFuZFBhcmFtcyh1cmwsIHBhcmFtcykge1xuICAgICAgICBjb25zdCBrZXlWYWx1ZVN0cmluZyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocGFyYW1zW2tleV0pO1xuICAgICAgICB9KS5qb2luKCcmJyk7XG4gICAgICAgIGlmICh1cmwuaW5jbHVkZXMoJz8nKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVybCArICcmJyArIGtleVZhbHVlU3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVybCArICc/JyArIGtleVZhbHVlU3RyaW5nO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzRXJyb3JSZXNwb25zZUV4cGlyZWRUb2tlbihlcnJvclJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBlcnJvclJlc3BvbnNlLnN0YXR1cyA9PT0gSFRUUF9TVEFUVVNfRVhQSVJFRF9BQ0NFU1NfVE9LRU47XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFRQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBV0E7QUFYQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTNCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOEJBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUF4Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBaEVBO0FBQUE7QUFBQTtBQWtFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTNFQTtBQUFBO0FBQUE7QUE2RUE7QUFDQTtBQTlFQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/http_service.ts\n')},"./lib/services/api/keys.ts": /*!**********************************!*\ !*** ./lib/services/api/keys.ts ***! \**********************************/ /*! exports provided: ApiEndpointParam */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApiEndpointParam", function() { return ApiEndpointParam; });\nvar ApiEndpointParam;\n\n(function (ApiEndpointParam) {\n ApiEndpointParam["LastSyncToken"] = "sync_token";\n ApiEndpointParam["PaginationToken"] = "cursor_token";\n ApiEndpointParam["IntegrityCheck"] = "compute_integrity";\n ApiEndpointParam["IntegrityResult"] = "integrity_hash";\n ApiEndpointParam["SyncDlLimit"] = "limit";\n ApiEndpointParam["SyncPayloads"] = "items";\n ApiEndpointParam["ApiVersion"] = "api";\n})(ApiEndpointParam || (ApiEndpointParam = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL2tleXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvYXBpL2tleXMudHM/MzA4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIEFwaUVuZHBvaW50UGFyYW07XG4oZnVuY3Rpb24gKEFwaUVuZHBvaW50UGFyYW0pIHtcbiAgICBBcGlFbmRwb2ludFBhcmFtW1wiTGFzdFN5bmNUb2tlblwiXSA9IFwic3luY190b2tlblwiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJQYWdpbmF0aW9uVG9rZW5cIl0gPSBcImN1cnNvcl90b2tlblwiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJJbnRlZ3JpdHlDaGVja1wiXSA9IFwiY29tcHV0ZV9pbnRlZ3JpdHlcIjtcbiAgICBBcGlFbmRwb2ludFBhcmFtW1wiSW50ZWdyaXR5UmVzdWx0XCJdID0gXCJpbnRlZ3JpdHlfaGFzaFwiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJTeW5jRGxMaW1pdFwiXSA9IFwibGltaXRcIjtcbiAgICBBcGlFbmRwb2ludFBhcmFtW1wiU3luY1BheWxvYWRzXCJdID0gXCJpdGVtc1wiO1xuICAgIEFwaUVuZHBvaW50UGFyYW1bXCJBcGlWZXJzaW9uXCJdID0gXCJhcGlcIjtcbn0pKEFwaUVuZHBvaW50UGFyYW0gfHwgKEFwaUVuZHBvaW50UGFyYW0gPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/api/keys.ts\n')},"./lib/services/api/messages.ts": /*!**************************************!*\ !*** ./lib/services/api/messages.ts ***! \**************************************/ /*! exports provided: API_MESSAGE_GENERIC_INVALID_LOGIN, API_MESSAGE_GENERIC_REGISTRATION_FAIL, API_MESSAGE_GENERIC_CHANGE_PW_FAIL, API_MESSAGE_GENERIC_SYNC_FAIL, API_MESSAGE_REGISTRATION_IN_PROGRESS, API_MESSAGE_LOGIN_IN_PROGRESS, API_MESSAGE_CHANGE_PW_IN_PROGRESS, API_MESSAGE_FALLBACK_LOGIN_FAIL, API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL, API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS, UNSUPPORTED_PROTOCOL_VERSION, EXPIRED_PROTOCOL_VERSION, OUTDATED_PROTOCOL_VERSION, UNSUPPORTED_KEY_DERIVATION, INVALID_PASSWORD_COST, INVALID_PASSWORD, OUTDATED_PROTOCOL_ALERT_TITLE, OUTDATED_PROTOCOL_ALERT_IGNORE, InsufficientPasswordMessage, StrictSignInFailed */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_INVALID_LOGIN", function() { return API_MESSAGE_GENERIC_INVALID_LOGIN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_REGISTRATION_FAIL", function() { return API_MESSAGE_GENERIC_REGISTRATION_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_CHANGE_PW_FAIL", function() { return API_MESSAGE_GENERIC_CHANGE_PW_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_SYNC_FAIL", function() { return API_MESSAGE_GENERIC_SYNC_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_REGISTRATION_IN_PROGRESS", function() { return API_MESSAGE_REGISTRATION_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_LOGIN_IN_PROGRESS", function() { return API_MESSAGE_LOGIN_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_CHANGE_PW_IN_PROGRESS", function() { return API_MESSAGE_CHANGE_PW_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_FALLBACK_LOGIN_FAIL", function() { return API_MESSAGE_FALLBACK_LOGIN_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL", function() { return API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS", function() { return API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UNSUPPORTED_PROTOCOL_VERSION", function() { return UNSUPPORTED_PROTOCOL_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EXPIRED_PROTOCOL_VERSION", function() { return EXPIRED_PROTOCOL_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OUTDATED_PROTOCOL_VERSION", function() { return OUTDATED_PROTOCOL_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UNSUPPORTED_KEY_DERIVATION", function() { return UNSUPPORTED_KEY_DERIVATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "INVALID_PASSWORD_COST", function() { return INVALID_PASSWORD_COST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "INVALID_PASSWORD", function() { return INVALID_PASSWORD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OUTDATED_PROTOCOL_ALERT_TITLE", function() { return OUTDATED_PROTOCOL_ALERT_TITLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OUTDATED_PROTOCOL_ALERT_IGNORE", function() { return OUTDATED_PROTOCOL_ALERT_IGNORE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InsufficientPasswordMessage", function() { return InsufficientPasswordMessage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StrictSignInFailed", function() { return StrictSignInFailed; });\nvar API_MESSAGE_GENERIC_INVALID_LOGIN = \'A server error occurred while trying to sign in. Please try again.\';\nvar API_MESSAGE_GENERIC_REGISTRATION_FAIL = \'A server error occurred while trying to register. Please try again.\';\nvar API_MESSAGE_GENERIC_CHANGE_PW_FAIL = "Something went wrong while changing your password.\\n Your password was not changed. Please try again.";\nvar API_MESSAGE_GENERIC_SYNC_FAIL = \'Could not connect to server.\';\nvar API_MESSAGE_REGISTRATION_IN_PROGRESS = \'An existing registration request is already in progress.\';\nvar API_MESSAGE_LOGIN_IN_PROGRESS = \'An existing sign in request is already in progress.\';\nvar API_MESSAGE_CHANGE_PW_IN_PROGRESS = \'An existing change password request is already in progress.\';\nvar API_MESSAGE_FALLBACK_LOGIN_FAIL = \'Invalid email or password.\';\nvar API_MESSAGE_GENERIC_TOKEN_REFRESH_FAIL = "A server error occurred while trying to refresh your session.\\n Please try again.";\nvar API_MESSAGE_TOKEN_REFRESH_IN_PROGRESS = "Your account session is being renewed with the server. Please try your request again.";\nvar UNSUPPORTED_PROTOCOL_VERSION = "This version of the application does not support your\\n newer account type. Please upgrade to the latest version\\n of Standard Notes to sign in.";\nvar EXPIRED_PROTOCOL_VERSION = "The protocol version associated with your account is\\n outdated and no longer supported by this application.\\n Please visit standardnotes.org/help/security for more\\n information.";\nvar OUTDATED_PROTOCOL_VERSION = "The encryption version for your account is outdated and\\n requires upgrade. You may proceed with login, but are\\n advised to perform a security update using the web or\\n desktop application. Please visit\\n standardnotes.org/help/security for more information.";\nvar UNSUPPORTED_KEY_DERIVATION = "Your account was created on a platform with higher security\\n capabilities than this browser supports. If we attempted\\n to generate your login keys here, it would take hours. Please\\n use a browser with more up to date security capabilities,\\n like Google Chrome or Firefox, to log in.";\nvar INVALID_PASSWORD_COST = "Unable to login due to insecure password parameters.\\n Please visit standardnotes.org/help/security for\\n more information.";\nvar INVALID_PASSWORD = "Invalid password.";\nvar OUTDATED_PROTOCOL_ALERT_TITLE = \'Update Recommended\';\nvar OUTDATED_PROTOCOL_ALERT_IGNORE = \'Sign In\';\nfunction InsufficientPasswordMessage(minimum) {\n return "\\n Your password must be at least ".concat(minimum, " characters in length.\\n For your security, please choose a longer password or,\\n ideally, a passphrase, and try again.\\n ");\n}\nfunction StrictSignInFailed(current, latest) {\n return "\\n Strict Sign In has refused the server\'s sign-in parameters.\\n The latest account version is ".concat(latest, ", but the server is reporting a \\n version of ").concat(current, " for your account. If you\'d like to proceed\\n with sign in anyway, please disable Strict Sign In and try again.\\n ");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL21lc3NhZ2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2FwaS9tZXNzYWdlcy50cz8yM2VmIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBBUElfTUVTU0FHRV9HRU5FUklDX0lOVkFMSURfTE9HSU4gPSAnQSBzZXJ2ZXIgZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHNpZ24gaW4uIFBsZWFzZSB0cnkgYWdhaW4uJztcbmV4cG9ydCBjb25zdCBBUElfTUVTU0FHRV9HRU5FUklDX1JFR0lTVFJBVElPTl9GQUlMID0gJ0Egc2VydmVyIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWdpc3Rlci4gUGxlYXNlIHRyeSBhZ2Fpbi4nO1xuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFX0dFTkVSSUNfQ0hBTkdFX1BXX0ZBSUwgPSBgU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2hpbGUgY2hhbmdpbmcgeW91ciBwYXNzd29yZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgcGFzc3dvcmQgd2FzIG5vdCBjaGFuZ2VkLiBQbGVhc2UgdHJ5IGFnYWluLmA7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfR0VORVJJQ19TWU5DX0ZBSUwgPSAnQ291bGQgbm90IGNvbm5lY3QgdG8gc2VydmVyLic7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfUkVHSVNUUkFUSU9OX0lOX1BST0dSRVNTID0gJ0FuIGV4aXN0aW5nIHJlZ2lzdHJhdGlvbiByZXF1ZXN0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuJztcbmV4cG9ydCBjb25zdCBBUElfTUVTU0FHRV9MT0dJTl9JTl9QUk9HUkVTUyA9ICdBbiBleGlzdGluZyBzaWduIGluIHJlcXVlc3QgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4nO1xuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFX0NIQU5HRV9QV19JTl9QUk9HUkVTUyA9ICdBbiBleGlzdGluZyBjaGFuZ2UgcGFzc3dvcmQgcmVxdWVzdCBpcyBhbHJlYWR5IGluIHByb2dyZXNzLic7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfRkFMTEJBQ0tfTE9HSU5fRkFJTCA9ICdJbnZhbGlkIGVtYWlsIG9yIHBhc3N3b3JkLic7XG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0VfR0VORVJJQ19UT0tFTl9SRUZSRVNIX0ZBSUwgPSBgQSBzZXJ2ZXIgZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHRyeSBhZ2Fpbi5gO1xuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFX1RPS0VOX1JFRlJFU0hfSU5fUFJPR1JFU1MgPSBgWW91ciBhY2NvdW50IHNlc3Npb24gaXMgYmVpbmcgcmVuZXdlZCB3aXRoIHRoZSBzZXJ2ZXIuIFxcXG5QbGVhc2UgdHJ5IHlvdXIgcmVxdWVzdCBhZ2Fpbi5gO1xuZXhwb3J0IGNvbnN0IFVOU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT04gPSBgVGhpcyB2ZXJzaW9uIG9mIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHlvdXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2VyIGFjY291bnQgdHlwZS4gUGxlYXNlIHVwZ3JhZGUgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBTdGFuZGFyZCBOb3RlcyB0byBzaWduIGluLmA7XG5leHBvcnQgY29uc3QgRVhQSVJFRF9QUk9UT0NPTF9WRVJTSU9OID0gYFRoZSBwcm90b2NvbCB2ZXJzaW9uIGFzc29jaWF0ZWQgd2l0aCB5b3VyIGFjY291bnQgaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGRhdGVkIGFuZCBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IHRoaXMgYXBwbGljYXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGVhc2UgdmlzaXQgc3RhbmRhcmRub3Rlcy5vcmcvaGVscC9zZWN1cml0eSBmb3IgbW9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uYDtcbmV4cG9ydCBjb25zdCBPVVREQVRFRF9QUk9UT0NPTF9WRVJTSU9OID0gYFRoZSBlbmNyeXB0aW9uIHZlcnNpb24gZm9yIHlvdXIgYWNjb3VudCBpcyBvdXRkYXRlZCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzIHVwZ3JhZGUuIFlvdSBtYXkgcHJvY2VlZCB3aXRoIGxvZ2luLCBidXQgYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHZpc2VkIHRvIHBlcmZvcm0gYSBzZWN1cml0eSB1cGRhdGUgdXNpbmcgdGhlIHdlYiBvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVza3RvcCBhcHBsaWNhdGlvbi4gUGxlYXNlIHZpc2l0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFyZG5vdGVzLm9yZy9oZWxwL3NlY3VyaXR5IGZvciBtb3JlIGluZm9ybWF0aW9uLmA7XG5leHBvcnQgY29uc3QgVU5TVVBQT1JURURfS0VZX0RFUklWQVRJT04gPSBgWW91ciBhY2NvdW50IHdhcyBjcmVhdGVkIG9uIGEgcGxhdGZvcm0gd2l0aCBoaWdoZXIgc2VjdXJpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcyB0aGFuIHRoaXMgYnJvd3NlciBzdXBwb3J0cy4gSWYgd2UgYXR0ZW1wdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBnZW5lcmF0ZSB5b3VyIGxvZ2luIGtleXMgaGVyZSwgaXQgd291bGQgdGFrZSBob3Vycy4gUGxlYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgYSBicm93c2VyIHdpdGggbW9yZSB1cCB0byBkYXRlIHNlY3VyaXR5IGNhcGFiaWxpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpa2UgR29vZ2xlIENocm9tZSBvciBGaXJlZm94LCB0byBsb2cgaW4uYDtcbmV4cG9ydCBjb25zdCBJTlZBTElEX1BBU1NXT1JEX0NPU1QgPSBgVW5hYmxlIHRvIGxvZ2luIGR1ZSB0byBpbnNlY3VyZSBwYXNzd29yZCBwYXJhbWV0ZXJzLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxlYXNlIHZpc2l0IHN0YW5kYXJkbm90ZXMub3JnL2hlbHAvc2VjdXJpdHkgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLmA7XG5leHBvcnQgY29uc3QgSU5WQUxJRF9QQVNTV09SRCA9IGBJbnZhbGlkIHBhc3N3b3JkLmA7XG5leHBvcnQgY29uc3QgT1VUREFURURfUFJPVE9DT0xfQUxFUlRfVElUTEUgPSAnVXBkYXRlIFJlY29tbWVuZGVkJztcbmV4cG9ydCBjb25zdCBPVVREQVRFRF9QUk9UT0NPTF9BTEVSVF9JR05PUkUgPSAnU2lnbiBJbic7XG5leHBvcnQgZnVuY3Rpb24gSW5zdWZmaWNpZW50UGFzc3dvcmRNZXNzYWdlKG1pbmltdW0pIHtcbiAgICByZXR1cm4gYFxuICAgICAgICAgIFlvdXIgcGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCAke21pbmltdW19IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLlxuICAgICAgICAgIEZvciB5b3VyIHNlY3VyaXR5LCBwbGVhc2UgY2hvb3NlIGEgbG9uZ2VyIHBhc3N3b3JkIG9yLFxuICAgICAgICAgIGlkZWFsbHksIGEgcGFzc3BocmFzZSwgYW5kIHRyeSBhZ2Fpbi5cbiAgICAgICAgIGA7XG59XG5leHBvcnQgZnVuY3Rpb24gU3RyaWN0U2lnbkluRmFpbGVkKGN1cnJlbnQsIGxhdGVzdCkge1xuICAgIHJldHVybiBgXG4gICAgICAgICAgU3RyaWN0IFNpZ24gSW4gaGFzIHJlZnVzZWQgdGhlIHNlcnZlcidzIHNpZ24taW4gcGFyYW1ldGVycy5cbiAgICAgICAgICBUaGUgbGF0ZXN0IGFjY291bnQgdmVyc2lvbiBpcyAke2xhdGVzdH0sIGJ1dCB0aGUgc2VydmVyIGlzIHJlcG9ydGluZyBhIFxuICAgICAgICAgIHZlcnNpb24gb2YgJHtjdXJyZW50fSBmb3IgeW91ciBhY2NvdW50LiBJZiB5b3UnZCBsaWtlIHRvIHByb2NlZWRcbiAgICAgICAgICB3aXRoIHNpZ24gaW4gYW55d2F5LCBwbGVhc2UgZGlzYWJsZSBTdHJpY3QgU2lnbiBJbiBhbmQgdHJ5IGFnYWluLlxuICAgICAgICAgIGA7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFHQTtBQUlBO0FBS0E7QUFLQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFNQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/messages.ts\n')},"./lib/services/api/session.ts": /*!*************************************!*\ !*** ./lib/services/api/session.ts ***! \*************************************/ /*! exports provided: Session */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Session", function() { return Session; });\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nvar Session = /*#__PURE__*/function () {\n function Session(accessToken, expireAt, refreshToken, validUntil) {\n _classCallCheck(this, Session);\n\n this.accessToken = accessToken;\n this.expireAt = expireAt;\n this.refreshToken = refreshToken;\n this.validUntil = validUntil;\n }\n\n _createClass(Session, [{\n key: "getExpireAt",\n value: function getExpireAt() {\n return this.expireAt || 0;\n }\n }, {\n key: "canExpire",\n value: function canExpire() {\n return this.getExpireAt() > 0;\n }\n }, {\n key: "isExpired",\n value: function isExpired() {\n if (!this.canExpire()) {\n return false;\n }\n\n return this.getExpireAt() < Date.now();\n }\n }], [{\n key: "FromRaw",\n value: function FromRaw(raw) {\n return new Session(raw.accessToken, raw.expireAt, raw.refreshToken, raw.validUntil);\n }\n }, {\n key: "FromResponse",\n value: function FromResponse(response) {\n var _response$session, _response$session2, _response$session3;\n\n var accessToken = response.token;\n var expireAt = (_response$session = response.session) === null || _response$session === void 0 ? void 0 : _response$session.expire_at;\n var refreshToken = (_response$session2 = response.session) === null || _response$session2 === void 0 ? void 0 : _response$session2.refresh_token;\n var validUntil = (_response$session3 = response.session) === null || _response$session3 === void 0 ? void 0 : _response$session3.valid_until;\n return new Session(accessToken, expireAt, refreshToken, validUntil);\n }\n }]);\n\n return Session;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL3Nlc3Npb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvYXBpL3Nlc3Npb24udHM/NmUyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU2Vzc2lvbiB7XG4gICAgY29uc3RydWN0b3IoYWNjZXNzVG9rZW4sIGV4cGlyZUF0LCByZWZyZXNoVG9rZW4sIHZhbGlkVW50aWwpIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xuICAgICAgICB0aGlzLmV4cGlyZUF0ID0gZXhwaXJlQXQ7XG4gICAgICAgIHRoaXMucmVmcmVzaFRva2VuID0gcmVmcmVzaFRva2VuO1xuICAgICAgICB0aGlzLnZhbGlkVW50aWwgPSB2YWxpZFVudGlsO1xuICAgIH1cbiAgICBzdGF0aWMgRnJvbVJhdyhyYXcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXNzaW9uKHJhdy5hY2Nlc3NUb2tlbiwgcmF3LmV4cGlyZUF0LCByYXcucmVmcmVzaFRva2VuLCByYXcudmFsaWRVbnRpbCk7XG4gICAgfVxuICAgIHN0YXRpYyBGcm9tUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSByZXNwb25zZS50b2tlbjtcbiAgICAgICAgY29uc3QgZXhwaXJlQXQgPSByZXNwb25zZS5zZXNzaW9uPy5leHBpcmVfYXQ7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHJlc3BvbnNlLnNlc3Npb24/LnJlZnJlc2hfdG9rZW47XG4gICAgICAgIGNvbnN0IHZhbGlkVW50aWwgPSByZXNwb25zZS5zZXNzaW9uPy52YWxpZF91bnRpbDtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXNzaW9uKGFjY2Vzc1Rva2VuLCBleHBpcmVBdCwgcmVmcmVzaFRva2VuLCB2YWxpZFVudGlsKTtcbiAgICB9XG4gICAgZ2V0RXhwaXJlQXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4cGlyZUF0IHx8IDA7XG4gICAgfVxuICAgIGNhbkV4cGlyZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhwaXJlQXQoKSA+IDA7XG4gICAgfVxuICAgIGlzRXhwaXJlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbkV4cGlyZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RXhwaXJlQXQoKSA8IERhdGUubm93KCk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBa0JBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBcUJBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTVCQTtBQUFBO0FBQUE7QUFRQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWhCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/api/session.ts\n')},"./lib/services/api/session_manager.ts": /*!*********************************************!*\ !*** ./lib/services/api/session_manager.ts ***! \*********************************************/ /*! exports provided: MINIMUM_PASSWORD_LENGTH, SNSessionManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MINIMUM_PASSWORD_LENGTH", function() { return MINIMUM_PASSWORD_LENGTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSessionManager", function() { return SNSessionManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_services_api_session__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/services/api/session */ "./lib/services/api/session.ts");\n/* harmony import */ var _messages__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./messages */ "./lib/services/api/messages.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\nvar MINIMUM_PASSWORD_LENGTH = 8;\n/**\n * The session manager is responsible for loading initial user state, and any relevant\n * server credentials, such as the session token. It also exposes methods for registering\n * for a new account, signing into an existing one, or changing an account password.\n */\n\nvar SNSessionManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNSessionManager, _PureService);\n\n function SNSessionManager(storageService, apiService, alertService, protocolService) {\n var _this;\n\n _classCallCheck(this, SNSessionManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSessionManager).call(this));\n _this.protocolService = protocolService;\n _this.storageService = storageService;\n _this.apiService = apiService;\n _this.alertService = alertService;\n return _this;\n }\n\n _createClass(SNSessionManager, [{\n key: "deinit",\n value: function deinit() {\n this.protocolService = undefined;\n this.storageService = undefined;\n this.apiService = undefined;\n this.alertService = undefined;\n this.user = undefined;\n\n _get(_getPrototypeOf(SNSessionManager.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initializeFromDisk",\n value: function () {\n var _initializeFromDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var uuid, rawSession;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].User);\n\n case 2:\n this.user = _context.sent;\n\n if (this.user) {\n _context.next = 8;\n break;\n }\n\n _context.next = 6;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].LegacyUuid);\n\n case 6:\n uuid = _context.sent;\n\n if (uuid) {\n this.user = {\n uuid: uuid\n };\n }\n\n case 8:\n _context.next = 10;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].Session);\n\n case 10:\n rawSession = _context.sent;\n\n if (!rawSession) {\n _context.next = 14;\n break;\n }\n\n _context.next = 14;\n return this.setSession(_Lib_services_api_session__WEBPACK_IMPORTED_MODULE_4__["Session"].FromRaw(rawSession), false);\n\n case 14:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initializeFromDisk() {\n return _initializeFromDisk.apply(this, arguments);\n }\n\n return initializeFromDisk;\n }()\n }, {\n key: "setSession",\n value: function () {\n var _setSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(session) {\n var persist,\n _args2 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n persist = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;\n _context2.next = 3;\n return this.apiService.setSession(session, persist);\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setSession(_x) {\n return _setSession.apply(this, arguments);\n }\n\n return setSession;\n }()\n }, {\n key: "online",\n value: function online() {\n return !this.offline();\n }\n }, {\n key: "offline",\n value: function offline() {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_2__["isNullOrUndefined"])(this.apiService.getSession());\n }\n }, {\n key: "getUser",\n value: function getUser() {\n return this.user;\n }\n }, {\n key: "signOut",\n value: function () {\n var _signOut = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.user = undefined;\n _context3.next = 3;\n return this.apiService.getSession();\n\n case 3:\n session = _context3.sent;\n\n if (session && session.canExpire()) {\n this.apiService.signOut();\n }\n\n case 5:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function signOut() {\n return _signOut.apply(this, arguments);\n }\n\n return signOut;\n }()\n }, {\n key: "register",\n value: function () {\n var _register = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(email, password) {\n var _this2 = this;\n\n var result, serverPassword, keyParams, rootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (!(password.length < MINIMUM_PASSWORD_LENGTH)) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["InsufficientPasswordMessage"](MINIMUM_PASSWORD_LENGTH))\n });\n\n case 2:\n _context5.next = 4;\n return this.protocolService.createRootKey(email, password);\n\n case 4:\n result = _context5.sent;\n serverPassword = result.key.serverPassword;\n keyParams = result.keyParams;\n rootKey = result.key;\n return _context5.abrupt("return", this.apiService.register(email, serverPassword, keyParams).then( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return _this2.handleAuthResponse(response);\n\n case 2:\n return _context4.abrupt("return", {\n response: response,\n keyParams: keyParams,\n rootKey: rootKey\n });\n\n case 3:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function (_x4) {\n return _ref.apply(this, arguments);\n };\n }()));\n\n case 9:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function register(_x2, _x3) {\n return _register.apply(this, arguments);\n }\n\n return register;\n }()\n }, {\n key: "signIn",\n value: function () {\n var _signIn = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(email, password) {\n var _this3 = this;\n\n var strict,\n mfaKeyPath,\n mfaCode,\n paramsResponse,\n rawKeyParams,\n keyParams,\n minimum,\n message,\n confirmed,\n latest,\n _ref2,\n rootKey,\n serverPassword,\n _args7 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n strict = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : false;\n mfaKeyPath = _args7.length > 3 ? _args7[3] : undefined;\n mfaCode = _args7.length > 4 ? _args7[4] : undefined;\n _context7.next = 5;\n return this.apiService.getAccountKeyParams(email, mfaKeyPath, mfaCode);\n\n case 5:\n paramsResponse = _context7.sent;\n\n if (!paramsResponse.error) {\n _context7.next = 8;\n break;\n }\n\n return _context7.abrupt("return", {\n response: paramsResponse\n });\n\n case 8:\n rawKeyParams = {\n pw_cost: paramsResponse.pw_cost,\n pw_nonce: paramsResponse.pw_nonce,\n identifier: paramsResponse.identifier,\n email: paramsResponse.email,\n pw_salt: paramsResponse.pw_salt,\n version: paramsResponse.version\n };\n keyParams = this.protocolService.createKeyParams(rawKeyParams);\n\n if (!(!keyParams || !keyParams.version)) {\n _context7.next = 12;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_FALLBACK_LOGIN_FAIL"])\n });\n\n case 12:\n if (this.protocolService.supportedVersions().includes(keyParams.version)) {\n _context7.next = 18;\n break;\n }\n\n if (!this.protocolService.isVersionNewerThanLibraryVersion(keyParams.version)) {\n _context7.next = 17;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["UNSUPPORTED_PROTOCOL_VERSION"])\n });\n\n case 17:\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["EXPIRED_PROTOCOL_VERSION"])\n });\n\n case 18:\n if (!this.protocolService.isProtocolVersionOutdated(keyParams.version)) {\n _context7.next = 29;\n break;\n }\n\n /* Cost minimums only apply to now outdated versions (001 and 002) */\n minimum = this.protocolService.costMinimumForVersion(keyParams.version);\n\n if (!(keyParams.kdfIterations < minimum)) {\n _context7.next = 22;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["INVALID_PASSWORD_COST"])\n });\n\n case 22:\n ;\n message = _messages__WEBPACK_IMPORTED_MODULE_5__["OUTDATED_PROTOCOL_VERSION"];\n _context7.next = 26;\n return this.alertService.confirm(message, _messages__WEBPACK_IMPORTED_MODULE_5__["OUTDATED_PROTOCOL_ALERT_TITLE"], _messages__WEBPACK_IMPORTED_MODULE_5__["OUTDATED_PROTOCOL_ALERT_IGNORE"]).catch(function () {\n /* No-op */\n });\n\n case 26:\n confirmed = _context7.sent;\n\n if (confirmed) {\n _context7.next = 29;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["API_MESSAGE_FALLBACK_LOGIN_FAIL"])\n });\n\n case 29:\n if (this.protocolService.platformSupportsKeyDerivation(keyParams)) {\n _context7.next = 31;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["UNSUPPORTED_KEY_DERIVATION"])\n });\n\n case 31:\n if (!strict) {\n _context7.next = 35;\n break;\n }\n\n latest = this.protocolService.getLatestVersion();\n\n if (!(keyParams.version !== latest)) {\n _context7.next = 35;\n break;\n }\n\n return _context7.abrupt("return", {\n response: this.apiService.createErrorResponse(_messages__WEBPACK_IMPORTED_MODULE_5__["StrictSignInFailed"](keyParams.version, latest))\n });\n\n case 35:\n _context7.next = 37;\n return this.protocolService.computeRootKey(password, keyParams).then(function (rootKey) {\n return {\n rootKey: rootKey,\n serverPassword: rootKey.serverPassword\n };\n });\n\n case 37:\n _ref2 = _context7.sent;\n rootKey = _ref2.rootKey;\n serverPassword = _ref2.serverPassword;\n return _context7.abrupt("return", this.apiService.signIn(email, serverPassword, mfaKeyPath, mfaCode).then( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return _this3.handleAuthResponse(response);\n\n case 2:\n return _context6.abrupt("return", {\n response: response,\n keyParams: keyParams,\n rootKey: rootKey\n });\n\n case 3:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n\n return function (_x7) {\n return _ref3.apply(this, arguments);\n };\n }()));\n\n case 41:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function signIn(_x5, _x6) {\n return _signIn.apply(this, arguments);\n }\n\n return signIn;\n }()\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(currentServerPassword, newServerPassword, newKeyParams) {\n var response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.apiService.changePassword(currentServerPassword, newServerPassword, newKeyParams);\n\n case 2:\n response = _context8.sent;\n _context8.next = 5;\n return this.handleAuthResponse(response);\n\n case 5:\n return _context8.abrupt("return", response);\n\n case 6:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function changePassword(_x8, _x9, _x10) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }, {\n key: "handleAuthResponse",\n value: function () {\n var _handleAuthResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(response) {\n var user, session;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (!response.error) {\n _context9.next = 2;\n break;\n }\n\n return _context9.abrupt("return");\n\n case 2:\n user = response.user;\n this.user = user;\n _context9.next = 6;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_3__["StorageKey"].User, user);\n\n case 6:\n if (!response.token) {\n _context9.next = 10;\n break;\n }\n\n session = _Lib_services_api_session__WEBPACK_IMPORTED_MODULE_4__["Session"].FromResponse(response);\n _context9.next = 10;\n return this.setSession(session);\n\n case 10:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function handleAuthResponse(_x11) {\n return _handleAuthResponse.apply(this, arguments);\n }\n\n return handleAuthResponse;\n }()\n }]);\n\n return SNSessionManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBpL3Nlc3Npb25fbWFuYWdlci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hcGkvc2Vzc2lvbl9tYW5hZ2VyLnRzP2VjOTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tICdATGliL3NlcnZpY2VzL2FwaS9zZXNzaW9uJztcbmltcG9ydCAqIGFzIG1lc3NhZ2VzIGZyb20gJy4vbWVzc2FnZXMnO1xuZXhwb3J0IGNvbnN0IE1JTklNVU1fUEFTU1dPUkRfTEVOR1RIID0gODtcbi8qKlxuICogVGhlIHNlc3Npb24gbWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgbG9hZGluZyBpbml0aWFsIHVzZXIgc3RhdGUsIGFuZCBhbnkgcmVsZXZhbnRcbiAqIHNlcnZlciBjcmVkZW50aWFscywgc3VjaCBhcyB0aGUgc2Vzc2lvbiB0b2tlbi4gSXQgYWxzbyBleHBvc2VzIG1ldGhvZHMgZm9yIHJlZ2lzdGVyaW5nXG4gKiBmb3IgYSBuZXcgYWNjb3VudCwgc2lnbmluZyBpbnRvIGFuIGV4aXN0aW5nIG9uZSwgb3IgY2hhbmdpbmcgYW4gYWNjb3VudCBwYXNzd29yZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOU2Vzc2lvbk1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3Ioc3RvcmFnZVNlcnZpY2UsIGFwaVNlcnZpY2UsIGFsZXJ0U2VydmljZSwgcHJvdG9jb2xTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gc3RvcmFnZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuYXBpU2VydmljZSA9IGFwaVNlcnZpY2U7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gYWxlcnRTZXJ2aWNlO1xuICAgIH1cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnVzZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplRnJvbURpc2soKSB7XG4gICAgICAgIHRoaXMudXNlciA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5Vc2VyKTtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXIpIHtcbiAgICAgICAgICAgIC8qKiBAbGVnYWN5IENoZWNrIGZvciB1dWlkLiAqL1xuICAgICAgICAgICAgY29uc3QgdXVpZCA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5MZWdhY3lVdWlkKTtcbiAgICAgICAgICAgIGlmICh1dWlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyID0geyB1dWlkOiB1dWlkIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3U2Vzc2lvbiA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5TZXNzaW9uKTtcbiAgICAgICAgaWYgKHJhd1Nlc3Npb24pIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2Vzc2lvbihTZXNzaW9uLkZyb21SYXcocmF3U2Vzc2lvbiksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzZXRTZXNzaW9uKHNlc3Npb24sIHBlcnNpc3QgPSB0cnVlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYXBpU2VydmljZS5zZXRTZXNzaW9uKHNlc3Npb24sIHBlcnNpc3QpO1xuICAgIH1cbiAgICBvbmxpbmUoKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5vZmZsaW5lKCk7XG4gICAgfVxuICAgIG9mZmxpbmUoKSB7XG4gICAgICAgIHJldHVybiBpc051bGxPclVuZGVmaW5lZCh0aGlzLmFwaVNlcnZpY2UuZ2V0U2Vzc2lvbigpKTtcbiAgICB9XG4gICAgZ2V0VXNlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXNlcjtcbiAgICB9XG4gICAgYXN5bmMgc2lnbk91dCgpIHtcbiAgICAgICAgdGhpcy51c2VyID0gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBzZXNzaW9uID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLmdldFNlc3Npb24oKTtcbiAgICAgICAgaWYgKHNlc3Npb24gJiYgc2Vzc2lvbi5jYW5FeHBpcmUoKSkge1xuICAgICAgICAgICAgdGhpcy5hcGlTZXJ2aWNlLnNpZ25PdXQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyByZWdpc3RlcihlbWFpbCwgcGFzc3dvcmQpIHtcbiAgICAgICAgaWYgKHBhc3N3b3JkLmxlbmd0aCA8IE1JTklNVU1fUEFTU1dPUkRfTEVOR1RIKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5JbnN1ZmZpY2llbnRQYXNzd29yZE1lc3NhZ2UoTUlOSU1VTV9QQVNTV09SRF9MRU5HVEgpKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByb3RvY29sU2VydmljZS5jcmVhdGVSb290S2V5KGVtYWlsLCBwYXNzd29yZCk7XG4gICAgICAgIGNvbnN0IHNlcnZlclBhc3N3b3JkID0gcmVzdWx0LmtleS5zZXJ2ZXJQYXNzd29yZDtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gcmVzdWx0LmtleVBhcmFtcztcbiAgICAgICAgY29uc3Qgcm9vdEtleSA9IHJlc3VsdC5rZXk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucmVnaXN0ZXIoZW1haWwsIHNlcnZlclBhc3N3b3JkLCBrZXlQYXJhbXMpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUF1dGhSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZSxcbiAgICAgICAgICAgICAgICBrZXlQYXJhbXM6IGtleVBhcmFtcyxcbiAgICAgICAgICAgICAgICByb290S2V5OiByb290S2V5XG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgc2lnbkluKGVtYWlsLCBwYXNzd29yZCwgc3RyaWN0ID0gZmFsc2UsIG1mYUtleVBhdGgsIG1mYUNvZGUpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmFwaVNlcnZpY2UuZ2V0QWNjb3VudEtleVBhcmFtcyhlbWFpbCwgbWZhS2V5UGF0aCwgbWZhQ29kZSk7XG4gICAgICAgIGlmIChwYXJhbXNSZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZTogcGFyYW1zUmVzcG9uc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3S2V5UGFyYW1zID0ge1xuICAgICAgICAgICAgcHdfY29zdDogcGFyYW1zUmVzcG9uc2UucHdfY29zdCxcbiAgICAgICAgICAgIHB3X25vbmNlOiBwYXJhbXNSZXNwb25zZS5wd19ub25jZSxcbiAgICAgICAgICAgIGlkZW50aWZpZXI6IHBhcmFtc1Jlc3BvbnNlLmlkZW50aWZpZXIsXG4gICAgICAgICAgICBlbWFpbDogcGFyYW1zUmVzcG9uc2UuZW1haWwsXG4gICAgICAgICAgICBwd19zYWx0OiBwYXJhbXNSZXNwb25zZS5wd19zYWx0LFxuICAgICAgICAgICAgdmVyc2lvbjogcGFyYW1zUmVzcG9uc2UudmVyc2lvblxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBrZXlQYXJhbXMgPSB0aGlzLnByb3RvY29sU2VydmljZS5jcmVhdGVLZXlQYXJhbXMocmF3S2V5UGFyYW1zKTtcbiAgICAgICAgaWYgKCFrZXlQYXJhbXMgfHwgIWtleVBhcmFtcy52ZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9GQUxMQkFDS19MT0dJTl9GQUlMKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMucHJvdG9jb2xTZXJ2aWNlLnN1cHBvcnRlZFZlcnNpb25zKCkuaW5jbHVkZXMoa2V5UGFyYW1zLnZlcnNpb24pKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm90b2NvbFNlcnZpY2UuaXNWZXJzaW9uTmV3ZXJUaGFuTGlicmFyeVZlcnNpb24oa2V5UGFyYW1zLnZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRoaXMuYXBpU2VydmljZS5jcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2VzLlVOU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT04pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5FWFBJUkVEX1BST1RPQ09MX1ZFUlNJT04pXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5wcm90b2NvbFNlcnZpY2UuaXNQcm90b2NvbFZlcnNpb25PdXRkYXRlZChrZXlQYXJhbXMudmVyc2lvbikpIHtcbiAgICAgICAgICAgIC8qIENvc3QgbWluaW11bXMgb25seSBhcHBseSB0byBub3cgb3V0ZGF0ZWQgdmVyc2lvbnMgKDAwMSBhbmQgMDAyKSAqL1xuICAgICAgICAgICAgY29uc3QgbWluaW11bSA9IHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNvc3RNaW5pbXVtRm9yVmVyc2lvbihrZXlQYXJhbXMudmVyc2lvbik7XG4gICAgICAgICAgICBpZiAoa2V5UGFyYW1zLmtkZkl0ZXJhdGlvbnMgPCBtaW5pbXVtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2U6IHRoaXMuYXBpU2VydmljZS5jcmVhdGVFcnJvclJlc3BvbnNlKG1lc3NhZ2VzLklOVkFMSURfUEFTU1dPUkRfQ09TVClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgO1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VzLk9VVERBVEVEX1BST1RPQ09MX1ZFUlNJT047XG4gICAgICAgICAgICBjb25zdCBjb25maXJtZWQgPSBhd2FpdCB0aGlzLmFsZXJ0U2VydmljZS5jb25maXJtKG1lc3NhZ2UsIG1lc3NhZ2VzLk9VVERBVEVEX1BST1RPQ09MX0FMRVJUX1RJVExFLCBtZXNzYWdlcy5PVVREQVRFRF9QUk9UT0NPTF9BTEVSVF9JR05PUkUpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAvKiBOby1vcCAqL1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5BUElfTUVTU0FHRV9GQUxMQkFDS19MT0dJTl9GQUlMKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb3RvY29sU2VydmljZS5wbGF0Zm9ybVN1cHBvcnRzS2V5RGVyaXZhdGlvbihrZXlQYXJhbXMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlOiB0aGlzLmFwaVNlcnZpY2UuY3JlYXRlRXJyb3JSZXNwb25zZShtZXNzYWdlcy5VTlNVUFBPUlRFRF9LRVlfREVSSVZBVElPTilcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0cmljdCkge1xuICAgICAgICAgICAgY29uc3QgbGF0ZXN0ID0gdGhpcy5wcm90b2NvbFNlcnZpY2UuZ2V0TGF0ZXN0VmVyc2lvbigpO1xuICAgICAgICAgICAgaWYgKGtleVBhcmFtcy52ZXJzaW9uICE9PSBsYXRlc3QpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogdGhpcy5hcGlTZXJ2aWNlLmNyZWF0ZUVycm9yUmVzcG9uc2UobWVzc2FnZXMuU3RyaWN0U2lnbkluRmFpbGVkKGtleVBhcmFtcy52ZXJzaW9uLCBsYXRlc3QpKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyByb290S2V5LCBzZXJ2ZXJQYXNzd29yZCB9ID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuY29tcHV0ZVJvb3RLZXkocGFzc3dvcmQsIGtleVBhcmFtcykudGhlbigocm9vdEtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByb290S2V5OiByb290S2V5LFxuICAgICAgICAgICAgICAgIHNlcnZlclBhc3N3b3JkOiByb290S2V5LnNlcnZlclBhc3N3b3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5zaWduSW4oZW1haWwsIHNlcnZlclBhc3N3b3JkLCBtZmFLZXlQYXRoLCBtZmFDb2RlKS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVBdXRoUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZTogcmVzcG9uc2UsXG4gICAgICAgICAgICAgICAga2V5UGFyYW1zOiBrZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgcm9vdEtleTogcm9vdEtleVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZVBhc3N3b3JkKGN1cnJlbnRTZXJ2ZXJQYXNzd29yZCwgbmV3U2VydmVyUGFzc3dvcmQsIG5ld0tleVBhcmFtcykge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuYXBpU2VydmljZS5jaGFuZ2VQYXNzd29yZChjdXJyZW50U2VydmVyUGFzc3dvcmQsIG5ld1NlcnZlclBhc3N3b3JkLCBuZXdLZXlQYXJhbXMpO1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUF1dGhSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlQXV0aFJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVzZXIgPSByZXNwb25zZS51c2VyO1xuICAgICAgICB0aGlzLnVzZXIgPSB1c2VyO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuVXNlciwgdXNlcik7XG4gICAgICAgIC8qXG4gICAgICAgICAgVGhlIHRva2VuIGZyb20gcmVzcG9uc2UgY2FuIGJlIHVuZGVmaW5lZCBpZiB0aGUgdXNlciBpcyB1c2luZyBzZXNzaW9uIHRva2VucyAocHJvdG9jb2wgdmVyc2lvbiA+PSAwMDQpLlxuICAgICAgICAgIFdlIHNob3VsZCBjYWxsIHNldFNlc3Npb24gb25seSBpZiB0aGUgc2Vzc2lvbiBpcyB1cGRhdGVkIHdpdGggYSBuZXcgdG9rZW4uXG4gICAgICAgICovXG4gICAgICAgIGlmIChyZXNwb25zZS50b2tlbikge1xuICAgICAgICAgICAgY29uc3Qgc2Vzc2lvbiA9IFNlc3Npb24uRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0U2Vzc2lvbihzZXNzaW9uKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQU1BO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpQkE7QUFDQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFvQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBeUJBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThCQTtBQTlCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0NBO0FBQ0E7QUFuQ0E7QUFBQTtBQUFBO0FBcUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBd0NBO0FBQ0E7QUF6Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkNBO0FBM0NBO0FBQUE7QUFDQTtBQURBO0FBNENBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQWhEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW9EQTtBQURBO0FBQ0E7QUFwREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXVEQTtBQUNBO0FBQ0E7QUFDQTtBQTFEQTtBQTJEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTVEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFvRUE7QUFBQTtBQUFBO0FBcEVBO0FBQUE7QUFDQTtBQURBO0FBcUVBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBd0VBO0FBREE7QUFDQTtBQXhFQTtBQTJFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTtBQXBGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzRkE7QUFEQTtBQUNBO0FBdEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTRGQTtBQURBO0FBQ0E7QUE1RkE7QUFBQTtBQWlHQTtBQURBO0FBQ0E7QUFqR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcUdBO0FBQ0E7QUFDQTtBQXhHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUEwR0E7QUFEQTtBQUNBO0FBMUdBO0FBNkdBO0FBQ0E7QUE5R0E7QUFBQTtBQWdIQTtBQUNBO0FBQ0E7QUFsSEE7QUErR0E7QUFDQTtBQWhIQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFvSEE7QUFEQTtBQUNBO0FBcEhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBMEhBO0FBREE7QUFDQTtBQTFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE2SEE7QUFDQTtBQS9IQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpSUE7QUFEQTtBQUNBO0FBaklBO0FBQUE7QUFBQTtBQXNJQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUEzSUE7QUFBQTtBQXFJQTtBQUFBO0FBcklBO0FBMklBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBSEE7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXFKQTtBQXJKQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTZKQTtBQUNBO0FBOUpBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQW9LQTtBQXJLQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/api/session_manager.ts\n')},"./lib/services/application_service.ts": /*!*********************************************!*\ !*** ./lib/services/application_service.ts ***! \*********************************************/ /*! exports provided: ApplicationService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(setImmediate) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApplicationService", function() { return ApplicationService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\nvar ApplicationService = /*#__PURE__*/function (_PureService) {\n _inherits(ApplicationService, _PureService);\n\n function ApplicationService(application) {\n var _this;\n\n _classCallCheck(this, ApplicationService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ApplicationService).call(this));\n _this.application = application;\n /* Allow caller constructor to finish setting instance variables before triggering callbacks */\n\n setImmediate(function () {\n _this.addAppEventObserver();\n });\n return _this;\n }\n\n _createClass(ApplicationService, [{\n key: "deinit",\n value: function deinit() {\n this.application = undefined;\n this.unsubApp();\n this.unsubApp = undefined;\n\n _get(_getPrototypeOf(ApplicationService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "addAppEventObserver",\n value: function addAppEventObserver() {\n var _this2 = this;\n\n if (this.application.isStarted()) {\n this.onAppStart();\n }\n\n if (this.application.isLaunched()) {\n this.onAppLaunch();\n }\n\n this.unsubApp = this.application.addEventObserver( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(event) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this2.onAppEvent(event);\n\n if (!(event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].Started)) {\n _context.next = 6;\n break;\n }\n\n _context.next = 4;\n return _this2.onAppStart();\n\n case 4:\n _context.next = 12;\n break;\n\n case 6:\n if (!(event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].Launched)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 9;\n return _this2.onAppLaunch();\n\n case 9:\n _context.next = 12;\n break;\n\n case 11:\n if (event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].CompletedFullSync) {\n _this2.onAppFullSync();\n } else if (event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].CompletedIncrementalSync) {\n _this2.onAppIncrementalSync();\n } else if (event === _Lib_events__WEBPACK_IMPORTED_MODULE_2__["ApplicationEvent"].KeyStatusChanged) {\n _this2.onAppKeyChange();\n }\n\n case 12:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n }, {\n key: "onAppEvent",\n value: function onAppEvent(event) {\n /** Optional override */\n }\n }, {\n key: "onAppStart",\n value: function () {\n var _onAppStart = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function onAppStart() {\n return _onAppStart.apply(this, arguments);\n }\n\n return onAppStart;\n }()\n }, {\n key: "onAppLaunch",\n value: function () {\n var _onAppLaunch = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function onAppLaunch() {\n return _onAppLaunch.apply(this, arguments);\n }\n\n return onAppLaunch;\n }()\n }, {\n key: "onAppKeyChange",\n value: function () {\n var _onAppKeyChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function onAppKeyChange() {\n return _onAppKeyChange.apply(this, arguments);\n }\n\n return onAppKeyChange;\n }()\n }, {\n key: "onAppIncrementalSync",\n value: function onAppIncrementalSync() {\n /** Optional override */\n }\n }, {\n key: "onAppFullSync",\n value: function onAppFullSync() {\n /** Optional override */\n }\n }]);\n\n return ApplicationService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/timers-browserify/main.js */ "./node_modules/timers-browserify/main.js").setImmediate))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvYXBwbGljYXRpb25fc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9hcHBsaWNhdGlvbl9zZXJ2aWNlLnRzP2MyYzEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uRXZlbnQgfSBmcm9tICdATGliL2V2ZW50cyc7XG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25TZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGFwcGxpY2F0aW9uKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbjtcbiAgICAgICAgLyogQWxsb3cgY2FsbGVyIGNvbnN0cnVjdG9yIHRvIGZpbmlzaCBzZXR0aW5nIGluc3RhbmNlIHZhcmlhYmxlcyBiZWZvcmUgdHJpZ2dlcmluZyBjYWxsYmFja3MgKi9cbiAgICAgICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkQXBwRXZlbnRPYnNlcnZlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnVuc3ViQXBwKCk7XG4gICAgICAgIHRoaXMudW5zdWJBcHAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhZGRBcHBFdmVudE9ic2VydmVyKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbi5pc1N0YXJ0ZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5vbkFwcFN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuYXBwbGljYXRpb24uaXNMYXVuY2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLm9uQXBwTGF1bmNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51bnN1YkFwcCA9IHRoaXMuYXBwbGljYXRpb24uYWRkRXZlbnRPYnNlcnZlcihhc3luYyAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25BcHBFdmVudChldmVudCk7XG4gICAgICAgICAgICBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuU3RhcnRlZCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMub25BcHBTdGFydCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuTGF1bmNoZWQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLm9uQXBwTGF1bmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChldmVudCA9PT0gQXBwbGljYXRpb25FdmVudC5Db21wbGV0ZWRGdWxsU3luYykge1xuICAgICAgICAgICAgICAgIHRoaXMub25BcHBGdWxsU3luYygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuQ29tcGxldGVkSW5jcmVtZW50YWxTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFwcEluY3JlbWVudGFsU3luYygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IEFwcGxpY2F0aW9uRXZlbnQuS2V5U3RhdHVzQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25BcHBLZXlDaGFuZ2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uQXBwRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgLyoqIE9wdGlvbmFsIG92ZXJyaWRlICovXG4gICAgfVxuICAgIGFzeW5jIG9uQXBwU3RhcnQoKSB7XG4gICAgICAgIC8qKiBPcHRpb25hbCBvdmVycmlkZSAqL1xuICAgIH1cbiAgICBhc3luYyBvbkFwcExhdW5jaCgpIHtcbiAgICAgICAgLyoqIE9wdGlvbmFsIG92ZXJyaWRlICovXG4gICAgfVxuICAgIGFzeW5jIG9uQXBwS2V5Q2hhbmdlKCkge1xuICAgICAgICAvKiogT3B0aW9uYWwgb3ZlcnJpZGUgKi9cbiAgICB9XG4gICAgb25BcHBJbmNyZW1lbnRhbFN5bmMoKSB7XG4gICAgICAgIC8qKiBPcHRpb25hbCBvdmVycmlkZSAqL1xuICAgIH1cbiAgICBvbkFwcEZ1bGxTeW5jKCkge1xuICAgICAgICAvKiogT3B0aW9uYWwgb3ZlcnJpZGUgKi9cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBZUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFqQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBa0JBO0FBeENBO0FBQUE7QUFBQTtBQTBDQTtBQUNBO0FBM0NBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNEQTtBQUNBO0FBdkRBO0FBQUE7QUFBQTtBQXlEQTtBQUNBO0FBMURBO0FBQ0E7QUFEQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/application_service.ts\n')},"./lib/services/challenge/challenge_operation.ts": /*!*******************************************************!*\ !*** ./lib/services/challenge/challenge_operation.ts ***! \*******************************************************/ /*! exports provided: ChallengeOperation */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeOperation", function() { return ChallengeOperation; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_challenges__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/challenges */ "./lib/challenges.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n/**\n * A challenge operation stores user-submitted values and callbacks.\n * When its values are updated, it will trigger the associated callbacks (valid/invalid/complete)\n */\n\nvar ChallengeOperation = /*#__PURE__*/function () {\n /**\n * @param resolve the promise resolve function to be called\n * when this challenge completes or cancels\n */\n function ChallengeOperation(challenge, resolve) {\n _classCallCheck(this, ChallengeOperation);\n\n this.challenge = challenge;\n this.resolve = resolve;\n this.validValues = [];\n this.invalidValues = [];\n this.artifacts = {};\n }\n /**\n * Mark this challenge as complete, triggering the resolve function,\n * as well as notifying the client\n */\n\n\n _createClass(ChallengeOperation, [{\n key: "complete",\n value: function complete(response) {\n var _this$resolve, _this$onComplete;\n\n if (!response) {\n response = new _Lib_challenges__WEBPACK_IMPORTED_MODULE_1__["ChallengeResponse"](this.challenge, this.validValues, this.artifacts);\n }\n\n (_this$resolve = this.resolve) === null || _this$resolve === void 0 ? void 0 : _this$resolve.call(this, response);\n (_this$onComplete = this.onComplete) === null || _this$onComplete === void 0 ? void 0 : _this$onComplete.call(this);\n }\n }, {\n key: "cancel",\n value: function cancel() {\n var _this$resolve2, _this$onCancel;\n\n (_this$resolve2 = this.resolve) === null || _this$resolve2 === void 0 ? void 0 : _this$resolve2.call(this, null);\n (_this$onCancel = this.onCancel) === null || _this$onCancel === void 0 ? void 0 : _this$onCancel.call(this);\n }\n /**\n * @returns Returns true if the challenge has received all valid responses\n */\n\n }, {\n key: "isFinished",\n value: function isFinished() {\n return this.validValues.length === this.challenge.types.length;\n }\n /**\n * Sets the values validation status, as well as handles subsequent actions,\n * such as completing the operation if all valid values are supplied, as well as\n * notifying the client of this new value\'s validation status.\n */\n\n }, {\n key: "setValueStatus",\n value: function setValueStatus(value, valid, artifacts) {\n var valuesArray = valid ? this.validValues : this.invalidValues;\n var matching = valuesArray.find(function (v) {\n return v.type === value.type;\n });\n\n if (matching) {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["removeFromArray"])(valuesArray, matching);\n }\n\n valuesArray.push(value);\n Object.assign(this.artifacts, artifacts);\n\n if (this.isFinished()) {\n this.complete();\n } else {\n if (valid) {\n var _this$onValidValue;\n\n (_this$onValidValue = this.onValidValue) === null || _this$onValidValue === void 0 ? void 0 : _this$onValidValue.call(this, value);\n } else {\n var _this$onInvalidValue;\n\n (_this$onInvalidValue = this.onInvalidValue) === null || _this$onInvalidValue === void 0 ? void 0 : _this$onInvalidValue.call(this, value);\n }\n }\n }\n }]);\n\n return ChallengeOperation;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvY2hhbGxlbmdlL2NoYWxsZW5nZV9vcGVyYXRpb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvY2hhbGxlbmdlL2NoYWxsZW5nZV9vcGVyYXRpb24udHM/NmViNyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW1vdmVGcm9tQXJyYXkgfSBmcm9tIFwiQExpYi91dGlsc1wiO1xuaW1wb3J0IHsgQ2hhbGxlbmdlUmVzcG9uc2UsIH0gZnJvbSBcIkBMaWIvY2hhbGxlbmdlc1wiO1xuLyoqXG4gKiBBIGNoYWxsZW5nZSBvcGVyYXRpb24gc3RvcmVzIHVzZXItc3VibWl0dGVkIHZhbHVlcyBhbmQgY2FsbGJhY2tzLlxuICogV2hlbiBpdHMgdmFsdWVzIGFyZSB1cGRhdGVkLCBpdCB3aWxsIHRyaWdnZXIgdGhlIGFzc29jaWF0ZWQgY2FsbGJhY2tzICh2YWxpZC9pbnZhbGlkL2NvbXBsZXRlKVxuICovXG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlT3BlcmF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVzb2x2ZSB0aGUgcHJvbWlzZSByZXNvbHZlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZFxuICAgICAqIHdoZW4gdGhpcyBjaGFsbGVuZ2UgY29tcGxldGVzIG9yIGNhbmNlbHNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihjaGFsbGVuZ2UsIHJlc29sdmUpIHtcbiAgICAgICAgdGhpcy5jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7XG4gICAgICAgIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHRoaXMudmFsaWRWYWx1ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5pbnZhbGlkVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMuYXJ0aWZhY3RzID0ge307XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcmsgdGhpcyBjaGFsbGVuZ2UgYXMgY29tcGxldGUsIHRyaWdnZXJpbmcgdGhlIHJlc29sdmUgZnVuY3Rpb24sXG4gICAgICogYXMgd2VsbCBhcyBub3RpZnlpbmcgdGhlIGNsaWVudFxuICAgICAqL1xuICAgIGNvbXBsZXRlKHJlc3BvbnNlKSB7XG4gICAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHJlc3BvbnNlID0gbmV3IENoYWxsZW5nZVJlc3BvbnNlKHRoaXMuY2hhbGxlbmdlLCB0aGlzLnZhbGlkVmFsdWVzLCB0aGlzLmFydGlmYWN0cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNvbHZlPy4ocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLm9uQ29tcGxldGU/LigpO1xuICAgIH1cbiAgICBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMucmVzb2x2ZT8uKG51bGwpO1xuICAgICAgICB0aGlzLm9uQ2FuY2VsPy4oKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgUmV0dXJucyB0cnVlIGlmIHRoZSBjaGFsbGVuZ2UgaGFzIHJlY2VpdmVkIGFsbCB2YWxpZCByZXNwb25zZXNcbiAgICAgKi9cbiAgICBpc0ZpbmlzaGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy52YWxpZFZhbHVlcy5sZW5ndGggPT09IHRoaXMuY2hhbGxlbmdlLnR5cGVzLmxlbmd0aDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmFsdWVzIHZhbGlkYXRpb24gc3RhdHVzLCBhcyB3ZWxsIGFzIGhhbmRsZXMgc3Vic2VxdWVudCBhY3Rpb25zLFxuICAgICAqIHN1Y2ggYXMgY29tcGxldGluZyB0aGUgb3BlcmF0aW9uIGlmIGFsbCB2YWxpZCB2YWx1ZXMgYXJlIHN1cHBsaWVkLCBhcyB3ZWxsIGFzXG4gICAgICogbm90aWZ5aW5nIHRoZSBjbGllbnQgb2YgdGhpcyBuZXcgdmFsdWUncyB2YWxpZGF0aW9uIHN0YXR1cy5cbiAgICAgKi9cbiAgICBzZXRWYWx1ZVN0YXR1cyh2YWx1ZSwgdmFsaWQsIGFydGlmYWN0cykge1xuICAgICAgICBjb25zdCB2YWx1ZXNBcnJheSA9IHZhbGlkID8gdGhpcy52YWxpZFZhbHVlcyA6IHRoaXMuaW52YWxpZFZhbHVlcztcbiAgICAgICAgY29uc3QgbWF0Y2hpbmcgPSB2YWx1ZXNBcnJheS5maW5kKCh2KSA9PiB2LnR5cGUgPT09IHZhbHVlLnR5cGUpO1xuICAgICAgICBpZiAobWF0Y2hpbmcpIHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh2YWx1ZXNBcnJheSwgbWF0Y2hpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlc0FycmF5LnB1c2godmFsdWUpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuYXJ0aWZhY3RzLCBhcnRpZmFjdHMpO1xuICAgICAgICBpZiAodGhpcy5pc0ZpbmlzaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25WYWxpZFZhbHVlPy4odmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkludmFsaWRWYWx1ZT8uKHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBOzs7O0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQVpBO0FBQUE7QUFBQTtBQWdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUF0QkE7QUFBQTtBQUFBO0FBdUJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7OztBQTNCQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQUNBOzs7Ozs7QUFqQ0E7QUFBQTtBQUFBO0FBdUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/challenge/challenge_operation.ts\n')},"./lib/services/challenge/challenge_service.ts": /*!*****************************************************!*\ !*** ./lib/services/challenge/challenge_service.ts ***! \*****************************************************/ /*! exports provided: ChallengeService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChallengeService", function() { return ChallengeService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Services_storage_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/challenges */ "./lib/challenges.ts");\n/* harmony import */ var _challenge_operation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./challenge_operation */ "./lib/services/challenge/challenge_operation.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n/**\n * The challenge service creates, updates and keeps track of running challenge operations.\n */\n\nvar ChallengeService = /*#__PURE__*/function (_PureService) {\n _inherits(ChallengeService, _PureService);\n\n function ChallengeService(storageService, protocolService) {\n var _this;\n\n _classCallCheck(this, ChallengeService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ChallengeService).call(this));\n _this.challengeOperations = {};\n _this.storageService = storageService;\n _this.protocolService = protocolService;\n return _this;\n }\n /** @override */\n\n\n _createClass(ChallengeService, [{\n key: "deinit",\n value: function deinit() {\n this.storageService = undefined;\n this.protocolService = undefined;\n this.sendChallenge = undefined;\n\n _get(_getPrototypeOf(ChallengeService.prototype), "deinit", this).call(this);\n }\n /**\n * Resolves when the challenge has been completed.\n */\n\n }, {\n key: "promptForChallengeResponse",\n value: function promptForChallengeResponse(challenge) {\n var _this2 = this;\n\n return new Promise(function (resolve) {\n _this2.createOrGetChallengeOperation(challenge, resolve);\n });\n }\n /**\n * Resolves when the user has submitted values which the caller can use\n * to run custom validations.\n */\n\n }, {\n key: "promptForChallengeResponseWithCustomValidation",\n value: function promptForChallengeResponseWithCustomValidation(challenge) {\n var operation = this.createOrGetChallengeOperation(challenge);\n return new Promise(function (resolve) {\n operation.customValidator = resolve;\n });\n }\n }, {\n key: "validateChallengeValue",\n value: function validateChallengeValue(value) {\n switch (value.type) {\n case _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].LocalPasscode:\n return this.protocolService.validatePasscode(value.value);\n\n case _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].AccountPassword:\n return this.protocolService.validateAccountPassword(value.value);\n\n case _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].Biometric:\n return Promise.resolve({\n valid: value.value === true\n });\n }\n }\n }, {\n key: "getLaunchChallenge",\n value: function () {\n var _getLaunchChallenge = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var types, hasPasscode, biometricPrefs, biometricEnabled;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n types = [];\n hasPasscode = this.protocolService.hasPasscode();\n\n if (hasPasscode) {\n types.push(_Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].LocalPasscode);\n }\n\n _context.next = 5;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].BiometricPrefs, _Services_storage_service__WEBPACK_IMPORTED_MODULE_3__["StorageValueModes"].Nonwrapped);\n\n case 5:\n biometricPrefs = _context.sent;\n biometricEnabled = biometricPrefs && biometricPrefs.enabled;\n\n if (biometricEnabled) {\n types.push(_Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeType"].Biometric);\n }\n\n if (!(types.length > 0)) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt("return", new _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["Challenge"](types, _Lib_challenges__WEBPACK_IMPORTED_MODULE_4__["ChallengeReason"].ApplicationUnlock));\n\n case 12:\n return _context.abrupt("return", null);\n\n case 13:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getLaunchChallenge() {\n return _getLaunchChallenge.apply(this, arguments);\n }\n\n return getLaunchChallenge;\n }()\n }, {\n key: "isPasscodeLocked",\n value: function isPasscodeLocked() {\n return this.protocolService.rootKeyNeedsUnwrapping();\n }\n }, {\n key: "enableBiometrics",\n value: function () {\n var _enableBiometrics = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].BiometricPrefs, {\n enabled: true\n }, _Services_storage_service__WEBPACK_IMPORTED_MODULE_3__["StorageValueModes"].Nonwrapped);\n\n case 2:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function enableBiometrics() {\n return _enableBiometrics.apply(this, arguments);\n }\n\n return enableBiometrics;\n }()\n }, {\n key: "setChallengeCallbacks",\n value: function setChallengeCallbacks(challenge, onValidValue, onInvalidValue, onComplete, onCancel) {\n var operation = this.getChallengeOperation(challenge);\n operation.onValidValue = onValidValue;\n operation.onInvalidValue = onInvalidValue;\n operation.onComplete = onComplete;\n operation.onCancel = onCancel;\n }\n }, {\n key: "createOrGetChallengeOperation",\n value: function createOrGetChallengeOperation(challenge, resolve) {\n var operation = this.getChallengeOperation(challenge);\n\n if (!operation) {\n operation = new _challenge_operation__WEBPACK_IMPORTED_MODULE_5__["ChallengeOperation"](challenge, resolve);\n this.challengeOperations[challenge.id] = operation;\n this.sendChallenge(challenge);\n }\n\n operation.resolve = resolve;\n return operation;\n }\n }, {\n key: "getChallengeOperation",\n value: function getChallengeOperation(challenge) {\n return this.challengeOperations[challenge.id];\n }\n }, {\n key: "deleteChallengeOperation",\n value: function deleteChallengeOperation(operation) {\n delete this.challengeOperations[operation.challenge.id];\n }\n }, {\n key: "cancelChallenge",\n value: function cancelChallenge(challenge) {\n var operation = this.challengeOperations[challenge.id];\n operation.cancel();\n this.deleteChallengeOperation(operation);\n }\n }, {\n key: "submitValuesForChallenge",\n value: function () {\n var _submitValuesForChallenge = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(challenge, values) {\n var operation, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, value, _ref, valid, artifacts;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(values.length === 0)) {\n _context3.next = 2;\n break;\n }\n\n throw Error("Attempting to submit 0 values for challenge");\n\n case 2:\n operation = this.getChallengeOperation(challenge);\n\n if (!operation.customValidator) {\n _context3.next = 7;\n break;\n }\n\n operation.customValidator(values);\n _context3.next = 37;\n break;\n\n case 7:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context3.prev = 10;\n _iterator = values[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context3.next = 23;\n break;\n }\n\n value = _step.value;\n _context3.next = 16;\n return this.validateChallengeValue(value);\n\n case 16:\n _ref = _context3.sent;\n valid = _ref.valid;\n artifacts = _ref.artifacts;\n this.setValidationStatusForChallenge(challenge, value, valid, artifacts);\n\n case 20:\n _iteratorNormalCompletion = true;\n _context3.next = 12;\n break;\n\n case 23:\n _context3.next = 29;\n break;\n\n case 25:\n _context3.prev = 25;\n _context3.t0 = _context3["catch"](10);\n _didIteratorError = true;\n _iteratorError = _context3.t0;\n\n case 29:\n _context3.prev = 29;\n _context3.prev = 30;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 32:\n _context3.prev = 32;\n\n if (!_didIteratorError) {\n _context3.next = 35;\n break;\n }\n\n throw _iteratorError;\n\n case 35:\n return _context3.finish(32);\n\n case 36:\n return _context3.finish(29);\n\n case 37:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[10, 25, 29, 37], [30,, 32, 36]]);\n }));\n\n function submitValuesForChallenge(_x, _x2) {\n return _submitValuesForChallenge.apply(this, arguments);\n }\n\n return submitValuesForChallenge;\n }()\n }, {\n key: "setValidationStatusForChallenge",\n value: function setValidationStatusForChallenge(challenge, value, valid, artifacts) {\n var operation = this.getChallengeOperation(challenge);\n operation.setValueStatus(value, valid, artifacts);\n\n if (operation.isFinished()) {\n this.deleteChallengeOperation(operation);\n }\n }\n }]);\n\n return ChallengeService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_1__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvY2hhbGxlbmdlL2NoYWxsZW5nZV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2NoYWxsZW5nZS9jaGFsbGVuZ2Vfc2VydmljZS50cz82MTAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSBcIkBMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTdG9yYWdlS2V5IH0gZnJvbSBcIkBMaWIvc3RvcmFnZV9rZXlzXCI7XG5pbXBvcnQgeyBTdG9yYWdlVmFsdWVNb2RlcyB9IGZyb20gXCJAU2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBDaGFsbGVuZ2UsIENoYWxsZW5nZVR5cGUsIENoYWxsZW5nZVJlYXNvbiwgfSBmcm9tIFwiQExpYi9jaGFsbGVuZ2VzXCI7XG5pbXBvcnQgeyBDaGFsbGVuZ2VPcGVyYXRpb24gfSBmcm9tIFwiLi9jaGFsbGVuZ2Vfb3BlcmF0aW9uXCI7XG4vKipcbiAqIFRoZSBjaGFsbGVuZ2Ugc2VydmljZSBjcmVhdGVzLCB1cGRhdGVzIGFuZCBrZWVwcyB0cmFjayBvZiBydW5uaW5nIGNoYWxsZW5nZSBvcGVyYXRpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQ2hhbGxlbmdlU2VydmljZSBleHRlbmRzIFB1cmVTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihzdG9yYWdlU2VydmljZSwgcHJvdG9jb2xTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2hhbGxlbmdlT3BlcmF0aW9ucyA9IHt9O1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gc3RvcmFnZVNlcnZpY2U7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgIH1cbiAgICAvKiogQG92ZXJyaWRlICovXG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnByb3RvY29sU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZW5kQ2hhbGxlbmdlID0gdW5kZWZpbmVkO1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVzb2x2ZXMgd2hlbiB0aGUgY2hhbGxlbmdlIGhhcyBiZWVuIGNvbXBsZXRlZC5cbiAgICAgKi9cbiAgICBwcm9tcHRGb3JDaGFsbGVuZ2VSZXNwb25zZShjaGFsbGVuZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyZWF0ZU9yR2V0Q2hhbGxlbmdlT3BlcmF0aW9uKGNoYWxsZW5nZSwgcmVzb2x2ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNvbHZlcyB3aGVuIHRoZSB1c2VyIGhhcyBzdWJtaXR0ZWQgdmFsdWVzIHdoaWNoIHRoZSBjYWxsZXIgY2FuIHVzZVxuICAgICAqIHRvIHJ1biBjdXN0b20gdmFsaWRhdGlvbnMuXG4gICAgICovXG4gICAgcHJvbXB0Rm9yQ2hhbGxlbmdlUmVzcG9uc2VXaXRoQ3VzdG9tVmFsaWRhdGlvbihjaGFsbGVuZ2UpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5jcmVhdGVPckdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbi5jdXN0b21WYWxpZGF0b3IgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgdmFsaWRhdGVDaGFsbGVuZ2VWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ2hhbGxlbmdlVHlwZS5Mb2NhbFBhc3Njb2RlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sU2VydmljZS52YWxpZGF0ZVBhc3Njb2RlKHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgQ2hhbGxlbmdlVHlwZS5BY2NvdW50UGFzc3dvcmQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLnZhbGlkYXRlQWNjb3VudFBhc3N3b3JkKHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgIGNhc2UgQ2hhbGxlbmdlVHlwZS5CaW9tZXRyaWM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbGlkOiB2YWx1ZS52YWx1ZSA9PT0gdHJ1ZSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRMYXVuY2hDaGFsbGVuZ2UoKSB7XG4gICAgICAgIGNvbnN0IHR5cGVzID0gW107XG4gICAgICAgIGNvbnN0IGhhc1Bhc3Njb2RlID0gdGhpcy5wcm90b2NvbFNlcnZpY2UuaGFzUGFzc2NvZGUoKTtcbiAgICAgICAgaWYgKGhhc1Bhc3Njb2RlKSB7XG4gICAgICAgICAgICB0eXBlcy5wdXNoKENoYWxsZW5nZVR5cGUuTG9jYWxQYXNzY29kZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmlvbWV0cmljUHJlZnMgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuQmlvbWV0cmljUHJlZnMsIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBjb25zdCBiaW9tZXRyaWNFbmFibGVkID0gYmlvbWV0cmljUHJlZnMgJiYgYmlvbWV0cmljUHJlZnMuZW5hYmxlZDtcbiAgICAgICAgaWYgKGJpb21ldHJpY0VuYWJsZWQpIHtcbiAgICAgICAgICAgIHR5cGVzLnB1c2goQ2hhbGxlbmdlVHlwZS5CaW9tZXRyaWMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENoYWxsZW5nZSh0eXBlcywgQ2hhbGxlbmdlUmVhc29uLkFwcGxpY2F0aW9uVW5sb2NrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzUGFzc2NvZGVMb2NrZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3RvY29sU2VydmljZS5yb290S2V5TmVlZHNVbndyYXBwaW5nKCk7XG4gICAgfVxuICAgIGFzeW5jIGVuYWJsZUJpb21ldHJpY3MoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5CaW9tZXRyaWNQcmVmcywgeyBlbmFibGVkOiB0cnVlIH0sIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgIH1cbiAgICBzZXRDaGFsbGVuZ2VDYWxsYmFja3MoY2hhbGxlbmdlLCBvblZhbGlkVmFsdWUsIG9uSW52YWxpZFZhbHVlLCBvbkNvbXBsZXRlLCBvbkNhbmNlbCkge1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLmdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICBvcGVyYXRpb24ub25WYWxpZFZhbHVlID0gb25WYWxpZFZhbHVlO1xuICAgICAgICBvcGVyYXRpb24ub25JbnZhbGlkVmFsdWUgPSBvbkludmFsaWRWYWx1ZTtcbiAgICAgICAgb3BlcmF0aW9uLm9uQ29tcGxldGUgPSBvbkNvbXBsZXRlO1xuICAgICAgICBvcGVyYXRpb24ub25DYW5jZWwgPSBvbkNhbmNlbDtcbiAgICB9XG4gICAgY3JlYXRlT3JHZXRDaGFsbGVuZ2VPcGVyYXRpb24oY2hhbGxlbmdlLCByZXNvbHZlKSB7XG4gICAgICAgIGxldCBvcGVyYXRpb24gPSB0aGlzLmdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpO1xuICAgICAgICBpZiAoIW9wZXJhdGlvbikge1xuICAgICAgICAgICAgb3BlcmF0aW9uID0gbmV3IENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UsIHJlc29sdmUpO1xuICAgICAgICAgICAgdGhpcy5jaGFsbGVuZ2VPcGVyYXRpb25zW2NoYWxsZW5nZS5pZF0gPSBvcGVyYXRpb247XG4gICAgICAgICAgICB0aGlzLnNlbmRDaGFsbGVuZ2UoY2hhbGxlbmdlKTtcbiAgICAgICAgfVxuICAgICAgICBvcGVyYXRpb24ucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIHJldHVybiBvcGVyYXRpb247XG4gICAgfVxuICAgIGdldENoYWxsZW5nZU9wZXJhdGlvbihjaGFsbGVuZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbGxlbmdlT3BlcmF0aW9uc1tjaGFsbGVuZ2UuaWRdO1xuICAgIH1cbiAgICBkZWxldGVDaGFsbGVuZ2VPcGVyYXRpb24ob3BlcmF0aW9uKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmNoYWxsZW5nZU9wZXJhdGlvbnNbb3BlcmF0aW9uLmNoYWxsZW5nZS5pZF07XG4gICAgfVxuICAgIGNhbmNlbENoYWxsZW5nZShjaGFsbGVuZ2UpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5jaGFsbGVuZ2VPcGVyYXRpb25zW2NoYWxsZW5nZS5pZF07XG4gICAgICAgIG9wZXJhdGlvbi5jYW5jZWwoKTtcbiAgICAgICAgdGhpcy5kZWxldGVDaGFsbGVuZ2VPcGVyYXRpb24ob3BlcmF0aW9uKTtcbiAgICB9XG4gICAgYXN5bmMgc3VibWl0VmFsdWVzRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdmFsdWVzKSB7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcIkF0dGVtcHRpbmcgdG8gc3VibWl0IDAgdmFsdWVzIGZvciBjaGFsbGVuZ2VcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5nZXRDaGFsbGVuZ2VPcGVyYXRpb24oY2hhbGxlbmdlKTtcbiAgICAgICAgaWYgKG9wZXJhdGlvbi5jdXN0b21WYWxpZGF0b3IpIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbi5jdXN0b21WYWxpZGF0b3IodmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeyB2YWxpZCwgYXJ0aWZhY3RzIH0gPSBhd2FpdCB0aGlzLnZhbGlkYXRlQ2hhbGxlbmdlVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdGlvblN0YXR1c0ZvckNoYWxsZW5nZShjaGFsbGVuZ2UsIHZhbHVlLCB2YWxpZCwgYXJ0aWZhY3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBzZXRWYWxpZGF0aW9uU3RhdHVzRm9yQ2hhbGxlbmdlKGNoYWxsZW5nZSwgdmFsdWUsIHZhbGlkLCBhcnRpZmFjdHMpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdGhpcy5nZXRDaGFsbGVuZ2VPcGVyYXRpb24oY2hhbGxlbmdlKTtcbiAgICAgICAgb3BlcmF0aW9uLnNldFZhbHVlU3RhdHVzKHZhbHVlLCB2YWxpZCwgYXJ0aWZhY3RzKTtcbiAgICAgICAgaWYgKG9wZXJhdGlvbi5pc0ZpbmlzaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRlQ2hhbGxlbmdlT3BlcmF0aW9uKG9wZXJhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFkQTtBQUFBO0FBQUE7QUFpQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBdEJBO0FBQUE7QUFBQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0JBO0FBQUE7QUFBQTtBQWlDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBTkE7QUFRQTtBQXpDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEyQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFoREE7QUFBQTtBQUNBO0FBREE7QUFnREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkRBO0FBQ0E7QUE5REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnRUE7QUFBQTtBQUNBO0FBakVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFtRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeEVBO0FBQUE7QUFBQTtBQTBFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbEZBO0FBQUE7QUFBQTtBQW9GQTtBQUNBO0FBckZBO0FBQUE7QUFBQTtBQXVGQTtBQUNBO0FBeEZBO0FBQUE7QUFBQTtBQTBGQTtBQUNBO0FBQ0E7QUFDQTtBQTdGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFrR0E7QUFDQTtBQW5HQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbUdBO0FBcEdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBc0dBO0FBdkdBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3R0E7QUFBQTtBQUNBO0FBQ0E7QUExR0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQW5IQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/challenge/challenge_service.ts\n')},"./lib/services/component_manager.ts": /*!*******************************************!*\ !*** ./lib/services/component_manager.ts ***! \*******************************************/ /*! exports provided: SNComponentManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNComponentManager", function() { return SNComponentManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js");\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(lodash_uniq__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Models_app_component__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Lib/platforms */ "./lib/platforms.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DESKTOP_URL_PREFIX = \'sn://\';\nvar LOCAL_HOST = \'localhost\';\nvar CUSTOM_LOCAL_HOST = \'sn.local\';\nvar ANDROID_LOCAL_HOST = \'10.0.2.2\';\n/* This domain will be used to save context item client data */\n\nvar ComponentDataDomain = \'org.standardnotes.sn.components\';\n/**\n * Responsible for orchestrating component functionality, including editors, themes,\n * and other components. The component manager primarily deals with iframes, and orchestrates\n * sending and receiving messages to and from frames via the postMessage API.\n */\n\nvar SNComponentManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNComponentManager, _PureService);\n\n function SNComponentManager(itemManager, syncService, alertService, environment, platform, timeout) {\n var _this;\n\n _classCallCheck(this, SNComponentManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNComponentManager).call(this));\n _this.componentState = {};\n _this.streamObservers = [];\n _this.contextStreamObservers = [];\n _this.activeComponents = [];\n _this.permissionDialogs = [];\n _this.handlers = [];\n\n _this.detectFocusChange = function () {\n var activeComponents = _this.itemManager.findItems(_this.activeComponents);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var component = _step.value;\n\n if (document.activeElement === _this.iframeForComponent(component.uuid)) {\n _this.timeout(function () {\n _this.focusChangedForComponent(component);\n });\n\n return "break";\n }\n };\n\n for (var _iterator = activeComponents[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === "break") break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n\n _this.onWindowMessage = function (event) {\n /** Make sure this message is for us */\n if (event.data.sessionKey) {\n _this.log(\'Component manager received message\', event.data);\n\n _this.handleMessage(_this.componentForSessionKey(event.data.sessionKey), event.data);\n }\n };\n\n _this.timeout = timeout || setTimeout.bind(window);\n _this.itemManager = itemManager;\n _this.syncService = syncService;\n _this.alertService = alertService;\n _this.environment = environment;\n _this.platform = platform;\n\n _this.configureForGeneralUsage();\n\n if (environment !== _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Environment"].Mobile) {\n _this.configureForNonMobileUsage();\n }\n\n return _this;\n }\n\n _createClass(SNComponentManager, [{\n key: "componentsForArea",\n value: function componentsForArea(area) {\n return this.components.filter(function (component) {\n return component.area === area;\n });\n }\n /** @override */\n\n }, {\n key: "deinit",\n value: function deinit() {\n _get(_getPrototypeOf(SNComponentManager.prototype), "deinit", this).call(this);\n\n this.streamObservers.length = 0;\n this.contextStreamObservers.length = 0;\n this.activeComponents.length = 0;\n this.permissionDialogs.length = 0;\n this.handlers.length = 0;\n this.itemManager = undefined;\n this.syncService = undefined;\n this.alertService = undefined;\n this.removeItemObserver();\n this.removeItemObserver = null;\n\n if (window) {\n window.removeEventListener(\'focus\', this.detectFocusChange, true);\n window.removeEventListener(\'blur\', this.detectFocusChange, true);\n window.removeEventListener(\'message\', this.onWindowMessage);\n }\n }\n }, {\n key: "setDesktopManager",\n value: function setDesktopManager(desktopManager) {\n this.desktopManager = desktopManager;\n this.configureForDesktop();\n }\n }, {\n key: "configureForGeneralUsage",\n value: function configureForGeneralUsage() {\n var _this2 = this;\n\n this.removeItemObserver = this.itemManager.addObserver(_models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Any, function (changed, inserted, discarded, source, sourceKey) {\n var items = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["concatArrays"])(changed, inserted, discarded);\n var syncedComponents = items.filter(function (item) {\n return item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Component || item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme;\n });\n /**\n * We only want to sync if the item source is Retrieved, not RemoteSaved to avoid\n * recursion caused by the component being modified and saved after it is updated.\n */\n\n if (syncedComponents.length > 0 && source !== _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].RemoteSaved) {\n /* Ensure any component in our data is installed by the system */\n if (_this2.isDesktop) {\n _this2.desktopManager.syncComponentsInstallation(syncedComponents);\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = syncedComponents[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var component = _step2.value;\n\n var isInActive = _this2.activeComponents.includes(component.uuid);\n\n if (component.active && !component.deleted && !isInActive) {\n _this2.activateComponent(component.uuid);\n } else if (!component.active && isInActive) {\n _this2.deactivateComponent(component.uuid);\n }\n }\n /* LocalChanged is not interesting to send to observers. For local changes,\n we wait until the item is set to dirty before notifying observers, where the mapping\n source would be PayloadSource.LocalChanged */\n\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (source !== _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].LocalChanged) {\n _this2.notifyStreamObservers(items, source, sourceKey);\n }\n });\n }\n }, {\n key: "notifyStreamObservers",\n value: function notifyStreamObservers(allItems, source, sourceKey) {\n var _this3 = this;\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n var _loop2 = function _loop2() {\n var observer = _step3.value;\n\n if (sourceKey && sourceKey === observer.componentUuid) {\n /* Don\'t notify source of change, as it is the originator, doesn\'t need duplicate event. */\n return "continue";\n }\n\n var relevantItems = allItems.filter(function (item) {\n return observer.contentTypes.indexOf(item.content_type) !== -1;\n });\n\n if (relevantItems.length === 0) {\n return "continue";\n }\n\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: observer.contentTypes.sort()\n }];\n\n _this3.runWithPermissions(observer.componentUuid, requiredPermissions, function () {\n _this3.sendItemsInReply(observer.componentUuid, relevantItems, observer.originalMessage);\n });\n };\n\n for (var _iterator3 = this.streamObservers[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ret2 = _loop2();\n\n if (_ret2 === "continue") continue;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var requiredContextPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem\n }];\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop3 = function _loop3() {\n var observer = _step4.value;\n\n if (sourceKey && sourceKey === observer.componentUuid) {\n /* Don\'t notify source of change, as it is the originator, doesn\'t need duplicate event. */\n return "continue";\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = _this3.handlers[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var handler = _step5.value;\n\n if (!handler.areas.includes(observer.area) && !handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n continue;\n }\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(observer.componentUuid);\n\n if (itemInContext) {\n var _ret4 = function () {\n var matchingItem = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(allItems, {\n uuid: itemInContext.uuid\n });\n\n if (matchingItem) {\n if (matchingItem.deleted) {\n return "continue";\n }\n\n _this3.runWithPermissions(observer.componentUuid, requiredContextPermissions, function () {\n _this3.sendContextItemInReply(observer.componentUuid, matchingItem, observer.originalMessage, source);\n });\n }\n }();\n\n if (_ret4 === "continue") continue;\n }\n }\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n };\n\n for (var _iterator4 = this.contextStreamObservers[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var _ret3 = _loop3();\n\n if (_ret3 === "continue") continue;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n }, {\n key: "isNativeExtension",\n value: function isNativeExtension(component) {\n var nativeUrls = [window._extensions_manager_location, window._batch_manager_location];\n var hostedUrl = component.hosted_url;\n var localUrl = component.local_url && component.local_url.replace(DESKTOP_URL_PREFIX, \'\');\n return nativeUrls.includes(hostedUrl) || nativeUrls.includes(localUrl);\n }\n }, {\n key: "configureForNonMobileUsage",\n value: function configureForNonMobileUsage() {\n window.addEventListener ? window.addEventListener(\'focus\', this.detectFocusChange, true) : window.attachEvent(\'onfocusout\', this.detectFocusChange);\n window.addEventListener ? window.addEventListener(\'blur\', this.detectFocusChange, true) : window.attachEvent(\'onblur\', this.detectFocusChange);\n /* On mobile, events listeners are handled by a respective component */\n\n window.addEventListener(\'message\', this.onWindowMessage);\n }\n }, {\n key: "configureForDesktop",\n value: function configureForDesktop() {\n var _this4 = this;\n\n this.desktopManager.registerUpdateObserver(function (component) {\n /* Reload theme if active */\n if (component.active && component.isTheme()) {\n _this4.postActiveThemesToAllComponents();\n }\n });\n }\n }, {\n key: "postActiveThemesToAllComponents",\n value: function postActiveThemesToAllComponents() {\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = this.components[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var component = _step6.value;\n var componentState = this.findOrCreateDataForComponent(component);\n /* Skip over components that are themes themselves,\n or components that are not active, or components that don\'t have a window */\n\n if (component.isTheme() || !component.active || !componentState.window) {\n continue;\n }\n\n this.postActiveThemesToComponent(component);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n }\n }, {\n key: "getActiveThemes",\n value: function getActiveThemes() {\n return this.componentsForArea(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Themes).filter(function (theme) {\n return theme.active;\n });\n }\n }, {\n key: "urlsForActiveThemes",\n value: function urlsForActiveThemes() {\n var themes = this.getActiveThemes();\n var urls = [];\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = themes[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var theme = _step7.value;\n var url = this.urlForComponent(theme);\n\n if (url) {\n urls.push(url);\n }\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return != null) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return urls;\n }\n }, {\n key: "postActiveThemesToComponent",\n value: function postActiveThemesToComponent(component) {\n var urls = this.urlsForActiveThemes();\n var data = {\n themes: urls\n };\n var message = {\n action: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ActivateThemes,\n data: data\n };\n this.sendMessageToComponent(component, message);\n }\n }, {\n key: "contextItemDidChangeInArea",\n value: function contextItemDidChangeInArea(area) {\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = this.handlers[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var handler = _step8.value;\n\n if (!handler.areas.includes(area) && !handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n continue;\n }\n\n var observers = this.contextStreamObservers.filter(function (observer) {\n return observer.area === area;\n });\n var _iteratorNormalCompletion9 = true;\n var _didIteratorError9 = false;\n var _iteratorError9 = undefined;\n\n try {\n for (var _iterator9 = observers[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {\n var observer = _step9.value;\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(observer.componentUuid);\n\n if (itemInContext) {\n this.sendContextItemInReply(observer.componentUuid, itemInContext, observer.originalMessage);\n }\n }\n }\n } catch (err) {\n _didIteratorError9 = true;\n _iteratorError9 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion9 && _iterator9.return != null) {\n _iterator9.return();\n }\n } finally {\n if (_didIteratorError9) {\n throw _iteratorError9;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return != null) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n }\n }, {\n key: "isComponentHidden",\n value: function isComponentHidden(component) {\n var componentState = this.findOrCreateDataForComponent(component);\n return componentState.hidden;\n }\n }, {\n key: "setComponentHidden",\n value: function setComponentHidden(component, hidden) {\n /* A hidden component will not receive messages. However, when a component is unhidden,\n * we need to send it any items it may have registered streaming for. */\n var componentState = this.findOrCreateDataForComponent(component);\n\n if (hidden) {\n componentState.hidden = true;\n } else if (componentState.hidden) {\n componentState.hidden = false;\n var contextObserver = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(this.contextStreamObservers, {\n identifier: component.uuid\n });\n\n if (contextObserver) {\n this.handleStreamContextItemMessage(component, contextObserver.originalMessage);\n }\n\n var streamObserver = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(this.streamObservers, {\n identifier: component.uuid\n });\n\n if (streamObserver) {\n this.handleStreamItemsMessage(component, streamObserver.originalMessage);\n }\n }\n }\n }, {\n key: "jsonForItem",\n value: function jsonForItem(item, component, source) {\n var isMetadatUpdate = source === _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].RemoteSaved || source === _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].LocalSaved;\n /** The data all components store into */\n\n var componentData = item.getDomainData(ComponentDataDomain) || {};\n /** The data for this particular component */\n\n var clientData = componentData[component.getClientDataKey()] || {};\n var params = {\n uuid: item.uuid,\n content_type: item.content_type,\n created_at: item.created_at,\n updated_at: item.updated_at,\n deleted: item.deleted,\n isMetadataUpdate: isMetadatUpdate,\n content: item.content,\n clientData: clientData\n };\n this.removePrivatePropertiesFromResponseItems([params], component);\n return params;\n }\n }, {\n key: "sendItemsInReply",\n value: function sendItemsInReply(componentUuid, items, message, source) {\n var _this5 = this;\n\n var component = this.itemManager.findItem(componentUuid);\n this.log(\'Component manager send items in reply\', component, items, message);\n var responseData = {};\n var mapped = items.map(function (item) {\n return _this5.jsonForItem(item, component, source);\n });\n responseData.items = mapped;\n this.replyToMessage(component, message, responseData);\n }\n }, {\n key: "sendContextItemInReply",\n value: function sendContextItemInReply(componentUuid, item, originalMessage, source) {\n var component = this.itemManager.findItem(componentUuid);\n this.log(\'Component manager send context item in reply\', component, item, originalMessage);\n var response = {\n item: this.jsonForItem(item, component, source)\n };\n this.replyToMessage(component, originalMessage, response);\n }\n }, {\n key: "replyToMessage",\n value: function replyToMessage(component, originalMessage, replyData) {\n var reply = {\n action: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].Reply,\n original: originalMessage,\n data: replyData\n };\n this.sendMessageToComponent(component, reply);\n }\n }, {\n key: "sendMessageToComponent",\n value: function sendMessageToComponent(component, message) {\n var permissibleActionsWhileHidden = [_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ComponentRegistered, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ActivateThemes];\n var componentState = this.findOrCreateDataForComponent(component);\n\n if (componentState.hidden && !permissibleActionsWhileHidden.includes(message.action)) {\n this.log(\'Component disabled for current item, ignoring messages.\', component.name);\n return;\n }\n\n this.log(\'Component manager send message to component\', component, message);\n var origin = this.urlForComponent(component);\n\n if (!origin || !componentState.window) {\n this.alertService.alert("Standard Notes is trying to communicate with ".concat(component.name, ", \\n but an error is occurring. Please restart this extension and try again."));\n }\n\n if (!origin.startsWith(\'http\') && !origin.startsWith(\'file\')) {\n /* Native extension running in web, prefix current host */\n origin = window.location.href + origin;\n }\n /* Mobile messaging requires json */\n\n\n componentState.window.postMessage(this.isMobile ? JSON.stringify(message) : message, origin);\n }\n }, {\n key: "urlForComponent",\n value: function urlForComponent(component) {\n /* offlineOnly is available only on desktop, and not on web or mobile. */\n if (component.offlineOnly && !this.isDesktop) {\n return null;\n }\n\n if (component.offlineOnly || this.isDesktop && component.local_url) {\n return component.local_url && component.local_url.replace(DESKTOP_URL_PREFIX, this.desktopManager.getExtServerHost());\n } else {\n var url = component.hosted_url || component.legacy_url;\n\n if (this.isMobile) {\n var localReplacement = this.platform === _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Platform"].Ios ? LOCAL_HOST : ANDROID_LOCAL_HOST;\n url = url.replace(LOCAL_HOST, localReplacement).replace(CUSTOM_LOCAL_HOST, localReplacement);\n }\n\n return url;\n }\n }\n }, {\n key: "componentForUrl",\n value: function componentForUrl(url) {\n return this.components.filter(function (component) {\n return component.hosted_url === url || component.legacy_url === url;\n })[0];\n }\n }, {\n key: "sessionKeyForComponent",\n value: function sessionKeyForComponent(component) {\n var componentState = this.findOrCreateDataForComponent(component);\n return componentState.sessionKey;\n }\n }, {\n key: "componentForSessionKey",\n value: function componentForSessionKey(key) {\n var _this6 = this;\n\n var component;\n\n var _loop4 = function _loop4() {\n var uuid = _Object$keys[_i];\n var data = _this6.componentState[uuid];\n\n if ((data === null || data === void 0 ? void 0 : data.sessionKey) === key) {\n component = _this6.components.find(function (c) {\n return c.uuid === uuid;\n });\n return "break";\n }\n };\n\n for (var _i = 0, _Object$keys = Object.keys(this.componentState); _i < _Object$keys.length; _i++) {\n var _ret5 = _loop4();\n\n if (_ret5 === "break") break;\n }\n\n if (!component) {\n var _iteratorNormalCompletion10 = true;\n var _didIteratorError10 = false;\n var _iteratorError10 = undefined;\n\n try {\n for (var _iterator10 = this.handlers[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {\n var handler = _step10.value;\n\n if (handler.componentForSessionKeyHandler) {\n component = handler.componentForSessionKeyHandler(key);\n\n if (component) {\n break;\n }\n }\n }\n } catch (err) {\n _didIteratorError10 = true;\n _iteratorError10 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion10 && _iterator10.return != null) {\n _iterator10.return();\n }\n } finally {\n if (_didIteratorError10) {\n throw _iteratorError10;\n }\n }\n }\n }\n\n return component;\n }\n }, {\n key: "handleMessage",\n value: function handleMessage(component, message) {\n var _this7 = this;\n\n if (!component) {\n this.log(\'Component not defined for message, returning\', message);\n this.alertService.alert(\'An extension is trying to communicate with Standard Notes,\' + \'but there is an error establishing a bridge. Please restart the app and try again.\');\n return;\n }\n\n var readwriteActions = [_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveItems, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].AssociateItem, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DeassociateItem, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItem, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItems, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DeleteItems, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SetComponentData];\n var readonlyState = this.getReadonlyStateForComponent(component);\n\n if (readonlyState.readonly && readwriteActions.includes(message.action)) {\n this.alertService.alert("The extension ".concat(component.name, " is trying to save, but it is in a locked state and cannot accept changes."));\n return;\n }\n\n if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems) {\n this.handleStreamItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem) {\n this.handleStreamContextItemMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SetComponentData) {\n this.handleSetComponentDataMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DeleteItems) {\n this.handleDeleteItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItems || message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItem) {\n this.handleCreateItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveItems) {\n this.handleSaveItemsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ToggleActivateComponent) {\n var componentToToggle = this.itemManager.findItem(message.data.uuid);\n this.handleToggleComponentMessage(componentToToggle, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].RequestPermissions) {\n this.handleRequestPermissionsMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].InstallLocalComponent) {\n this.handleInstallLocalComponentMessage(component, message);\n } else if (message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].DuplicateItem) {\n this.handleDuplicateItemMessage(component, message);\n }\n\n var _iteratorNormalCompletion11 = true;\n var _didIteratorError11 = false;\n var _iteratorError11 = undefined;\n\n try {\n var _loop5 = function _loop5() {\n var handler = _step11.value;\n\n if (handler.actionHandler && (handler.areas.includes(component.area) || handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any))) {\n _this7.timeout(function () {\n handler.actionHandler(component, message.action, message.data);\n });\n }\n };\n\n for (var _iterator11 = this.handlers[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {\n _loop5();\n }\n } catch (err) {\n _didIteratorError11 = true;\n _iteratorError11 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion11 && _iterator11.return != null) {\n _iterator11.return();\n }\n } finally {\n if (_didIteratorError11) {\n throw _iteratorError11;\n }\n }\n }\n }\n }, {\n key: "removePrivatePropertiesFromResponseItems",\n value: function removePrivatePropertiesFromResponseItems(responseItems, component) {\n var includeUrls = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (component) {\n /* System extensions can bypass this step */\n if (this.isNativeExtension(component)) {\n return;\n }\n }\n /* Don\'t allow component to overwrite these properties. */\n\n\n var privateContentProperties = [\'autoupdateDisabled\', \'permissions\', \'active\'];\n\n if (includeUrls) {\n privateContentProperties = privateContentProperties.concat([\'url\', \'hosted_url\', \'local_url\']);\n }\n\n var _iteratorNormalCompletion12 = true;\n var _didIteratorError12 = false;\n var _iteratorError12 = undefined;\n\n try {\n for (var _iterator12 = responseItems[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {\n var responseItem = _step12.value;\n var _iteratorNormalCompletion13 = true;\n var _didIteratorError13 = false;\n var _iteratorError13 = undefined;\n\n try {\n for (var _iterator13 = privateContentProperties[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {\n var prop = _step13.value;\n delete responseItem.content[prop];\n }\n } catch (err) {\n _didIteratorError13 = true;\n _iteratorError13 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion13 && _iterator13.return != null) {\n _iterator13.return();\n }\n } finally {\n if (_didIteratorError13) {\n throw _iteratorError13;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError12 = true;\n _iteratorError12 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion12 && _iterator12.return != null) {\n _iterator12.return();\n }\n } finally {\n if (_didIteratorError12) {\n throw _iteratorError12;\n }\n }\n }\n }\n }, {\n key: "handleStreamItemsMessage",\n value: function handleStreamItemsMessage(component, message) {\n var _this8 = this;\n\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: message.data.content_types.sort()\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, function () {\n if (!lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(_this8.streamObservers, {\n identifier: component.uuid\n })) {\n /* For pushing laster as changes come in */\n _this8.streamObservers.push({\n identifier: component.uuid,\n componentUuid: component.uuid,\n area: component.area,\n originalMessage: message,\n contentTypes: message.data.content_types\n });\n }\n /* Push immediately now */\n\n\n var items = [];\n var _iteratorNormalCompletion14 = true;\n var _didIteratorError14 = false;\n var _iteratorError14 = undefined;\n\n try {\n for (var _iterator14 = message.data.content_types[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {\n var contentType = _step14.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["extendArray"])(items, _this8.itemManager.nonErroredItemsForContentType(contentType));\n }\n } catch (err) {\n _didIteratorError14 = true;\n _iteratorError14 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion14 && _iterator14.return != null) {\n _iterator14.return();\n }\n } finally {\n if (_didIteratorError14) {\n throw _iteratorError14;\n }\n }\n }\n\n _this8.sendItemsInReply(component.uuid, items, message);\n });\n }\n }, {\n key: "handleStreamContextItemMessage",\n value: function handleStreamContextItemMessage(component, message) {\n var _this9 = this;\n\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, function () {\n if (!lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(_this9.contextStreamObservers, {\n identifier: component.uuid\n })) {\n _this9.contextStreamObservers.push({\n identifier: component.uuid,\n componentUuid: component.uuid,\n area: component.area,\n originalMessage: message\n });\n }\n\n var _iteratorNormalCompletion15 = true;\n var _didIteratorError15 = false;\n var _iteratorError15 = undefined;\n\n try {\n for (var _iterator15 = _this9.handlersForArea(component.area)[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {\n var handler = _step15.value;\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(component.uuid);\n\n if (itemInContext) {\n _this9.sendContextItemInReply(component.uuid, itemInContext, message);\n }\n }\n }\n } catch (err) {\n _didIteratorError15 = true;\n _iteratorError15 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion15 && _iterator15.return != null) {\n _iterator15.return();\n }\n } finally {\n if (_didIteratorError15) {\n throw _iteratorError15;\n }\n }\n }\n });\n }\n }, {\n key: "isItemIdWithinComponentContextJurisdiction",\n value: function isItemIdWithinComponentContextJurisdiction(uuid, component) {\n var itemIdsInJurisdiction = this.itemIdsInContextJurisdictionForComponent(component);\n return itemIdsInJurisdiction.includes(uuid);\n }\n /* Returns items that given component has context permissions for */\n\n }, {\n key: "itemIdsInContextJurisdictionForComponent",\n value: function itemIdsInContextJurisdictionForComponent(component) {\n var itemIds = [];\n var _iteratorNormalCompletion16 = true;\n var _didIteratorError16 = false;\n var _iteratorError16 = undefined;\n\n try {\n for (var _iterator16 = this.handlersForArea(component.area)[Symbol.iterator](), _step16; !(_iteratorNormalCompletion16 = (_step16 = _iterator16.next()).done); _iteratorNormalCompletion16 = true) {\n var handler = _step16.value;\n\n if (handler.contextRequestHandler) {\n var itemInContext = handler.contextRequestHandler(component.uuid);\n\n if (itemInContext) {\n itemIds.push(itemInContext.uuid);\n }\n }\n }\n } catch (err) {\n _didIteratorError16 = true;\n _iteratorError16 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion16 && _iterator16.return != null) {\n _iterator16.return();\n }\n } finally {\n if (_didIteratorError16) {\n throw _iteratorError16;\n }\n }\n }\n\n return itemIds;\n }\n }, {\n key: "handlersForArea",\n value: function handlersForArea(area) {\n return this.handlers.filter(function (candidate) {\n return candidate.areas.includes(area);\n });\n }\n }, {\n key: "handleSaveItemsMessage",\n value: function () {\n var _handleSaveItemsMessage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(component, message) {\n var _this10 = this;\n\n var responsePayloads, requiredPermissions, itemIdsInContextJurisdiction, pendingResponseItems, _iteratorNormalCompletion17, _didIteratorError17, _iteratorError17, _iterator17, _step17, responseItem, requiredContentTypes;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n responsePayloads = message.data.items;\n requiredPermissions = [];\n itemIdsInContextJurisdiction = this.itemIdsInContextJurisdictionForComponent(component);\n /* Pending as in needed to be accounted for in permissions. */\n\n pendingResponseItems = responsePayloads.slice();\n _iteratorNormalCompletion17 = true;\n _didIteratorError17 = false;\n _iteratorError17 = undefined;\n _context2.prev = 7;\n _iterator17 = responsePayloads.slice()[Symbol.iterator]();\n\n case 9:\n if (_iteratorNormalCompletion17 = (_step17 = _iterator17.next()).done) {\n _context2.next = 18;\n break;\n }\n\n responseItem = _step17.value;\n\n if (!itemIdsInContextJurisdiction.includes(responseItem.uuid)) {\n _context2.next = 15;\n break;\n }\n\n requiredPermissions.push({\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(pendingResponseItems, responseItem);\n /* We break because there can only be one context item */\n\n return _context2.abrupt("break", 18);\n\n case 15:\n _iteratorNormalCompletion17 = true;\n _context2.next = 9;\n break;\n\n case 18:\n _context2.next = 24;\n break;\n\n case 20:\n _context2.prev = 20;\n _context2.t0 = _context2["catch"](7);\n _didIteratorError17 = true;\n _iteratorError17 = _context2.t0;\n\n case 24:\n _context2.prev = 24;\n _context2.prev = 25;\n\n if (!_iteratorNormalCompletion17 && _iterator17.return != null) {\n _iterator17.return();\n }\n\n case 27:\n _context2.prev = 27;\n\n if (!_didIteratorError17) {\n _context2.next = 30;\n break;\n }\n\n throw _iteratorError17;\n\n case 30:\n return _context2.finish(27);\n\n case 31:\n return _context2.finish(24);\n\n case 32:\n /* Check to see if additional privileges are required */\n if (pendingResponseItems.length > 0) {\n requiredContentTypes = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(pendingResponseItems.map(function (item) {\n return item.content_type;\n })).sort();\n requiredPermissions.push({\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: requiredContentTypes\n });\n }\n\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var uuids, items, lockedCount, itemNoun, auxVerb, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this10.removePrivatePropertiesFromResponseItems(responsePayloads, component, true);\n /* Filter locked items */\n\n\n uuids = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(responsePayloads);\n items = _this10.itemManager.findItems(uuids, true);\n lockedCount = 0;\n items.forEach(function (item, index) {\n if (!item) {\n var responseItem = responsePayloads[index]; // An item this extension is trying to save was possibly removed locally, notify user\n\n _this10.alertService.alert("The extension ".concat(component.name, " is trying to save an item with type ") + "".concat(responseItem.content_type, ", but that item does not exist .") + "Please restart this extension and try again.");\n\n return;\n }\n\n if (item.locked) {\n lodash_remove__WEBPACK_IMPORTED_MODULE_9___default()(responsePayloads, {\n uuid: item.uuid\n });\n lockedCount++;\n }\n });\n\n if (!(lockedCount > 0)) {\n _context.next = 10;\n break;\n }\n\n itemNoun = lockedCount === 1 ? \'item\' : \'items\';\n auxVerb = lockedCount === 1 ? \'is\' : \'are\';\n\n _this10.alertService.alert("".concat(lockedCount, " ").concat(itemNoun, " you are attempting to save ").concat(auxVerb, " locked and cannot be edited."), \'Items Locked\');\n\n return _context.abrupt("return");\n\n case 10:\n payloads = responsePayloads.map(function (responseItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateSourcedPayloadFromObject"])(responseItem, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentRetrieved);\n });\n _context.next = 13;\n return _this10.itemManager.changeItems(uuids, function (mutator) {\n var payload = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["searchArray"])(payloads, {\n uuid: mutator.getUuid()\n });\n mutator.mergePayload(payload);\n var responseItem = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["searchArray"])(responsePayloads, {\n uuid: mutator.getUuid()\n });\n\n if (responseItem.clientData) {\n var allComponentData = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(mutator.getItem().getDomainData(ComponentDataDomain) || {});\n allComponentData[component.getClientDataKey()] = responseItem.clientData;\n mutator.setDomainData(allComponentData, ComponentDataDomain);\n }\n }, _Models_core_item__WEBPACK_IMPORTED_MODULE_6__["MutationType"].UserInteraction, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentRetrieved, component.uuid);\n\n case 13:\n _this10.syncService.sync().then(function () {\n /* Allow handlers to be notified when a save begins and ends, to update the UI */\n var saveMessage = Object.assign({}, message);\n saveMessage.action = _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveSuccess;\n\n _this10.replyToMessage(component, message, {});\n\n _this10.handleMessage(component, saveMessage);\n }).catch(function () {\n var saveMessage = Object.assign({}, message);\n saveMessage.action = _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveError;\n\n _this10.replyToMessage(component, message, {\n error: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].SaveError\n });\n\n _this10.handleMessage(component, saveMessage);\n });\n\n case 14:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n\n case 34:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[7, 20, 24, 32], [25,, 27, 31]]);\n }));\n\n function handleSaveItemsMessage(_x, _x2) {\n return _handleSaveItemsMessage.apply(this, arguments);\n }\n\n return handleSaveItemsMessage;\n }()\n }, {\n key: "handleDuplicateItemMessage",\n value: function handleDuplicateItemMessage(component, message) {\n var _this11 = this;\n\n var itemParams = message.data.item;\n var item = this.itemManager.findItem(itemParams.uuid);\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: [item.content_type]\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var duplicate;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this11.itemManager.duplicateItem(item.uuid);\n\n case 2:\n duplicate = _context3.sent;\n\n _this11.syncService.sync();\n\n _this11.replyToMessage(component, message, {\n item: _this11.jsonForItem(duplicate, component)\n });\n\n case 5:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n })));\n }\n }, {\n key: "handleCreateItemsMessage",\n value: function handleCreateItemsMessage(component, message) {\n var _this12 = this;\n\n var responseItems = message.data.item ? [message.data.item] : message.data.items;\n var uniqueContentTypes = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(responseItems.map(function (item) {\n return item.content_type;\n }));\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: uniqueContentTypes\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var processedItems, _iteratorNormalCompletion18, _didIteratorError18, _iteratorError18, _loop6, _iterator18, _step18, reply;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _this12.removePrivatePropertiesFromResponseItems(responseItems, component);\n\n processedItems = [];\n _iteratorNormalCompletion18 = true;\n _didIteratorError18 = false;\n _iteratorError18 = undefined;\n _context5.prev = 5;\n _loop6 = /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _loop6() {\n var responseItem, payload, template, item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _loop6$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n responseItem = _step18.value;\n\n if (responseItem.uuid) {\n _context4.next = 5;\n break;\n }\n\n _context4.next = 4;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_12__["Uuid"].GenerateUuid();\n\n case 4:\n responseItem.uuid = _context4.sent;\n\n case 5:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateSourcedPayloadFromObject"])(responseItem, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentCreated);\n template = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(payload);\n _context4.next = 9;\n return _this12.itemManager.insertItem(template);\n\n case 9:\n item = _context4.sent;\n _context4.next = 12;\n return _this12.itemManager.changeItem(item.uuid, function (mutator) {\n if (responseItem.clientData) {\n var allComponentData = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(item.getDomainData(ComponentDataDomain) || {});\n allComponentData[component.getClientDataKey()] = responseItem.clientData;\n mutator.setDomainData(allComponentData, ComponentDataDomain);\n }\n }, _Models_core_item__WEBPACK_IMPORTED_MODULE_6__["MutationType"].UserInteraction, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].ComponentCreated, component.uuid);\n\n case 12:\n processedItems.push(item);\n\n case 13:\n case "end":\n return _context4.stop();\n }\n }\n }, _loop6);\n });\n _iterator18 = responseItems[Symbol.iterator]();\n\n case 8:\n if (_iteratorNormalCompletion18 = (_step18 = _iterator18.next()).done) {\n _context5.next = 13;\n break;\n }\n\n return _context5.delegateYield(_loop6(), "t0", 10);\n\n case 10:\n _iteratorNormalCompletion18 = true;\n _context5.next = 8;\n break;\n\n case 13:\n _context5.next = 19;\n break;\n\n case 15:\n _context5.prev = 15;\n _context5.t1 = _context5["catch"](5);\n _didIteratorError18 = true;\n _iteratorError18 = _context5.t1;\n\n case 19:\n _context5.prev = 19;\n _context5.prev = 20;\n\n if (!_iteratorNormalCompletion18 && _iterator18.return != null) {\n _iterator18.return();\n }\n\n case 22:\n _context5.prev = 22;\n\n if (!_didIteratorError18) {\n _context5.next = 25;\n break;\n }\n\n throw _iteratorError18;\n\n case 25:\n return _context5.finish(22);\n\n case 26:\n return _context5.finish(19);\n\n case 27:\n _this12.syncService.sync();\n\n reply = message.action === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].CreateItem ? {\n item: _this12.jsonForItem(processedItems[0], component)\n } : {\n items: processedItems.map(function (item) {\n return _this12.jsonForItem(item, component);\n })\n };\n\n _this12.replyToMessage(component, message, reply);\n\n case 30:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee4, null, [[5, 15, 19, 27], [20,, 22, 26]]);\n })));\n }\n }, {\n key: "handleDeleteItemsMessage",\n value: function handleDeleteItemsMessage(component, message) {\n var _this13 = this;\n\n var requiredContentTypes = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(message.data.items.map(function (item) {\n return item.content_type;\n })).sort();\n var requiredPermissions = [{\n name: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems,\n content_types: requiredContentTypes\n }];\n this.runWithPermissions(component.uuid, requiredPermissions, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var itemsData, noun, reply, didConfirm, _iteratorNormalCompletion19, _didIteratorError19, _iteratorError19, _iterator19, _step19, itemData, item;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n itemsData = message.data.items;\n noun = itemsData.length === 1 ? \'item\' : \'items\';\n reply = null;\n didConfirm = true;\n _context6.next = 6;\n return _this13.alertService.confirm("Are you sure you want to delete ".concat(itemsData.length, " ").concat(noun, "?")).catch(function () {\n didConfirm = false;\n });\n\n case 6:\n if (!didConfirm) {\n _context6.next = 44;\n break;\n }\n\n /* Filter for any components and deactivate before deleting */\n _iteratorNormalCompletion19 = true;\n _didIteratorError19 = false;\n _iteratorError19 = undefined;\n _context6.prev = 10;\n _iterator19 = itemsData[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion19 = (_step19 = _iterator19.next()).done) {\n _context6.next = 26;\n break;\n }\n\n itemData = _step19.value;\n item = _this13.itemManager.findItem(itemData.uuid);\n\n if (item) {\n _context6.next = 18;\n break;\n }\n\n _this13.alertService.alert(\'The item you are trying to delete cannot be found.\');\n\n return _context6.abrupt("continue", 23);\n\n case 18:\n if (![_models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Component, _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme].includes(item.content_type)) {\n _context6.next = 21;\n break;\n }\n\n _context6.next = 21;\n return _this13.deactivateComponent(item.uuid);\n\n case 21:\n _context6.next = 23;\n return _this13.itemManager.setItemToBeDeleted(item.uuid);\n\n case 23:\n _iteratorNormalCompletion19 = true;\n _context6.next = 12;\n break;\n\n case 26:\n _context6.next = 32;\n break;\n\n case 28:\n _context6.prev = 28;\n _context6.t0 = _context6["catch"](10);\n _didIteratorError19 = true;\n _iteratorError19 = _context6.t0;\n\n case 32:\n _context6.prev = 32;\n _context6.prev = 33;\n\n if (!_iteratorNormalCompletion19 && _iterator19.return != null) {\n _iterator19.return();\n }\n\n case 35:\n _context6.prev = 35;\n\n if (!_didIteratorError19) {\n _context6.next = 38;\n break;\n }\n\n throw _iteratorError19;\n\n case 38:\n return _context6.finish(35);\n\n case 39:\n return _context6.finish(32);\n\n case 40:\n _this13.syncService.sync();\n\n reply = {\n deleted: true\n };\n _context6.next = 45;\n break;\n\n case 44:\n /* Rejected by user */\n reply = {\n deleted: false\n };\n\n case 45:\n _this13.replyToMessage(component, message, reply);\n\n case 46:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee5, null, [[10, 28, 32, 40], [33,, 35, 39]]);\n })));\n }\n }, {\n key: "handleRequestPermissionsMessage",\n value: function handleRequestPermissionsMessage(component, message) {\n var _this14 = this;\n\n this.runWithPermissions(component.uuid, message.data.permissions, function () {\n _this14.replyToMessage(component, message, {\n approved: true\n });\n });\n }\n }, {\n key: "handleSetComponentDataMessage",\n value: function handleSetComponentDataMessage(component, message) {\n var _this15 = this;\n\n /* A component setting its own data does not require special permissions */\n this.runWithPermissions(component.uuid, [], /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return _this15.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.componentData = message.data.componentData;\n });\n\n case 2:\n _this15.syncService.sync();\n\n case 3:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee6);\n })));\n }\n }, {\n key: "handleToggleComponentMessage",\n value: function handleToggleComponentMessage(targetComponent, message) {\n this.toggleComponent(targetComponent);\n }\n }, {\n key: "toggleComponent",\n value: function () {\n var _toggleComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(component) {\n var _this16 = this;\n\n var theme, activeThemes;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n if (!(component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Modal)) {\n _context9.next = 4;\n break;\n }\n\n this.openModalComponent(component);\n _context9.next = 19;\n break;\n\n case 4:\n if (!component.active) {\n _context9.next = 9;\n break;\n }\n\n _context9.next = 7;\n return this.deactivateComponent(component.uuid);\n\n case 7:\n _context9.next = 19;\n break;\n\n case 9:\n if (!(component.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme)) {\n _context9.next = 17;\n break;\n }\n\n theme = component;\n /* Deactive currently active theme if new theme is not layerable */\n\n activeThemes = this.getActiveThemes();\n /* Activate current before deactivating others, so as not to flicker */\n\n _context9.next = 14;\n return this.activateComponent(component.uuid);\n\n case 14:\n if (!theme.isLayerable()) {\n setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n var _iteratorNormalCompletion20, _didIteratorError20, _iteratorError20, _iterator20, _step20, candidate;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _iteratorNormalCompletion20 = true;\n _didIteratorError20 = false;\n _iteratorError20 = undefined;\n _context8.prev = 3;\n _iterator20 = activeThemes[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion20 = (_step20 = _iterator20.next()).done) {\n _context8.next = 13;\n break;\n }\n\n candidate = _step20.value;\n\n if (!(candidate && !candidate.isLayerable())) {\n _context8.next = 10;\n break;\n }\n\n _context8.next = 10;\n return _this16.deactivateComponent(candidate.uuid);\n\n case 10:\n _iteratorNormalCompletion20 = true;\n _context8.next = 5;\n break;\n\n case 13:\n _context8.next = 19;\n break;\n\n case 15:\n _context8.prev = 15;\n _context8.t0 = _context8["catch"](3);\n _didIteratorError20 = true;\n _iteratorError20 = _context8.t0;\n\n case 19:\n _context8.prev = 19;\n _context8.prev = 20;\n\n if (!_iteratorNormalCompletion20 && _iterator20.return != null) {\n _iterator20.return();\n }\n\n case 22:\n _context8.prev = 22;\n\n if (!_didIteratorError20) {\n _context8.next = 25;\n break;\n }\n\n throw _iteratorError20;\n\n case 25:\n return _context8.finish(22);\n\n case 26:\n return _context8.finish(19);\n\n case 27:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee7, null, [[3, 15, 19, 27], [20,, 22, 26]]);\n })), 10);\n }\n\n _context9.next = 19;\n break;\n\n case 17:\n _context9.next = 19;\n return this.activateComponent(component.uuid);\n\n case 19:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function toggleComponent(_x3) {\n return _toggleComponent.apply(this, arguments);\n }\n\n return toggleComponent;\n }()\n }, {\n key: "handleInstallLocalComponentMessage",\n value: function handleInstallLocalComponentMessage(sourceComponent, message) {\n /* Only native extensions have this permission */\n if (!this.isNativeExtension(sourceComponent)) {\n return;\n }\n\n var targetComponent = this.itemManager.findItem(message.data.uuid);\n this.desktopManager.installComponent(targetComponent);\n }\n }, {\n key: "runWithPermissions",\n value: function runWithPermissions(componentUuid, requiredPermissions, runFunction) {\n var component = this.itemManager.findItem(componentUuid);\n /* Make copy as not to mutate input values */\n\n requiredPermissions = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(requiredPermissions);\n var acquiredPermissions = component.permissions;\n var _iteratorNormalCompletion21 = true;\n var _didIteratorError21 = false;\n var _iteratorError21 = undefined;\n\n try {\n var _loop7 = function _loop7() {\n var required = _step21.value;\n\n /* Remove anything we already have */\n var respectiveAcquired = acquiredPermissions.find(function (candidate) {\n return candidate.name === required.name;\n });\n\n if (!respectiveAcquired) {\n return "continue";\n }\n /* We now match on name, lets substract from required.content_types anything we have in acquired. */\n\n\n var requiredContentTypes = required.content_types;\n\n if (!requiredContentTypes) {\n /* If this permission does not require any content types (i.e stream-context-item)\n then we can remove this from required since we match by name (respectiveAcquired.name === required.name) */\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["filterFromArray"])(requiredPermissions, required);\n return "continue";\n }\n\n var _iteratorNormalCompletion22 = true;\n var _didIteratorError22 = false;\n var _iteratorError22 = undefined;\n\n try {\n for (var _iterator22 = respectiveAcquired.content_types[Symbol.iterator](), _step22; !(_iteratorNormalCompletion22 = (_step22 = _iterator22.next()).done); _iteratorNormalCompletion22 = true) {\n var acquiredContentType = _step22.value;\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(requiredContentTypes, acquiredContentType);\n }\n } catch (err) {\n _didIteratorError22 = true;\n _iteratorError22 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion22 && _iterator22.return != null) {\n _iterator22.return();\n }\n } finally {\n if (_didIteratorError22) {\n throw _iteratorError22;\n }\n }\n }\n\n if (requiredContentTypes.length === 0) {\n /* We\'ve removed all acquired and end up with zero, means we already have all these permissions */\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["filterFromArray"])(requiredPermissions, required);\n }\n };\n\n for (var _iterator21 = requiredPermissions.slice()[Symbol.iterator](), _step21; !(_iteratorNormalCompletion21 = (_step21 = _iterator21.next()).done); _iteratorNormalCompletion21 = true) {\n var _ret6 = _loop7();\n\n if (_ret6 === "continue") continue;\n }\n } catch (err) {\n _didIteratorError21 = true;\n _iteratorError21 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion21 && _iterator21.return != null) {\n _iterator21.return();\n }\n } finally {\n if (_didIteratorError21) {\n throw _iteratorError21;\n }\n }\n }\n\n if (requiredPermissions.length > 0) {\n this.promptForPermissions(component, requiredPermissions, /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(approved) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (approved) {\n runFunction();\n }\n\n case 1:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee9);\n }));\n\n return function (_x4) {\n return _ref7.apply(this, arguments);\n };\n }());\n } else {\n runFunction();\n }\n }\n }, {\n key: "promptForPermissions",\n value: function promptForPermissions(component, permissions, callback) {\n var _this17 = this;\n\n var params = {\n component: component,\n permissions: permissions,\n permissionsString: this.permissionsStringForPermissions(permissions, component),\n actionBlock: callback,\n callback: function () {\n var _callback = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(approved) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n if (!approved) {\n _context11.next = 5;\n break;\n }\n\n _this17.log("Changing component to expand permissions", component);\n\n _context11.next = 4;\n return _this17.itemManager.changeItem(component.uuid, function (m) {\n var componentPermissions = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["Copy"])(component.permissions);\n var _iteratorNormalCompletion23 = true;\n var _didIteratorError23 = false;\n var _iteratorError23 = undefined;\n\n try {\n var _loop8 = function _loop8() {\n var permission = _step23.value;\n var matchingPermission = componentPermissions.find(function (candidate) {\n return candidate.name === permission.name;\n });\n\n if (!matchingPermission) {\n componentPermissions.push(permission);\n } else {\n /* Permission already exists, but content_types may have been expanded */\n var contentTypes = matchingPermission.content_types || [];\n matchingPermission.content_types = lodash_uniq__WEBPACK_IMPORTED_MODULE_8___default()(contentTypes.concat(permission.content_types));\n }\n };\n\n for (var _iterator23 = permissions[Symbol.iterator](), _step23; !(_iteratorNormalCompletion23 = (_step23 = _iterator23.next()).done); _iteratorNormalCompletion23 = true) {\n _loop8();\n }\n } catch (err) {\n _didIteratorError23 = true;\n _iteratorError23 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion23 && _iterator23.return != null) {\n _iterator23.return();\n }\n } finally {\n if (_didIteratorError23) {\n throw _iteratorError23;\n }\n }\n }\n\n var mutator = m;\n mutator.permissions = componentPermissions;\n });\n\n case 4:\n _this17.syncService.sync();\n\n case 5:\n _this17.permissionDialogs = _this17.permissionDialogs.filter(function (pendingDialog) {\n /* Remove self */\n if (pendingDialog === params) {\n pendingDialog.actionBlock && pendingDialog.actionBlock(approved);\n return false;\n }\n\n var containsObjectSubset = function containsObjectSubset(source, target) {\n return !target.some(function (val) {\n return !source.find(function (candidate) {\n return JSON.stringify(candidate) === JSON.stringify(val);\n });\n });\n };\n\n if (pendingDialog.component === component) {\n /* remove pending dialogs that are encapsulated by already approved permissions, and run its function */\n if (pendingDialog.permissions === permissions || containsObjectSubset(permissions, pendingDialog.permissions)) {\n /* If approved, run the action block. Otherwise, if canceled, cancel any\n pending ones as well, since the user was explicit in their intentions */\n if (approved) {\n pendingDialog.actionBlock && pendingDialog.actionBlock(approved);\n }\n\n return false;\n }\n }\n\n return true;\n });\n\n if (_this17.permissionDialogs.length > 0) {\n _this17.presentPermissionsDialog(_this17.permissionDialogs[0]);\n }\n\n case 7:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee10);\n }));\n\n function callback(_x5) {\n return _callback.apply(this, arguments);\n }\n\n return callback;\n }()\n };\n /**\n * Since these calls are asyncronous, multiple dialogs may be requested at the same time.\n * We only want to present one and trigger all callbacks based on one modal result\n */\n\n var existingDialog = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(this.permissionDialogs, {\n component: component\n });\n this.permissionDialogs.push(params);\n\n if (!existingDialog) {\n this.presentPermissionsDialog(params);\n } else {\n this.log(\'Existing dialog, not presenting.\');\n }\n }\n }, {\n key: "presentPermissionsDialog",\n value: function presentPermissionsDialog(dialog) {\n throw \'Must override SNComponentManager.presentPermissionsDialog\';\n }\n }, {\n key: "openModalComponent",\n value: function openModalComponent(component) {\n throw \'Must override SNComponentManager.presentPermissionsDialog\';\n }\n }, {\n key: "registerHandler",\n value: function registerHandler(handler) {\n var _this18 = this;\n\n this.handlers.push(handler);\n return function () {\n var matching = lodash_find__WEBPACK_IMPORTED_MODULE_7___default()(_this18.handlers, {\n identifier: handler.identifier\n });\n\n if (!matching) {\n _this18.log(\'Attempting to deregister non-existing handler\');\n\n return;\n }\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(_this18.handlers, matching);\n };\n }\n }, {\n key: "findOrCreateDataForComponent",\n value: function findOrCreateDataForComponent(component) {\n var data = this.componentState[component.uuid];\n\n if (!data) {\n data = {};\n this.componentState[component.uuid] = data;\n }\n\n return data;\n }\n }, {\n key: "setReadonlyStateForComponent",\n value: function setReadonlyStateForComponent(component, readonly) {\n var lockReadonly = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var data = this.findOrCreateDataForComponent(component);\n data.readonly = readonly;\n data.lockReadonly = lockReadonly;\n }\n }, {\n key: "getReadonlyStateForComponent",\n value: function getReadonlyStateForComponent(component) {\n var data = this.findOrCreateDataForComponent(component);\n return {\n readonly: data.readonly,\n lockReadonly: data.lockReadonly\n };\n }\n /** Called by other views when the iframe is ready */\n\n }, {\n key: "registerComponentWindow",\n value: function () {\n var _registerComponentWindow = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(component, componentWindow) {\n var data;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n this.log(\'Register component window\', component);\n data = this.findOrCreateDataForComponent(component);\n\n if (data.window === componentWindow) {\n this.log(\'Web|componentManager\', \'attempting to re-register same component window.\');\n }\n\n this.log(\'Web|componentManager|registerComponentWindow\', component);\n data.window = componentWindow;\n _context12.next = 7;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_12__["Uuid"].GenerateUuid();\n\n case 7:\n data.sessionKey = _context12.sent;\n this.sendMessageToComponent(component, {\n action: _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].ComponentRegistered,\n sessionKey: data.sessionKey,\n componentData: component.componentData,\n data: {\n uuid: component.uuid,\n environment: Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["environmentToString"])(this.environment),\n platform: Object(_Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["platformToString"])(this.platform),\n activeThemeUrls: this.urlsForActiveThemes()\n }\n });\n this.postActiveThemesToComponent(component);\n\n if (this.desktopManager) {\n this.desktopManager.notifyComponentActivation(component);\n }\n\n case 11:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function registerComponentWindow(_x6, _x7) {\n return _registerComponentWindow.apply(this, arguments);\n }\n\n return registerComponentWindow;\n }()\n }, {\n key: "registerComponent",\n value: function registerComponent(uuid) {\n this.log(\'Registering component\', uuid);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["addIfUnique"])(this.activeComponents, uuid);\n var component = this.itemManager.findItem(uuid);\n var _iteratorNormalCompletion24 = true;\n var _didIteratorError24 = false;\n var _iteratorError24 = undefined;\n\n try {\n for (var _iterator24 = this.handlers[Symbol.iterator](), _step24; !(_iteratorNormalCompletion24 = (_step24 = _iterator24.next()).done); _iteratorNormalCompletion24 = true) {\n var handler = _step24.value;\n\n if (handler.areas.includes(component.area) || handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n handler.activationHandler && handler.activationHandler(component);\n }\n }\n } catch (err) {\n _didIteratorError24 = true;\n _iteratorError24 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion24 && _iterator24.return != null) {\n _iterator24.return();\n }\n } finally {\n if (_didIteratorError24) {\n throw _iteratorError24;\n }\n }\n }\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Themes) {\n this.postActiveThemesToAllComponents();\n }\n }\n }, {\n key: "activateComponent",\n value: function () {\n var _activateComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(uuid) {\n var component;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n this.log(\'Activating component\', uuid);\n component = this.itemManager.findItem(uuid);\n\n if (component.active) {\n _context13.next = 5;\n break;\n }\n\n _context13.next = 5;\n return this.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = true;\n });\n\n case 5:\n this.registerComponent(uuid);\n this.syncService.sync();\n\n case 7:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function activateComponent(_x8) {\n return _activateComponent.apply(this, arguments);\n }\n\n return activateComponent;\n }()\n }, {\n key: "deregisterComponent",\n value: function deregisterComponent(uuid) {\n this.log(\'Degregistering component\', uuid);\n var component = this.itemManager.findItem(uuid);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["removeFromArray"])(this.activeComponents, uuid);\n delete this.componentState[component.uuid];\n var _iteratorNormalCompletion25 = true;\n var _didIteratorError25 = false;\n var _iteratorError25 = undefined;\n\n try {\n for (var _iterator25 = this.handlers[Symbol.iterator](), _step25; !(_iteratorNormalCompletion25 = (_step25 = _iterator25.next()).done); _iteratorNormalCompletion25 = true) {\n var handler = _step25.value;\n\n if (handler.areas.includes(component.area) || handler.areas.includes(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Any)) {\n handler.activationHandler && handler.activationHandler(component);\n }\n }\n } catch (err) {\n _didIteratorError25 = true;\n _iteratorError25 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion25 && _iterator25.return != null) {\n _iterator25.return();\n }\n } finally {\n if (_didIteratorError25) {\n throw _iteratorError25;\n }\n }\n }\n\n this.streamObservers = this.streamObservers.filter(function (o) {\n return o.componentUuid !== uuid;\n });\n this.contextStreamObservers = this.contextStreamObservers.filter(function (o) {\n return o.componentUuid !== uuid;\n });\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Themes) {\n this.postActiveThemesToAllComponents();\n }\n }\n }, {\n key: "deactivateComponent",\n value: function () {\n var _deactivateComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(uuid) {\n var _this$itemManager;\n\n var component;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n this.log(\'Deactivating component\', uuid);\n component = (_this$itemManager = this.itemManager) === null || _this$itemManager === void 0 ? void 0 : _this$itemManager.findItem(uuid);\n\n if (!component.active) {\n _context14.next = 5;\n break;\n }\n\n _context14.next = 5;\n return this.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = false;\n });\n\n case 5:\n this.findOrCreateDataForComponent(component).sessionKey = undefined;\n this.deregisterComponent(uuid);\n this.syncService.sync();\n\n case 8:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function deactivateComponent(_x9) {\n return _deactivateComponent.apply(this, arguments);\n }\n\n return deactivateComponent;\n }()\n }, {\n key: "reloadComponent",\n value: function () {\n var _reloadComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(uuid) {\n var _this$itemManager2,\n _this19 = this;\n\n var component;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n this.log(\'Reloading component\', uuid);\n /* Do soft deactivate */\n\n component = (_this$itemManager2 = this.itemManager) === null || _this$itemManager2 === void 0 ? void 0 : _this$itemManager2.findItem(uuid);\n _context16.next = 4;\n return this.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = false;\n });\n\n case 4:\n this.deregisterComponent(component.uuid);\n /* Do soft activate */\n\n return _context16.abrupt("return", new Promise(function (resolve) {\n _this19.timeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return _this19.itemManager.changeComponent(component.uuid, function (mutator) {\n mutator.active = true;\n });\n\n case 2:\n _this19.registerComponent(component.uuid);\n\n resolve();\n\n case 4:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee14);\n })));\n }));\n\n case 6:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function reloadComponent(_x10) {\n return _reloadComponent.apply(this, arguments);\n }\n\n return reloadComponent;\n }()\n }, {\n key: "deleteComponent",\n value: function () {\n var _deleteComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(uuid) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.itemManager.setItemToBeDeleted(uuid);\n\n case 2:\n this.syncService.sync();\n\n case 3:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function deleteComponent(_x11) {\n return _deleteComponent.apply(this, arguments);\n }\n\n return deleteComponent;\n }()\n }, {\n key: "isComponentActive",\n value: function isComponentActive(component) {\n return component.active;\n }\n }, {\n key: "iframeForComponent",\n value: function iframeForComponent(uuid) {\n var iframes = Array.from(document.getElementsByTagName(\'iframe\'));\n\n for (var _i2 = 0, _iframes = iframes; _i2 < _iframes.length; _i2++) {\n var frame = _iframes[_i2];\n var componentId = frame.dataset.componentId;\n\n if (componentId === uuid) {\n return frame;\n }\n }\n }\n }, {\n key: "focusChangedForComponent",\n value: function focusChangedForComponent(component) {\n var focused = document.activeElement === this.iframeForComponent(component.uuid);\n var _iteratorNormalCompletion26 = true;\n var _didIteratorError26 = false;\n var _iteratorError26 = undefined;\n\n try {\n for (var _iterator26 = this.handlers[Symbol.iterator](), _step26; !(_iteratorNormalCompletion26 = (_step26 = _iterator26.next()).done); _iteratorNormalCompletion26 = true) {\n var handler = _step26.value;\n\n /* Notify all handlers, and not just ones that match this component type */\n handler.focusHandler && handler.focusHandler(component, focused);\n }\n } catch (err) {\n _didIteratorError26 = true;\n _iteratorError26 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion26 && _iterator26.return != null) {\n _iterator26.return();\n }\n } finally {\n if (_didIteratorError26) {\n throw _iteratorError26;\n }\n }\n }\n }\n }, {\n key: "handleSetSizeEvent",\n value: function handleSetSizeEvent(component, data) {\n var setSize = function setSize(element, size) {\n var widthString = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isString"])(size.width) ? size.width : "".concat(data.width, "px");\n var heightString = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_13__["isString"])(size.height) ? size.height : "".concat(data.height, "px");\n\n if (element) {\n element.setAttribute(\'style\', "width:".concat(widthString, "; height:").concat(heightString, ";"));\n }\n };\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Rooms || component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Modal) {\n var selector = component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Rooms ? \'inner\' : \'outer\';\n var content = document.getElementById("component-content-".concat(selector, "-").concat(component.uuid));\n\n if (content) {\n setSize(content, data);\n }\n } else {\n var iframe = this.iframeForComponent(component.uuid);\n\n if (!iframe) {\n return;\n }\n\n setSize(iframe, data);\n /**\n * On Firefox, resizing a component iframe does not seem to have an effect with\n * editor-stack extensions. Sizing the parent does the trick, however, we can\'t do\n * this globally, otherwise, areas like the note-tags will not be able to expand\n * outside of the bounds (to display autocomplete, for example).\n */\n\n if (component.area === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].EditorStack) {\n var parent = iframe.parentElement;\n\n if (parent) {\n setSize(parent, data);\n }\n }\n }\n }\n }, {\n key: "editorForNote",\n value: function editorForNote(note) {\n var editors = this.componentsForArea(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Editor);\n var _iteratorNormalCompletion27 = true;\n var _didIteratorError27 = false;\n var _iteratorError27 = undefined;\n\n try {\n for (var _iterator27 = editors[Symbol.iterator](), _step27; !(_iteratorNormalCompletion27 = (_step27 = _iterator27.next()).done); _iteratorNormalCompletion27 = true) {\n var editor = _step27.value;\n\n if (editor.isExplicitlyEnabledForItem(note.uuid)) {\n return editor;\n }\n }\n } catch (err) {\n _didIteratorError27 = true;\n _iteratorError27 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion27 && _iterator27.return != null) {\n _iterator27.return();\n }\n } finally {\n if (_didIteratorError27) {\n throw _iteratorError27;\n }\n }\n }\n\n var defaultEditor;\n /* No editor found for note. Use default editor, if note does not prefer system editor */\n\n if (this.isMobile) {\n if (!note.mobilePrefersPlainEditor) {\n defaultEditor = this.getDefaultEditor();\n }\n } else {\n if (!note.prefersPlainEditor) {\n defaultEditor = this.getDefaultEditor();\n }\n }\n\n if (defaultEditor && !defaultEditor.isExplicitlyDisabledForItem(note.uuid)) {\n return defaultEditor;\n } else {\n return undefined;\n }\n }\n }, {\n key: "getDefaultEditor",\n value: function getDefaultEditor() {\n var editors = this.componentsForArea(_Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Editor);\n\n if (this.isMobile) {\n return editors.filter(function (e) {\n return e.isMobileDefault;\n })[0];\n } else {\n return editors.filter(function (e) {\n return e.isDefaultEditor();\n })[0];\n }\n }\n }, {\n key: "permissionsStringForPermissions",\n value: function permissionsStringForPermissions(permissions, component) {\n var finalString = \'\';\n var permissionsCount = permissions.length;\n\n var addSeparator = function addSeparator(index, length) {\n if (index > 0) {\n if (index === length - 1) {\n if (length === 2) {\n return \' and \';\n } else {\n return \', and \';\n }\n } else {\n return \', \';\n }\n }\n\n return \'\';\n };\n\n permissions.forEach(function (permission, index) {\n if (permission.name === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamItems) {\n var types = permission.content_types.map(function (type) {\n var desc = Object(_models_content_types__WEBPACK_IMPORTED_MODULE_3__["displayStringForContentType"])(type);\n\n if (desc) {\n return desc + \'s\';\n } else {\n return \'items of type \' + type;\n }\n });\n var typesString = \'\';\n\n for (var i = 0; i < types.length; i++) {\n var type = types[i];\n typesString += addSeparator(i, types.length + permissionsCount - index - 1);\n typesString += type;\n }\n\n finalString += addSeparator(index, permissionsCount);\n finalString += typesString;\n\n if (types.length >= 2 && index < permissionsCount - 1) {\n /* If you have a list of types, and still an additional root-level\n permission coming up, add a comma */\n finalString += \', \';\n }\n } else if (permission.name === _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentAction"].StreamContextItem) {\n var _mapping;\n\n var mapping = (_mapping = {}, _defineProperty(_mapping, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].EditorStack, \'working note\'), _defineProperty(_mapping, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].NoteTags, \'working note\'), _defineProperty(_mapping, _Models_app_component__WEBPACK_IMPORTED_MODULE_11__["ComponentArea"].Editor, \'working note\'), _mapping);\n finalString += addSeparator(index, permissionsCount);\n finalString += mapping[component.area];\n }\n });\n return finalString + \'.\';\n }\n }, {\n key: "isDesktop",\n get: function get() {\n return this.environment === _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Environment"].Desktop;\n }\n }, {\n key: "isMobile",\n get: function get() {\n return this.environment === _Lib_platforms__WEBPACK_IMPORTED_MODULE_14__["Environment"].Mobile;\n }\n }, {\n key: "components",\n get: function get() {\n return this.itemManager.getItems([_models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Component, _models_content_types__WEBPACK_IMPORTED_MODULE_3__["ContentType"].Theme]);\n }\n }]);\n\n return SNComponentManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_10__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvY29tcG9uZW50X21hbmFnZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvY29tcG9uZW50X21hbmFnZXIudHM/ODFlMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdWlkcyB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IENvbnRlbnRUeXBlLCBkaXNwbGF5U3RyaW5nRm9yQ29udGVudFR5cGUgfSBmcm9tICcuLy4uL21vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICcuLy4uL3Byb3RvY29sL3BheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBNdXRhdGlvblR5cGUgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgZmluZCBmcm9tICdsb2Rhc2gvZmluZCc7XG5pbXBvcnQgdW5pcSBmcm9tICdsb2Rhc2gvdW5pcSc7XG5pbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC9yZW1vdmUnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRBcmVhLCBDb21wb25lbnRBY3Rpb24gfSBmcm9tICdATW9kZWxzL2FwcC9jb21wb25lbnQnO1xuaW1wb3J0IHsgVXVpZCB9IGZyb20gJ0BMaWIvdXVpZCc7XG5pbXBvcnQgeyBDb3B5LCBpc1N0cmluZywgZXh0ZW5kQXJyYXksIHJlbW92ZUZyb21BcnJheSwgc2VhcmNoQXJyYXksIGNvbmNhdEFycmF5cywgYWRkSWZVbmlxdWUsIGZpbHRlckZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUGxhdGZvcm0sIEVudmlyb25tZW50LCBwbGF0Zm9ybVRvU3RyaW5nLCBlbnZpcm9ubWVudFRvU3RyaW5nIH0gZnJvbSAnQExpYi9wbGF0Zm9ybXMnO1xuY29uc3QgREVTS1RPUF9VUkxfUFJFRklYID0gJ3NuOi8vJztcbmNvbnN0IExPQ0FMX0hPU1QgPSAnbG9jYWxob3N0JztcbmNvbnN0IENVU1RPTV9MT0NBTF9IT1NUID0gJ3NuLmxvY2FsJztcbmNvbnN0IEFORFJPSURfTE9DQUxfSE9TVCA9ICcxMC4wLjIuMic7XG4vKiBUaGlzIGRvbWFpbiB3aWxsIGJlIHVzZWQgdG8gc2F2ZSBjb250ZXh0IGl0ZW0gY2xpZW50IGRhdGEgKi9cbmNvbnN0IENvbXBvbmVudERhdGFEb21haW4gPSAnb3JnLnN0YW5kYXJkbm90ZXMuc24uY29tcG9uZW50cyc7XG4vKipcbiAqIFJlc3BvbnNpYmxlIGZvciBvcmNoZXN0cmF0aW5nIGNvbXBvbmVudCBmdW5jdGlvbmFsaXR5LCBpbmNsdWRpbmcgZWRpdG9ycywgdGhlbWVzLFxuICogYW5kIG90aGVyIGNvbXBvbmVudHMuIFRoZSBjb21wb25lbnQgbWFuYWdlciBwcmltYXJpbHkgZGVhbHMgd2l0aCBpZnJhbWVzLCBhbmQgb3JjaGVzdHJhdGVzXG4gKiBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMgdG8gYW5kIGZyb20gZnJhbWVzIHZpYSB0aGUgcG9zdE1lc3NhZ2UgQVBJLlxuICovXG5leHBvcnQgY2xhc3MgU05Db21wb25lbnRNYW5hZ2VyIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBzeW5jU2VydmljZSwgYWxlcnRTZXJ2aWNlLCBlbnZpcm9ubWVudCwgcGxhdGZvcm0sIHRpbWVvdXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZSA9IHt9O1xuICAgICAgICB0aGlzLnN0cmVhbU9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLmNvbnRleHRTdHJlYW1PYnNlcnZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5hY3RpdmVDb21wb25lbnRzID0gW107XG4gICAgICAgIHRoaXMucGVybWlzc2lvbkRpYWxvZ3MgPSBbXTtcbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IFtdO1xuICAgICAgICB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ29tcG9uZW50cyA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW1zKHRoaXMuYWN0aXZlQ29tcG9uZW50cyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBhY3RpdmVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuaWZyYW1lRm9yQ29tcG9uZW50KGNvbXBvbmVudC51dWlkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1c0NoYW5nZWRGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5vbldpbmRvd01lc3NhZ2UgPSAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8qKiBNYWtlIHN1cmUgdGhpcyBtZXNzYWdlIGlzIGZvciB1cyAqL1xuICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuc2Vzc2lvbktleSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdDb21wb25lbnQgbWFuYWdlciByZWNlaXZlZCBtZXNzYWdlJywgZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZXNzYWdlKHRoaXMuY29tcG9uZW50Rm9yU2Vzc2lvbktleShldmVudC5kYXRhLnNlc3Npb25LZXkpLCBldmVudC5kYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZW91dCB8fCBzZXRUaW1lb3V0LmJpbmQod2luZG93KTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gc3luY1NlcnZpY2U7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gYWxlcnRTZXJ2aWNlO1xuICAgICAgICB0aGlzLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgICAgIHRoaXMucGxhdGZvcm0gPSBwbGF0Zm9ybTtcbiAgICAgICAgdGhpcy5jb25maWd1cmVGb3JHZW5lcmFsVXNhZ2UoKTtcbiAgICAgICAgaWYgKGVudmlyb25tZW50ICE9PSBFbnZpcm9ubWVudC5Nb2JpbGUpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJlRm9yTm9uTW9iaWxlVXNhZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgaXNEZXNrdG9wKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudCA9PT0gRW52aXJvbm1lbnQuRGVza3RvcDtcbiAgICB9XG4gICAgZ2V0IGlzTW9iaWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudCA9PT0gRW52aXJvbm1lbnQuTW9iaWxlO1xuICAgIH1cbiAgICBnZXQgY29tcG9uZW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbU1hbmFnZXIuZ2V0SXRlbXMoW1xuICAgICAgICAgICAgQ29udGVudFR5cGUuQ29tcG9uZW50LFxuICAgICAgICAgICAgQ29udGVudFR5cGUuVGhlbWVcbiAgICAgICAgXSk7XG4gICAgfVxuICAgIGNvbXBvbmVudHNGb3JBcmVhKGFyZWEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50cy5maWx0ZXIoKGNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5hcmVhID09PSBhcmVhO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIEBvdmVycmlkZSAqL1xuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgICAgIHRoaXMuc3RyZWFtT2JzZXJ2ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuY29udGV4dFN0cmVhbU9ic2VydmVycy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGlhbG9ncy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLmhhbmRsZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlciA9IG51bGw7XG4gICAgICAgIGlmICh3aW5kb3cpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMuZGV0ZWN0Rm9jdXNDaGFuZ2UsIHRydWUpO1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlLCB0cnVlKTtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5vbldpbmRvd01lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHNldERlc2t0b3BNYW5hZ2VyKGRlc2t0b3BNYW5hZ2VyKSB7XG4gICAgICAgIHRoaXMuZGVza3RvcE1hbmFnZXIgPSBkZXNrdG9wTWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb25maWd1cmVGb3JEZXNrdG9wKCk7XG4gICAgfVxuICAgIGNvbmZpZ3VyZUZvckdlbmVyYWxVc2FnZSgpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtT2JzZXJ2ZXIgPSB0aGlzLml0ZW1NYW5hZ2VyLmFkZE9ic2VydmVyKENvbnRlbnRUeXBlLkFueSwgKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtcyA9IGNvbmNhdEFycmF5cyhjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkKTtcbiAgICAgICAgICAgIGNvbnN0IHN5bmNlZENvbXBvbmVudHMgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5Db21wb25lbnQgfHxcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLlRoZW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBvbmx5IHdhbnQgdG8gc3luYyBpZiB0aGUgaXRlbSBzb3VyY2UgaXMgUmV0cmlldmVkLCBub3QgUmVtb3RlU2F2ZWQgdG8gYXZvaWRcbiAgICAgICAgICAgICAqIHJlY3Vyc2lvbiBjYXVzZWQgYnkgdGhlIGNvbXBvbmVudCBiZWluZyBtb2RpZmllZCBhbmQgc2F2ZWQgYWZ0ZXIgaXQgaXMgdXBkYXRlZC5cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoc3luY2VkQ29tcG9uZW50cy5sZW5ndGggPiAwICYmIHNvdXJjZSAhPT0gUGF5bG9hZFNvdXJjZS5SZW1vdGVTYXZlZCkge1xuICAgICAgICAgICAgICAgIC8qIEVuc3VyZSBhbnkgY29tcG9uZW50IGluIG91ciBkYXRhIGlzIGluc3RhbGxlZCBieSB0aGUgc3lzdGVtICovXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEZXNrdG9wKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVza3RvcE1hbmFnZXIuc3luY0NvbXBvbmVudHNJbnN0YWxsYXRpb24oc3luY2VkQ29tcG9uZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2Ygc3luY2VkQ29tcG9uZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzSW5BY3RpdmUgPSB0aGlzLmFjdGl2ZUNvbXBvbmVudHMuaW5jbHVkZXMoY29tcG9uZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQuYWN0aXZlICYmICFjb21wb25lbnQuZGVsZXRlZCAmJiAhaXNJbkFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2YXRlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWNvbXBvbmVudC5hY3RpdmUgJiYgaXNJbkFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlYWN0aXZhdGVDb21wb25lbnQoY29tcG9uZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIExvY2FsQ2hhbmdlZCBpcyBub3QgaW50ZXJlc3RpbmcgdG8gc2VuZCB0byBvYnNlcnZlcnMuIEZvciBsb2NhbCBjaGFuZ2VzLFxuICAgICAgICAgICAgd2Ugd2FpdCB1bnRpbCB0aGUgaXRlbSBpcyBzZXQgdG8gZGlydHkgYmVmb3JlIG5vdGlmeWluZyBvYnNlcnZlcnMsIHdoZXJlIHRoZSBtYXBwaW5nXG4gICAgICAgICAgICBzb3VyY2Ugd291bGQgYmUgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQgKi9cbiAgICAgICAgICAgIGlmIChzb3VyY2UgIT09IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlTdHJlYW1PYnNlcnZlcnMoaXRlbXMsIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vdGlmeVN0cmVhbU9ic2VydmVycyhhbGxJdGVtcywgc291cmNlLCBzb3VyY2VLZXkpIHtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiB0aGlzLnN0cmVhbU9ic2VydmVycykge1xuICAgICAgICAgICAgaWYgKHNvdXJjZUtleSAmJiBzb3VyY2VLZXkgPT09IG9ic2VydmVyLmNvbXBvbmVudFV1aWQpIHtcbiAgICAgICAgICAgICAgICAvKiBEb24ndCBub3RpZnkgc291cmNlIG9mIGNoYW5nZSwgYXMgaXQgaXMgdGhlIG9yaWdpbmF0b3IsIGRvZXNuJ3QgbmVlZCBkdXBsaWNhdGUgZXZlbnQuICovXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWxldmFudEl0ZW1zID0gYWxsSXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9ic2VydmVyLmNvbnRlbnRUeXBlcy5pbmRleE9mKGl0ZW0uY29udGVudF90eXBlKSAhPT0gLTE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZWxldmFudEl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IFt7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1JdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlczogb2JzZXJ2ZXIuY29udGVudFR5cGVzLnNvcnQoKVxuICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMob2JzZXJ2ZXIuY29tcG9uZW50VXVpZCwgcmVxdWlyZWRQZXJtaXNzaW9ucywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VuZEl0ZW1zSW5SZXBseShvYnNlcnZlci5jb21wb25lbnRVdWlkLCByZWxldmFudEl0ZW1zLCBvYnNlcnZlci5vcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWlyZWRDb250ZXh0UGVybWlzc2lvbnMgPSBbe1xuICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1Db250ZXh0SXRlbVxuICAgICAgICAgICAgfV07XG4gICAgICAgIGZvciAoY29uc3Qgb2JzZXJ2ZXIgb2YgdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICBpZiAoc291cmNlS2V5ICYmIHNvdXJjZUtleSA9PT0gb2JzZXJ2ZXIuY29tcG9uZW50VXVpZCkge1xuICAgICAgICAgICAgICAgIC8qIERvbid0IG5vdGlmeSBzb3VyY2Ugb2YgY2hhbmdlLCBhcyBpdCBpcyB0aGUgb3JpZ2luYXRvciwgZG9lc24ndCBuZWVkIGR1cGxpY2F0ZSBldmVudC4gKi9cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKG9ic2VydmVyLmFyZWEpICYmXG4gICAgICAgICAgICAgICAgICAgICFoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1JbkNvbnRleHQgPSBoYW5kbGVyLmNvbnRleHRSZXF1ZXN0SGFuZGxlcihvYnNlcnZlci5jb21wb25lbnRVdWlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1JbkNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nSXRlbSA9IGZpbmQoYWxsSXRlbXMsIHsgdXVpZDogaXRlbUluQ29udGV4dC51dWlkIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZ0l0ZW0uZGVsZXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMob2JzZXJ2ZXIuY29tcG9uZW50VXVpZCwgcmVxdWlyZWRDb250ZXh0UGVybWlzc2lvbnMsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kQ29udGV4dEl0ZW1JblJlcGx5KG9ic2VydmVyLmNvbXBvbmVudFV1aWQsIG1hdGNoaW5nSXRlbSwgb2JzZXJ2ZXIub3JpZ2luYWxNZXNzYWdlLCBzb3VyY2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlzTmF0aXZlRXh0ZW5zaW9uKGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBuYXRpdmVVcmxzID0gW1xuICAgICAgICAgICAgd2luZG93Ll9leHRlbnNpb25zX21hbmFnZXJfbG9jYXRpb24sXG4gICAgICAgICAgICB3aW5kb3cuX2JhdGNoX21hbmFnZXJfbG9jYXRpb25cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgaG9zdGVkVXJsID0gY29tcG9uZW50Lmhvc3RlZF91cmw7XG4gICAgICAgIGNvbnN0IGxvY2FsVXJsID0gY29tcG9uZW50LmxvY2FsX3VybCAmJiBjb21wb25lbnQubG9jYWxfdXJsLnJlcGxhY2UoREVTS1RPUF9VUkxfUFJFRklYLCAnJyk7XG4gICAgICAgIHJldHVybiBuYXRpdmVVcmxzLmluY2x1ZGVzKGhvc3RlZFVybCkgfHwgbmF0aXZlVXJscy5pbmNsdWRlcyhsb2NhbFVybCk7XG4gICAgfVxuICAgIGNvbmZpZ3VyZUZvck5vbk1vYmlsZVVzYWdlKCkge1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lclxuICAgICAgICAgICAgPyB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlLCB0cnVlKVxuICAgICAgICAgICAgOiB3aW5kb3cuYXR0YWNoRXZlbnQoJ29uZm9jdXNvdXQnLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICAgID8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCB0aGlzLmRldGVjdEZvY3VzQ2hhbmdlLCB0cnVlKVxuICAgICAgICAgICAgOiB3aW5kb3cuYXR0YWNoRXZlbnQoJ29uYmx1cicsIHRoaXMuZGV0ZWN0Rm9jdXNDaGFuZ2UpO1xuICAgICAgICAvKiBPbiBtb2JpbGUsIGV2ZW50cyBsaXN0ZW5lcnMgYXJlIGhhbmRsZWQgYnkgYSByZXNwZWN0aXZlIGNvbXBvbmVudCAqL1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMub25XaW5kb3dNZXNzYWdlKTtcbiAgICB9XG4gICAgY29uZmlndXJlRm9yRGVza3RvcCgpIHtcbiAgICAgICAgdGhpcy5kZXNrdG9wTWFuYWdlci5yZWdpc3RlclVwZGF0ZU9ic2VydmVyKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIC8qIFJlbG9hZCB0aGVtZSBpZiBhY3RpdmUgKi9cbiAgICAgICAgICAgIGlmIChjb21wb25lbnQuYWN0aXZlICYmIGNvbXBvbmVudC5pc1RoZW1lKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3RpdmVUaGVtZXNUb0FsbENvbXBvbmVudHMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBvc3RBY3RpdmVUaGVtZXNUb0FsbENvbXBvbmVudHMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHRoaXMuY29tcG9uZW50cykge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50U3RhdGUgPSB0aGlzLmZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgICAgIC8qIFNraXAgb3ZlciBjb21wb25lbnRzIHRoYXQgYXJlIHRoZW1lcyB0aGVtc2VsdmVzLFxuICAgICAgICAgICAgICBvciBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBhY3RpdmUsIG9yIGNvbXBvbmVudHMgdGhhdCBkb24ndCBoYXZlIGEgd2luZG93ICovXG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmlzVGhlbWUoKSB8fCAhY29tcG9uZW50LmFjdGl2ZSB8fCAhY29tcG9uZW50U3RhdGUud2luZG93KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBvc3RBY3RpdmVUaGVtZXNUb0NvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldEFjdGl2ZVRoZW1lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcG9uZW50c0ZvckFyZWEoQ29tcG9uZW50QXJlYS5UaGVtZXMpLmZpbHRlcigodGhlbWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGVtZS5hY3RpdmU7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB1cmxzRm9yQWN0aXZlVGhlbWVzKCkge1xuICAgICAgICBjb25zdCB0aGVtZXMgPSB0aGlzLmdldEFjdGl2ZVRoZW1lcygpO1xuICAgICAgICBjb25zdCB1cmxzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgdGhlbWUgb2YgdGhlbWVzKSB7XG4gICAgICAgICAgICBjb25zdCB1cmwgPSB0aGlzLnVybEZvckNvbXBvbmVudCh0aGVtZSk7XG4gICAgICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgICAgICAgdXJscy5wdXNoKHVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVybHM7XG4gICAgfVxuICAgIHBvc3RBY3RpdmVUaGVtZXNUb0NvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgdXJscyA9IHRoaXMudXJsc0ZvckFjdGl2ZVRoZW1lcygpO1xuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgdGhlbWVzOiB1cmxzXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBhY3Rpb246IENvbXBvbmVudEFjdGlvbi5BY3RpdmF0ZVRoZW1lcyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVRvQ29tcG9uZW50KGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgfVxuICAgIGNvbnRleHRJdGVtRGlkQ2hhbmdlSW5BcmVhKGFyZWEpIHtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIGlmICghaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhhcmVhKSAmJlxuICAgICAgICAgICAgICAgICFoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLmZpbHRlcigob2JzZXJ2ZXIpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2JzZXJ2ZXIuYXJlYSA9PT0gYXJlYTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiBvYnNlcnZlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlci5jb250ZXh0UmVxdWVzdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUluQ29udGV4dCA9IGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKG9ic2VydmVyLmNvbXBvbmVudFV1aWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbUluQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kQ29udGV4dEl0ZW1JblJlcGx5KG9ic2VydmVyLmNvbXBvbmVudFV1aWQsIGl0ZW1JbkNvbnRleHQsIG9ic2VydmVyLm9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXNDb21wb25lbnRIaWRkZW4oY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFN0YXRlID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRTdGF0ZS5oaWRkZW47XG4gICAgfVxuICAgIHNldENvbXBvbmVudEhpZGRlbihjb21wb25lbnQsIGhpZGRlbikge1xuICAgICAgICAvKiBBIGhpZGRlbiBjb21wb25lbnQgd2lsbCBub3QgcmVjZWl2ZSBtZXNzYWdlcy4gSG93ZXZlciwgd2hlbiBhIGNvbXBvbmVudCBpcyB1bmhpZGRlbixcbiAgICAgICAgICogd2UgbmVlZCB0byBzZW5kIGl0IGFueSBpdGVtcyBpdCBtYXkgaGF2ZSByZWdpc3RlcmVkIHN0cmVhbWluZyBmb3IuICovXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFN0YXRlID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChoaWRkZW4pIHtcbiAgICAgICAgICAgIGNvbXBvbmVudFN0YXRlLmhpZGRlbiA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50U3RhdGUuaGlkZGVuKSB7XG4gICAgICAgICAgICBjb21wb25lbnRTdGF0ZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHRPYnNlcnZlciA9IGZpbmQodGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLCB7IGlkZW50aWZpZXI6IGNvbXBvbmVudC51dWlkIH0pO1xuICAgICAgICAgICAgaWYgKGNvbnRleHRPYnNlcnZlcikge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RyZWFtQ29udGV4dEl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgY29udGV4dE9ic2VydmVyLm9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdHJlYW1PYnNlcnZlciA9IGZpbmQodGhpcy5zdHJlYW1PYnNlcnZlcnMsIHsgaWRlbnRpZmllcjogY29tcG9uZW50LnV1aWQgfSk7XG4gICAgICAgICAgICBpZiAoc3RyZWFtT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVN0cmVhbUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIHN0cmVhbU9ic2VydmVyLm9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAganNvbkZvckl0ZW0oaXRlbSwgY29tcG9uZW50LCBzb3VyY2UpIHtcbiAgICAgICAgY29uc3QgaXNNZXRhZGF0VXBkYXRlID0gc291cmNlID09PSBQYXlsb2FkU291cmNlLlJlbW90ZVNhdmVkIHx8XG4gICAgICAgICAgICBzb3VyY2UgPT09IFBheWxvYWRTb3VyY2UuTG9jYWxTYXZlZDtcbiAgICAgICAgLyoqIFRoZSBkYXRhIGFsbCBjb21wb25lbnRzIHN0b3JlIGludG8gKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50RGF0YSA9IGl0ZW0uZ2V0RG9tYWluRGF0YShDb21wb25lbnREYXRhRG9tYWluKSB8fCB7fTtcbiAgICAgICAgLyoqIFRoZSBkYXRhIGZvciB0aGlzIHBhcnRpY3VsYXIgY29tcG9uZW50ICovXG4gICAgICAgIGNvbnN0IGNsaWVudERhdGEgPSBjb21wb25lbnREYXRhW2NvbXBvbmVudC5nZXRDbGllbnREYXRhS2V5KCldIHx8IHt9O1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB1dWlkOiBpdGVtLnV1aWQsXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGl0ZW0uY29udGVudF90eXBlLFxuICAgICAgICAgICAgY3JlYXRlZF9hdDogaXRlbS5jcmVhdGVkX2F0LFxuICAgICAgICAgICAgdXBkYXRlZF9hdDogaXRlbS51cGRhdGVkX2F0LFxuICAgICAgICAgICAgZGVsZXRlZDogaXRlbS5kZWxldGVkLFxuICAgICAgICAgICAgaXNNZXRhZGF0YVVwZGF0ZTogaXNNZXRhZGF0VXBkYXRlLFxuICAgICAgICAgICAgY29udGVudDogaXRlbS5jb250ZW50LFxuICAgICAgICAgICAgY2xpZW50RGF0YTogY2xpZW50RGF0YVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlbW92ZVByaXZhdGVQcm9wZXJ0aWVzRnJvbVJlc3BvbnNlSXRlbXMoW3BhcmFtc10sIGNvbXBvbmVudCk7XG4gICAgICAgIHJldHVybiBwYXJhbXM7XG4gICAgfVxuICAgIHNlbmRJdGVtc0luUmVwbHkoY29tcG9uZW50VXVpZCwgaXRlbXMsIG1lc3NhZ2UsIHNvdXJjZSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKGNvbXBvbmVudFV1aWQpO1xuICAgICAgICB0aGlzLmxvZygnQ29tcG9uZW50IG1hbmFnZXIgc2VuZCBpdGVtcyBpbiByZXBseScsIGNvbXBvbmVudCwgaXRlbXMsIG1lc3NhZ2UpO1xuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSB7fTtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5qc29uRm9ySXRlbShpdGVtLCBjb21wb25lbnQsIHNvdXJjZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXNwb25zZURhdGEuaXRlbXMgPSBtYXBwZWQ7XG4gICAgICAgIHRoaXMucmVwbHlUb01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlLCByZXNwb25zZURhdGEpO1xuICAgIH1cbiAgICBzZW5kQ29udGV4dEl0ZW1JblJlcGx5KGNvbXBvbmVudFV1aWQsIGl0ZW0sIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0oY29tcG9uZW50VXVpZCk7XG4gICAgICAgIHRoaXMubG9nKCdDb21wb25lbnQgbWFuYWdlciBzZW5kIGNvbnRleHQgaXRlbSBpbiByZXBseScsIGNvbXBvbmVudCwgaXRlbSwgb3JpZ2luYWxNZXNzYWdlKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICBpdGVtOiB0aGlzLmpzb25Gb3JJdGVtKGl0ZW0sIGNvbXBvbmVudCwgc291cmNlKVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgb3JpZ2luYWxNZXNzYWdlLCByZXNwb25zZSk7XG4gICAgfVxuICAgIHJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgb3JpZ2luYWxNZXNzYWdlLCByZXBseURhdGEpIHtcbiAgICAgICAgY29uc3QgcmVwbHkgPSB7XG4gICAgICAgICAgICBhY3Rpb246IENvbXBvbmVudEFjdGlvbi5SZXBseSxcbiAgICAgICAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbE1lc3NhZ2UsXG4gICAgICAgICAgICBkYXRhOiByZXBseURhdGFcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVRvQ29tcG9uZW50KGNvbXBvbmVudCwgcmVwbHkpO1xuICAgIH1cbiAgICBzZW5kTWVzc2FnZVRvQ29tcG9uZW50KGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCBwZXJtaXNzaWJsZUFjdGlvbnNXaGlsZUhpZGRlbiA9IFtcbiAgICAgICAgICAgIENvbXBvbmVudEFjdGlvbi5Db21wb25lbnRSZWdpc3RlcmVkLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkFjdGl2YXRlVGhlbWVzXG4gICAgICAgIF07XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFN0YXRlID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRTdGF0ZS5oaWRkZW4gJiYgIXBlcm1pc3NpYmxlQWN0aW9uc1doaWxlSGlkZGVuLmluY2x1ZGVzKG1lc3NhZ2UuYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ0NvbXBvbmVudCBkaXNhYmxlZCBmb3IgY3VycmVudCBpdGVtLCBpZ25vcmluZyBtZXNzYWdlcy4nLCBjb21wb25lbnQubmFtZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ0NvbXBvbmVudCBtYW5hZ2VyIHNlbmQgbWVzc2FnZSB0byBjb21wb25lbnQnLCBjb21wb25lbnQsIG1lc3NhZ2UpO1xuICAgICAgICBsZXQgb3JpZ2luID0gdGhpcy51cmxGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKCFvcmlnaW4gfHwgIWNvbXBvbmVudFN0YXRlLndpbmRvdykge1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoYFN0YW5kYXJkIE5vdGVzIGlzIHRyeWluZyB0byBjb21tdW5pY2F0ZSB3aXRoICR7Y29tcG9uZW50Lm5hbWV9LCBcbiAgICAgICAgYnV0IGFuIGVycm9yIGlzIG9jY3VycmluZy4gUGxlYXNlIHJlc3RhcnQgdGhpcyBleHRlbnNpb24gYW5kIHRyeSBhZ2Fpbi5gKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9yaWdpbi5zdGFydHNXaXRoKCdodHRwJykgJiYgIW9yaWdpbi5zdGFydHNXaXRoKCdmaWxlJykpIHtcbiAgICAgICAgICAgIC8qIE5hdGl2ZSBleHRlbnNpb24gcnVubmluZyBpbiB3ZWIsIHByZWZpeCBjdXJyZW50IGhvc3QgKi9cbiAgICAgICAgICAgIG9yaWdpbiA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmICsgb3JpZ2luO1xuICAgICAgICB9XG4gICAgICAgIC8qIE1vYmlsZSBtZXNzYWdpbmcgcmVxdWlyZXMganNvbiAqL1xuICAgICAgICBjb21wb25lbnRTdGF0ZS53aW5kb3cucG9zdE1lc3NhZ2UodGhpcy5pc01vYmlsZSA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZSwgb3JpZ2luKTtcbiAgICB9XG4gICAgdXJsRm9yQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICAvKiBvZmZsaW5lT25seSBpcyBhdmFpbGFibGUgb25seSBvbiBkZXNrdG9wLCBhbmQgbm90IG9uIHdlYiBvciBtb2JpbGUuICovXG4gICAgICAgIGlmIChjb21wb25lbnQub2ZmbGluZU9ubHkgJiYgIXRoaXMuaXNEZXNrdG9wKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcG9uZW50Lm9mZmxpbmVPbmx5IHx8ICh0aGlzLmlzRGVza3RvcCAmJiBjb21wb25lbnQubG9jYWxfdXJsKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC5sb2NhbF91cmxcbiAgICAgICAgICAgICAgICAmJiBjb21wb25lbnQubG9jYWxfdXJsLnJlcGxhY2UoREVTS1RPUF9VUkxfUFJFRklYLCB0aGlzLmRlc2t0b3BNYW5hZ2VyLmdldEV4dFNlcnZlckhvc3QoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgdXJsID0gY29tcG9uZW50Lmhvc3RlZF91cmwgfHwgY29tcG9uZW50LmxlZ2FjeV91cmw7XG4gICAgICAgICAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsUmVwbGFjZW1lbnQgPSB0aGlzLnBsYXRmb3JtID09PSBQbGF0Zm9ybS5Jb3MgPyBMT0NBTF9IT1NUIDogQU5EUk9JRF9MT0NBTF9IT1NUO1xuICAgICAgICAgICAgICAgIHVybCA9IHVybC5yZXBsYWNlKExPQ0FMX0hPU1QsIGxvY2FsUmVwbGFjZW1lbnQpLnJlcGxhY2UoQ1VTVE9NX0xPQ0FMX0hPU1QsIGxvY2FsUmVwbGFjZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb21wb25lbnRGb3JVcmwodXJsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBvbmVudHMuZmlsdGVyKChjb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQuaG9zdGVkX3VybCA9PT0gdXJsIHx8IGNvbXBvbmVudC5sZWdhY3lfdXJsID09PSB1cmw7XG4gICAgICAgIH0pWzBdO1xuICAgIH1cbiAgICBzZXNzaW9uS2V5Rm9yQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRTdGF0ZSA9IHRoaXMuZmluZE9yQ3JlYXRlRGF0YUZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gY29tcG9uZW50U3RhdGUuc2Vzc2lvbktleTtcbiAgICB9XG4gICAgY29tcG9uZW50Rm9yU2Vzc2lvbktleShrZXkpIHtcbiAgICAgICAgbGV0IGNvbXBvbmVudDtcbiAgICAgICAgZm9yIChjb25zdCB1dWlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY29tcG9uZW50U3RhdGUpKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5jb21wb25lbnRTdGF0ZVt1dWlkXTtcbiAgICAgICAgICAgIGlmIChkYXRhPy5zZXNzaW9uS2V5ID09PSBrZXkpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudHMuZmluZCgoYykgPT4gYy51dWlkID09PSB1dWlkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlci5jb21wb25lbnRGb3JTZXNzaW9uS2V5SGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBoYW5kbGVyLmNvbXBvbmVudEZvclNlc3Npb25LZXlIYW5kbGVyKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb21wb25lbnQ7XG4gICAgfVxuICAgIGhhbmRsZU1lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKSB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnQ29tcG9uZW50IG5vdCBkZWZpbmVkIGZvciBtZXNzYWdlLCByZXR1cm5pbmcnLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KCdBbiBleHRlbnNpb24gaXMgdHJ5aW5nIHRvIGNvbW11bmljYXRlIHdpdGggU3RhbmRhcmQgTm90ZXMsJyArXG4gICAgICAgICAgICAgICAgJ2J1dCB0aGVyZSBpcyBhbiBlcnJvciBlc3RhYmxpc2hpbmcgYSBicmlkZ2UuIFBsZWFzZSByZXN0YXJ0IHRoZSBhcHAgYW5kIHRyeSBhZ2Fpbi4nKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWFkd3JpdGVBY3Rpb25zID0gW1xuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLlNhdmVJdGVtcyxcbiAgICAgICAgICAgIENvbXBvbmVudEFjdGlvbi5Bc3NvY2lhdGVJdGVtLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkRlYXNzb2NpYXRlSXRlbSxcbiAgICAgICAgICAgIENvbXBvbmVudEFjdGlvbi5DcmVhdGVJdGVtLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkNyZWF0ZUl0ZW1zLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLkRlbGV0ZUl0ZW1zLFxuICAgICAgICAgICAgQ29tcG9uZW50QWN0aW9uLlNldENvbXBvbmVudERhdGFcbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcmVhZG9ubHlTdGF0ZSA9IHRoaXMuZ2V0UmVhZG9ubHlTdGF0ZUZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICBpZiAocmVhZG9ubHlTdGF0ZS5yZWFkb25seSAmJiByZWFkd3JpdGVBY3Rpb25zLmluY2x1ZGVzKG1lc3NhZ2UuYWN0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoYFRoZSBleHRlbnNpb24gJHtjb21wb25lbnQubmFtZX0gaXMgdHJ5aW5nIHRvIHNhdmUsIGJ1dCBpdCBpcyBpbiBhIGxvY2tlZCBzdGF0ZSBhbmQgY2Fubm90IGFjY2VwdCBjaGFuZ2VzLmApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVN0cmVhbUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSBDb21wb25lbnRBY3Rpb24uU3RyZWFtQ29udGV4dEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU3RyZWFtQ29udGV4dEl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5TZXRDb21wb25lbnREYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNldENvbXBvbmVudERhdGFNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5EZWxldGVJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVEZWxldGVJdGVtc01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLkNyZWF0ZUl0ZW1zIHx8XG4gICAgICAgICAgICBtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLkNyZWF0ZUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ3JlYXRlSXRlbXNNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5TYXZlSXRlbXMpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlU2F2ZUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSBDb21wb25lbnRBY3Rpb24uVG9nZ2xlQWN0aXZhdGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFRvVG9nZ2xlID0gdGhpcy5pdGVtTWFuYWdlci5maW5kSXRlbShtZXNzYWdlLmRhdGEudXVpZCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRvZ2dsZUNvbXBvbmVudE1lc3NhZ2UoY29tcG9uZW50VG9Ub2dnbGUsIG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1lc3NhZ2UuYWN0aW9uID09PSBDb21wb25lbnRBY3Rpb24uUmVxdWVzdFBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVJlcXVlc3RQZXJtaXNzaW9uc01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtZXNzYWdlLmFjdGlvbiA9PT0gQ29tcG9uZW50QWN0aW9uLkluc3RhbGxMb2NhbENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVJbnN0YWxsTG9jYWxDb21wb25lbnRNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5EdXBsaWNhdGVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUR1cGxpY2F0ZUl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnMpIHtcbiAgICAgICAgICAgIGlmIChoYW5kbGVyLmFjdGlvbkhhbmRsZXIgJiYgKGhhbmRsZXIuYXJlYXMuaW5jbHVkZXMoY29tcG9uZW50LmFyZWEpIHx8XG4gICAgICAgICAgICAgICAgaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhDb21wb25lbnRBcmVhLkFueSkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlci5hY3Rpb25IYW5kbGVyKGNvbXBvbmVudCwgbWVzc2FnZS5hY3Rpb24sIG1lc3NhZ2UuZGF0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXNGcm9tUmVzcG9uc2VJdGVtcyhyZXNwb25zZUl0ZW1zLCBjb21wb25lbnQsIGluY2x1ZGVVcmxzID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgLyogU3lzdGVtIGV4dGVuc2lvbnMgY2FuIGJ5cGFzcyB0aGlzIHN0ZXAgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmlzTmF0aXZlRXh0ZW5zaW9uKGNvbXBvbmVudCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLyogRG9uJ3QgYWxsb3cgY29tcG9uZW50IHRvIG92ZXJ3cml0ZSB0aGVzZSBwcm9wZXJ0aWVzLiAqL1xuICAgICAgICBsZXQgcHJpdmF0ZUNvbnRlbnRQcm9wZXJ0aWVzID0gWydhdXRvdXBkYXRlRGlzYWJsZWQnLCAncGVybWlzc2lvbnMnLCAnYWN0aXZlJ107XG4gICAgICAgIGlmIChpbmNsdWRlVXJscykge1xuICAgICAgICAgICAgcHJpdmF0ZUNvbnRlbnRQcm9wZXJ0aWVzID0gcHJpdmF0ZUNvbnRlbnRQcm9wZXJ0aWVzLmNvbmNhdChbXG4gICAgICAgICAgICAgICAgJ3VybCcsICdob3N0ZWRfdXJsJywgJ2xvY2FsX3VybCdcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgcmVzcG9uc2VJdGVtIG9mIHJlc3BvbnNlSXRlbXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcml2YXRlQ29udGVudFByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVzcG9uc2VJdGVtLmNvbnRlbnRbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlU3RyZWFtSXRlbXNNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCByZXF1aXJlZFBlcm1pc3Npb25zID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1JdGVtcyxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGVzOiBtZXNzYWdlLmRhdGEuY29udGVudF90eXBlcy5zb3J0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghZmluZCh0aGlzLnN0cmVhbU9ic2VydmVycywgeyBpZGVudGlmaWVyOiBjb21wb25lbnQudXVpZCB9KSkge1xuICAgICAgICAgICAgICAgIC8qIEZvciBwdXNoaW5nIGxhc3RlciBhcyBjaGFuZ2VzIGNvbWUgaW4gKi9cbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbU9ic2VydmVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllcjogY29tcG9uZW50LnV1aWQsXG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFV1aWQ6IGNvbXBvbmVudC51dWlkLFxuICAgICAgICAgICAgICAgICAgICBhcmVhOiBjb21wb25lbnQuYXJlYSxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxNZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICBjb250ZW50VHlwZXM6IG1lc3NhZ2UuZGF0YS5jb250ZW50X3R5cGVzXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBQdXNoIGltbWVkaWF0ZWx5IG5vdyAqL1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29udGVudFR5cGUgb2YgbWVzc2FnZS5kYXRhLmNvbnRlbnRfdHlwZXMpIHtcbiAgICAgICAgICAgICAgICBleHRlbmRBcnJheShpdGVtcywgdGhpcy5pdGVtTWFuYWdlci5ub25FcnJvcmVkSXRlbXNGb3JDb250ZW50VHlwZShjb250ZW50VHlwZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZW5kSXRlbXNJblJlcGx5KGNvbXBvbmVudC51dWlkLCBpdGVtcywgbWVzc2FnZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVTdHJlYW1Db250ZXh0SXRlbU1lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogQ29tcG9uZW50QWN0aW9uLlN0cmVhbUNvbnRleHRJdGVtXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCByZXF1aXJlZFBlcm1pc3Npb25zLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWZpbmQodGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLCB7IGlkZW50aWZpZXI6IGNvbXBvbmVudC51dWlkIH0pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiBjb21wb25lbnQudXVpZCxcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50VXVpZDogY29tcG9uZW50LnV1aWQsXG4gICAgICAgICAgICAgICAgICAgIGFyZWE6IGNvbXBvbmVudC5hcmVhLFxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbE1lc3NhZ2U6IG1lc3NhZ2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzRm9yQXJlYShjb21wb25lbnQuYXJlYSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFuZGxlci5jb250ZXh0UmVxdWVzdEhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbUluQ29udGV4dCA9IGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1JbkNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZENvbnRleHRJdGVtSW5SZXBseShjb21wb25lbnQudXVpZCwgaXRlbUluQ29udGV4dCwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpc0l0ZW1JZFdpdGhpbkNvbXBvbmVudENvbnRleHRKdXJpc2RpY3Rpb24odXVpZCwgY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JZHNJbkp1cmlzZGljdGlvbiA9IHRoaXMuaXRlbUlkc0luQ29udGV4dEp1cmlzZGljdGlvbkZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4gaXRlbUlkc0luSnVyaXNkaWN0aW9uLmluY2x1ZGVzKHV1aWQpO1xuICAgIH1cbiAgICAvKiBSZXR1cm5zIGl0ZW1zIHRoYXQgZ2l2ZW4gY29tcG9uZW50IGhhcyBjb250ZXh0IHBlcm1pc3Npb25zIGZvciAqL1xuICAgIGl0ZW1JZHNJbkNvbnRleHRKdXJpc2RpY3Rpb25Gb3JDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1JZHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHRoaXMuaGFuZGxlcnNGb3JBcmVhKGNvbXBvbmVudC5hcmVhKSkge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbUluQ29udGV4dCA9IGhhbmRsZXIuY29udGV4dFJlcXVlc3RIYW5kbGVyKGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbUluQ29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtSWRzLnB1c2goaXRlbUluQ29udGV4dC51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1JZHM7XG4gICAgfVxuICAgIGhhbmRsZXJzRm9yQXJlYShhcmVhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZXJzLmZpbHRlcigoY2FuZGlkYXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlLmFyZWFzLmluY2x1ZGVzKGFyZWEpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU2F2ZUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VQYXlsb2FkcyA9IG1lc3NhZ2UuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IFtdO1xuICAgICAgICBjb25zdCBpdGVtSWRzSW5Db250ZXh0SnVyaXNkaWN0aW9uID0gdGhpcy5pdGVtSWRzSW5Db250ZXh0SnVyaXNkaWN0aW9uRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIC8qIFBlbmRpbmcgYXMgaW4gbmVlZGVkIHRvIGJlIGFjY291bnRlZCBmb3IgaW4gcGVybWlzc2lvbnMuICovXG4gICAgICAgIGNvbnN0IHBlbmRpbmdSZXNwb25zZUl0ZW1zID0gcmVzcG9uc2VQYXlsb2Fkcy5zbGljZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlSXRlbSBvZiByZXNwb25zZVBheWxvYWRzLnNsaWNlKCkpIHtcbiAgICAgICAgICAgIGlmIChpdGVtSWRzSW5Db250ZXh0SnVyaXNkaWN0aW9uLmluY2x1ZGVzKHJlc3BvbnNlSXRlbS51dWlkKSkge1xuICAgICAgICAgICAgICAgIHJlcXVpcmVkUGVybWlzc2lvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1Db250ZXh0SXRlbVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheShwZW5kaW5nUmVzcG9uc2VJdGVtcywgcmVzcG9uc2VJdGVtKTtcbiAgICAgICAgICAgICAgICAvKiBXZSBicmVhayBiZWNhdXNlIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSBjb250ZXh0IGl0ZW0gKi9cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKiBDaGVjayB0byBzZWUgaWYgYWRkaXRpb25hbCBwcml2aWxlZ2VzIGFyZSByZXF1aXJlZCAqL1xuICAgICAgICBpZiAocGVuZGluZ1Jlc3BvbnNlSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRDb250ZW50VHlwZXMgPSB1bmlxKHBlbmRpbmdSZXNwb25zZUl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmNvbnRlbnRfdHlwZTtcbiAgICAgICAgICAgIH0pKS5zb3J0KCk7XG4gICAgICAgICAgICByZXF1aXJlZFBlcm1pc3Npb25zLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6IENvbXBvbmVudEFjdGlvbi5TdHJlYW1JdGVtcyxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGVzOiByZXF1aXJlZENvbnRlbnRUeXBlc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUHJpdmF0ZVByb3BlcnRpZXNGcm9tUmVzcG9uc2VJdGVtcyhyZXNwb25zZVBheWxvYWRzLCBjb21wb25lbnQsIHRydWUpO1xuICAgICAgICAgICAgLyogRmlsdGVyIGxvY2tlZCBpdGVtcyAqL1xuICAgICAgICAgICAgY29uc3QgdXVpZHMgPSBVdWlkcyhyZXNwb25zZVBheWxvYWRzKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5maW5kSXRlbXModXVpZHMsIHRydWUpO1xuICAgICAgICAgICAgbGV0IGxvY2tlZENvdW50ID0gMDtcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlSXRlbSA9IHJlc3BvbnNlUGF5bG9hZHNbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAvLyBBbiBpdGVtIHRoaXMgZXh0ZW5zaW9uIGlzIHRyeWluZyB0byBzYXZlIHdhcyBwb3NzaWJseSByZW1vdmVkIGxvY2FsbHksIG5vdGlmeSB1c2VyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KGBUaGUgZXh0ZW5zaW9uICR7Y29tcG9uZW50Lm5hbWV9IGlzIHRyeWluZyB0byBzYXZlIGFuIGl0ZW0gd2l0aCB0eXBlIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCR7cmVzcG9uc2VJdGVtLmNvbnRlbnRfdHlwZX0sIGJ1dCB0aGF0IGl0ZW0gZG9lcyBub3QgZXhpc3QgLmAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYFBsZWFzZSByZXN0YXJ0IHRoaXMgZXh0ZW5zaW9uIGFuZCB0cnkgYWdhaW4uYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubG9ja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShyZXNwb25zZVBheWxvYWRzLCB7IHV1aWQ6IGl0ZW0udXVpZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgbG9ja2VkQ291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChsb2NrZWRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtTm91biA9IGxvY2tlZENvdW50ID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJztcbiAgICAgICAgICAgICAgICBjb25zdCBhdXhWZXJiID0gbG9ja2VkQ291bnQgPT09IDEgPyAnaXMnIDogJ2FyZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWxlcnQoYCR7bG9ja2VkQ291bnR9ICR7aXRlbU5vdW59IHlvdSBhcmUgYXR0ZW1wdGluZyB0byBzYXZlICR7YXV4VmVyYn0gbG9ja2VkIGFuZCBjYW5ub3QgYmUgZWRpdGVkLmAsICdJdGVtcyBMb2NrZWQnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkcyA9IHJlc3BvbnNlUGF5bG9hZHMubWFwKChyZXNwb25zZUl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0KHJlc3BvbnNlSXRlbSwgUGF5bG9hZFNvdXJjZS5Db21wb25lbnRSZXRyaWV2ZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmNoYW5nZUl0ZW1zKHV1aWRzLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBzZWFyY2hBcnJheShwYXlsb2FkcywgeyB1dWlkOiBtdXRhdG9yLmdldFV1aWQoKSB9KTtcbiAgICAgICAgICAgICAgICBtdXRhdG9yLm1lcmdlUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUl0ZW0gPSBzZWFyY2hBcnJheShyZXNwb25zZVBheWxvYWRzLCB7IHV1aWQ6IG11dGF0b3IuZ2V0VXVpZCgpIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUl0ZW0uY2xpZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxDb21wb25lbnREYXRhID0gQ29weShtdXRhdG9yLmdldEl0ZW0oKS5nZXREb21haW5EYXRhKENvbXBvbmVudERhdGFEb21haW4pIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgYWxsQ29tcG9uZW50RGF0YVtjb21wb25lbnQuZ2V0Q2xpZW50RGF0YUtleSgpXSA9IHJlc3BvbnNlSXRlbS5jbGllbnREYXRhO1xuICAgICAgICAgICAgICAgICAgICBtdXRhdG9yLnNldERvbWFpbkRhdGEoYWxsQ29tcG9uZW50RGF0YSwgQ29tcG9uZW50RGF0YURvbWFpbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgUGF5bG9hZFNvdXJjZS5Db21wb25lbnRSZXRyaWV2ZWQsIGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8qIEFsbG93IGhhbmRsZXJzIHRvIGJlIG5vdGlmaWVkIHdoZW4gYSBzYXZlIGJlZ2lucyBhbmQgZW5kcywgdG8gdXBkYXRlIHRoZSBVSSAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVNZXNzYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgc2F2ZU1lc3NhZ2UuYWN0aW9uID0gQ29tcG9uZW50QWN0aW9uLlNhdmVTdWNjZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMucmVwbHlUb01lc3NhZ2UoY29tcG9uZW50LCBtZXNzYWdlLCB7fSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVNZXNzYWdlKGNvbXBvbmVudCwgc2F2ZU1lc3NhZ2UpO1xuICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNhdmVNZXNzYWdlID0gT2JqZWN0LmFzc2lnbih7fSwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgc2F2ZU1lc3NhZ2UuYWN0aW9uID0gQ29tcG9uZW50QWN0aW9uLlNhdmVFcnJvcjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgeyBlcnJvcjogQ29tcG9uZW50QWN0aW9uLlNhdmVFcnJvciB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZU1lc3NhZ2UoY29tcG9uZW50LCBzYXZlTWVzc2FnZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUR1cGxpY2F0ZUl0ZW1NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCBpdGVtUGFyYW1zID0gbWVzc2FnZS5kYXRhLml0ZW07XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKGl0ZW1QYXJhbXMudXVpZCk7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZXM6IFtpdGVtLmNvbnRlbnRfdHlwZV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGR1cGxpY2F0ZSA9IGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuZHVwbGljYXRlSXRlbShpdGVtLnV1aWQpO1xuICAgICAgICAgICAgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgeyBpdGVtOiB0aGlzLmpzb25Gb3JJdGVtKGR1cGxpY2F0ZSwgY29tcG9uZW50KSB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGhhbmRsZUNyZWF0ZUl0ZW1zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VJdGVtcyA9IG1lc3NhZ2UuZGF0YS5pdGVtID8gW21lc3NhZ2UuZGF0YS5pdGVtXSA6IG1lc3NhZ2UuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgdW5pcXVlQ29udGVudFR5cGVzID0gdW5pcShyZXNwb25zZUl0ZW1zLm1hcCgoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5jb250ZW50X3R5cGU7IH0pKTtcbiAgICAgICAgY29uc3QgcmVxdWlyZWRQZXJtaXNzaW9ucyA9IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBDb21wb25lbnRBY3Rpb24uU3RyZWFtSXRlbXMsXG4gICAgICAgICAgICAgICAgY29udGVudF90eXBlczogdW5pcXVlQ29udGVudFR5cGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCByZXF1aXJlZFBlcm1pc3Npb25zLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVByaXZhdGVQcm9wZXJ0aWVzRnJvbVJlc3BvbnNlSXRlbXMocmVzcG9uc2VJdGVtcywgY29tcG9uZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZEl0ZW1zID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3BvbnNlSXRlbSBvZiByZXNwb25zZUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZUl0ZW0udXVpZCkge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZUl0ZW0udXVpZCA9IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QocmVzcG9uc2VJdGVtLCBQYXlsb2FkU291cmNlLkNvbXBvbmVudENyZWF0ZWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmluc2VydEl0ZW0odGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbShpdGVtLnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZUl0ZW0uY2xpZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsQ29tcG9uZW50RGF0YSA9IENvcHkoaXRlbS5nZXREb21haW5EYXRhKENvbXBvbmVudERhdGFEb21haW4pIHx8IHt9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbENvbXBvbmVudERhdGFbY29tcG9uZW50LmdldENsaWVudERhdGFLZXkoKV0gPSByZXNwb25zZUl0ZW0uY2xpZW50RGF0YTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0b3Iuc2V0RG9tYWluRGF0YShhbGxDb21wb25lbnREYXRhLCBDb21wb25lbnREYXRhRG9tYWluKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24sIFBheWxvYWRTb3VyY2UuQ29tcG9uZW50Q3JlYXRlZCwgY29tcG9uZW50LnV1aWQpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3NlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcGx5ID0gbWVzc2FnZS5hY3Rpb24gPT09IENvbXBvbmVudEFjdGlvbi5DcmVhdGVJdGVtXG4gICAgICAgICAgICAgICAgPyB7IGl0ZW06IHRoaXMuanNvbkZvckl0ZW0ocHJvY2Vzc2VkSXRlbXNbMF0sIGNvbXBvbmVudCkgfVxuICAgICAgICAgICAgICAgIDogeyBpdGVtczogcHJvY2Vzc2VkSXRlbXMubWFwKChpdGVtKSA9PiB7IHJldHVybiB0aGlzLmpzb25Gb3JJdGVtKGl0ZW0sIGNvbXBvbmVudCk7IH0pIH07XG4gICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgcmVwbHkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlRGVsZXRlSXRlbXNNZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSkge1xuICAgICAgICBjb25zdCByZXF1aXJlZENvbnRlbnRUeXBlcyA9IHVuaXEobWVzc2FnZS5kYXRhLml0ZW1zLm1hcCgoaXRlbSkgPT4geyByZXR1cm4gaXRlbS5jb250ZW50X3R5cGU7IH0pKS5zb3J0KCk7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVkUGVybWlzc2lvbnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZXM6IHJlcXVpcmVkQ29udGVudFR5cGVzXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCByZXF1aXJlZFBlcm1pc3Npb25zLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0RhdGEgPSBtZXNzYWdlLmRhdGEuaXRlbXM7XG4gICAgICAgICAgICBjb25zdCBub3VuID0gaXRlbXNEYXRhLmxlbmd0aCA9PT0gMSA/ICdpdGVtJyA6ICdpdGVtcyc7XG4gICAgICAgICAgICBsZXQgcmVwbHkgPSBudWxsO1xuICAgICAgICAgICAgbGV0IGRpZENvbmZpcm0gPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hbGVydFNlcnZpY2UuY29uZmlybShgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSAke2l0ZW1zRGF0YS5sZW5ndGh9ICR7bm91bn0/YCkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIGRpZENvbmZpcm0gPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGRpZENvbmZpcm0pIHtcbiAgICAgICAgICAgICAgICAvKiBGaWx0ZXIgZm9yIGFueSBjb21wb25lbnRzIGFuZCBkZWFjdGl2YXRlIGJlZm9yZSBkZWxldGluZyAqL1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbURhdGEgb2YgaXRlbXNEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKGl0ZW1EYXRhLnV1aWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFsZXJ0KCdUaGUgaXRlbSB5b3UgYXJlIHRyeWluZyB0byBkZWxldGUgY2Fubm90IGJlIGZvdW5kLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKFtDb250ZW50VHlwZS5Db21wb25lbnQsIENvbnRlbnRUeXBlLlRoZW1lXS5pbmNsdWRlcyhpdGVtLmNvbnRlbnRfdHlwZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVhY3RpdmF0ZUNvbXBvbmVudChpdGVtLnV1aWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbVRvQmVEZWxldGVkKGl0ZW0udXVpZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgICAgICAgICAgICAgIHJlcGx5ID0geyBkZWxldGVkOiB0cnVlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiBSZWplY3RlZCBieSB1c2VyICovXG4gICAgICAgICAgICAgICAgcmVwbHkgPSB7IGRlbGV0ZWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlcGx5VG9NZXNzYWdlKGNvbXBvbmVudCwgbWVzc2FnZSwgcmVwbHkpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlUmVxdWVzdFBlcm1pc3Npb25zTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy5ydW5XaXRoUGVybWlzc2lvbnMoY29tcG9uZW50LnV1aWQsIG1lc3NhZ2UuZGF0YS5wZXJtaXNzaW9ucywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yZXBseVRvTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UsIHsgYXBwcm92ZWQ6IHRydWUgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBoYW5kbGVTZXRDb21wb25lbnREYXRhTWVzc2FnZShjb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgLyogQSBjb21wb25lbnQgc2V0dGluZyBpdHMgb3duIGRhdGEgZG9lcyBub3QgcmVxdWlyZSBzcGVjaWFsIHBlcm1pc3Npb25zICovXG4gICAgICAgIHRoaXMucnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudC51dWlkLCBbXSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VDb21wb25lbnQoY29tcG9uZW50LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbXV0YXRvci5jb21wb25lbnREYXRhID0gbWVzc2FnZS5kYXRhLmNvbXBvbmVudERhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaGFuZGxlVG9nZ2xlQ29tcG9uZW50TWVzc2FnZSh0YXJnZXRDb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgdGhpcy50b2dnbGVDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50KTtcbiAgICB9XG4gICAgYXN5bmMgdG9nZ2xlQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBpZiAoY29tcG9uZW50LmFyZWEgPT09IENvbXBvbmVudEFyZWEuTW9kYWwpIHtcbiAgICAgICAgICAgIHRoaXMub3Blbk1vZGFsQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVhY3RpdmF0ZUNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50LmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuVGhlbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGhlbWUgPSBjb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICAgIC8qIERlYWN0aXZlIGN1cnJlbnRseSBhY3RpdmUgdGhlbWUgaWYgbmV3IHRoZW1lIGlzIG5vdCBsYXllcmFibGUgKi9cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGhlbWVzID0gdGhpcy5nZXRBY3RpdmVUaGVtZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgLyogQWN0aXZhdGUgY3VycmVudCBiZWZvcmUgZGVhY3RpdmF0aW5nIG90aGVycywgc28gYXMgbm90IHRvIGZsaWNrZXIgKi9cbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hY3RpdmF0ZUNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhlbWUuaXNMYXllcmFibGUoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGUgb2YgYWN0aXZlVGhlbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgJiYgIWNhbmRpZGF0ZS5pc0xheWVyYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlYWN0aXZhdGVDb21wb25lbnQoY2FuZGlkYXRlLnV1aWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFjdGl2YXRlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlSW5zdGFsbExvY2FsQ29tcG9uZW50TWVzc2FnZShzb3VyY2VDb21wb25lbnQsIG1lc3NhZ2UpIHtcbiAgICAgICAgLyogT25seSBuYXRpdmUgZXh0ZW5zaW9ucyBoYXZlIHRoaXMgcGVybWlzc2lvbiAqL1xuICAgICAgICBpZiAoIXRoaXMuaXNOYXRpdmVFeHRlbnNpb24oc291cmNlQ29tcG9uZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldENvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0obWVzc2FnZS5kYXRhLnV1aWQpO1xuICAgICAgICB0aGlzLmRlc2t0b3BNYW5hZ2VyLmluc3RhbGxDb21wb25lbnQodGFyZ2V0Q29tcG9uZW50KTtcbiAgICB9XG4gICAgcnVuV2l0aFBlcm1pc3Npb25zKGNvbXBvbmVudFV1aWQsIHJlcXVpcmVkUGVybWlzc2lvbnMsIHJ1bkZ1bmN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0oY29tcG9uZW50VXVpZCk7XG4gICAgICAgIC8qIE1ha2UgY29weSBhcyBub3QgdG8gbXV0YXRlIGlucHV0IHZhbHVlcyAqL1xuICAgICAgICByZXF1aXJlZFBlcm1pc3Npb25zID0gQ29weShyZXF1aXJlZFBlcm1pc3Npb25zKTtcbiAgICAgICAgY29uc3QgYWNxdWlyZWRQZXJtaXNzaW9ucyA9IGNvbXBvbmVudC5wZXJtaXNzaW9ucztcbiAgICAgICAgZm9yIChjb25zdCByZXF1aXJlZCBvZiByZXF1aXJlZFBlcm1pc3Npb25zLnNsaWNlKCkpIHtcbiAgICAgICAgICAgIC8qIFJlbW92ZSBhbnl0aGluZyB3ZSBhbHJlYWR5IGhhdmUgKi9cbiAgICAgICAgICAgIGNvbnN0IHJlc3BlY3RpdmVBY3F1aXJlZCA9IGFjcXVpcmVkUGVybWlzc2lvbnMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gcmVxdWlyZWQubmFtZSk7XG4gICAgICAgICAgICBpZiAoIXJlc3BlY3RpdmVBY3F1aXJlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogV2Ugbm93IG1hdGNoIG9uIG5hbWUsIGxldHMgc3Vic3RyYWN0IGZyb20gcmVxdWlyZWQuY29udGVudF90eXBlcyBhbnl0aGluZyB3ZSBoYXZlIGluIGFjcXVpcmVkLiAqL1xuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRDb250ZW50VHlwZXMgPSByZXF1aXJlZC5jb250ZW50X3R5cGVzO1xuICAgICAgICAgICAgaWYgKCFyZXF1aXJlZENvbnRlbnRUeXBlcykge1xuICAgICAgICAgICAgICAgIC8qIElmIHRoaXMgcGVybWlzc2lvbiBkb2VzIG5vdCByZXF1aXJlIGFueSBjb250ZW50IHR5cGVzIChpLmUgc3RyZWFtLWNvbnRleHQtaXRlbSlcbiAgICAgICAgICAgICAgICAgIHRoZW4gd2UgY2FuIHJlbW92ZSB0aGlzIGZyb20gcmVxdWlyZWQgc2luY2Ugd2UgbWF0Y2ggYnkgbmFtZSAocmVzcGVjdGl2ZUFjcXVpcmVkLm5hbWUgPT09IHJlcXVpcmVkLm5hbWUpICovXG4gICAgICAgICAgICAgICAgZmlsdGVyRnJvbUFycmF5KHJlcXVpcmVkUGVybWlzc2lvbnMsIHJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWNxdWlyZWRDb250ZW50VHlwZSBvZiByZXNwZWN0aXZlQWNxdWlyZWQuY29udGVudF90eXBlcykge1xuICAgICAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheShyZXF1aXJlZENvbnRlbnRUeXBlcywgYWNxdWlyZWRDb250ZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVxdWlyZWRDb250ZW50VHlwZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgLyogV2UndmUgcmVtb3ZlZCBhbGwgYWNxdWlyZWQgYW5kIGVuZCB1cCB3aXRoIHplcm8sIG1lYW5zIHdlIGFscmVhZHkgaGF2ZSBhbGwgdGhlc2UgcGVybWlzc2lvbnMgKi9cbiAgICAgICAgICAgICAgICBmaWx0ZXJGcm9tQXJyYXkocmVxdWlyZWRQZXJtaXNzaW9ucywgcmVxdWlyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXF1aXJlZFBlcm1pc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0Rm9yUGVybWlzc2lvbnMoY29tcG9uZW50LCByZXF1aXJlZFBlcm1pc3Npb25zLCBhc3luYyAoYXBwcm92ZWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXBwcm92ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcnVuRnVuY3Rpb24oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJ1bkZ1bmN0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvbXB0Rm9yUGVybWlzc2lvbnMoY29tcG9uZW50LCBwZXJtaXNzaW9ucywgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnQsXG4gICAgICAgICAgICBwZXJtaXNzaW9uczogcGVybWlzc2lvbnMsXG4gICAgICAgICAgICBwZXJtaXNzaW9uc1N0cmluZzogdGhpcy5wZXJtaXNzaW9uc1N0cmluZ0ZvclBlcm1pc3Npb25zKHBlcm1pc3Npb25zLCBjb21wb25lbnQpLFxuICAgICAgICAgICAgYWN0aW9uQmxvY2s6IGNhbGxiYWNrLFxuICAgICAgICAgICAgY2FsbGJhY2s6IGFzeW5jIChhcHByb3ZlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZyhcIkNoYW5naW5nIGNvbXBvbmVudCB0byBleHBhbmQgcGVybWlzc2lvbnNcIiwgY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtKGNvbXBvbmVudC51dWlkLCAobSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UGVybWlzc2lvbnMgPSBDb3B5KGNvbXBvbmVudC5wZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBlcm1pc3Npb24gb2YgcGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ1Blcm1pc3Npb24gPSBjb21wb25lbnRQZXJtaXNzaW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUubmFtZSA9PT0gcGVybWlzc2lvbi5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoaW5nUGVybWlzc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRQZXJtaXNzaW9ucy5wdXNoKHBlcm1pc3Npb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUGVybWlzc2lvbiBhbHJlYWR5IGV4aXN0cywgYnV0IGNvbnRlbnRfdHlwZXMgbWF5IGhhdmUgYmVlbiBleHBhbmRlZCAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZXMgPSBtYXRjaGluZ1Blcm1pc3Npb24uY29udGVudF90eXBlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdQZXJtaXNzaW9uLmNvbnRlbnRfdHlwZXMgPSB1bmlxKGNvbnRlbnRUeXBlcy5jb25jYXQocGVybWlzc2lvbi5jb250ZW50X3R5cGVzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXV0YXRvciA9IG07XG4gICAgICAgICAgICAgICAgICAgICAgICBtdXRhdG9yLnBlcm1pc3Npb25zID0gY29tcG9uZW50UGVybWlzc2lvbnM7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGlhbG9ncyA9IHRoaXMucGVybWlzc2lvbkRpYWxvZ3MuZmlsdGVyKChwZW5kaW5nRGlhbG9nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8qIFJlbW92ZSBzZWxmICovXG4gICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nRGlhbG9nID09PSBwYXJhbXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdEaWFsb2cuYWN0aW9uQmxvY2sgJiYgcGVuZGluZ0RpYWxvZy5hY3Rpb25CbG9jayhhcHByb3ZlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGFpbnNPYmplY3RTdWJzZXQgPSAoc291cmNlLCB0YXJnZXQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGFyZ2V0LnNvbWUodmFsID0+ICFzb3VyY2UuZmluZCgoY2FuZGlkYXRlKSA9PiBKU09OLnN0cmluZ2lmeShjYW5kaWRhdGUpID09PSBKU09OLnN0cmluZ2lmeSh2YWwpKSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nRGlhbG9nLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvKiByZW1vdmUgcGVuZGluZyBkaWFsb2dzIHRoYXQgYXJlIGVuY2Fwc3VsYXRlZCBieSBhbHJlYWR5IGFwcHJvdmVkIHBlcm1pc3Npb25zLCBhbmQgcnVuIGl0cyBmdW5jdGlvbiAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdEaWFsb2cucGVybWlzc2lvbnMgPT09IHBlcm1pc3Npb25zIHx8IGNvbnRhaW5zT2JqZWN0U3Vic2V0KHBlcm1pc3Npb25zLCBwZW5kaW5nRGlhbG9nLnBlcm1pc3Npb25zKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIGFwcHJvdmVkLCBydW4gdGhlIGFjdGlvbiBibG9jay4gT3RoZXJ3aXNlLCBpZiBjYW5jZWxlZCwgY2FuY2VsIGFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmcgb25lcyBhcyB3ZWxsLCBzaW5jZSB0aGUgdXNlciB3YXMgZXhwbGljaXQgaW4gdGhlaXIgaW50ZW50aW9ucyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nRGlhbG9nLmFjdGlvbkJsb2NrICYmIHBlbmRpbmdEaWFsb2cuYWN0aW9uQmxvY2soYXBwcm92ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbkRpYWxvZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlbnRQZXJtaXNzaW9uc0RpYWxvZyh0aGlzLnBlcm1pc3Npb25EaWFsb2dzWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaW5jZSB0aGVzZSBjYWxscyBhcmUgYXN5bmNyb25vdXMsIG11bHRpcGxlIGRpYWxvZ3MgbWF5IGJlIHJlcXVlc3RlZCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAgICAgKiBXZSBvbmx5IHdhbnQgdG8gcHJlc2VudCBvbmUgYW5kIHRyaWdnZXIgYWxsIGNhbGxiYWNrcyBiYXNlZCBvbiBvbmUgbW9kYWwgcmVzdWx0XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBleGlzdGluZ0RpYWxvZyA9IGZpbmQodGhpcy5wZXJtaXNzaW9uRGlhbG9ncywgeyBjb21wb25lbnQ6IGNvbXBvbmVudCB9KTtcbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uRGlhbG9ncy5wdXNoKHBhcmFtcyk7XG4gICAgICAgIGlmICghZXhpc3RpbmdEaWFsb2cpIHtcbiAgICAgICAgICAgIHRoaXMucHJlc2VudFBlcm1pc3Npb25zRGlhbG9nKHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnRXhpc3RpbmcgZGlhbG9nLCBub3QgcHJlc2VudGluZy4nKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwcmVzZW50UGVybWlzc2lvbnNEaWFsb2coZGlhbG9nKSB7XG4gICAgICAgIHRocm93ICdNdXN0IG92ZXJyaWRlIFNOQ29tcG9uZW50TWFuYWdlci5wcmVzZW50UGVybWlzc2lvbnNEaWFsb2cnO1xuICAgIH1cbiAgICBvcGVuTW9kYWxDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIHRocm93ICdNdXN0IG92ZXJyaWRlIFNOQ29tcG9uZW50TWFuYWdlci5wcmVzZW50UGVybWlzc2lvbnNEaWFsb2cnO1xuICAgIH1cbiAgICByZWdpc3RlckhhbmRsZXIoaGFuZGxlcikge1xuICAgICAgICB0aGlzLmhhbmRsZXJzLnB1c2goaGFuZGxlcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZyA9IGZpbmQodGhpcy5oYW5kbGVycywgeyBpZGVudGlmaWVyOiBoYW5kbGVyLmlkZW50aWZpZXIgfSk7XG4gICAgICAgICAgICBpZiAoIW1hdGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2coJ0F0dGVtcHRpbmcgdG8gZGVyZWdpc3RlciBub24tZXhpc3RpbmcgaGFuZGxlcicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmhhbmRsZXJzLCBtYXRjaGluZyk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5jb21wb25lbnRTdGF0ZVtjb21wb25lbnQudXVpZF07XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgZGF0YSA9IHt9O1xuICAgICAgICAgICAgdGhpcy5jb21wb25lbnRTdGF0ZVtjb21wb25lbnQudXVpZF0gPSBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBzZXRSZWFkb25seVN0YXRlRm9yQ29tcG9uZW50KGNvbXBvbmVudCwgcmVhZG9ubHksIGxvY2tSZWFkb25seSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KTtcbiAgICAgICAgZGF0YS5yZWFkb25seSA9IHJlYWRvbmx5O1xuICAgICAgICBkYXRhLmxvY2tSZWFkb25seSA9IGxvY2tSZWFkb25seTtcbiAgICB9XG4gICAgZ2V0UmVhZG9ubHlTdGF0ZUZvckNvbXBvbmVudChjb21wb25lbnQpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZmluZE9yQ3JlYXRlRGF0YUZvckNvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVhZG9ubHk6IGRhdGEucmVhZG9ubHksXG4gICAgICAgICAgICBsb2NrUmVhZG9ubHk6IGRhdGEubG9ja1JlYWRvbmx5XG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBDYWxsZWQgYnkgb3RoZXIgdmlld3Mgd2hlbiB0aGUgaWZyYW1lIGlzIHJlYWR5ICovXG4gICAgYXN5bmMgcmVnaXN0ZXJDb21wb25lbnRXaW5kb3coY29tcG9uZW50LCBjb21wb25lbnRXaW5kb3cpIHtcbiAgICAgICAgdGhpcy5sb2coJ1JlZ2lzdGVyIGNvbXBvbmVudCB3aW5kb3cnLCBjb21wb25lbnQpO1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5maW5kT3JDcmVhdGVEYXRhRm9yQ29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChkYXRhLndpbmRvdyA9PT0gY29tcG9uZW50V2luZG93KSB7XG4gICAgICAgICAgICB0aGlzLmxvZygnV2VifGNvbXBvbmVudE1hbmFnZXInLCAnYXR0ZW1wdGluZyB0byByZS1yZWdpc3RlciBzYW1lIGNvbXBvbmVudCB3aW5kb3cuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2coJ1dlYnxjb21wb25lbnRNYW5hZ2VyfHJlZ2lzdGVyQ29tcG9uZW50V2luZG93JywgY29tcG9uZW50KTtcbiAgICAgICAgZGF0YS53aW5kb3cgPSBjb21wb25lbnRXaW5kb3c7XG4gICAgICAgIGRhdGEuc2Vzc2lvbktleSA9IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCk7XG4gICAgICAgIHRoaXMuc2VuZE1lc3NhZ2VUb0NvbXBvbmVudChjb21wb25lbnQsIHtcbiAgICAgICAgICAgIGFjdGlvbjogQ29tcG9uZW50QWN0aW9uLkNvbXBvbmVudFJlZ2lzdGVyZWQsXG4gICAgICAgICAgICBzZXNzaW9uS2V5OiBkYXRhLnNlc3Npb25LZXksXG4gICAgICAgICAgICBjb21wb25lbnREYXRhOiBjb21wb25lbnQuY29tcG9uZW50RGF0YSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICB1dWlkOiBjb21wb25lbnQudXVpZCxcbiAgICAgICAgICAgICAgICBlbnZpcm9ubWVudDogZW52aXJvbm1lbnRUb1N0cmluZyh0aGlzLmVudmlyb25tZW50KSxcbiAgICAgICAgICAgICAgICBwbGF0Zm9ybTogcGxhdGZvcm1Ub1N0cmluZyh0aGlzLnBsYXRmb3JtKSxcbiAgICAgICAgICAgICAgICBhY3RpdmVUaGVtZVVybHM6IHRoaXMudXJsc0ZvckFjdGl2ZVRoZW1lcygpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBvc3RBY3RpdmVUaGVtZXNUb0NvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICBpZiAodGhpcy5kZXNrdG9wTWFuYWdlcikge1xuICAgICAgICAgICAgdGhpcy5kZXNrdG9wTWFuYWdlci5ub3RpZnlDb21wb25lbnRBY3RpdmF0aW9uKGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVnaXN0ZXJDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnUmVnaXN0ZXJpbmcgY29tcG9uZW50JywgdXVpZCk7XG4gICAgICAgIGFkZElmVW5pcXVlKHRoaXMuYWN0aXZlQ29tcG9uZW50cywgdXVpZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhjb21wb25lbnQuYXJlYSkgfHxcbiAgICAgICAgICAgICAgICBoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIuYWN0aXZhdGlvbkhhbmRsZXIgJiYgaGFuZGxlci5hY3RpdmF0aW9uSGFuZGxlcihjb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wb25lbnQuYXJlYSA9PT0gQ29tcG9uZW50QXJlYS5UaGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMucG9zdEFjdGl2ZVRoZW1lc1RvQWxsQ29tcG9uZW50cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGFjdGl2YXRlQ29tcG9uZW50KHV1aWQpIHtcbiAgICAgICAgdGhpcy5sb2coJ0FjdGl2YXRpbmcgY29tcG9uZW50JywgdXVpZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGlmICghY29tcG9uZW50LmFjdGl2ZSkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VDb21wb25lbnQoY29tcG9uZW50LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgbXV0YXRvci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudCh1dWlkKTtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgfVxuICAgIGRlcmVnaXN0ZXJDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnRGVncmVnaXN0ZXJpbmcgY29tcG9uZW50JywgdXVpZCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuaXRlbU1hbmFnZXIuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmFjdGl2ZUNvbXBvbmVudHMsIHV1aWQpO1xuICAgICAgICBkZWxldGUgdGhpcy5jb21wb25lbnRTdGF0ZVtjb21wb25lbnQudXVpZF07XG4gICAgICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLmhhbmRsZXJzKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlci5hcmVhcy5pbmNsdWRlcyhjb21wb25lbnQuYXJlYSkgfHxcbiAgICAgICAgICAgICAgICBoYW5kbGVyLmFyZWFzLmluY2x1ZGVzKENvbXBvbmVudEFyZWEuQW55KSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZXIuYWN0aXZhdGlvbkhhbmRsZXIgJiYgaGFuZGxlci5hY3RpdmF0aW9uSGFuZGxlcihjb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RyZWFtT2JzZXJ2ZXJzID0gdGhpcy5zdHJlYW1PYnNlcnZlcnMuZmlsdGVyKChvKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gby5jb21wb25lbnRVdWlkICE9PSB1dWlkO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzID0gdGhpcy5jb250ZXh0U3RyZWFtT2JzZXJ2ZXJzLmZpbHRlcigobykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG8uY29tcG9uZW50VXVpZCAhPT0gdXVpZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjb21wb25lbnQuYXJlYSA9PT0gQ29tcG9uZW50QXJlYS5UaGVtZXMpIHtcbiAgICAgICAgICAgIHRoaXMucG9zdEFjdGl2ZVRoZW1lc1RvQWxsQ29tcG9uZW50cygpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGRlYWN0aXZhdGVDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnRGVhY3RpdmF0aW5nIGNvbXBvbmVudCcsIHV1aWQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnQgPSB0aGlzLml0ZW1NYW5hZ2VyPy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudC5hY3RpdmUpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbmRPckNyZWF0ZURhdGFGb3JDb21wb25lbnQoY29tcG9uZW50KS5zZXNzaW9uS2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRlcmVnaXN0ZXJDb21wb25lbnQodXVpZCk7XG4gICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgIH1cbiAgICBhc3luYyByZWxvYWRDb21wb25lbnQodXVpZCkge1xuICAgICAgICB0aGlzLmxvZygnUmVsb2FkaW5nIGNvbXBvbmVudCcsIHV1aWQpO1xuICAgICAgICAvKiBEbyBzb2Z0IGRlYWN0aXZhdGUgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5pdGVtTWFuYWdlcj8uZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgbXV0YXRvci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVyZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgIC8qIERvIHNvZnQgYWN0aXZhdGUgKi9cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlQ29tcG9uZW50KGNvbXBvbmVudC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBtdXRhdG9yLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlckNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBkZWxldGVDb21wb25lbnQodXVpZCkge1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1Ub0JlRGVsZXRlZCh1dWlkKTtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgfVxuICAgIGlzQ29tcG9uZW50QWN0aXZlKGNvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50LmFjdGl2ZTtcbiAgICB9XG4gICAgaWZyYW1lRm9yQ29tcG9uZW50KHV1aWQpIHtcbiAgICAgICAgY29uc3QgaWZyYW1lcyA9IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpKTtcbiAgICAgICAgZm9yIChjb25zdCBmcmFtZSBvZiBpZnJhbWVzKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRJZCA9IGZyYW1lLmRhdGFzZXQuY29tcG9uZW50SWQ7XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50SWQgPT09IHV1aWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9jdXNDaGFuZ2VkRm9yQ29tcG9uZW50KGNvbXBvbmVudCkge1xuICAgICAgICBjb25zdCBmb2N1c2VkID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5pZnJhbWVGb3JDb21wb25lbnQoY29tcG9uZW50LnV1aWQpO1xuICAgICAgICBmb3IgKGNvbnN0IGhhbmRsZXIgb2YgdGhpcy5oYW5kbGVycykge1xuICAgICAgICAgICAgLyogTm90aWZ5IGFsbCBoYW5kbGVycywgYW5kIG5vdCBqdXN0IG9uZXMgdGhhdCBtYXRjaCB0aGlzIGNvbXBvbmVudCB0eXBlICovXG4gICAgICAgICAgICBoYW5kbGVyLmZvY3VzSGFuZGxlciAmJiBoYW5kbGVyLmZvY3VzSGFuZGxlcihjb21wb25lbnQsIGZvY3VzZWQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGhhbmRsZVNldFNpemVFdmVudChjb21wb25lbnQsIGRhdGEpIHtcbiAgICAgICAgY29uc3Qgc2V0U2l6ZSA9IChlbGVtZW50LCBzaXplKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3aWR0aFN0cmluZyA9IGlzU3RyaW5nKHNpemUud2lkdGgpID8gc2l6ZS53aWR0aCA6IGAke2RhdGEud2lkdGh9cHhgO1xuICAgICAgICAgICAgY29uc3QgaGVpZ2h0U3RyaW5nID0gaXNTdHJpbmcoc2l6ZS5oZWlnaHQpID8gc2l6ZS5oZWlnaHQgOiBgJHtkYXRhLmhlaWdodH1weGA7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsIGB3aWR0aDoke3dpZHRoU3RyaW5nfTsgaGVpZ2h0OiR7aGVpZ2h0U3RyaW5nfTtgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLlJvb21zIHx8IGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLk1vZGFsKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RvciA9IGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLlJvb21zID8gJ2lubmVyJyA6ICdvdXRlcic7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYGNvbXBvbmVudC1jb250ZW50LSR7c2VsZWN0b3J9LSR7Y29tcG9uZW50LnV1aWR9YCk7XG4gICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIHNldFNpemUoY29udGVudCwgZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmlmcmFtZUZvckNvbXBvbmVudChjb21wb25lbnQudXVpZCk7XG4gICAgICAgICAgICBpZiAoIWlmcmFtZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFNpemUoaWZyYW1lLCBkYXRhKTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogT24gRmlyZWZveCwgcmVzaXppbmcgYSBjb21wb25lbnQgaWZyYW1lIGRvZXMgbm90IHNlZW0gdG8gaGF2ZSBhbiBlZmZlY3Qgd2l0aFxuICAgICAgICAgICAgICogZWRpdG9yLXN0YWNrIGV4dGVuc2lvbnMuIFNpemluZyB0aGUgcGFyZW50IGRvZXMgdGhlIHRyaWNrLCBob3dldmVyLCB3ZSBjYW4ndCBkb1xuICAgICAgICAgICAgICogdGhpcyBnbG9iYWxseSwgb3RoZXJ3aXNlLCBhcmVhcyBsaWtlIHRoZSBub3RlLXRhZ3Mgd2lsbCBub3QgYmUgYWJsZSB0byBleHBhbmRcbiAgICAgICAgICAgICAqIG91dHNpZGUgb2YgdGhlIGJvdW5kcyAodG8gZGlzcGxheSBhdXRvY29tcGxldGUsIGZvciBleGFtcGxlKS5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5hcmVhID09PSBDb21wb25lbnRBcmVhLkVkaXRvclN0YWNrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gaWZyYW1lLnBhcmVudEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRTaXplKHBhcmVudCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVkaXRvckZvck5vdGUobm90ZSkge1xuICAgICAgICBjb25zdCBlZGl0b3JzID0gdGhpcy5jb21wb25lbnRzRm9yQXJlYShDb21wb25lbnRBcmVhLkVkaXRvcik7XG4gICAgICAgIGZvciAoY29uc3QgZWRpdG9yIG9mIGVkaXRvcnMpIHtcbiAgICAgICAgICAgIGlmIChlZGl0b3IuaXNFeHBsaWNpdGx5RW5hYmxlZEZvckl0ZW0obm90ZS51dWlkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRlZmF1bHRFZGl0b3I7XG4gICAgICAgIC8qIE5vIGVkaXRvciBmb3VuZCBmb3Igbm90ZS4gVXNlIGRlZmF1bHQgZWRpdG9yLCBpZiBub3RlIGRvZXMgbm90IHByZWZlciBzeXN0ZW0gZWRpdG9yICovXG4gICAgICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICBpZiAoIW5vdGUubW9iaWxlUHJlZmVyc1BsYWluRWRpdG9yKSB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdEVkaXRvciA9IHRoaXMuZ2V0RGVmYXVsdEVkaXRvcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFub3RlLnByZWZlcnNQbGFpbkVkaXRvcikge1xuICAgICAgICAgICAgICAgIGRlZmF1bHRFZGl0b3IgPSB0aGlzLmdldERlZmF1bHRFZGl0b3IoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmYXVsdEVkaXRvciAmJiAhZGVmYXVsdEVkaXRvci5pc0V4cGxpY2l0bHlEaXNhYmxlZEZvckl0ZW0obm90ZS51dWlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRFZGl0b3I7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldERlZmF1bHRFZGl0b3IoKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvcnMgPSB0aGlzLmNvbXBvbmVudHNGb3JBcmVhKENvbXBvbmVudEFyZWEuRWRpdG9yKTtcbiAgICAgICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgICAgICAgIHJldHVybiBlZGl0b3JzLmZpbHRlcihlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZS5pc01vYmlsZURlZmF1bHQ7XG4gICAgICAgICAgICB9KVswXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBlZGl0b3JzLmZpbHRlcigoZSkgPT4gZS5pc0RlZmF1bHRFZGl0b3IoKSlbMF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcGVybWlzc2lvbnNTdHJpbmdGb3JQZXJtaXNzaW9ucyhwZXJtaXNzaW9ucywgY29tcG9uZW50KSB7XG4gICAgICAgIGxldCBmaW5hbFN0cmluZyA9ICcnO1xuICAgICAgICBjb25zdCBwZXJtaXNzaW9uc0NvdW50ID0gcGVybWlzc2lvbnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhZGRTZXBhcmF0b3IgPSAoaW5kZXgsIGxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gbGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyBhbmQgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnLCBhbmQgJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcsICc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9O1xuICAgICAgICBwZXJtaXNzaW9ucy5mb3JFYWNoKChwZXJtaXNzaW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24ubmFtZSA9PT0gQ29tcG9uZW50QWN0aW9uLlN0cmVhbUl0ZW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZXMgPSBwZXJtaXNzaW9uLmNvbnRlbnRfdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBkaXNwbGF5U3RyaW5nRm9yQ29udGVudFR5cGUodHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzYyArICdzJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaXRlbXMgb2YgdHlwZSAnICsgdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGxldCB0eXBlc1N0cmluZyA9ICcnO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IHR5cGVzW2ldO1xuICAgICAgICAgICAgICAgICAgICB0eXBlc1N0cmluZyArPSBhZGRTZXBhcmF0b3IoaSwgdHlwZXMubGVuZ3RoICsgcGVybWlzc2lvbnNDb3VudCAtIGluZGV4IC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIHR5cGVzU3RyaW5nICs9IHR5cGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsU3RyaW5nICs9IGFkZFNlcGFyYXRvcihpbmRleCwgcGVybWlzc2lvbnNDb3VudCk7XG4gICAgICAgICAgICAgICAgZmluYWxTdHJpbmcgKz0gdHlwZXNTdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVzLmxlbmd0aCA+PSAyICYmIGluZGV4IDwgcGVybWlzc2lvbnNDb3VudCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLyogSWYgeW91IGhhdmUgYSBsaXN0IG9mIHR5cGVzLCBhbmQgc3RpbGwgYW4gYWRkaXRpb25hbCByb290LWxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gY29taW5nIHVwLCBhZGQgYSBjb21tYSAqL1xuICAgICAgICAgICAgICAgICAgICBmaW5hbFN0cmluZyArPSAnLCAnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHBlcm1pc3Npb24ubmFtZSA9PT0gQ29tcG9uZW50QWN0aW9uLlN0cmVhbUNvbnRleHRJdGVtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWFwcGluZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgW0NvbXBvbmVudEFyZWEuRWRpdG9yU3RhY2tdOiAnd29ya2luZyBub3RlJyxcbiAgICAgICAgICAgICAgICAgICAgW0NvbXBvbmVudEFyZWEuTm90ZVRhZ3NdOiAnd29ya2luZyBub3RlJyxcbiAgICAgICAgICAgICAgICAgICAgW0NvbXBvbmVudEFyZWEuRWRpdG9yXTogJ3dvcmtpbmcgbm90ZSdcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZpbmFsU3RyaW5nICs9IGFkZFNlcGFyYXRvcihpbmRleCwgcGVybWlzc2lvbnNDb3VudCk7XG4gICAgICAgICAgICAgICAgZmluYWxTdHJpbmcgKz0gbWFwcGluZ1tjb21wb25lbnQuYXJlYV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluYWxTdHJpbmcgKyAnLic7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7O0FBS0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFSQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBREE7QUFPQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFwQ0E7QUFvQ0E7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUFtREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBeERBO0FBQUE7QUFBQTtBQXlEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpFQTtBQUFBO0FBQUE7QUEyRUE7QUFDQTtBQUNBO0FBN0VBO0FBQUE7QUFBQTtBQThFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFnQkE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBekJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0dBO0FBQUE7QUFBQTtBQWdIQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQWxCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFrQkE7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBbUJBO0FBQ0E7QUFEQTtBQXBCQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTRCQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQ0E7QUFEQTtBQVVBO0FBQ0E7QUFDQTtBQS9DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXNCQTtBQUFBO0FBQ0E7QUFEQTtBQXlCQTtBQWhEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaURBO0FBaktBO0FBQUE7QUFBQTtBQW1LQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBMUtBO0FBQUE7QUFBQTtBQTRLQTtBQUdBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFwTEE7QUFBQTtBQUFBO0FBcUxBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVMQTtBQUFBO0FBQUE7QUE2TEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBVUE7QUF2TUE7QUFBQTtBQUFBO0FBeU1BO0FBQ0E7QUFDQTtBQUNBO0FBNU1BO0FBQUE7QUFBQTtBQThNQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFRQTtBQUNBO0FBdk5BO0FBQUE7QUFBQTtBQXlOQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQWxPQTtBQUFBO0FBQUE7QUFtT0E7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBUEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFmQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBO0FBakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQkE7QUFyUEE7QUFBQTtBQUFBO0FBdVBBO0FBQ0E7QUFDQTtBQXpQQTtBQUFBO0FBQUE7QUEyUEE7O0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTVRQTtBQUFBO0FBQUE7QUE4UUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7QUFDQTtBQWhTQTtBQUFBO0FBQUE7QUFpU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFTQTtBQUFBO0FBQUE7QUE0U0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFsVEE7QUFBQTtBQUFBO0FBb1RBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBMVRBO0FBQUE7QUFBQTtBQTRUQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFqVkE7QUFBQTtBQUFBO0FBbVZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQW5XQTtBQUFBO0FBQUE7QUFxV0E7QUFDQTtBQUNBO0FBQ0E7QUF4V0E7QUFBQTtBQUFBO0FBMFdBO0FBQ0E7QUFDQTtBQTVXQTtBQUFBO0FBQUE7QUE2V0E7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQVBBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBallBO0FBQUE7QUFBQTtBQWtZQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQXFEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBM0RBO0FBQ0E7QUFvREE7QUFBQTtBQU9BO0FBNURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2REE7QUEvYkE7QUFBQTtBQUFBO0FBZ2NBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUdBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBY0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQWxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBO0FBbmRBO0FBQUE7QUFBQTtBQW9kQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBWkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWFBO0FBQUE7QUFDQTtBQUNBO0FBZkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBN2VBO0FBQUE7QUFBQTtBQThlQTtBQUNBO0FBQUE7QUFFQTtBQURBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQVNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBdGdCQTtBQUFBO0FBQUE7QUF3Z0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1Z0JBO0FBQUE7QUFBQTtBQTZnQkE7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUF2aEJBO0FBQUE7QUFBQTtBQXloQkE7QUFDQTtBQUNBO0FBQ0E7QUE1aEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQThoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbGlCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFraUJBO0FBQ0E7QUFwaUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvaUJBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQTFpQkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBNmlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFvQkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXhCQTtBQUNBO0FBREE7QUEwQkE7QUFDQTtBQUNBO0FBNUJBO0FBQUE7QUE4QkE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBdkNBO0FBdUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbkRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF4akJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0bUJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUtBO0FBMW5CQTtBQUFBO0FBQUE7QUEybkJBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFLQTtBQUNBO0FBTkE7QUFPQTtBQUNBO0FBUkE7QUFBQTtBQUNBO0FBREE7QUFTQTtBQVRBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpCQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQW1CQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUF4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF5QkE7QUE3cEJBO0FBQUE7QUFBQTtBQThwQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFSQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFRQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVNBO0FBQ0E7QUFDQTtBQVpBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFZQTtBQUNBO0FBZEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFxQkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQXRCQTtBQUFBO0FBQ0E7QUFEQTtBQXlCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBM0JBO0FBNEJBO0FBQ0E7QUE3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4QkE7QUFwc0JBO0FBQUE7QUFBQTtBQXFzQkE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXpzQkE7QUFBQTtBQUFBO0FBMHNCQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUpBO0FBSUE7QUFDQTtBQUxBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFsdEJBO0FBQUE7QUFBQTtBQW90QkE7QUFDQTtBQXJ0QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF1dEJBO0FBeHRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQSt0QkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBcHVCQTtBQUFBO0FBQ0E7QUFEQTtBQXF1QkE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBOXVCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUE1dkJBO0FBQUE7QUFBQTtBQTh2QkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW1CQTtBQUFBO0FBQ0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUF6QkE7QUFDQTtBQUlBO0FBQUE7QUFDQTtBQURBO0FBcUJBO0FBMUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTBCQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFseUJBO0FBQUE7QUFBQTtBQW15QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFJQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQVpBO0FBQ0E7QUFDQTtBQUFBO0FBV0E7QUFiQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFhQTtBQUNBO0FBQ0E7QUFDQTtBQXBCQTtBQW9CQTtBQUNBO0FBckJBO0FBc0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQS9DQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBTEE7QUFzREE7Ozs7O0FBSUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXQyQkE7QUFBQTtBQUFBO0FBdzJCQTtBQUNBO0FBejJCQTtBQUFBO0FBQUE7QUEyMkJBO0FBQ0E7QUE1MkJBO0FBQUE7QUFBQTtBQTYyQkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQXYzQkE7QUFBQTtBQUFBO0FBeTNCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUEvM0JBO0FBQUE7QUFBQTtBQWc0QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXA0QkE7QUFBQTtBQUFBO0FBczRCQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBNzRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4NEJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXA1QkE7QUFBQTtBQUNBO0FBREE7QUFxNUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFKQTtBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXI2QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXU2QkE7QUFDQTtBQUNBO0FBSEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUlBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFuN0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXE3QkE7QUFDQTtBQUNBO0FBdjdCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXk3QkE7QUFDQTtBQUNBO0FBMzdCQTtBQTQ3QkE7QUFDQTtBQUNBO0FBOTdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZzhCQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFLQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFuOUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxOUJBO0FBQ0E7QUFDQTtBQXY5QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF5OUJBO0FBQ0E7QUFDQTtBQTM5QkE7QUE0OUJBO0FBQ0E7QUFDQTtBQUNBO0FBLzlCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaStCQTtBQUNBO0FBQ0E7QUFBQTtBQW4rQkE7QUFBQTtBQXErQkE7QUFDQTtBQUNBO0FBditCQTtBQXUrQkE7QUFDQTtBQUNBO0FBeitCQTtBQTArQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFKQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBO0FBbC9CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBcS9CQTtBQUNBO0FBdC9CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdy9CQTtBQUNBO0FBei9CQTtBQUFBO0FBQUE7QUEyL0JBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsZ0NBO0FBQUE7QUFBQTtBQW9nQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BO0FBemdDQTtBQUFBO0FBQUE7QUEyZ0NBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNWlDQTtBQUFBO0FBQUE7QUE4aUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF0a0NBO0FBQUE7QUFBQTtBQXdrQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBamxDQTtBQUFBO0FBQUE7QUFtbENBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXpvQ0E7QUFBQTtBQUFBO0FBdUNBO0FBQ0E7QUF4Q0E7QUFBQTtBQUFBO0FBMENBO0FBQ0E7QUEzQ0E7QUFBQTtBQUFBO0FBNkNBO0FBSUE7QUFqREE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/component_manager.ts\n')},"./lib/services/history/functions.ts": /*!*******************************************!*\ !*** ./lib/services/history/functions.ts ***! \*******************************************/ /*! exports provided: CreateHistoryEntryForPayload */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CreateHistoryEntryForPayload", function() { return CreateHistoryEntryForPayload; });\n/* harmony import */ var _protocol_payloads_fields__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../protocol/payloads/fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony import */ var _note_history_entry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./note_history_entry */ "./lib/services/history/note_history_entry.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nfunction CreateHistoryEntryForPayload(payload) {\n var mapping = _defineProperty({}, _Models_content_types__WEBPACK_IMPORTED_MODULE_2__["ContentType"].Note, _note_history_entry__WEBPACK_IMPORTED_MODULE_1__["NoteHistoryEntry"]);\n\n var type = payload[_protocol_payloads_fields__WEBPACK_IMPORTED_MODULE_0__["PayloadField"].ContentType];\n var historyItemClass = mapping[type];\n\n if (!historyItemClass) {\n throw \'Invalid item history class\';\n } // eslint-disable-next-line new-cap\n\n\n var entry = new historyItemClass(payload);\n return entry;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9mdW5jdGlvbnMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9mdW5jdGlvbnMudHM/Zjk3MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXlsb2FkRmllbGQgfSBmcm9tICcuLy4uLy4uL3Byb3RvY29sL3BheWxvYWRzL2ZpZWxkcyc7XG5pbXBvcnQgeyBOb3RlSGlzdG9yeUVudHJ5IH0gZnJvbSAnLi9ub3RlX2hpc3RvcnlfZW50cnknO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZUhpc3RvcnlFbnRyeUZvclBheWxvYWQocGF5bG9hZCkge1xuICAgIGNvbnN0IG1hcHBpbmcgPSB7XG4gICAgICAgIFtDb250ZW50VHlwZS5Ob3RlXTogTm90ZUhpc3RvcnlFbnRyeVxuICAgIH07XG4gICAgY29uc3QgdHlwZSA9IHBheWxvYWRbUGF5bG9hZEZpZWxkLkNvbnRlbnRUeXBlXTtcbiAgICBjb25zdCBoaXN0b3J5SXRlbUNsYXNzID0gbWFwcGluZ1t0eXBlXTtcbiAgICBpZiAoIWhpc3RvcnlJdGVtQ2xhc3MpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgaXRlbSBoaXN0b3J5IGNsYXNzJztcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICBjb25zdCBlbnRyeSA9IG5ldyBoaXN0b3J5SXRlbUNsYXNzKHBheWxvYWQpO1xuICAgIHJldHVybiBlbnRyeTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/history/functions.ts\n')},"./lib/services/history/history_manager.ts": /*!*************************************************!*\ !*** ./lib/services/history/history_manager.ts ***! \*************************************************/ /*! exports provided: SNHistoryManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNHistoryManager", function() { return SNHistoryManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Services_history_history_session__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/history/history_session */ "./lib/services/history/history_session.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\nvar PERSIST_TIMEOUT = 2000;\n/**\n * The history manager is presently responsible for transient \'session history\',\n * which include keeping track of changes made in the current application session.\n * These change logs (unless otherwise configured) are ephemeral and do not persist\n * past application restart.\n * In the future the history manager will also be responsible for remote server history.\n */\n\nvar SNHistoryManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNHistoryManager, _PureService);\n\n function SNHistoryManager(itemManager, storageService, contentTypes, timeout) {\n var _this;\n\n _classCallCheck(this, SNHistoryManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNHistoryManager).call(this));\n _this.contentTypes = [];\n _this.persistable = false;\n _this.autoOptimize = false;\n _this.itemManager = itemManager;\n _this.storageService = storageService;\n _this.contentTypes = contentTypes;\n _this.timeout = timeout;\n return _this;\n }\n\n _createClass(SNHistoryManager, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.storageService = undefined;\n this.contentTypes.length = 0;\n this.historySession = undefined;\n this.timeout = null;\n\n if (this.removeChangeObserver) {\n this.removeChangeObserver();\n this.removeChangeObserver = null;\n }\n\n _get(_getPrototypeOf(SNHistoryManager.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initializeFromDisk",\n value: function () {\n var _initializeFromDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var autoOptimize;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryPersistable);\n\n case 2:\n this.persistable = _context.sent;\n _context.next = 5;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions).then(function (historyValue) {\n return _Services_history_history_session__WEBPACK_IMPORTED_MODULE_3__["HistorySession"].FromJson(historyValue);\n });\n\n case 5:\n this.historySession = _context.sent;\n _context.next = 8;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryOptimize);\n\n case 8:\n autoOptimize = _context.sent;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["isNullOrUndefined"])(autoOptimize)) {\n /** Default to true */\n this.autoOptimize = true;\n } else {\n this.autoOptimize = autoOptimize;\n }\n\n this.addChangeObserver();\n\n case 11:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initializeFromDisk() {\n return _initializeFromDisk.apply(this, arguments);\n }\n\n return initializeFromDisk;\n }()\n }, {\n key: "addChangeObserver",\n value: function addChangeObserver() {\n var _this2 = this;\n\n this.removeChangeObserver = this.itemManager.addObserver(this.contentTypes, function (changed, inserted, discarded, source) {\n var items = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_6__["concatArrays"])(changed, inserted, discarded);\n\n if (source === _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].LocalChanged) {\n return;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n try {\n if (!item.deleted && !item.errorDecrypting) {\n _this2.addHistoryEntryForItem(item);\n }\n } catch (e) {\n console.error(\'Unable to add item history entry:\', e);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }\n }, {\n key: "isDiskEnabled",\n value: function isDiskEnabled() {\n return this.persistable;\n }\n }, {\n key: "isAutoOptimizeEnabled",\n value: function isAutoOptimizeEnabled() {\n return this.autoOptimize;\n }\n }, {\n key: "saveToDisk",\n value: function () {\n var _saveToDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (this.persistable) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt("return");\n\n case 2:\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions, this.historySession);\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function saveToDisk() {\n return _saveToDisk.apply(this, arguments);\n }\n\n return saveToDisk;\n }()\n }, {\n key: "setSessionItemRevisionThreshold",\n value: function setSessionItemRevisionThreshold(threshold) {\n this.historySession.setItemRevisionThreshold(threshold);\n }\n }, {\n key: "addHistoryEntryForItem",\n value: function () {\n var _addHistoryEntryForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(item) {\n var _this3 = this;\n\n var payload, entry;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CreateSourcedPayloadFromObject"])(item, _Payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].SessionHistory);\n entry = this.historySession.addEntryForPayload(payload);\n\n if (this.autoOptimize) {\n this.historySession.optimizeHistoryForItem(item.uuid);\n }\n\n if (entry && this.persistable) {\n /** Debounce, clear existing timeout */\n if (this.saveTimeout) {\n if (this.timeout.hasOwnProperty(\'cancel\')) {\n this.timeout.cancel(this.saveTimeout);\n } else {\n clearTimeout(this.saveTimeout);\n }\n }\n\n ;\n this.saveTimeout = this.timeout(function () {\n _this3.saveToDisk();\n }, PERSIST_TIMEOUT);\n }\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function addHistoryEntryForItem(_x) {\n return _addHistoryEntryForItem.apply(this, arguments);\n }\n\n return addHistoryEntryForItem;\n }()\n }, {\n key: "historyForItem",\n value: function historyForItem(item) {\n return this.historySession.historyForItem(item.uuid);\n }\n }, {\n key: "clearHistoryForItem",\n value: function () {\n var _clearHistoryForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this.historySession.clearItemHistory(item);\n return _context4.abrupt("return", this.saveToDisk());\n\n case 2:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function clearHistoryForItem(_x2) {\n return _clearHistoryForItem.apply(this, arguments);\n }\n\n return clearHistoryForItem;\n }()\n }, {\n key: "clearAllHistory",\n value: function () {\n var _clearAllHistory = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.historySession.clearAllHistory();\n return _context5.abrupt("return", this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions));\n\n case 2:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function clearAllHistory() {\n return _clearAllHistory.apply(this, arguments);\n }\n\n return clearAllHistory;\n }()\n }, {\n key: "toggleDiskSaving",\n value: function () {\n var _toggleDiskSaving = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n this.persistable = !this.persistable;\n\n if (!this.persistable) {\n _context6.next = 6;\n break;\n }\n\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryPersistable, true);\n this.saveToDisk();\n _context6.next = 8;\n break;\n\n case 6:\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryPersistable, false);\n return _context6.abrupt("return", this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryRevisions));\n\n case 8:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function toggleDiskSaving() {\n return _toggleDiskSaving.apply(this, arguments);\n }\n\n return toggleDiskSaving;\n }()\n }, {\n key: "toggleAutoOptimize",\n value: function () {\n var _toggleAutoOptimize = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n this.autoOptimize = !this.autoOptimize;\n\n if (this.autoOptimize) {\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryOptimize, true);\n } else {\n this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_5__["StorageKey"].SessionHistoryOptimize, false);\n }\n\n case 2:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function toggleAutoOptimize() {\n return _toggleAutoOptimize.apply(this, arguments);\n }\n\n return toggleAutoOptimize;\n }()\n }]);\n\n return SNHistoryManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X21hbmFnZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X21hbmFnZXIudHM/NjA1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9wdXJlX3NlcnZpY2UnO1xuaW1wb3J0IHsgSGlzdG9yeVNlc3Npb24gfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24nO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IFN0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBpc051bGxPclVuZGVmaW5lZCwgY29uY2F0QXJyYXlzIH0gZnJvbSAnQExpYi91dGlscyc7XG5jb25zdCBQRVJTSVNUX1RJTUVPVVQgPSAyMDAwO1xuLyoqXG4gKiBUaGUgaGlzdG9yeSBtYW5hZ2VyIGlzIHByZXNlbnRseSByZXNwb25zaWJsZSBmb3IgdHJhbnNpZW50ICdzZXNzaW9uIGhpc3RvcnknLFxuICogd2hpY2ggaW5jbHVkZSBrZWVwaW5nIHRyYWNrIG9mIGNoYW5nZXMgbWFkZSBpbiB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBzZXNzaW9uLlxuICogVGhlc2UgY2hhbmdlIGxvZ3MgKHVubGVzcyBvdGhlcndpc2UgY29uZmlndXJlZCkgYXJlIGVwaGVtZXJhbCBhbmQgZG8gbm90IHBlcnNpc3RcbiAqIHBhc3QgYXBwbGljYXRpb24gcmVzdGFydC5cbiAqIEluIHRoZSBmdXR1cmUgdGhlIGhpc3RvcnkgbWFuYWdlciB3aWxsIGFsc28gYmUgcmVzcG9uc2libGUgZm9yIHJlbW90ZSBzZXJ2ZXIgaGlzdG9yeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOSGlzdG9yeU1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoaXRlbU1hbmFnZXIsIHN0b3JhZ2VTZXJ2aWNlLCBjb250ZW50VHlwZXMsIHRpbWVvdXQpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZXMgPSBbXTtcbiAgICAgICAgdGhpcy5wZXJzaXN0YWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gaXRlbU1hbmFnZXI7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UgPSBzdG9yYWdlU2VydmljZTtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZXMgPSBjb250ZW50VHlwZXM7XG4gICAgICAgIHRoaXMudGltZW91dCA9IHRpbWVvdXQ7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5oaXN0b3J5U2Vzc2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlQ2hhbmdlT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hhbmdlT2JzZXJ2ZXIoKTtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hhbmdlT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplRnJvbURpc2soKSB7XG4gICAgICAgIHRoaXMucGVyc2lzdGFibGUgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlQZXJzaXN0YWJsZSk7XG4gICAgICAgIHRoaXMuaGlzdG9yeVNlc3Npb24gPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlSZXZpc2lvbnMpLnRoZW4oKGhpc3RvcnlWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIEhpc3RvcnlTZXNzaW9uLkZyb21Kc29uKGhpc3RvcnlWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBhdXRvT3B0aW1pemUgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlPcHRpbWl6ZSk7XG4gICAgICAgIGlmIChpc051bGxPclVuZGVmaW5lZChhdXRvT3B0aW1pemUpKSB7XG4gICAgICAgICAgICAvKiogRGVmYXVsdCB0byB0cnVlICovXG4gICAgICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9IGF1dG9PcHRpbWl6ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZENoYW5nZU9ic2VydmVyKCk7XG4gICAgfVxuICAgIGFkZENoYW5nZU9ic2VydmVyKCkge1xuICAgICAgICB0aGlzLnJlbW92ZUNoYW5nZU9ic2VydmVyID0gdGhpcy5pdGVtTWFuYWdlci5hZGRPYnNlcnZlcih0aGlzLmNvbnRlbnRUeXBlcywgKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBjb25jYXRBcnJheXMoY2hhbmdlZCwgaW5zZXJ0ZWQsIGRpc2NhcmRlZCk7XG4gICAgICAgICAgICBpZiAoc291cmNlID09PSBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXRlbS5kZWxldGVkICYmICFpdGVtLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRIaXN0b3J5RW50cnlGb3JJdGVtKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBhZGQgaXRlbSBoaXN0b3J5IGVudHJ5OicsIGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlzRGlza0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlcnNpc3RhYmxlO1xuICAgIH1cbiAgICBpc0F1dG9PcHRpbWl6ZUVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dG9PcHRpbWl6ZTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVRvRGlzaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcnNpc3RhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb25IaXN0b3J5UmV2aXNpb25zLCB0aGlzLmhpc3RvcnlTZXNzaW9uKTtcbiAgICB9XG4gICAgc2V0U2Vzc2lvbkl0ZW1SZXZpc2lvblRocmVzaG9sZCh0aHJlc2hvbGQpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5U2Vzc2lvbi5zZXRJdGVtUmV2aXNpb25UaHJlc2hvbGQodGhyZXNob2xkKTtcbiAgICB9XG4gICAgYXN5bmMgYWRkSGlzdG9yeUVudHJ5Rm9ySXRlbShpdGVtKSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QoaXRlbSwgUGF5bG9hZFNvdXJjZS5TZXNzaW9uSGlzdG9yeSk7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5oaXN0b3J5U2Vzc2lvbi5hZGRFbnRyeUZvclBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgIGlmICh0aGlzLmF1dG9PcHRpbWl6ZSkge1xuICAgICAgICAgICAgdGhpcy5oaXN0b3J5U2Vzc2lvbi5vcHRpbWl6ZUhpc3RvcnlGb3JJdGVtKGl0ZW0udXVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVudHJ5ICYmIHRoaXMucGVyc2lzdGFibGUpIHtcbiAgICAgICAgICAgIC8qKiBEZWJvdW5jZSwgY2xlYXIgZXhpc3RpbmcgdGltZW91dCAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuc2F2ZVRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lb3V0Lmhhc093blByb3BlcnR5KCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVvdXQuY2FuY2VsKHRoaXMuc2F2ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuc2F2ZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIHRoaXMuc2F2ZVRpbWVvdXQgPSB0aGlzLnRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZVRvRGlzaygpO1xuICAgICAgICAgICAgfSwgUEVSU0lTVF9USU1FT1VUKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBoaXN0b3J5Rm9ySXRlbShpdGVtKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmhpc3RvcnlTZXNzaW9uLmhpc3RvcnlGb3JJdGVtKGl0ZW0udXVpZCk7XG4gICAgfVxuICAgIGFzeW5jIGNsZWFySGlzdG9yeUZvckl0ZW0oaXRlbSkge1xuICAgICAgICB0aGlzLmhpc3RvcnlTZXNzaW9uLmNsZWFySXRlbUhpc3RvcnkoaXRlbSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhdmVUb0Rpc2soKTtcbiAgICB9XG4gICAgYXN5bmMgY2xlYXJBbGxIaXN0b3J5KCkge1xuICAgICAgICB0aGlzLmhpc3RvcnlTZXNzaW9uLmNsZWFyQWxsSGlzdG9yeSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb25IaXN0b3J5UmV2aXNpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgdG9nZ2xlRGlza1NhdmluZygpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0YWJsZSA9ICF0aGlzLnBlcnNpc3RhYmxlO1xuICAgICAgICBpZiAodGhpcy5wZXJzaXN0YWJsZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlNlc3Npb25IaXN0b3J5UGVyc2lzdGFibGUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5zYXZlVG9EaXNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlQZXJzaXN0YWJsZSwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5TZXNzaW9uSGlzdG9yeVJldmlzaW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgdG9nZ2xlQXV0b09wdGltaXplKCkge1xuICAgICAgICB0aGlzLmF1dG9PcHRpbWl6ZSA9ICF0aGlzLmF1dG9PcHRpbWl6ZTtcbiAgICAgICAgaWYgKHRoaXMuYXV0b09wdGltaXplKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlPcHRpbWl6ZSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuU2Vzc2lvbkhpc3RvcnlPcHRpbWl6ZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVNBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXdCQTtBQXhCQTtBQUFBO0FBMEJBO0FBQ0E7QUFDQTtBQTVCQTtBQXlCQTtBQXpCQTtBQUFBO0FBQ0E7QUFEQTtBQTRCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBckNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUtBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFDQTtBQXZEQTtBQUFBO0FBQUE7QUF5REE7QUFDQTtBQTFEQTtBQUFBO0FBQUE7QUE0REE7QUFDQTtBQTdEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWtFQTtBQUNBO0FBbkVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxRUE7QUFDQTtBQXRFQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0VBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1RkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThGQTtBQUNBO0FBL0ZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpR0E7QUFqR0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUdBO0FBckdBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlHQTtBQUNBO0FBMUdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUEwR0E7QUFDQTtBQTVHQTtBQUFBO0FBQ0E7QUFEQTtBQStHQTtBQS9HQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvSEE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQTNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/history/history_manager.ts\n')},"./lib/services/history/history_session.ts": /*!*************************************************!*\ !*** ./lib/services/history/history_session.ts ***! \*************************************************/ /*! exports provided: HistorySession */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HistorySession", function() { return HistorySession; });\n/* harmony import */ var _Services_history_item_history__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/history/item_history */ "./lib/services/history/item_history.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/** The amount of revisions which above, call for an optimization. */\n\nvar DEFAULT_ITEM_REVISIONS_THRESHOLD = 60;\nvar HistorySession = /*#__PURE__*/function () {\n function HistorySession(content) {\n _classCallCheck(this, HistorySession);\n\n this.itemRevisionThreshold = DEFAULT_ITEM_REVISIONS_THRESHOLD;\n this.content = content;\n\n if (!this.content) {\n this.content = {\n itemUUIDToItemHistoryMapping: {}\n };\n }\n }\n\n _createClass(HistorySession, [{\n key: "addEntryForPayload",\n value: function addEntryForPayload(payload) {\n var itemHistory = this.historyForItem(payload.uuid);\n return itemHistory.addHistoryEntryForItem(payload);\n }\n }, {\n key: "historyForItem",\n value: function historyForItem(uuid) {\n var history = this.content.itemUUIDToItemHistoryMapping[uuid];\n\n if (!history) {\n history = new _Services_history_item_history__WEBPACK_IMPORTED_MODULE_0__["ItemHistory"]();\n this.content.itemUUIDToItemHistoryMapping[uuid] = history;\n }\n\n return history;\n }\n }, {\n key: "clearItemHistory",\n value: function clearItemHistory(item) {\n this.historyForItem(item.uuid).clear();\n }\n }, {\n key: "clearAllHistory",\n value: function clearAllHistory() {\n this.content.itemUUIDToItemHistoryMapping = {};\n }\n }, {\n key: "setItemRevisionThreshold",\n value: function setItemRevisionThreshold(threshold) {\n this.itemRevisionThreshold = threshold;\n }\n }, {\n key: "optimizeHistoryForItem",\n value: function optimizeHistoryForItem(uuid) {\n /**\n * Clean up if there are too many revisions. Note itemRevisionThreshold\n * is the amount of revisions which above, call for an optimization. An\n * optimization may not remove entries above this threshold. It will\n * determine what it should keep and what it shouldn\'t. So, it is possible\n * to have a threshold of 60 but have 600 entries, if the item history deems\n * those worth keeping.\n */\n var itemHistory = this.historyForItem(uuid);\n\n if (itemHistory.entries.length > this.itemRevisionThreshold) {\n itemHistory.optimize();\n }\n }\n }], [{\n key: "FromJson",\n value: function FromJson(historySessionJson) {\n if (historySessionJson) {\n var content = historySessionJson.content;\n var uuids = Object.keys(content.itemUUIDToItemHistoryMapping);\n uuids.forEach(function (itemUUID) {\n var rawItemHistory = content.itemUUIDToItemHistoryMapping[itemUUID];\n content.itemUUIDToItemHistoryMapping[itemUUID] = _Services_history_item_history__WEBPACK_IMPORTED_MODULE_0__["ItemHistory"].FromJson(rawItemHistory);\n });\n return new HistorySession(content);\n } else {\n return new HistorySession();\n }\n }\n }]);\n\n return HistorySession;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X3Nlc3Npb24udHM/NjhmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVtSGlzdG9yeSB9IGZyb20gJ0BTZXJ2aWNlcy9oaXN0b3J5L2l0ZW1faGlzdG9yeSc7XG4vKiogVGhlIGFtb3VudCBvZiByZXZpc2lvbnMgd2hpY2ggYWJvdmUsIGNhbGwgZm9yIGFuIG9wdGltaXphdGlvbi4gKi9cbmNvbnN0IERFRkFVTFRfSVRFTV9SRVZJU0lPTlNfVEhSRVNIT0xEID0gNjA7XG5leHBvcnQgY2xhc3MgSGlzdG9yeVNlc3Npb24ge1xuICAgIGNvbnN0cnVjdG9yKGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5pdGVtUmV2aXNpb25UaHJlc2hvbGQgPSBERUZBVUxUX0lURU1fUkVWSVNJT05TX1RIUkVTSE9MRDtcbiAgICAgICAgdGhpcy5jb250ZW50ID0gY29udGVudDtcbiAgICAgICAgaWYgKCF0aGlzLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGVudCA9IHtcbiAgICAgICAgICAgICAgICBpdGVtVVVJRFRvSXRlbUhpc3RvcnlNYXBwaW5nOiB7fVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGF0aWMgRnJvbUpzb24oaGlzdG9yeVNlc3Npb25Kc29uKSB7XG4gICAgICAgIGlmIChoaXN0b3J5U2Vzc2lvbkpzb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBoaXN0b3J5U2Vzc2lvbkpzb24uY29udGVudDtcbiAgICAgICAgICAgIGNvbnN0IHV1aWRzID0gT2JqZWN0LmtleXMoY29udGVudC5pdGVtVVVJRFRvSXRlbUhpc3RvcnlNYXBwaW5nKTtcbiAgICAgICAgICAgIHV1aWRzLmZvckVhY2goKGl0ZW1VVUlEKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmF3SXRlbUhpc3RvcnkgPSBjb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmdbaXRlbVVVSURdO1xuICAgICAgICAgICAgICAgIGNvbnRlbnQuaXRlbVVVSURUb0l0ZW1IaXN0b3J5TWFwcGluZ1tpdGVtVVVJRF0gPVxuICAgICAgICAgICAgICAgICAgICBJdGVtSGlzdG9yeS5Gcm9tSnNvbihyYXdJdGVtSGlzdG9yeSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgSGlzdG9yeVNlc3Npb24oY29udGVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEhpc3RvcnlTZXNzaW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkRW50cnlGb3JQYXlsb2FkKHBheWxvYWQpIHtcbiAgICAgICAgY29uc3QgaXRlbUhpc3RvcnkgPSB0aGlzLmhpc3RvcnlGb3JJdGVtKHBheWxvYWQudXVpZCk7XG4gICAgICAgIHJldHVybiBpdGVtSGlzdG9yeS5hZGRIaXN0b3J5RW50cnlGb3JJdGVtKHBheWxvYWQpO1xuICAgIH1cbiAgICBoaXN0b3J5Rm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIGxldCBoaXN0b3J5ID0gdGhpcy5jb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmdbdXVpZF07XG4gICAgICAgIGlmICghaGlzdG9yeSkge1xuICAgICAgICAgICAgaGlzdG9yeSA9IG5ldyBJdGVtSGlzdG9yeSgpO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmdbdXVpZF0gPSBoaXN0b3J5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoaXN0b3J5O1xuICAgIH1cbiAgICBjbGVhckl0ZW1IaXN0b3J5KGl0ZW0pIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5Rm9ySXRlbShpdGVtLnV1aWQpLmNsZWFyKCk7XG4gICAgfVxuICAgIGNsZWFyQWxsSGlzdG9yeSgpIHtcbiAgICAgICAgdGhpcy5jb250ZW50Lml0ZW1VVUlEVG9JdGVtSGlzdG9yeU1hcHBpbmcgPSB7fTtcbiAgICB9XG4gICAgc2V0SXRlbVJldmlzaW9uVGhyZXNob2xkKHRocmVzaG9sZCkge1xuICAgICAgICB0aGlzLml0ZW1SZXZpc2lvblRocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgICB9XG4gICAgb3B0aW1pemVIaXN0b3J5Rm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGVhbiB1cCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgcmV2aXNpb25zLiBOb3RlIGl0ZW1SZXZpc2lvblRocmVzaG9sZFxuICAgICAgICAgKiBpcyB0aGUgYW1vdW50IG9mIHJldmlzaW9ucyB3aGljaCBhYm92ZSwgY2FsbCBmb3IgYW4gb3B0aW1pemF0aW9uLiBBblxuICAgICAgICAgKiBvcHRpbWl6YXRpb24gbWF5IG5vdCByZW1vdmUgZW50cmllcyBhYm92ZSB0aGlzIHRocmVzaG9sZC4gSXQgd2lsbFxuICAgICAgICAgKiBkZXRlcm1pbmUgd2hhdCBpdCBzaG91bGQga2VlcCBhbmQgd2hhdCBpdCBzaG91bGRuJ3QuIFNvLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgICAgKiB0byBoYXZlIGEgdGhyZXNob2xkIG9mIDYwIGJ1dCBoYXZlIDYwMCBlbnRyaWVzLCBpZiB0aGUgaXRlbSBoaXN0b3J5IGRlZW1zXG4gICAgICAgICAqIHRob3NlIHdvcnRoIGtlZXBpbmcuXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVtSGlzdG9yeSA9IHRoaXMuaGlzdG9yeUZvckl0ZW0odXVpZCk7XG4gICAgICAgIGlmIChpdGVtSGlzdG9yeS5lbnRyaWVzLmxlbmd0aCA+IHRoaXMuaXRlbVJldmlzaW9uVGhyZXNob2xkKSB7XG4gICAgICAgICAgICBpdGVtSGlzdG9yeS5vcHRpbWl6ZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBREE7QUFHQTtBQUNBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUEwQkE7QUFDQTtBQUNBO0FBNUJBO0FBQUE7QUFBQTtBQThCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFwQ0E7QUFBQTtBQUFBO0FBc0NBO0FBQ0E7QUF2Q0E7QUFBQTtBQUFBO0FBeUNBO0FBQ0E7QUExQ0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUE3Q0E7QUFBQTtBQUFBO0FBK0NBOzs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQTNEQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF4QkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/history/history_session.ts\n')},"./lib/services/history/item_history.ts": /*!**********************************************!*\ !*** ./lib/services/history/item_history.ts ***! \**********************************************/ /*! exports provided: ItemHistory */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemHistory", function() { return ItemHistory; });\n/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./functions */ "./lib/services/history/functions.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * The amount of characters added or removed that\n * constitute a keepable entry after optimization.\n */\n\nvar LARGE_ENTRY_DELTA_THRESHOLD = 15;\nvar ItemHistory = /*#__PURE__*/function () {\n function ItemHistory(entries) {\n _classCallCheck(this, ItemHistory);\n\n this.entries = [];\n /** Deserialize the entries into entry objects. */\n\n if (entries) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var entry = _step.value;\n entry.setPreviousEntry(this.getLastEntry());\n this.entries.push(entry);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n\n _createClass(ItemHistory, [{\n key: "getLastEntry",\n value: function getLastEntry() {\n return this.entries[this.entries.length - 1];\n }\n }, {\n key: "addHistoryEntryForItem",\n value: function addHistoryEntryForItem(payload) {\n var prospectiveEntry = Object(_functions__WEBPACK_IMPORTED_MODULE_0__["CreateHistoryEntryForPayload"])(payload);\n var previousEntry = this.getLastEntry();\n prospectiveEntry.setPreviousEntry(previousEntry);\n\n if (prospectiveEntry.isSameAsEntry(previousEntry)) {\n return;\n }\n\n this.entries.push(prospectiveEntry);\n return prospectiveEntry;\n }\n }, {\n key: "clear",\n value: function clear() {\n this.entries.length = 0;\n }\n }, {\n key: "optimize",\n value: function optimize() {\n var _this = this;\n\n var keepEntries = [];\n\n var isEntrySignificant = function isEntrySignificant(entry) {\n return entry.deltaSize() > LARGE_ENTRY_DELTA_THRESHOLD;\n };\n\n var processEntry = function processEntry(entry, index, keep) {\n /**\n * Entries may be processed retrospectively, meaning it can be\n * decided to be deleted, then an upcoming processing can change that.\n */\n if (keep) {\n keepEntries.push(entry);\n } else {\n /** Remove if in keep */\n var _index = keepEntries.indexOf(entry);\n\n if (_index !== -1) {\n keepEntries.splice(_index, 1);\n }\n }\n\n if (keep && isEntrySignificant(entry) && entry.operationVector() === -1) {\n /** This is a large negative change. Hang on to the previous entry. */\n var previousEntry = _this.entries[index - 1];\n\n if (previousEntry) {\n keepEntries.push(previousEntry);\n }\n }\n };\n\n this.entries.forEach(function (entry, index) {\n if (index === 0 || index === _this.entries.length - 1) {\n /** Keep the first and last */\n processEntry(entry, index, true);\n } else {\n var significant = isEntrySignificant(entry);\n processEntry(entry, index, significant);\n }\n });\n this.entries = this.entries.filter(function (entry, index) {\n return keepEntries.indexOf(entry) !== -1;\n });\n }\n }], [{\n key: "FromJson",\n value: function FromJson(entryJson) {\n var entries = entryJson.entries.map(function (rawHistoryEntry) {\n return Object(_functions__WEBPACK_IMPORTED_MODULE_0__["CreateHistoryEntryForPayload"])(rawHistoryEntry.payload);\n });\n return new ItemHistory(entries);\n }\n }]);\n\n return ItemHistory;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnkudHM/MWFlZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVIaXN0b3J5RW50cnlGb3JQYXlsb2FkIH0gZnJvbSAnLi9mdW5jdGlvbnMnO1xuLyoqXG4gKiBUaGUgYW1vdW50IG9mIGNoYXJhY3RlcnMgYWRkZWQgb3IgcmVtb3ZlZCB0aGF0XG4gKiBjb25zdGl0dXRlIGEga2VlcGFibGUgZW50cnkgYWZ0ZXIgb3B0aW1pemF0aW9uLlxuICovXG5jb25zdCBMQVJHRV9FTlRSWV9ERUxUQV9USFJFU0hPTEQgPSAxNTtcbmV4cG9ydCBjbGFzcyBJdGVtSGlzdG9yeSB7XG4gICAgY29uc3RydWN0b3IoZW50cmllcykge1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgICAgICAgLyoqIERlc2VyaWFsaXplIHRoZSBlbnRyaWVzIGludG8gZW50cnkgb2JqZWN0cy4gKi9cbiAgICAgICAgaWYgKGVudHJpZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGVudHJ5LnNldFByZXZpb3VzRW50cnkodGhpcy5nZXRMYXN0RW50cnkoKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBGcm9tSnNvbihlbnRyeUpzb24pIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGVudHJ5SnNvbi5lbnRyaWVzLm1hcCgocmF3SGlzdG9yeUVudHJ5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlSGlzdG9yeUVudHJ5Rm9yUGF5bG9hZChyYXdIaXN0b3J5RW50cnkucGF5bG9hZCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbmV3IEl0ZW1IaXN0b3J5KGVudHJpZXMpO1xuICAgIH1cbiAgICBnZXRMYXN0RW50cnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVudHJpZXNbdGhpcy5lbnRyaWVzLmxlbmd0aCAtIDFdO1xuICAgIH1cbiAgICBhZGRIaXN0b3J5RW50cnlGb3JJdGVtKHBheWxvYWQpIHtcbiAgICAgICAgY29uc3QgcHJvc3BlY3RpdmVFbnRyeSA9IENyZWF0ZUhpc3RvcnlFbnRyeUZvclBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzRW50cnkgPSB0aGlzLmdldExhc3RFbnRyeSgpO1xuICAgICAgICBwcm9zcGVjdGl2ZUVudHJ5LnNldFByZXZpb3VzRW50cnkocHJldmlvdXNFbnRyeSk7XG4gICAgICAgIGlmIChwcm9zcGVjdGl2ZUVudHJ5LmlzU2FtZUFzRW50cnkocHJldmlvdXNFbnRyeSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVudHJpZXMucHVzaChwcm9zcGVjdGl2ZUVudHJ5KTtcbiAgICAgICAgcmV0dXJuIHByb3NwZWN0aXZlRW50cnk7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLmVudHJpZXMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgb3B0aW1pemUoKSB7XG4gICAgICAgIGNvbnN0IGtlZXBFbnRyaWVzID0gW107XG4gICAgICAgIGNvbnN0IGlzRW50cnlTaWduaWZpY2FudCA9IChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRlbHRhU2l6ZSgpID4gTEFSR0VfRU5UUllfREVMVEFfVEhSRVNIT0xEO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwcm9jZXNzRW50cnkgPSAoZW50cnksIGluZGV4LCBrZWVwKSA9PiB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVudHJpZXMgbWF5IGJlIHByb2Nlc3NlZCByZXRyb3NwZWN0aXZlbHksIG1lYW5pbmcgaXQgY2FuIGJlXG4gICAgICAgICAgICAgKiBkZWNpZGVkIHRvIGJlIGRlbGV0ZWQsIHRoZW4gYW4gdXBjb21pbmcgcHJvY2Vzc2luZyBjYW4gY2hhbmdlIHRoYXQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChrZWVwKSB7XG4gICAgICAgICAgICAgICAga2VlcEVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiogUmVtb3ZlIGlmIGluIGtlZXAgKi9cbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IGtlZXBFbnRyaWVzLmluZGV4T2YoZW50cnkpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAga2VlcEVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoa2VlcCAmJiBpc0VudHJ5U2lnbmlmaWNhbnQoZW50cnkpICYmIGVudHJ5Lm9wZXJhdGlvblZlY3RvcigpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIC8qKiBUaGlzIGlzIGEgbGFyZ2UgbmVnYXRpdmUgY2hhbmdlLiBIYW5nIG9uIHRvIHRoZSBwcmV2aW91cyBlbnRyeS4gKi9cbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0VudHJ5ID0gdGhpcy5lbnRyaWVzW2luZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzRW50cnkpIHtcbiAgICAgICAgICAgICAgICAgICAga2VlcEVudHJpZXMucHVzaChwcmV2aW91c0VudHJ5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKChlbnRyeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCB8fCBpbmRleCA9PT0gdGhpcy5lbnRyaWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAvKiogS2VlcCB0aGUgZmlyc3QgYW5kIGxhc3QgKi9cbiAgICAgICAgICAgICAgICBwcm9jZXNzRW50cnkoZW50cnksIGluZGV4LCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25pZmljYW50ID0gaXNFbnRyeVNpZ25pZmljYW50KGVudHJ5KTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzRW50cnkoZW50cnksIGluZGV4LCBzaWduaWZpY2FudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMgPSB0aGlzLmVudHJpZXMuZmlsdGVyKChlbnRyeSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZWVwRW50cmllcy5pbmRleE9mKGVudHJ5KSAhPT0gLTE7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFYQTtBQUFBO0FBQUE7QUFrQkE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTdCQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQWhDQTtBQUFBO0FBQUE7QUFpQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/history/item_history.ts\n')},"./lib/services/history/item_history_entry.ts": /*!****************************************************!*\ !*** ./lib/services/history/item_history_entry.ts ***! \****************************************************/ /*! exports provided: ItemHistoryEntry */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemHistoryEntry", function() { return ItemHistoryEntry; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar ItemHistoryEntry = /*#__PURE__*/function () {\n function ItemHistoryEntry(payload) {\n _classCallCheck(this, ItemHistoryEntry);\n\n /**\n * Whatever values `item` has will be persisted,\n * so be sure that the values are picked beforehand.\n */\n\n /**\n * We\'ll assume a `text` content value to diff on.\n * If it doesn\'t exist, no problem.\n */\n this.defaultContentKeyToDiffOn = \'text\';\n this.textCharDiffLength = 0;\n this.hasPreviousEntry = false;\n var updated_at = payload.updated_at;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["isString"])(updated_at)) {\n updated_at = new Date(updated_at);\n }\n\n this.payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CopyPayload"])(payload, {\n updated_at: updated_at\n });\n }\n\n _createClass(ItemHistoryEntry, [{\n key: "setPreviousEntry",\n value: function setPreviousEntry(previousEntry) {\n this.hasPreviousEntry = previousEntry != null;\n /** We\'ll try to compute the delta based on an assumed\n * content property of `text`, if it exists.\n */\n\n if (this.payload.contentObject[this.defaultContentKeyToDiffOn]) {\n if (previousEntry) {\n this.textCharDiffLength = this.payload.contentObject[this.defaultContentKeyToDiffOn].length - previousEntry.payload.contentObject[this.defaultContentKeyToDiffOn].length;\n } else {\n this.textCharDiffLength = this.payload.contentObject[this.defaultContentKeyToDiffOn].length;\n }\n }\n }\n }, {\n key: "operationVector",\n value: function operationVector() {\n /**\n * We\'ll try to use the value of `textCharDiffLength`\n * to help determine this, if it\'s set\n */\n if (this.textCharDiffLength !== undefined) {\n if (!this.hasPreviousEntry || this.textCharDiffLength === 0) {\n return 0;\n } else if (this.textCharDiffLength < 0) {\n return -1;\n } else {\n return 1;\n }\n }\n /** Otherwise use a default value of 1 */\n\n\n return 1;\n }\n }, {\n key: "deltaSize",\n value: function deltaSize() {\n /**\n * Up to the subclass to determine how large the delta was,\n * i.e number of characters changed.\n * But this general class won\'t be able to determine which property it\n * should diff on, or even its format.\n */\n\n /**\n * We can return the `textCharDiffLength` if it\'s set,\n * otherwise, just return 1;\n */\n if (this.textCharDiffLength !== undefined) {\n return Math.abs(this.textCharDiffLength);\n }\n /**\n * Otherwise return 1 here to constitute a basic positive delta.\n * The value returned should always be positive. Override `operationVector`\n * to return the direction of the delta.\n */\n\n\n return 1;\n }\n }, {\n key: "isSameAsEntry",\n value: function isSameAsEntry(entry) {\n if (!entry) {\n return false;\n }\n\n var lhs = Object(_Lib_models__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(this.payload);\n var rhs = Object(_Lib_models__WEBPACK_IMPORTED_MODULE_2__["CreateItemFromPayload"])(entry.payload);\n return lhs.isItemContentEqualWith(rhs);\n }\n }]);\n\n return ItemHistoryEntry;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnlfZW50cnkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9pdGVtX2hpc3RvcnlfZW50cnkudHM/YjAwNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgQ29weVBheWxvYWQgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BMaWIvbW9kZWxzJztcbmV4cG9ydCBjbGFzcyBJdGVtSGlzdG9yeUVudHJ5IHtcbiAgICBjb25zdHJ1Y3RvcihwYXlsb2FkKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGF0ZXZlciB2YWx1ZXMgYGl0ZW1gIGhhcyB3aWxsIGJlIHBlcnNpc3RlZCxcbiAgICAgICAgICogc28gYmUgc3VyZSB0aGF0IHRoZSB2YWx1ZXMgYXJlIHBpY2tlZCBiZWZvcmVoYW5kLlxuICAgICAgICAgKi9cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlJ2xsIGFzc3VtZSBhIGB0ZXh0YCBjb250ZW50IHZhbHVlIHRvIGRpZmYgb24uXG4gICAgICAgICAqIElmIGl0IGRvZXNuJ3QgZXhpc3QsIG5vIHByb2JsZW0uXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmRlZmF1bHRDb250ZW50S2V5VG9EaWZmT24gPSAndGV4dCc7XG4gICAgICAgIHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5oYXNQcmV2aW91c0VudHJ5ID0gZmFsc2U7XG4gICAgICAgIGxldCB1cGRhdGVkX2F0ID0gcGF5bG9hZC51cGRhdGVkX2F0O1xuICAgICAgICBpZiAoaXNTdHJpbmcodXBkYXRlZF9hdCkpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRfYXQgPSBuZXcgRGF0ZSh1cGRhdGVkX2F0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBheWxvYWQgPSBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgICB1cGRhdGVkX2F0OiB1cGRhdGVkX2F0XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzZXRQcmV2aW91c0VudHJ5KHByZXZpb3VzRW50cnkpIHtcbiAgICAgICAgdGhpcy5oYXNQcmV2aW91c0VudHJ5ID0gcHJldmlvdXNFbnRyeSAhPSBudWxsO1xuICAgICAgICAvKiogV2UnbGwgdHJ5IHRvIGNvbXB1dGUgdGhlIGRlbHRhIGJhc2VkIG9uIGFuIGFzc3VtZWRcbiAgICAgICAgICogY29udGVudCBwcm9wZXJ0eSBvZiBgdGV4dGAsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLnBheWxvYWQuY29udGVudE9iamVjdFt0aGlzLmRlZmF1bHRDb250ZW50S2V5VG9EaWZmT25dKSB7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNFbnRyeSkge1xuICAgICAgICAgICAgICAgIHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXlsb2FkLmNvbnRlbnRPYmplY3RbdGhpcy5kZWZhdWx0Q29udGVudEtleVRvRGlmZk9uXS5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNFbnRyeS5wYXlsb2FkLmNvbnRlbnRPYmplY3RbdGhpcy5kZWZhdWx0Q29udGVudEtleVRvRGlmZk9uXS5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRDaGFyRGlmZkxlbmd0aCA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF5bG9hZC5jb250ZW50T2JqZWN0W3RoaXMuZGVmYXVsdENvbnRlbnRLZXlUb0RpZmZPbl0ubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9wZXJhdGlvblZlY3RvcigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlJ2xsIHRyeSB0byB1c2UgdGhlIHZhbHVlIG9mIGB0ZXh0Q2hhckRpZmZMZW5ndGhgXG4gICAgICAgICAqIHRvIGhlbHAgZGV0ZXJtaW5lIHRoaXMsIGlmIGl0J3Mgc2V0XG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc1ByZXZpb3VzRW50cnkgfHwgdGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoIDwgMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8qKiBPdGhlcndpc2UgdXNlIGEgZGVmYXVsdCB2YWx1ZSBvZiAxICovXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBkZWx0YVNpemUoKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBVcCB0byB0aGUgc3ViY2xhc3MgdG8gZGV0ZXJtaW5lIGhvdyBsYXJnZSB0aGUgZGVsdGEgd2FzLFxuICAgICAgICAgKiBpLmUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY2hhbmdlZC5cbiAgICAgICAgICogQnV0IHRoaXMgZ2VuZXJhbCBjbGFzcyB3b24ndCBiZSBhYmxlIHRvIGRldGVybWluZSB3aGljaCBwcm9wZXJ0eSBpdFxuICAgICAgICAgKiBzaG91bGQgZGlmZiBvbiwgb3IgZXZlbiBpdHMgZm9ybWF0LlxuICAgICAgICAgKi9cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdlIGNhbiByZXR1cm4gdGhlIGB0ZXh0Q2hhckRpZmZMZW5ndGhgIGlmIGl0J3Mgc2V0LFxuICAgICAgICAgKiBvdGhlcndpc2UsIGp1c3QgcmV0dXJuIDE7XG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguYWJzKHRoaXMudGV4dENoYXJEaWZmTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICAvKipcbiAgICAgICAgICogT3RoZXJ3aXNlIHJldHVybiAxIGhlcmUgdG8gY29uc3RpdHV0ZSBhIGJhc2ljIHBvc2l0aXZlIGRlbHRhLlxuICAgICAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgc2hvdWxkIGFsd2F5cyBiZSBwb3NpdGl2ZS4gT3ZlcnJpZGUgYG9wZXJhdGlvblZlY3RvcmBcbiAgICAgICAgICogdG8gcmV0dXJuIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGRlbHRhLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGlzU2FtZUFzRW50cnkoZW50cnkpIHtcbiAgICAgICAgaWYgKCFlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxocyA9IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCh0aGlzLnBheWxvYWQpO1xuICAgICAgICBjb25zdCByaHMgPSBDcmVhdGVJdGVtRnJvbVBheWxvYWQoZW50cnkucGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBsaHMuaXNJdGVtQ29udGVudEVxdWFsV2l0aChyaHMpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBOzs7OztBQUlBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFyQ0E7QUFBQTtBQUFBO0FBdUNBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQXhEQTtBQUFBO0FBQUE7QUEwREE7Ozs7Ozs7QUFNQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FBS0E7QUFDQTtBQTdFQTtBQUFBO0FBQUE7QUErRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXJGQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/history/item_history_entry.ts\n')},"./lib/services/history/note_history_entry.ts": /*!****************************************************!*\ !*** ./lib/services/history/note_history_entry.ts ***! \****************************************************/ /*! exports provided: NoteHistoryEntry */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoteHistoryEntry", function() { return NoteHistoryEntry; });\n/* harmony import */ var _Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/history/item_history_entry */ "./lib/services/history/item_history_entry.ts");\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\nvar NoteHistoryEntry = /*#__PURE__*/function (_ItemHistoryEntry) {\n _inherits(NoteHistoryEntry, _ItemHistoryEntry);\n\n function NoteHistoryEntry() {\n _classCallCheck(this, NoteHistoryEntry);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NoteHistoryEntry).apply(this, arguments));\n }\n\n _createClass(NoteHistoryEntry, [{\n key: "previewTitle",\n value: function previewTitle() {\n return this.payload.updated_at.toLocaleString();\n }\n }, {\n key: "previewSubTitle",\n value: function previewSubTitle() {\n if (!this.hasPreviousEntry) {\n return "".concat(this.textCharDiffLength, " characters loaded");\n } else if (this.textCharDiffLength < 0) {\n return "".concat(this.textCharDiffLength * -1, " characters removed");\n } else if (this.textCharDiffLength > 0) {\n return "".concat(this.textCharDiffLength, " characters added");\n } else {\n return \'Title or metadata changed\';\n }\n }\n }]);\n\n return NoteHistoryEntry;\n}(_Services_history_item_history_entry__WEBPACK_IMPORTED_MODULE_0__["ItemHistoryEntry"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaGlzdG9yeS9ub3RlX2hpc3RvcnlfZW50cnkudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaGlzdG9yeS9ub3RlX2hpc3RvcnlfZW50cnkudHM/MTc5YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJdGVtSGlzdG9yeUVudHJ5IH0gZnJvbSAnQFNlcnZpY2VzL2hpc3RvcnkvaXRlbV9oaXN0b3J5X2VudHJ5JztcbmV4cG9ydCBjbGFzcyBOb3RlSGlzdG9yeUVudHJ5IGV4dGVuZHMgSXRlbUhpc3RvcnlFbnRyeSB7XG4gICAgcHJldmlld1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXlsb2FkLnVwZGF0ZWRfYXQudG9Mb2NhbGVTdHJpbmcoKTtcbiAgICB9XG4gICAgcHJldmlld1N1YlRpdGxlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaGFzUHJldmlvdXNFbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMudGV4dENoYXJEaWZmTGVuZ3RofSBjaGFyYWN0ZXJzIGxvYWRlZGA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggPCAwKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7dGhpcy50ZXh0Q2hhckRpZmZMZW5ndGggKiAtMX0gY2hhcmFjdGVycyByZW1vdmVkYDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRleHRDaGFyRGlmZkxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLnRleHRDaGFyRGlmZkxlbmd0aH0gY2hhcmFjdGVycyBhZGRlZGA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ1RpdGxlIG9yIG1ldGFkYXRhIGNoYW5nZWQnO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQWpCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/history/note_history_entry.ts\n')},"./lib/services/index.ts": /*!*******************************!*\ !*** ./lib/services/index.ts ***! \*******************************/ /*! exports provided: SNAlertService, SNSessionManager, SNApiService, SNComponentManager, SNHttpService, PayloadManager, SNSingletonManager, SNActionsService, SNMigrationService, SNProtocolService, KeyMode, SNHistoryManager, SNPrivilegesService, SyncEvent, ItemManager, SNSyncService, SyncModes, SyncQueueStrategy, ChallengeService, SNStorageService, StorageEncryptionPolicies, StoragePersistencePolicies */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Services_alert_service__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Services/alert_service */ "./lib/services/alert_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNAlertService", function() { return _Services_alert_service__WEBPACK_IMPORTED_MODULE_0__["SNAlertService"]; });\n\n/* harmony import */ var _Services_api_session_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/api/session_manager */ "./lib/services/api/session_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSessionManager", function() { return _Services_api_session_manager__WEBPACK_IMPORTED_MODULE_1__["SNSessionManager"]; });\n\n/* harmony import */ var _Services_api_api_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Services/api/api_service */ "./lib/services/api/api_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNApiService", function() { return _Services_api_api_service__WEBPACK_IMPORTED_MODULE_2__["SNApiService"]; });\n\n/* harmony import */ var _Services_component_manager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/component_manager */ "./lib/services/component_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNComponentManager", function() { return _Services_component_manager__WEBPACK_IMPORTED_MODULE_3__["SNComponentManager"]; });\n\n/* harmony import */ var _Services_api_http_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Services/api/http_service */ "./lib/services/api/http_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHttpService", function() { return _Services_api_http_service__WEBPACK_IMPORTED_MODULE_4__["SNHttpService"]; });\n\n/* harmony import */ var _Services_model_manager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/model_manager */ "./lib/services/model_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PayloadManager", function() { return _Services_model_manager__WEBPACK_IMPORTED_MODULE_5__["PayloadManager"]; });\n\n/* harmony import */ var _Services_singleton_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Services/singleton_manager */ "./lib/services/singleton_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSingletonManager", function() { return _Services_singleton_manager__WEBPACK_IMPORTED_MODULE_6__["SNSingletonManager"]; });\n\n/* harmony import */ var _Services_actions_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Services/actions_service */ "./lib/services/actions_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNActionsService", function() { return _Services_actions_service__WEBPACK_IMPORTED_MODULE_7__["SNActionsService"]; });\n\n/* harmony import */ var _Lib_services_migration_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/services/migration_service */ "./lib/services/migration_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNMigrationService", function() { return _Lib_services_migration_service__WEBPACK_IMPORTED_MODULE_8__["SNMigrationService"]; });\n\n/* harmony import */ var _Services_protocol_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Services/protocol_service */ "./lib/services/protocol_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNProtocolService", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_9__["SNProtocolService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyMode", function() { return _Services_protocol_service__WEBPACK_IMPORTED_MODULE_9__["KeyMode"]; });\n\n/* harmony import */ var _Services_history_history_manager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Services/history/history_manager */ "./lib/services/history/history_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNHistoryManager", function() { return _Services_history_history_manager__WEBPACK_IMPORTED_MODULE_10__["SNHistoryManager"]; });\n\n/* harmony import */ var _Services_privileges_service__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Services/privileges_service */ "./lib/services/privileges_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNPrivilegesService", function() { return _Services_privileges_service__WEBPACK_IMPORTED_MODULE_11__["SNPrivilegesService"]; });\n\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return _Services_sync_events__WEBPACK_IMPORTED_MODULE_12__["SyncEvent"]; });\n\n/* harmony import */ var _Services_item_manager__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Services/item_manager */ "./lib/services/item_manager.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ItemManager", function() { return _Services_item_manager__WEBPACK_IMPORTED_MODULE_13__["ItemManager"]; });\n\n/* harmony import */ var _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Services/sync/sync_service */ "./lib/services/sync/sync_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNSyncService", function() { return _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__["SNSyncService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncModes", function() { return _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__["SyncModes"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SyncQueueStrategy", function() { return _Services_sync_sync_service__WEBPACK_IMPORTED_MODULE_14__["SyncQueueStrategy"]; });\n\n/* harmony import */ var _Lib_services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Lib/services/challenge/challenge_service */ "./lib/services/challenge/challenge_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChallengeService", function() { return _Lib_services_challenge_challenge_service__WEBPACK_IMPORTED_MODULE_15__["ChallengeService"]; });\n\n/* harmony import */ var _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SNStorageService", function() { return _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__["SNStorageService"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StorageEncryptionPolicies", function() { return _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__["StorageEncryptionPolicies"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StoragePersistencePolicies", function() { return _Services_storage_service__WEBPACK_IMPORTED_MODULE_16__["StoragePersistencePolicies"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaW5kZXgudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvaW5kZXgudHM/NzljMCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTTkFsZXJ0U2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9hbGVydF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvYXBpL3Nlc3Npb25fbWFuYWdlcic7XG5leHBvcnQgeyBTTkFwaVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvYXBpL2FwaV9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJ0BTZXJ2aWNlcy9jb21wb25lbnRfbWFuYWdlcic7XG5leHBvcnQgeyBTTkh0dHBTZXJ2aWNlIH0gZnJvbSAnQFNlcnZpY2VzL2FwaS9odHRwX3NlcnZpY2UnO1xuZXhwb3J0IHsgUGF5bG9hZE1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvbW9kZWxfbWFuYWdlcic7XG5leHBvcnQgeyBTTlNpbmdsZXRvbk1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvc2luZ2xldG9uX21hbmFnZXInO1xuZXhwb3J0IHsgU05BY3Rpb25zU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9hY3Rpb25zX3NlcnZpY2UnO1xuZXhwb3J0IHsgU05NaWdyYXRpb25TZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9taWdyYXRpb25fc2VydmljZSc7XG5leHBvcnQgeyBTTlByb3RvY29sU2VydmljZSwgS2V5TW9kZSB9IGZyb20gJ0BTZXJ2aWNlcy9wcm90b2NvbF9zZXJ2aWNlJztcbmV4cG9ydCB7IFNOSGlzdG9yeU1hbmFnZXIgfSBmcm9tICdAU2VydmljZXMvaGlzdG9yeS9oaXN0b3J5X21hbmFnZXInO1xuZXhwb3J0IHsgU05Qcml2aWxlZ2VzU2VydmljZSB9IGZyb20gJ0BTZXJ2aWNlcy9wcml2aWxlZ2VzX3NlcnZpY2UnO1xuZXhwb3J0IHsgU3luY0V2ZW50IGFzIFN5bmNFdmVudCB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5leHBvcnQgeyBJdGVtTWFuYWdlciB9IGZyb20gJ0BTZXJ2aWNlcy9pdGVtX21hbmFnZXInO1xuZXhwb3J0IHsgU05TeW5jU2VydmljZSwgU3luY01vZGVzLCBTeW5jUXVldWVTdHJhdGVneSB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL3N5bmNfc2VydmljZSc7XG5leHBvcnQgeyBDaGFsbGVuZ2VTZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9jaGFsbGVuZ2UvY2hhbGxlbmdlX3NlcnZpY2UnO1xuZXhwb3J0IHsgU05TdG9yYWdlU2VydmljZSwgU3RvcmFnZUVuY3J5cHRpb25Qb2xpY2llcywgU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMgfSBmcm9tICdAU2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlJztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/index.ts\n')},"./lib/services/item_manager.ts": /*!**************************************!*\ !*** ./lib/services/item_manager.ts ***! \**************************************/ /*! exports provided: ItemManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ItemManager", function() { return ItemManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Protocol/collection/item_collection */ "./lib/protocol/collection/item_collection.ts");\n/* harmony import */ var _models_app_userPrefs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../models/app/userPrefs */ "./lib/models/app/userPrefs.ts");\n/* harmony import */ var _models_app_privileges__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../models/app/privileges */ "./lib/models/app/privileges.ts");\n/* harmony import */ var _models_app_tag__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../models/app/tag */ "./lib/models/app/tag.ts");\n/* harmony import */ var _models_app_items_key__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../models/app/items_key */ "./lib/models/app/items_key.ts");\n/* harmony import */ var _models_app_note__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../models/app/note */ "./lib/models/app/note.ts");\n/* harmony import */ var _models_app_extension__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../models/app/extension */ "./lib/models/app/extension.ts");\n/* harmony import */ var _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony import */ var _uuid__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _models_app_component__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./../models/app/component */ "./lib/models/app/component.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _models_core_item__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./../models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../models/content_types */ "./lib/models/content_types.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * The item manager is backed by the Payload Manager. Think of the item manager as a\n * more user-friendly or item-specific interface to creating and updating data.\n * The item manager listens for change events from the global payload manager, and\n * converts any payloads to SNItems, then propagates those items to listeners on the\n * item manager. When the item manager makes a change to an item, it will modify items\n * using a mutator, then emit those payloads to the payload manager. The payload manager\n * will then notify its observers (which is us), we\'ll convert the payloads to items,\n * and then we\'ll propagate them to our listeners.\n */\n\nvar ItemManager = /*#__PURE__*/function (_PureService) {\n _inherits(ItemManager, _PureService);\n\n function ItemManager(modelManager) {\n var _this;\n\n _classCallCheck(this, ItemManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ItemManager).call(this));\n _this.observers = [];\n _this.modelManager = modelManager;\n\n _this.createCollection();\n\n _this.unsubChangeObserver = _this.modelManager.addObserver(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Any, _this.onPayloadChange.bind(_assertThisInitialized(_this)));\n _this.systemSmartTags = BuildSmartTags();\n return _this;\n }\n\n _createClass(ItemManager, [{\n key: "setDisplayOptions",\n value: function setDisplayOptions(contentType, sortBy, direction, filter) {\n this.collection.setDisplayOptions(contentType, sortBy, direction, filter);\n }\n }, {\n key: "getDisplayableItems",\n value: function getDisplayableItems(contentType) {\n return this.collection.displayElements(contentType);\n }\n }, {\n key: "deinit",\n value: function deinit() {\n this.unsubChangeObserver();\n this.unsubChangeObserver = undefined;\n this.modelManager = undefined;\n this.collection = undefined;\n }\n }, {\n key: "resetState",\n value: function resetState() {\n this.createCollection();\n }\n }, {\n key: "createCollection",\n value: function createCollection() {\n this.collection = new _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["ItemCollection"]();\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].CreatedAt, \'dsc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].Title, \'asc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].CreatedAt, \'asc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Component, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].CreatedAt, \'asc\');\n this.collection.setDisplayOptions(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag, _Protocol_collection_item_collection__WEBPACK_IMPORTED_MODULE_1__["CollectionSort"].Title, \'asc\');\n }\n /**\n * Returns an item for a given id\n */\n\n }, {\n key: "findItem",\n value: function findItem(uuid) {\n return this.collection.find(uuid);\n }\n /**\n * Returns all items matching given ids\n * @param includeBlanks If true and an item is not found, an `undefined` element\n * will be inserted into the array.\n */\n\n }, {\n key: "findItems",\n value: function findItems(uuids) {\n var includeBlanks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return this.collection.findAll(uuids, includeBlanks);\n }\n /**\n * Returns a detached array of all items\n */\n\n }, {\n key: "itemsKeys",\n\n /**\n * Returns all non-deleted items keys\n */\n value: function itemsKeys() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey);\n }\n /**\n * Returns all non-deleted notes\n */\n\n }, {\n key: "addObserver",\n value: function addObserver(contentType, callback) {\n var _this2 = this;\n\n if (!Array.isArray(contentType)) {\n contentType = [contentType];\n }\n\n var observer = {\n contentType: contentType,\n callback: callback\n };\n this.observers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["removeFromArray"])(_this2.observers, observer);\n };\n }\n /**\n * Returns the items that reference the given item, or an empty array if no results.\n */\n\n }, {\n key: "itemsReferencingItem",\n value: function itemsReferencingItem(uuid) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n throw Error(\'Must use uuid string\');\n }\n\n var uuids = this.collection.uuidsThatReferenceUuid(uuid);\n return this.findItems(uuids);\n }\n /**\n * Returns all items that an item directly references\n */\n\n }, {\n key: "referencesForItem",\n value: function referencesForItem(uuid) {\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n throw Error(\'Must use uuid string\');\n }\n\n var item = this.findItem(uuid);\n var uuids = item.references.map(function (ref) {\n return ref.uuid;\n });\n return this.findItems(uuids);\n }\n }, {\n key: "onPayloadChange",\n value: function () {\n var _onPayloadChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(changed, inserted, discarded, source, sourceKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", this.setPayloads(changed, inserted, discarded, source, sourceKey));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onPayloadChange(_x, _x2, _x3, _x4, _x5) {\n return _onPayloadChange.apply(this, arguments);\n }\n\n return onPayloadChange;\n }()\n }, {\n key: "setPayloads",\n value: function () {\n var _setPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(changed, inserted, discarded, source, sourceKey) {\n var changedItems, insertedItems, changedOrInserted, discardedItems, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n changedItems = changed.map(function (p) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(p);\n });\n insertedItems = inserted.map(function (p) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(p);\n });\n changedOrInserted = changedItems.concat(insertedItems);\n\n if (changedOrInserted.length > 0) {\n this.collection.set(changedOrInserted);\n }\n\n discardedItems = discarded.map(function (p) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(p);\n });\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 8;\n\n for (_iterator = discardedItems[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n item = _step.value;\n this.collection.discard(item);\n }\n\n _context2.next = 16;\n break;\n\n case 12:\n _context2.prev = 12;\n _context2.t0 = _context2["catch"](8);\n _didIteratorError = true;\n _iteratorError = _context2.t0;\n\n case 16:\n _context2.prev = 16;\n _context2.prev = 17;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 19:\n _context2.prev = 19;\n\n if (!_didIteratorError) {\n _context2.next = 22;\n break;\n }\n\n throw _iteratorError;\n\n case 22:\n return _context2.finish(19);\n\n case 23:\n return _context2.finish(16);\n\n case 24:\n _context2.next = 26;\n return this.notifyObservers(changedItems, insertedItems, discardedItems, source, sourceKey);\n\n case 26:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[8, 12, 16, 24], [17,, 19, 23]]);\n }));\n\n function setPayloads(_x6, _x7, _x8, _x9, _x10) {\n return _setPayloads.apply(this, arguments);\n }\n\n return setPayloads;\n }()\n }, {\n key: "notifyObservers",\n value: function () {\n var _notifyObservers = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(changed, inserted, discarded, source, sourceKey) {\n var filter, observers, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, observer, filteredChanged, filteredInserted, filteredDiscarded;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n filter = function filter(items, types) {\n return items.filter(function (item) {\n return types.includes(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Any) || types.includes(item.content_type);\n });\n };\n\n observers = this.observers.slice();\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context3.prev = 5;\n _iterator2 = observers[Symbol.iterator]();\n\n case 7:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context3.next = 19;\n break;\n }\n\n observer = _step2.value;\n filteredChanged = filter(changed, observer.contentType);\n filteredInserted = filter(inserted, observer.contentType);\n filteredDiscarded = filter(discarded, observer.contentType);\n\n if (!(filteredChanged.length === 0 && filteredInserted.length === 0 && filteredDiscarded.length === 0)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt("continue", 16);\n\n case 14:\n _context3.next = 16;\n return observer.callback(filteredChanged, filteredInserted, filteredDiscarded, source, sourceKey);\n\n case 16:\n _iteratorNormalCompletion2 = true;\n _context3.next = 7;\n break;\n\n case 19:\n _context3.next = 25;\n break;\n\n case 21:\n _context3.prev = 21;\n _context3.t0 = _context3["catch"](5);\n _didIteratorError2 = true;\n _iteratorError2 = _context3.t0;\n\n case 25:\n _context3.prev = 25;\n _context3.prev = 26;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 28:\n _context3.prev = 28;\n\n if (!_didIteratorError2) {\n _context3.next = 31;\n break;\n }\n\n throw _iteratorError2;\n\n case 31:\n return _context3.finish(28);\n\n case 32:\n return _context3.finish(25);\n\n case 33:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[5, 21, 25, 33], [26,, 28, 32]]);\n }));\n\n function notifyObservers(_x11, _x12, _x13, _x14, _x15) {\n return _notifyObservers.apply(this, arguments);\n }\n\n return notifyObservers;\n }()\n /**\n * Consumers wanting to modify an item should run it through this block,\n * so that data is properly mapped through our function, and latest state\n * is properly reconciled.\n * @param itemOrUuid If an item is passed, the values of that item will be directly used,\n * and the mutation will be applied on that item and propagated. This means that if you pass\n * an old item reference and mutate that, the new value will be outdated. In this case, always\n * pass the uuid of the item if you want to mutate the latest version of the item.\n */\n\n }, {\n key: "changeItem",\n value: function () {\n var _changeItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n results,\n _args4 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n mutationType = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args4.length > 4 ? _args4[4] : undefined;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n _context4.next = 5;\n break;\n }\n\n throw Error(\'Invalid uuid for changeItem\');\n\n case 5:\n _context4.next = 7;\n return this.changeItems([uuid], mutate, mutationType, payloadSource, payloadSourceKey);\n\n case 7:\n results = _context4.sent;\n return _context4.abrupt("return", results[0]);\n\n case 9:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function changeItem(_x16, _x17) {\n return _changeItem.apply(this, arguments);\n }\n\n return changeItem;\n }()\n }, {\n key: "createMutatorForItem",\n value: function createMutatorForItem(item, type) {\n if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note) {\n return new _models_app_note__WEBPACK_IMPORTED_MODULE_6__["NoteMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag) {\n return new _models_app_tag__WEBPACK_IMPORTED_MODULE_4__["TagMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Component) {\n return new _models_app_component__WEBPACK_IMPORTED_MODULE_14__["ComponentMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ActionsExtension) {\n return new _models_app_extension__WEBPACK_IMPORTED_MODULE_7__["ActionsExtensionMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey) {\n return new _models_app_items_key__WEBPACK_IMPORTED_MODULE_5__["ItemsKeyMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Privileges) {\n return new _models_app_privileges__WEBPACK_IMPORTED_MODULE_3__["PrivilegeMutator"](item, type);\n } else if (item.content_type === _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].UserPrefs) {\n return new _models_app_userPrefs__WEBPACK_IMPORTED_MODULE_2__["UserPrefsMutator"](item, type);\n } else {\n return new _models_core_item__WEBPACK_IMPORTED_MODULE_17__["ItemMutator"](item, type);\n }\n }\n /**\n * @param mutate If not supplied, the intention would simply be to mark the item as dirty.\n */\n\n }, {\n key: "changeItems",\n value: function () {\n var _changeItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(uuids, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n items,\n payloads,\n _iteratorNormalCompletion3,\n _didIteratorError3,\n _iteratorError3,\n _iterator3,\n _step3,\n item,\n mutator,\n payload,\n results,\n _args5 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n mutationType = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args5.length > 3 && _args5[3] !== undefined ? _args5[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args5.length > 4 ? _args5[4] : undefined;\n items = this.findItems(uuids, true);\n payloads = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context5.prev = 8;\n _iterator3 = items[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context5.next = 21;\n break;\n }\n\n item = _step3.value;\n\n if (item) {\n _context5.next = 14;\n break;\n }\n\n throw Error(\'Attempting to change non-existant item\');\n\n case 14:\n mutator = this.createMutatorForItem(item, mutationType);\n\n if (mutate) {\n mutate(mutator);\n }\n\n payload = mutator.getResult();\n payloads.push(payload);\n\n case 18:\n _iteratorNormalCompletion3 = true;\n _context5.next = 10;\n break;\n\n case 21:\n _context5.next = 27;\n break;\n\n case 23:\n _context5.prev = 23;\n _context5.t0 = _context5["catch"](8);\n _didIteratorError3 = true;\n _iteratorError3 = _context5.t0;\n\n case 27:\n _context5.prev = 27;\n _context5.prev = 28;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 30:\n _context5.prev = 30;\n\n if (!_didIteratorError3) {\n _context5.next = 33;\n break;\n }\n\n throw _iteratorError3;\n\n case 33:\n return _context5.finish(30);\n\n case 34:\n return _context5.finish(27);\n\n case 35:\n _context5.next = 37;\n return this.modelManager.emitPayloads(payloads, payloadSource, payloadSourceKey);\n\n case 37:\n results = this.findItems(payloads.map(function (p) {\n return p.uuid;\n }));\n return _context5.abrupt("return", results);\n\n case 39:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[8, 23, 27, 35], [28,, 30, 34]]);\n }));\n\n function changeItems(_x18, _x19) {\n return _changeItems.apply(this, arguments);\n }\n\n return changeItems;\n }()\n }, {\n key: "changeNote",\n value: function () {\n var _changeNote = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n note,\n mutator,\n _args6 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n mutationType = _args6.length > 2 && _args6[2] !== undefined ? _args6[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args6.length > 4 ? _args6[4] : undefined;\n note = this.findItem(uuid);\n\n if (note) {\n _context6.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant note\');\n\n case 6:\n mutator = new _models_app_note__WEBPACK_IMPORTED_MODULE_6__["NoteMutator"](note, mutationType);\n return _context6.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function changeNote(_x20, _x21) {\n return _changeNote.apply(this, arguments);\n }\n\n return changeNote;\n }()\n }, {\n key: "changeComponent",\n value: function () {\n var _changeComponent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n component,\n mutator,\n _args7 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n mutationType = _args7.length > 2 && _args7[2] !== undefined ? _args7[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args7.length > 3 && _args7[3] !== undefined ? _args7[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args7.length > 4 ? _args7[4] : undefined;\n component = this.findItem(uuid);\n\n if (component) {\n _context7.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant component\');\n\n case 6:\n mutator = new _models_app_component__WEBPACK_IMPORTED_MODULE_14__["ComponentMutator"](component, mutationType);\n return _context7.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function changeComponent(_x22, _x23) {\n return _changeComponent.apply(this, arguments);\n }\n\n return changeComponent;\n }()\n }, {\n key: "changeActionsExtension",\n value: function () {\n var _changeActionsExtension = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n extension,\n mutator,\n _args8 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n mutationType = _args8.length > 2 && _args8[2] !== undefined ? _args8[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args8.length > 3 && _args8[3] !== undefined ? _args8[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args8.length > 4 ? _args8[4] : undefined;\n extension = this.findItem(uuid);\n\n if (extension) {\n _context8.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant extension\');\n\n case 6:\n mutator = new _models_app_extension__WEBPACK_IMPORTED_MODULE_7__["ActionsExtensionMutator"](extension, mutationType);\n return _context8.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function changeActionsExtension(_x24, _x25) {\n return _changeActionsExtension.apply(this, arguments);\n }\n\n return changeActionsExtension;\n }()\n }, {\n key: "changeItemsKey",\n value: function () {\n var _changeItemsKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(uuid, mutate) {\n var mutationType,\n payloadSource,\n payloadSourceKey,\n itemsKey,\n mutator,\n _args9 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n mutationType = _args9.length > 2 && _args9[2] !== undefined ? _args9[2] : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction;\n payloadSource = _args9.length > 3 && _args9[3] !== undefined ? _args9[3] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args9.length > 4 ? _args9[4] : undefined;\n itemsKey = this.findItem(uuid);\n\n if (itemsKey) {\n _context9.next = 6;\n break;\n }\n\n throw Error(\'Attempting to change non-existant itemsKey\');\n\n case 6:\n mutator = new _models_app_items_key__WEBPACK_IMPORTED_MODULE_5__["ItemsKeyMutator"](itemsKey, mutationType);\n return _context9.abrupt("return", this.applyTransform(mutator, mutate, payloadSource, payloadSourceKey));\n\n case 8:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function changeItemsKey(_x26, _x27) {\n return _changeItemsKey.apply(this, arguments);\n }\n\n return changeItemsKey;\n }()\n }, {\n key: "applyTransform",\n value: function () {\n var _applyTransform = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(mutator, mutate) {\n var payloadSource,\n payloadSourceKey,\n payload,\n _args10 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n payloadSource = _args10.length > 2 && _args10[2] !== undefined ? _args10[2] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged;\n payloadSourceKey = _args10.length > 3 ? _args10[3] : undefined;\n mutate(mutator);\n payload = mutator.getResult();\n return _context10.abrupt("return", this.modelManager.emitPayload(payload, payloadSource, payloadSourceKey));\n\n case 5:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function applyTransform(_x28, _x29) {\n return _applyTransform.apply(this, arguments);\n }\n\n return applyTransform;\n }()\n /**\n * Sets the item as needing sync. The item is then run through the mapping function,\n * and propagated to mapping observers.\n * @param updateClientDate - Whether to update the item\'s "user modified date"\n */\n\n }, {\n key: "setItemDirty",\n value: function () {\n var _setItemDirty = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(uuid) {\n var isUserModified,\n result,\n _args11 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n isUserModified = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : false;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuid)) {\n _context11.next = 3;\n break;\n }\n\n throw Error(\'Must use uuid when setting item dirty\');\n\n case 3:\n _context11.next = 5;\n return this.setItemsDirty([uuid], isUserModified);\n\n case 5:\n result = _context11.sent;\n return _context11.abrupt("return", result[0]);\n\n case 7:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function setItemDirty(_x30) {\n return _setItemDirty.apply(this, arguments);\n }\n\n return setItemDirty;\n }()\n /**\n * Similar to `setItemDirty`, but acts on an array of items as the first param.\n */\n\n }, {\n key: "setItemsDirty",\n value: function () {\n var _setItemsDirty = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(uuids) {\n var isUserModified,\n _args12 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n isUserModified = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : false;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["isString"])(uuids[0])) {\n _context12.next = 3;\n break;\n }\n\n throw Error(\'Must use uuid when setting item dirty\');\n\n case 3:\n return _context12.abrupt("return", this.changeItems(uuids, undefined, isUserModified ? _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].UserInteraction : _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].Internal));\n\n case 4:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function setItemsDirty(_x31) {\n return _setItemsDirty.apply(this, arguments);\n }\n\n return setItemsDirty;\n }()\n /**\n * Returns an array of items that need to be synced.\n */\n\n }, {\n key: "getDirtyItems",\n value: function getDirtyItems() {\n var dirty = this.collection.dirtyElements();\n return dirty.filter(function (item) {\n /* An item that has an error decrypting can be synced only if it is being deleted.\n Otherwise, we don\'t want to send corrupt content up to the server. */\n return !item.errorDecrypting || item.deleted;\n });\n }\n /**\n * Inserts the item as-is by reading its payload value. This function will not\n * modify item in any way (such as marking it as dirty). It is up to the caller\n * to pass in a dirtied item if that is their intention.\n */\n\n }, {\n key: "insertItem",\n value: function () {\n var _insertItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(item) {\n var payload, insertedItem;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payload = item.payload;\n _context13.next = 3;\n return this.emitItemFromPayload(payload);\n\n case 3:\n insertedItem = _context13.sent;\n return _context13.abrupt("return", insertedItem);\n\n case 5:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function insertItem(_x32) {\n return _insertItem.apply(this, arguments);\n }\n\n return insertItem;\n }()\n /**\n * Duplicates an item and maps it, thus propagating the item to observers.\n * @param isConflict - Whether to mark the duplicate as a conflict of the original.\n */\n\n }, {\n key: "duplicateItem",\n value: function () {\n var _duplicateItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(uuid) {\n var isConflict,\n item,\n payload,\n resultingPayloads,\n duplicate,\n _args14 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n isConflict = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : false;\n item = this.findItem(uuid);\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])(item);\n _context14.next = 5;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_10__["PayloadsByDuplicating"])(payload, this.modelManager.getMasterCollection(), isConflict);\n\n case 5:\n resultingPayloads = _context14.sent;\n _context14.next = 8;\n return this.modelManager.emitPayloads(resultingPayloads, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].LocalChanged);\n\n case 8:\n duplicate = this.findItem(resultingPayloads[0].uuid);\n return _context14.abrupt("return", duplicate);\n\n case 10:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function duplicateItem(_x33) {\n return _duplicateItem.apply(this, arguments);\n }\n\n return duplicateItem;\n }()\n /**\n * Creates an item and conditionally maps it and marks it as dirty.\n * @param needsSync - Whether to mark the item as needing sync\n */\n\n }, {\n key: "createItem",\n value: function () {\n var _createItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(contentType, content) {\n var needsSync,\n override,\n payload,\n _args15 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n needsSync = _args15.length > 2 && _args15[2] !== undefined ? _args15[2] : false;\n override = _args15.length > 3 ? _args15[3] : undefined;\n\n if (contentType) {\n _context15.next = 4;\n break;\n }\n\n throw \'Attempting to create item with no contentType\';\n\n case 4:\n _context15.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"];\n _context15.next = 7;\n return _uuid__WEBPACK_IMPORTED_MODULE_9__["Uuid"].GenerateUuid();\n\n case 7:\n _context15.t1 = _context15.sent;\n _context15.t2 = contentType;\n _context15.t3 = content ? Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])(content) : undefined;\n _context15.t4 = needsSync;\n _context15.t5 = {\n uuid: _context15.t1,\n content_type: _context15.t2,\n content: _context15.t3,\n dirty: _context15.t4\n };\n _context15.t6 = override;\n payload = (0, _context15.t0)(_context15.t5, _context15.t6);\n _context15.next = 16;\n return this.modelManager.emitPayload(payload, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].Constructor);\n\n case 16:\n return _context15.abrupt("return", this.findItem(payload.uuid));\n\n case 17:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function createItem(_x34, _x35) {\n return _createItem.apply(this, arguments);\n }\n\n return createItem;\n }()\n }, {\n key: "createTemplateItem",\n value: function () {\n var _createTemplateItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(contentType, content) {\n var payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"];\n _context16.next = 3;\n return _uuid__WEBPACK_IMPORTED_MODULE_9__["Uuid"].GenerateUuid();\n\n case 3:\n _context16.t1 = _context16.sent;\n _context16.t2 = contentType;\n _context16.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])(content || {});\n _context16.t4 = {\n uuid: _context16.t1,\n content_type: _context16.t2,\n content: _context16.t3\n };\n payload = (0, _context16.t0)(_context16.t4);\n return _context16.abrupt("return", Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(payload));\n\n case 9:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16);\n }));\n\n function createTemplateItem(_x36, _x37) {\n return _createTemplateItem.apply(this, arguments);\n }\n\n return createTemplateItem;\n }()\n }, {\n key: "emitItemFromPayload",\n value: function () {\n var _emitItemFromPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17(payload) {\n var source,\n _args17 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n source = _args17.length > 1 && _args17[1] !== undefined ? _args17[1] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].Constructor;\n _context17.next = 3;\n return this.modelManager.emitPayload(payload, source);\n\n case 3:\n return _context17.abrupt("return", this.findItem(payload.uuid));\n\n case 4:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function emitItemFromPayload(_x38) {\n return _emitItemFromPayload.apply(this, arguments);\n }\n\n return emitItemFromPayload;\n }()\n }, {\n key: "emitItemsFromPayloads",\n value: function () {\n var _emitItemsFromPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(payloads) {\n var source,\n uuids,\n _args18 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n source = _args18.length > 1 && _args18[1] !== undefined ? _args18[1] : _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_18__["PayloadSource"].Constructor;\n _context18.next = 3;\n return this.modelManager.emitPayloads(payloads, source);\n\n case 3:\n uuids = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["Uuids"])(payloads);\n return _context18.abrupt("return", this.findItems(uuids));\n\n case 5:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function emitItemsFromPayloads(_x39) {\n return _emitItemsFromPayloads.apply(this, arguments);\n }\n\n return emitItemsFromPayloads;\n }()\n /**\n * Marks the item as deleted and needing sync.\n */\n\n }, {\n key: "setItemToBeDeleted",\n value: function () {\n var _setItemToBeDeleted = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(uuid) {\n var referencingIds, item, changedItem, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, referencingId, referencingItem;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n /** Capture referencing ids before we delete the item below, otherwise\n * the index may be updated before we get a chance to act on it */\n referencingIds = this.collection.uuidsThatReferenceUuid(uuid);\n item = this.findItem(uuid);\n _context19.next = 4;\n return this.changeItem(uuid, function (mutator) {\n mutator.setDeleted();\n });\n\n case 4:\n changedItem = _context19.sent;\n\n /** Handle indirect relationships.\n * (Direct relationships are cleared by clearing content above) */\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context19.prev = 8;\n _iterator4 = referencingIds[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context19.next = 19;\n break;\n }\n\n referencingId = _step4.value;\n referencingItem = this.findItem(referencingId);\n\n if (!referencingItem) {\n _context19.next = 16;\n break;\n }\n\n _context19.next = 16;\n return this.changeItem(referencingItem.uuid, function (mutator) {\n mutator.removeItemAsRelationship(item);\n });\n\n case 16:\n _iteratorNormalCompletion4 = true;\n _context19.next = 10;\n break;\n\n case 19:\n _context19.next = 25;\n break;\n\n case 21:\n _context19.prev = 21;\n _context19.t0 = _context19["catch"](8);\n _didIteratorError4 = true;\n _iteratorError4 = _context19.t0;\n\n case 25:\n _context19.prev = 25;\n _context19.prev = 26;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 28:\n _context19.prev = 28;\n\n if (!_didIteratorError4) {\n _context19.next = 31;\n break;\n }\n\n throw _iteratorError4;\n\n case 31:\n return _context19.finish(28);\n\n case 32:\n return _context19.finish(25);\n\n case 33:\n return _context19.abrupt("return", changedItem);\n\n case 34:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this, [[8, 21, 25, 33], [26,, 28, 32]]);\n }));\n\n function setItemToBeDeleted(_x40) {\n return _setItemToBeDeleted.apply(this, arguments);\n }\n\n return setItemToBeDeleted;\n }()\n /**\n * Like `setItemToBeDeleted`, but acts on an array of items.\n */\n\n }, {\n key: "setItemsToBeDeleted",\n value: function () {\n var _setItemsToBeDeleted = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20(uuids) {\n var changedItems, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, uuid, changedItem;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n changedItems = [];\n _iteratorNormalCompletion5 = true;\n _didIteratorError5 = false;\n _iteratorError5 = undefined;\n _context20.prev = 4;\n _iterator5 = uuids[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done) {\n _context20.next = 15;\n break;\n }\n\n uuid = _step5.value;\n _context20.next = 10;\n return this.setItemToBeDeleted(uuid);\n\n case 10:\n changedItem = _context20.sent;\n changedItems.push(changedItem);\n\n case 12:\n _iteratorNormalCompletion5 = true;\n _context20.next = 6;\n break;\n\n case 15:\n _context20.next = 21;\n break;\n\n case 17:\n _context20.prev = 17;\n _context20.t0 = _context20["catch"](4);\n _didIteratorError5 = true;\n _iteratorError5 = _context20.t0;\n\n case 21:\n _context20.prev = 21;\n _context20.prev = 22;\n\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n\n case 24:\n _context20.prev = 24;\n\n if (!_didIteratorError5) {\n _context20.next = 27;\n break;\n }\n\n throw _iteratorError5;\n\n case 27:\n return _context20.finish(24);\n\n case 28:\n return _context20.finish(21);\n\n case 29:\n return _context20.abrupt("return", changedItems);\n\n case 30:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this, [[4, 17, 21, 29], [22,, 24, 28]]);\n }));\n\n function setItemsToBeDeleted(_x41) {\n return _setItemsToBeDeleted.apply(this, arguments);\n }\n\n return setItemsToBeDeleted;\n }()\n /**\n * Returns all items of a certain type\n * @param contentType - A string or array of strings representing\n * content types.\n */\n\n }, {\n key: "getItems",\n value: function getItems(contentType) {\n return this.collection.all(contentType);\n }\n /**\n * Returns all items which are properly decrypted\n */\n\n }, {\n key: "nonErroredItemsForContentType",\n value: function nonErroredItemsForContentType(contentType) {\n var items = this.collection.all(contentType);\n return items.filter(function (item) {\n return !item.errorDecrypting && !item.waitingForKey;\n });\n }\n /**\n * Returns all items matching a given predicate\n */\n\n }, {\n key: "itemsMatchingPredicate",\n value: function itemsMatchingPredicate(predicate) {\n return this.itemsMatchingPredicates([predicate]);\n }\n /**\n * Returns all items matching an array of predicates\n */\n\n }, {\n key: "itemsMatchingPredicates",\n value: function itemsMatchingPredicates(predicates) {\n return this.subItemsMatchingPredicates(this.items, predicates);\n }\n /**\n * Performs actual predicate filtering for public methods above.\n * Does not return deleted items.\n */\n\n }, {\n key: "subItemsMatchingPredicates",\n value: function subItemsMatchingPredicates(items, predicates) {\n var results = items.filter(function (item) {\n if (item.deleted) {\n return false;\n }\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = predicates[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var predicate = _step6.value;\n\n if (!item.satisfiesPredicate(predicate)) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return true;\n });\n return results;\n }\n /**\n * Finds the first tag matching a given title\n */\n\n }, {\n key: "findTagByTitle",\n value: function findTagByTitle(title) {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_15__["searchArray"])(this.tags, {\n title: title\n });\n }\n /**\n * Finds or creates a tag with a given title\n */\n\n }, {\n key: "findOrCreateTagByTitle",\n value: function () {\n var _findOrCreateTagByTitle = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(title) {\n var tag;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n tag = this.findTagByTitle(title);\n _context21.t0 = tag;\n\n if (_context21.t0) {\n _context21.next = 6;\n break;\n }\n\n _context21.next = 5;\n return this.createItem(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag, Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: title\n }), true);\n\n case 5:\n _context21.t0 = _context21.sent;\n\n case 6:\n return _context21.abrupt("return", _context21.t0);\n\n case 7:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function findOrCreateTagByTitle(_x42) {\n return _findOrCreateTagByTitle.apply(this, arguments);\n }\n\n return findOrCreateTagByTitle;\n }()\n /**\n * Returns all notes matching the smart tag\n */\n\n }, {\n key: "notesMatchingSmartTag",\n value: function notesMatchingSmartTag(smartTag) {\n var contentTypePredicate = new _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"](\'content_type\', \'=\', _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note);\n var predicates = [contentTypePredicate, smartTag.predicate];\n\n if (!smartTag.isTrashTag) {\n var notTrashedPredicate = new _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"](\'content.trashed\', \'=\', false);\n predicates.push(notTrashedPredicate);\n }\n\n return this.itemsMatchingPredicates(predicates);\n }\n /**\n * Returns the smart tag corresponding to the "Trash" tag.\n */\n\n }, {\n key: "emptyTrash",\n\n /**\n * Permanently deletes any items currently in the trash. Consumer must manually call sync.\n */\n value: function () {\n var _emptyTrash = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22() {\n var notes;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n notes = this.trashedItems;\n return _context22.abrupt("return", this.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["Uuids"])(notes)));\n\n case 2:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function emptyTrash() {\n return _emptyTrash.apply(this, arguments);\n }\n\n return emptyTrash;\n }()\n /**\n * Returns all smart tags, sorted by title.\n */\n\n }, {\n key: "getSmartTags",\n value: function getSmartTags() {\n var userTags = this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag);\n return this.systemSmartTags.concat(userTags);\n }\n /**\n * The number of notes currently managed\n */\n\n }, {\n key: "removeAllItemsFromMemory",\n\n /**\n * Immediately removes all items from mapping state and notifies observers\n * Used primarily when signing into an account and wanting to discard any current\n * local data.\n */\n value: function () {\n var _removeAllItemsFromMemory = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23() {\n var uuids;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n uuids = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["Uuids"])(this.items);\n /** We don\'t want to set as dirty, since we want to dispose of immediately. */\n\n _context23.next = 3;\n return this.changeItems(uuids, function (mutator) {\n mutator.setDeleted();\n }, _models_core_item__WEBPACK_IMPORTED_MODULE_17__["MutationType"].NonDirtying);\n\n case 3:\n this.resetState();\n this.modelManager.resetState();\n\n case 5:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function removeAllItemsFromMemory() {\n return _removeAllItemsFromMemory.apply(this, arguments);\n }\n\n return removeAllItemsFromMemory;\n }()\n }, {\n key: "removeItemLocally",\n value: function removeItemLocally(item) {\n this.collection.discard(item);\n this.modelManager.removePayloadLocally(item.payload);\n }\n }, {\n key: "items",\n get: function get() {\n return this.collection.all();\n }\n /**\n * Returns a detached array of all items which are not deleted\n */\n\n }, {\n key: "nonDeletedItems",\n get: function get() {\n return this.collection.nondeletedElements();\n }\n /**\n * Returns all items that have not been able to decrypt.\n */\n\n }, {\n key: "invalidItems",\n get: function get() {\n return this.collection.invalidElements();\n }\n }, {\n key: "notes",\n get: function get() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note);\n }\n /**\n * Returns all non-deleted tags\n */\n\n }, {\n key: "tags",\n get: function get() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Tag);\n }\n /**\n * Returns all non-deleted components\n */\n\n }, {\n key: "components",\n get: function get() {\n return this.collection.displayElements(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Component);\n }\n }, {\n key: "trashSmartTag",\n get: function get() {\n return this.systemSmartTags.find(function (tag) {\n return tag.isTrashTag;\n });\n }\n /**\n * Returns all items currently in the trash\n */\n\n }, {\n key: "trashedItems",\n get: function get() {\n return this.notesMatchingSmartTag(this.trashSmartTag);\n }\n }, {\n key: "noteCount",\n get: function get() {\n return this.collection.all(_models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note).length;\n }\n }]);\n\n return ItemManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_13__["PureService"]);\nvar SYSTEM_TAG_ALL_NOTES = \'all-notes\';\nvar SYSTEM_TAG_ARCHIVED_NOTES = \'archived-notes\';\nvar SYSTEM_TAG_TRASHED_NOTES = \'trashed-notes\';\n\nfunction BuildSmartTags() {\n var allNotes = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])({\n uuid: SYSTEM_TAG_ALL_NOTES,\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: \'All notes\',\n isSystemTag: true,\n isAllTag: true,\n predicate: _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"].FromArray([\'content_type\', \'=\', _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].Note])\n })\n });\n var archived = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])({\n uuid: SYSTEM_TAG_ARCHIVED_NOTES,\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: \'Archived\',\n isSystemTag: true,\n isArchiveTag: true,\n predicate: _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"].FromArray([\'archived\', \'=\', JSON.stringify(true)])\n })\n });\n var trash = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_16__["CreateMaxPayloadFromAnyObject"])({\n uuid: SYSTEM_TAG_TRASHED_NOTES,\n content_type: _models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].SmartTag,\n content: Object(_Models_functions__WEBPACK_IMPORTED_MODULE_12__["FillItemContent"])({\n title: \'Trash\',\n isSystemTag: true,\n isTrashTag: true,\n predicate: _models_core_predicate__WEBPACK_IMPORTED_MODULE_8__["SNPredicate"].FromArray([\'trashed\', \'=\', JSON.stringify(true)])\n })\n });\n return [Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(allNotes), Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(archived), Object(_Models_generator__WEBPACK_IMPORTED_MODULE_11__["CreateItemFromPayload"])(trash)];\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvaXRlbV9tYW5hZ2VyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL2l0ZW1fbWFuYWdlci50cz8wMTBiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEl0ZW1Db2xsZWN0aW9uLCBDb2xsZWN0aW9uU29ydCB9IGZyb20gJ0BQcm90b2NvbC9jb2xsZWN0aW9uL2l0ZW1fY29sbGVjdGlvbic7XG5pbXBvcnQgeyBVc2VyUHJlZnNNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL3VzZXJQcmVmcyc7XG5pbXBvcnQgeyBQcml2aWxlZ2VNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL3ByaXZpbGVnZXMnO1xuaW1wb3J0IHsgVGFnTXV0YXRvciB9IGZyb20gJy4vLi4vbW9kZWxzL2FwcC90YWcnO1xuaW1wb3J0IHsgSXRlbXNLZXlNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL2l0ZW1zX2tleSc7XG5pbXBvcnQgeyBOb3RlTXV0YXRvciB9IGZyb20gJy4vLi4vbW9kZWxzL2FwcC9ub3RlJztcbmltcG9ydCB7IEFjdGlvbnNFeHRlbnNpb25NdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL2V4dGVuc2lvbic7XG5pbXBvcnQgeyBTTlByZWRpY2F0ZSB9IGZyb20gJy4vLi4vbW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmltcG9ydCB7IFV1aWQgfSBmcm9tICcuLy4uL3V1aWQnO1xuaW1wb3J0IHsgUGF5bG9hZHNCeUR1cGxpY2F0aW5nIH0gZnJvbSAnQFBheWxvYWRzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBDcmVhdGVJdGVtRnJvbVBheWxvYWQgfSBmcm9tICdATW9kZWxzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBVdWlkcywgRmlsbEl0ZW1Db250ZW50IH0gZnJvbSAnQE1vZGVscy9mdW5jdGlvbnMnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdATGliL3NlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBDb21wb25lbnRNdXRhdG9yIH0gZnJvbSAnLi8uLi9tb2RlbHMvYXBwL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBpc1N0cmluZywgcmVtb3ZlRnJvbUFycmF5LCBzZWFyY2hBcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IEl0ZW1NdXRhdG9yLCBNdXRhdGlvblR5cGUgfSBmcm9tICcuLy4uL21vZGVscy9jb3JlL2l0ZW0nO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJy4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4uL21vZGVscy9jb250ZW50X3R5cGVzJztcbi8qKlxuICogVGhlIGl0ZW0gbWFuYWdlciBpcyBiYWNrZWQgYnkgdGhlIFBheWxvYWQgTWFuYWdlci4gVGhpbmsgb2YgdGhlIGl0ZW0gbWFuYWdlciBhcyBhXG4gKiBtb3JlIHVzZXItZnJpZW5kbHkgb3IgaXRlbS1zcGVjaWZpYyBpbnRlcmZhY2UgdG8gY3JlYXRpbmcgYW5kIHVwZGF0aW5nIGRhdGEuXG4gKiBUaGUgaXRlbSBtYW5hZ2VyIGxpc3RlbnMgZm9yIGNoYW5nZSBldmVudHMgZnJvbSB0aGUgZ2xvYmFsIHBheWxvYWQgbWFuYWdlciwgYW5kXG4gKiBjb252ZXJ0cyBhbnkgcGF5bG9hZHMgdG8gU05JdGVtcywgdGhlbiBwcm9wYWdhdGVzIHRob3NlIGl0ZW1zIHRvIGxpc3RlbmVycyBvbiB0aGVcbiAqIGl0ZW0gIG1hbmFnZXIuIFdoZW4gdGhlIGl0ZW0gbWFuYWdlciBtYWtlcyBhIGNoYW5nZSB0byBhbiBpdGVtLCBpdCB3aWxsIG1vZGlmeSBpdGVtc1xuICogdXNpbmcgYSAgbXV0YXRvciwgdGhlbiBlbWl0IHRob3NlIHBheWxvYWRzIHRvIHRoZSBwYXlsb2FkIG1hbmFnZXIuIFRoZSBwYXlsb2FkIG1hbmFnZXJcbiAqIHdpbGwgdGhlbiBub3RpZnkgIGl0cyBvYnNlcnZlcnMgKHdoaWNoIGlzIHVzKSwgd2UnbGwgY29udmVydCB0aGUgcGF5bG9hZHMgdG8gaXRlbXMsXG4gKiBhbmQgdGhlbiAgd2UnbGwgcHJvcGFnYXRlIHRoZW0gdG8gb3VyIGxpc3RlbmVycy5cbiAqL1xuZXhwb3J0IGNsYXNzIEl0ZW1NYW5hZ2VyIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKG1vZGVsTWFuYWdlcikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IG1vZGVsTWFuYWdlcjtcbiAgICAgICAgdGhpcy5jcmVhdGVDb2xsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMudW5zdWJDaGFuZ2VPYnNlcnZlciA9IHRoaXMubW9kZWxNYW5hZ2VyXG4gICAgICAgICAgICAuYWRkT2JzZXJ2ZXIoQ29udGVudFR5cGUuQW55LCB0aGlzLm9uUGF5bG9hZENoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICAgICAgdGhpcy5zeXN0ZW1TbWFydFRhZ3MgPSBCdWlsZFNtYXJ0VGFncygpO1xuICAgIH1cbiAgICBzZXREaXNwbGF5T3B0aW9ucyhjb250ZW50VHlwZSwgc29ydEJ5LCBkaXJlY3Rpb24sIGZpbHRlcikge1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb24uc2V0RGlzcGxheU9wdGlvbnMoY29udGVudFR5cGUsIHNvcnRCeSwgZGlyZWN0aW9uLCBmaWx0ZXIpO1xuICAgIH1cbiAgICBnZXREaXNwbGF5YWJsZUl0ZW1zKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZGlzcGxheUVsZW1lbnRzKGNvbnRlbnRUeXBlKTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLnVuc3ViQ2hhbmdlT2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy51bnN1YkNoYW5nZU9ic2VydmVyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXNldFN0YXRlKCkge1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gICAgY3JlYXRlQ29sbGVjdGlvbigpIHtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uID0gbmV3IEl0ZW1Db2xsZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbi5zZXREaXNwbGF5T3B0aW9ucyhDb250ZW50VHlwZS5Ob3RlLCBDb2xsZWN0aW9uU29ydC5DcmVhdGVkQXQsICdkc2MnKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uLnNldERpc3BsYXlPcHRpb25zKENvbnRlbnRUeXBlLlRhZywgQ29sbGVjdGlvblNvcnQuVGl0bGUsICdhc2MnKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uLnNldERpc3BsYXlPcHRpb25zKENvbnRlbnRUeXBlLkl0ZW1zS2V5LCBDb2xsZWN0aW9uU29ydC5DcmVhdGVkQXQsICdhc2MnKTtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uLnNldERpc3BsYXlPcHRpb25zKENvbnRlbnRUeXBlLkNvbXBvbmVudCwgQ29sbGVjdGlvblNvcnQuQ3JlYXRlZEF0LCAnYXNjJyk7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbi5zZXREaXNwbGF5T3B0aW9ucyhDb250ZW50VHlwZS5TbWFydFRhZywgQ29sbGVjdGlvblNvcnQuVGl0bGUsICdhc2MnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbiBpdGVtIGZvciBhIGdpdmVuIGlkXG4gICAgICovXG4gICAgZmluZEl0ZW0odXVpZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmZpbmQodXVpZCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zIG1hdGNoaW5nIGdpdmVuIGlkc1xuICAgICAqIEBwYXJhbSBpbmNsdWRlQmxhbmtzIElmIHRydWUgYW5kIGFuIGl0ZW0gaXMgbm90IGZvdW5kLCBhbiBgdW5kZWZpbmVkYCBlbGVtZW50XG4gICAgICogd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBhcnJheS5cbiAgICAgKi9cbiAgICBmaW5kSXRlbXModXVpZHMsIGluY2x1ZGVCbGFua3MgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmZpbmRBbGwodXVpZHMsIGluY2x1ZGVCbGFua3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgZGV0YWNoZWQgYXJyYXkgb2YgYWxsIGl0ZW1zXG4gICAgICovXG4gICAgZ2V0IGl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmFsbCgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgZGV0YWNoZWQgYXJyYXkgb2YgYWxsIGl0ZW1zIHdoaWNoIGFyZSBub3QgZGVsZXRlZFxuICAgICAqL1xuICAgIGdldCBub25EZWxldGVkSXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24ubm9uZGVsZXRlZEVsZW1lbnRzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zIHRoYXQgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIGRlY3J5cHQuXG4gICAgICovXG4gICAgZ2V0IGludmFsaWRJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5pbnZhbGlkRWxlbWVudHMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgbm9uLWRlbGV0ZWQgaXRlbXMga2V5c1xuICAgICAqL1xuICAgIGl0ZW1zS2V5cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5kaXNwbGF5RWxlbWVudHMoQ29udGVudFR5cGUuSXRlbXNLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIFJldHVybnMgYWxsIG5vbi1kZWxldGVkIG5vdGVzXG4gICAgKi9cbiAgICBnZXQgbm90ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZGlzcGxheUVsZW1lbnRzKENvbnRlbnRUeXBlLk5vdGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIFJldHVybnMgYWxsIG5vbi1kZWxldGVkIHRhZ3NcbiAgICAqL1xuICAgIGdldCB0YWdzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmRpc3BsYXlFbGVtZW50cyhDb250ZW50VHlwZS5UYWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAqIFJldHVybnMgYWxsIG5vbi1kZWxldGVkIGNvbXBvbmVudHNcbiAgICAqL1xuICAgIGdldCBjb21wb25lbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uLmRpc3BsYXlFbGVtZW50cyhDb250ZW50VHlwZS5Db21wb25lbnQpO1xuICAgIH1cbiAgICBhZGRPYnNlcnZlcihjb250ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbnRlbnRUeXBlKSkge1xuICAgICAgICAgICAgY29udGVudFR5cGUgPSBbY29udGVudFR5cGVdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9ic2VydmVyID0ge1xuICAgICAgICAgICAgY29udGVudFR5cGUsXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm9ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLm9ic2VydmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBpdGVtcyB0aGF0IHJlZmVyZW5jZSB0aGUgZ2l2ZW4gaXRlbSwgb3IgYW4gZW1wdHkgYXJyYXkgaWYgbm8gcmVzdWx0cy5cbiAgICAgKi9cbiAgICBpdGVtc1JlZmVyZW5jaW5nSXRlbSh1dWlkKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHN0cmluZycpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHV1aWRzID0gdGhpcy5jb2xsZWN0aW9uLnV1aWRzVGhhdFJlZmVyZW5jZVV1aWQodXVpZCk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJdGVtcyh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIGl0ZW1zIHRoYXQgYW4gaXRlbSBkaXJlY3RseSByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcmVmZXJlbmNlc0Zvckl0ZW0odXVpZCkge1xuICAgICAgICBpZiAoIWlzU3RyaW5nKHV1aWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignTXVzdCB1c2UgdXVpZCBzdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBpdGVtLnJlZmVyZW5jZXMubWFwKChyZWYpID0+IHJlZi51dWlkKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW1zKHV1aWRzKTtcbiAgICB9XG4gICAgYXN5bmMgb25QYXlsb2FkQ2hhbmdlKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldFBheWxvYWRzKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICB9XG4gICAgYXN5bmMgc2V0UGF5bG9hZHMoY2hhbmdlZCwgaW5zZXJ0ZWQsIGRpc2NhcmRlZCwgc291cmNlLCBzb3VyY2VLZXkpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlZEl0ZW1zID0gY2hhbmdlZC5tYXAoKHApID0+IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwKSk7XG4gICAgICAgIGNvbnN0IGluc2VydGVkSXRlbXMgPSBpbnNlcnRlZC5tYXAoKHApID0+IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwKSk7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRPckluc2VydGVkID0gY2hhbmdlZEl0ZW1zLmNvbmNhdChpbnNlcnRlZEl0ZW1zKTtcbiAgICAgICAgaWYgKGNoYW5nZWRPckluc2VydGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGVjdGlvbi5zZXQoY2hhbmdlZE9ySW5zZXJ0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NhcmRlZEl0ZW1zID0gZGlzY2FyZGVkLm1hcCgocCkgPT4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHApKTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRpc2NhcmRlZEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb24uZGlzY2FyZChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeU9ic2VydmVycyhjaGFuZ2VkSXRlbXMsIGluc2VydGVkSXRlbXMsIGRpc2NhcmRlZEl0ZW1zLCBzb3VyY2UsIHNvdXJjZUtleSk7XG4gICAgfVxuICAgIGFzeW5jIG5vdGlmeU9ic2VydmVycyhjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkLCBzb3VyY2UsIHNvdXJjZUtleSkge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSAoaXRlbXMsIHR5cGVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICh0eXBlcy5pbmNsdWRlcyhDb250ZW50VHlwZS5BbnkpIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVzLmluY2x1ZGVzKGl0ZW0uY29udGVudF90eXBlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gdGhpcy5vYnNlcnZlcnMuc2xpY2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiBvYnNlcnZlcnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hhbmdlZCA9IGZpbHRlcihjaGFuZ2VkLCBvYnNlcnZlci5jb250ZW50VHlwZSk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEluc2VydGVkID0gZmlsdGVyKGluc2VydGVkLCBvYnNlcnZlci5jb250ZW50VHlwZSk7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZERpc2NhcmRlZCA9IGZpbHRlcihkaXNjYXJkZWQsIG9ic2VydmVyLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgIGlmIChmaWx0ZXJlZENoYW5nZWQubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICAgICAgZmlsdGVyZWRJbnNlcnRlZC5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICBmaWx0ZXJlZERpc2NhcmRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IG9ic2VydmVyLmNhbGxiYWNrKGZpbHRlcmVkQ2hhbmdlZCwgZmlsdGVyZWRJbnNlcnRlZCwgZmlsdGVyZWREaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb25zdW1lcnMgd2FudGluZyB0byBtb2RpZnkgYW4gaXRlbSBzaG91bGQgcnVuIGl0IHRocm91Z2ggdGhpcyBibG9jayxcbiAgICAgKiBzbyB0aGF0IGRhdGEgaXMgcHJvcGVybHkgbWFwcGVkIHRocm91Z2ggb3VyIGZ1bmN0aW9uLCBhbmQgbGF0ZXN0IHN0YXRlXG4gICAgICogaXMgcHJvcGVybHkgcmVjb25jaWxlZC5cbiAgICAgKiBAcGFyYW0gaXRlbU9yVXVpZCBJZiBhbiBpdGVtIGlzIHBhc3NlZCwgdGhlIHZhbHVlcyBvZiB0aGF0IGl0ZW0gd2lsbCBiZSBkaXJlY3RseSB1c2VkLFxuICAgICAqIGFuZCB0aGUgbXV0YXRpb24gd2lsbCBiZSBhcHBsaWVkIG9uIHRoYXQgaXRlbSBhbmQgcHJvcGFnYXRlZC4gVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBwYXNzXG4gICAgICogYW4gb2xkIGl0ZW0gcmVmZXJlbmNlIGFuZCBtdXRhdGUgdGhhdCwgdGhlIG5ldyB2YWx1ZSB3aWxsIGJlIG91dGRhdGVkLiBJbiB0aGlzIGNhc2UsIGFsd2F5c1xuICAgICAqIHBhc3MgdGhlIHV1aWQgb2YgdGhlIGl0ZW0gaWYgeW91IHdhbnQgdG8gbXV0YXRlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgaXRlbS5cbiAgICAgKi9cbiAgICBhc3luYyBjaGFuZ2VJdGVtKHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHV1aWQgZm9yIGNoYW5nZUl0ZW0nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgdGhpcy5jaGFuZ2VJdGVtcyhbdXVpZF0sIG11dGF0ZSwgbXV0YXRpb25UeXBlLCBwYXlsb2FkU291cmNlLCBwYXlsb2FkU291cmNlS2V5KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHNbMF07XG4gICAgfVxuICAgIGNyZWF0ZU11dGF0b3JGb3JJdGVtKGl0ZW0sIHR5cGUpIHtcbiAgICAgICAgaWYgKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5Ob3RlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE5vdGVNdXRhdG9yKGl0ZW0sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5UYWcpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFnTXV0YXRvcihpdGVtLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpdGVtLmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuQ29tcG9uZW50KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudE11dGF0b3IoaXRlbSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLkFjdGlvbnNFeHRlbnNpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aW9uc0V4dGVuc2lvbk11dGF0b3IoaXRlbSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXRlbS5jb250ZW50X3R5cGUgPT09IENvbnRlbnRUeXBlLkl0ZW1zS2V5KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEl0ZW1zS2V5TXV0YXRvcihpdGVtLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpdGVtLmNvbnRlbnRfdHlwZSA9PT0gQ29udGVudFR5cGUuUHJpdmlsZWdlcykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcml2aWxlZ2VNdXRhdG9yKGl0ZW0sIHR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGl0ZW0uY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5Vc2VyUHJlZnMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVXNlclByZWZzTXV0YXRvcihpdGVtLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgSXRlbU11dGF0b3IoaXRlbSwgdHlwZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIG11dGF0ZSBJZiBub3Qgc3VwcGxpZWQsIHRoZSBpbnRlbnRpb24gd291bGQgc2ltcGx5IGJlIHRvIG1hcmsgdGhlIGl0ZW0gYXMgZGlydHkuXG4gICAgICovXG4gICAgYXN5bmMgY2hhbmdlSXRlbXModXVpZHMsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5maW5kSXRlbXModXVpZHMsIHRydWUpO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNoYW5nZSBub24tZXhpc3RhbnQgaXRlbScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbXV0YXRvciA9IHRoaXMuY3JlYXRlTXV0YXRvckZvckl0ZW0oaXRlbSwgbXV0YXRpb25UeXBlKTtcbiAgICAgICAgICAgIGlmIChtdXRhdGUpIHtcbiAgICAgICAgICAgICAgICBtdXRhdGUobXV0YXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gbXV0YXRvci5nZXRSZXN1bHQoKTtcbiAgICAgICAgICAgIHBheWxvYWRzLnB1c2gocGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKHBheWxvYWRzLCBwYXlsb2FkU291cmNlLCBwYXlsb2FkU291cmNlS2V5KTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRoaXMuZmluZEl0ZW1zKHBheWxvYWRzLm1hcCgocCkgPT4gcC51dWlkKSk7XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cbiAgICBhc3luYyBjaGFuZ2VOb3RlKHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IG5vdGUgPSB0aGlzLmZpbmRJdGVtKHV1aWQpO1xuICAgICAgICBpZiAoIW5vdGUpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNoYW5nZSBub24tZXhpc3RhbnQgbm90ZScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11dGF0b3IgPSBuZXcgTm90ZU11dGF0b3Iobm90ZSwgbXV0YXRpb25UeXBlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlUcmFuc2Zvcm0obXV0YXRvciwgbXV0YXRlLCBwYXlsb2FkU291cmNlLCBwYXlsb2FkU291cmNlS2V5KTtcbiAgICB9XG4gICAgYXN5bmMgY2hhbmdlQ29tcG9uZW50KHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQXR0ZW1wdGluZyB0byBjaGFuZ2Ugbm9uLWV4aXN0YW50IGNvbXBvbmVudCcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11dGF0b3IgPSBuZXcgQ29tcG9uZW50TXV0YXRvcihjb21wb25lbnQsIG11dGF0aW9uVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5VHJhbnNmb3JtKG11dGF0b3IsIG11dGF0ZSwgcGF5bG9hZFNvdXJjZSwgcGF5bG9hZFNvdXJjZUtleSk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZUFjdGlvbnNFeHRlbnNpb24odXVpZCwgbXV0YXRlLCBtdXRhdGlvblR5cGUgPSBNdXRhdGlvblR5cGUuVXNlckludGVyYWN0aW9uLCBwYXlsb2FkU291cmNlID0gUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQsIHBheWxvYWRTb3VyY2VLZXkpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgaWYgKCFleHRlbnNpb24pIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIGNoYW5nZSBub24tZXhpc3RhbnQgZXh0ZW5zaW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbXV0YXRvciA9IG5ldyBBY3Rpb25zRXh0ZW5zaW9uTXV0YXRvcihleHRlbnNpb24sIG11dGF0aW9uVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmFwcGx5VHJhbnNmb3JtKG11dGF0b3IsIG11dGF0ZSwgcGF5bG9hZFNvdXJjZSwgcGF5bG9hZFNvdXJjZUtleSk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZUl0ZW1zS2V5KHV1aWQsIG11dGF0ZSwgbXV0YXRpb25UeXBlID0gTXV0YXRpb25UeXBlLlVzZXJJbnRlcmFjdGlvbiwgcGF5bG9hZFNvdXJjZSA9IFBheWxvYWRTb3VyY2UuTG9jYWxDaGFuZ2VkLCBwYXlsb2FkU291cmNlS2V5KSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5ID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgaWYgKCFpdGVtc0tleSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gY2hhbmdlIG5vbi1leGlzdGFudCBpdGVtc0tleScpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG11dGF0b3IgPSBuZXcgSXRlbXNLZXlNdXRhdG9yKGl0ZW1zS2V5LCBtdXRhdGlvblR5cGUpO1xuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVRyYW5zZm9ybShtdXRhdG9yLCBtdXRhdGUsIHBheWxvYWRTb3VyY2UsIHBheWxvYWRTb3VyY2VLZXkpO1xuICAgIH1cbiAgICBhc3luYyBhcHBseVRyYW5zZm9ybShtdXRhdG9yLCBtdXRhdGUsIHBheWxvYWRTb3VyY2UgPSBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCwgcGF5bG9hZFNvdXJjZUtleSkge1xuICAgICAgICBtdXRhdGUobXV0YXRvcik7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBtdXRhdG9yLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQocGF5bG9hZCwgcGF5bG9hZFNvdXJjZSwgcGF5bG9hZFNvdXJjZUtleSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAgKiBTZXRzIHRoZSBpdGVtIGFzIG5lZWRpbmcgc3luYy4gVGhlIGl0ZW0gaXMgdGhlbiBydW4gdGhyb3VnaCB0aGUgbWFwcGluZyBmdW5jdGlvbixcbiAgICAgICogYW5kIHByb3BhZ2F0ZWQgdG8gbWFwcGluZyBvYnNlcnZlcnMuXG4gICAgICAqIEBwYXJhbSB1cGRhdGVDbGllbnREYXRlIC0gV2hldGhlciB0byB1cGRhdGUgdGhlIGl0ZW0ncyBcInVzZXIgbW9kaWZpZWQgZGF0ZVwiXG4gICAgICAqL1xuICAgIGFzeW5jIHNldEl0ZW1EaXJ0eSh1dWlkLCBpc1VzZXJNb2RpZmllZCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICghaXNTdHJpbmcodXVpZCkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdNdXN0IHVzZSB1dWlkIHdoZW4gc2V0dGluZyBpdGVtIGRpcnR5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zZXRJdGVtc0RpcnR5KFt1dWlkXSwgaXNVc2VyTW9kaWZpZWQpO1xuICAgICAgICByZXR1cm4gcmVzdWx0WzBdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTaW1pbGFyIHRvIGBzZXRJdGVtRGlydHlgLCBidXQgYWN0cyBvbiBhbiBhcnJheSBvZiBpdGVtcyBhcyB0aGUgZmlyc3QgcGFyYW0uXG4gICAgICovXG4gICAgYXN5bmMgc2V0SXRlbXNEaXJ0eSh1dWlkcywgaXNVc2VyTW9kaWZpZWQgPSBmYWxzZSkge1xuICAgICAgICBpZiAoIWlzU3RyaW5nKHV1aWRzWzBdKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ011c3QgdXNlIHV1aWQgd2hlbiBzZXR0aW5nIGl0ZW0gZGlydHknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFuZ2VJdGVtcyh1dWlkcywgdW5kZWZpbmVkLCBpc1VzZXJNb2RpZmllZCA/IE11dGF0aW9uVHlwZS5Vc2VySW50ZXJhY3Rpb24gOiBNdXRhdGlvblR5cGUuSW50ZXJuYWwpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGl0ZW1zIHRoYXQgbmVlZCB0byBiZSBzeW5jZWQuXG4gICAgICovXG4gICAgZ2V0RGlydHlJdGVtcygpIHtcbiAgICAgICAgY29uc3QgZGlydHkgPSB0aGlzLmNvbGxlY3Rpb24uZGlydHlFbGVtZW50cygpO1xuICAgICAgICByZXR1cm4gZGlydHkuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAvKiBBbiBpdGVtIHRoYXQgaGFzIGFuIGVycm9yIGRlY3J5cHRpbmcgY2FuIGJlIHN5bmNlZCBvbmx5IGlmIGl0IGlzIGJlaW5nIGRlbGV0ZWQuXG4gICAgICAgICAgICAgIE90aGVyd2lzZSwgd2UgZG9uJ3Qgd2FudCB0byBzZW5kIGNvcnJ1cHQgY29udGVudCB1cCB0byB0aGUgc2VydmVyLiAqL1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLmVycm9yRGVjcnlwdGluZyB8fCBpdGVtLmRlbGV0ZWQ7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIHRoZSBpdGVtIGFzLWlzIGJ5IHJlYWRpbmcgaXRzIHBheWxvYWQgdmFsdWUuIFRoaXMgZnVuY3Rpb24gd2lsbCBub3RcbiAgICAgKiBtb2RpZnkgaXRlbSBpbiBhbnkgd2F5IChzdWNoIGFzIG1hcmtpbmcgaXQgYXMgZGlydHkpLiBJdCBpcyB1cCB0byB0aGUgY2FsbGVyXG4gICAgICogdG8gcGFzcyBpbiBhIGRpcnRpZWQgaXRlbSBpZiB0aGF0IGlzIHRoZWlyIGludGVudGlvbi5cbiAgICAgKi9cbiAgICBhc3luYyBpbnNlcnRJdGVtKGl0ZW0pIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IGl0ZW0ucGF5bG9hZDtcbiAgICAgICAgY29uc3QgaW5zZXJ0ZWRJdGVtID0gYXdhaXQgdGhpcy5lbWl0SXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICByZXR1cm4gaW5zZXJ0ZWRJdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEdXBsaWNhdGVzIGFuIGl0ZW0gYW5kIG1hcHMgaXQsIHRodXMgcHJvcGFnYXRpbmcgdGhlIGl0ZW0gdG8gb2JzZXJ2ZXJzLlxuICAgICAqIEBwYXJhbSBpc0NvbmZsaWN0IC0gV2hldGhlciB0byBtYXJrIHRoZSBkdXBsaWNhdGUgYXMgYSBjb25mbGljdCBvZiB0aGUgb3JpZ2luYWwuXG4gICAgICovXG4gICAgYXN5bmMgZHVwbGljYXRlSXRlbSh1dWlkLCBpc0NvbmZsaWN0ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZEl0ZW0odXVpZCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdChpdGVtKTtcbiAgICAgICAgY29uc3QgcmVzdWx0aW5nUGF5bG9hZHMgPSBhd2FpdCBQYXlsb2Fkc0J5RHVwbGljYXRpbmcocGF5bG9hZCwgdGhpcy5tb2RlbE1hbmFnZXIuZ2V0TWFzdGVyQ29sbGVjdGlvbigpLCBpc0NvbmZsaWN0KTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKHJlc3VsdGluZ1BheWxvYWRzLCBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCk7XG4gICAgICAgIGNvbnN0IGR1cGxpY2F0ZSA9IHRoaXMuZmluZEl0ZW0ocmVzdWx0aW5nUGF5bG9hZHNbMF0udXVpZCk7XG4gICAgICAgIHJldHVybiBkdXBsaWNhdGU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaXRlbSBhbmQgY29uZGl0aW9uYWxseSBtYXBzIGl0IGFuZCBtYXJrcyBpdCBhcyBkaXJ0eS5cbiAgICAgKiBAcGFyYW0gbmVlZHNTeW5jIC0gV2hldGhlciB0byBtYXJrIHRoZSBpdGVtIGFzIG5lZWRpbmcgc3luY1xuICAgICAqL1xuICAgIGFzeW5jIGNyZWF0ZUl0ZW0oY29udGVudFR5cGUsIGNvbnRlbnQsIG5lZWRzU3luYyA9IGZhbHNlLCBvdmVycmlkZSkge1xuICAgICAgICBpZiAoIWNvbnRlbnRUeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBjcmVhdGUgaXRlbSB3aXRoIG5vIGNvbnRlbnRUeXBlJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogY29udGVudFR5cGUsXG4gICAgICAgICAgICBjb250ZW50OiBjb250ZW50ID8gRmlsbEl0ZW1Db250ZW50KGNvbnRlbnQpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgZGlydHk6IG5lZWRzU3luY1xuICAgICAgICB9LCBvdmVycmlkZSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkKHBheWxvYWQsIFBheWxvYWRTb3VyY2UuQ29uc3RydWN0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcy5maW5kSXRlbShwYXlsb2FkLnV1aWQpO1xuICAgIH1cbiAgICBhc3luYyBjcmVhdGVUZW1wbGF0ZUl0ZW0oY29udGVudFR5cGUsIGNvbnRlbnQpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHtcbiAgICAgICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgICAgICBjb250ZW50X3R5cGU6IGNvbnRlbnRUeXBlLFxuICAgICAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KGNvbnRlbnQgfHwge30pXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgIH1cbiAgICBhc3luYyBlbWl0SXRlbUZyb21QYXlsb2FkKHBheWxvYWQsIHNvdXJjZSA9IFBheWxvYWRTb3VyY2UuQ29uc3RydWN0b3IpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWQocGF5bG9hZCwgc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZEl0ZW0ocGF5bG9hZC51dWlkKTtcbiAgICB9XG4gICAgYXN5bmMgZW1pdEl0ZW1zRnJvbVBheWxvYWRzKHBheWxvYWRzLCBzb3VyY2UgPSBQYXlsb2FkU291cmNlLkNvbnN0cnVjdG9yKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhwYXlsb2Fkcywgc291cmNlKTtcbiAgICAgICAgY29uc3QgdXVpZHMgPSBVdWlkcyhwYXlsb2Fkcyk7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmRJdGVtcyh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE1hcmtzIHRoZSBpdGVtIGFzIGRlbGV0ZWQgYW5kIG5lZWRpbmcgc3luYy5cbiAgICAgKi9cbiAgICBhc3luYyBzZXRJdGVtVG9CZURlbGV0ZWQodXVpZCkge1xuICAgICAgICAvKiogQ2FwdHVyZSByZWZlcmVuY2luZyBpZHMgYmVmb3JlIHdlIGRlbGV0ZSB0aGUgaXRlbSBiZWxvdywgb3RoZXJ3aXNlXG4gICAgICAgICAqIHRoZSBpbmRleCBtYXkgYmUgdXBkYXRlZCBiZWZvcmUgd2UgZ2V0IGEgY2hhbmNlIHRvIGFjdCBvbiBpdCAqL1xuICAgICAgICBjb25zdCByZWZlcmVuY2luZ0lkcyA9IHRoaXMuY29sbGVjdGlvbi51dWlkc1RoYXRSZWZlcmVuY2VVdWlkKHV1aWQpO1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5maW5kSXRlbSh1dWlkKTtcbiAgICAgICAgY29uc3QgY2hhbmdlZEl0ZW0gPSBhd2FpdCB0aGlzLmNoYW5nZUl0ZW0odXVpZCwgKG11dGF0b3IpID0+IHtcbiAgICAgICAgICAgIG11dGF0b3Iuc2V0RGVsZXRlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgLyoqIEhhbmRsZSBpbmRpcmVjdCByZWxhdGlvbnNoaXBzLlxuICAgICAgICAgKiAoRGlyZWN0IHJlbGF0aW9uc2hpcHMgYXJlIGNsZWFyZWQgYnkgY2xlYXJpbmcgY29udGVudCBhYm92ZSkgKi9cbiAgICAgICAgZm9yIChjb25zdCByZWZlcmVuY2luZ0lkIG9mIHJlZmVyZW5jaW5nSWRzKSB7XG4gICAgICAgICAgICBjb25zdCByZWZlcmVuY2luZ0l0ZW0gPSB0aGlzLmZpbmRJdGVtKHJlZmVyZW5jaW5nSWQpO1xuICAgICAgICAgICAgaWYgKHJlZmVyZW5jaW5nSXRlbSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hhbmdlSXRlbShyZWZlcmVuY2luZ0l0ZW0udXVpZCwgKG11dGF0b3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbXV0YXRvci5yZW1vdmVJdGVtQXNSZWxhdGlvbnNoaXAoaXRlbSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRJdGVtO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMaWtlIGBzZXRJdGVtVG9CZURlbGV0ZWRgLCBidXQgYWN0cyBvbiBhbiBhcnJheSBvZiBpdGVtcy5cbiAgICAgKi9cbiAgICBhc3luYyBzZXRJdGVtc1RvQmVEZWxldGVkKHV1aWRzKSB7XG4gICAgICAgIGNvbnN0IGNoYW5nZWRJdGVtcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHV1aWQgb2YgdXVpZHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZWRJdGVtID0gYXdhaXQgdGhpcy5zZXRJdGVtVG9CZURlbGV0ZWQodXVpZCk7XG4gICAgICAgICAgICBjaGFuZ2VkSXRlbXMucHVzaChjaGFuZ2VkSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNoYW5nZWRJdGVtcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgaXRlbXMgb2YgYSBjZXJ0YWluIHR5cGVcbiAgICAgKiBAcGFyYW0gY29udGVudFR5cGUgLSBBIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzIHJlcHJlc2VudGluZ1xuICAgICAqICAgIGNvbnRlbnQgdHlwZXMuXG4gICAgICovXG4gICAgZ2V0SXRlbXMoY29udGVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5hbGwoY29udGVudFR5cGUpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsbCBpdGVtcyB3aGljaCBhcmUgcHJvcGVybHkgZGVjcnlwdGVkXG4gICAgICovXG4gICAgbm9uRXJyb3JlZEl0ZW1zRm9yQ29udGVudFR5cGUoY29udGVudFR5cGUpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmNvbGxlY3Rpb24uYWxsKGNvbnRlbnRUeXBlKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uZXJyb3JEZWNyeXB0aW5nICYmICFpdGVtLndhaXRpbmdGb3JLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsbCBpdGVtcyBtYXRjaGluZyBhIGdpdmVuIHByZWRpY2F0ZVxuICAgICAqL1xuICAgIGl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGVzKFtwcmVkaWNhdGVdKTtcbiAgICB9XG4gICAgLyoqXG4gICAgKiBSZXR1cm5zIGFsbCBpdGVtcyBtYXRjaGluZyBhbiBhcnJheSBvZiBwcmVkaWNhdGVzXG4gICAgKi9cbiAgICBpdGVtc01hdGNoaW5nUHJlZGljYXRlcyhwcmVkaWNhdGVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Ykl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGVzKHRoaXMuaXRlbXMsIHByZWRpY2F0ZXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQZXJmb3JtcyBhY3R1YWwgcHJlZGljYXRlIGZpbHRlcmluZyBmb3IgcHVibGljIG1ldGhvZHMgYWJvdmUuXG4gICAgICogRG9lcyBub3QgcmV0dXJuIGRlbGV0ZWQgaXRlbXMuXG4gICAgICovXG4gICAgc3ViSXRlbXNNYXRjaGluZ1ByZWRpY2F0ZXMoaXRlbXMsIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZGVsZXRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIHByZWRpY2F0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uc2F0aXNmaWVzUHJlZGljYXRlKHByZWRpY2F0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBmaXJzdCB0YWcgbWF0Y2hpbmcgYSBnaXZlbiB0aXRsZVxuICAgICAqL1xuICAgIGZpbmRUYWdCeVRpdGxlKHRpdGxlKSB7XG4gICAgICAgIHJldHVybiBzZWFyY2hBcnJheSh0aGlzLnRhZ3MsIHsgdGl0bGU6IHRpdGxlIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAqIEZpbmRzIG9yIGNyZWF0ZXMgYSB0YWcgd2l0aCBhIGdpdmVuIHRpdGxlXG4gICAgKi9cbiAgICBhc3luYyBmaW5kT3JDcmVhdGVUYWdCeVRpdGxlKHRpdGxlKSB7XG4gICAgICAgIGNvbnN0IHRhZyA9IHRoaXMuZmluZFRhZ0J5VGl0bGUodGl0bGUpO1xuICAgICAgICByZXR1cm4gdGFnIHx8IGF3YWl0IHRoaXMuY3JlYXRlSXRlbShDb250ZW50VHlwZS5UYWcsIEZpbGxJdGVtQ29udGVudCh7IHRpdGxlIH0pLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgbm90ZXMgbWF0Y2hpbmcgdGhlIHNtYXJ0IHRhZ1xuICAgICAqL1xuICAgIG5vdGVzTWF0Y2hpbmdTbWFydFRhZyhzbWFydFRhZykge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZVByZWRpY2F0ZSA9IG5ldyBTTlByZWRpY2F0ZSgnY29udGVudF90eXBlJywgJz0nLCBDb250ZW50VHlwZS5Ob3RlKTtcbiAgICAgICAgY29uc3QgcHJlZGljYXRlcyA9IFtjb250ZW50VHlwZVByZWRpY2F0ZSwgc21hcnRUYWcucHJlZGljYXRlXTtcbiAgICAgICAgaWYgKCFzbWFydFRhZy5pc1RyYXNoVGFnKSB7XG4gICAgICAgICAgICBjb25zdCBub3RUcmFzaGVkUHJlZGljYXRlID0gbmV3IFNOUHJlZGljYXRlKCdjb250ZW50LnRyYXNoZWQnLCAnPScsIGZhbHNlKTtcbiAgICAgICAgICAgIHByZWRpY2F0ZXMucHVzaChub3RUcmFzaGVkUHJlZGljYXRlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtc01hdGNoaW5nUHJlZGljYXRlcyhwcmVkaWNhdGVzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc21hcnQgdGFnIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFwiVHJhc2hcIiB0YWcuXG4gICAgICovXG4gICAgZ2V0IHRyYXNoU21hcnRUYWcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5c3RlbVNtYXJ0VGFncy5maW5kKCh0YWcpID0+IHRhZy5pc1RyYXNoVGFnKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgaXRlbXMgY3VycmVudGx5IGluIHRoZSB0cmFzaFxuICAgICAqL1xuICAgIGdldCB0cmFzaGVkSXRlbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vdGVzTWF0Y2hpbmdTbWFydFRhZyh0aGlzLnRyYXNoU21hcnRUYWcpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQZXJtYW5lbnRseSBkZWxldGVzIGFueSBpdGVtcyBjdXJyZW50bHkgaW4gdGhlIHRyYXNoLiBDb25zdW1lciBtdXN0IG1hbnVhbGx5IGNhbGwgc3luYy5cbiAgICAgKi9cbiAgICBhc3luYyBlbXB0eVRyYXNoKCkge1xuICAgICAgICBjb25zdCBub3RlcyA9IHRoaXMudHJhc2hlZEl0ZW1zO1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRJdGVtc1RvQmVEZWxldGVkKFV1aWRzKG5vdGVzKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYWxsIHNtYXJ0IHRhZ3MsIHNvcnRlZCBieSB0aXRsZS5cbiAgICAgKi9cbiAgICBnZXRTbWFydFRhZ3MoKSB7XG4gICAgICAgIGNvbnN0IHVzZXJUYWdzID0gdGhpcy5jb2xsZWN0aW9uLmRpc3BsYXlFbGVtZW50cyhDb250ZW50VHlwZS5TbWFydFRhZyk7XG4gICAgICAgIHJldHVybiB0aGlzLnN5c3RlbVNtYXJ0VGFncy5jb25jYXQodXNlclRhZ3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIG5vdGVzIGN1cnJlbnRseSBtYW5hZ2VkXG4gICAgICovXG4gICAgZ2V0IG5vdGVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbi5hbGwoQ29udGVudFR5cGUuTm90ZSkubGVuZ3RoO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbW1lZGlhdGVseSByZW1vdmVzIGFsbCBpdGVtcyBmcm9tIG1hcHBpbmcgc3RhdGUgYW5kIG5vdGlmaWVzIG9ic2VydmVyc1xuICAgICAqIFVzZWQgcHJpbWFyaWx5IHdoZW4gc2lnbmluZyBpbnRvIGFuIGFjY291bnQgYW5kIHdhbnRpbmcgdG8gZGlzY2FyZCBhbnkgY3VycmVudFxuICAgICAqIGxvY2FsIGRhdGEuXG4gICAgICovXG4gICAgYXN5bmMgcmVtb3ZlQWxsSXRlbXNGcm9tTWVtb3J5KCkge1xuICAgICAgICBjb25zdCB1dWlkcyA9IFV1aWRzKHRoaXMuaXRlbXMpO1xuICAgICAgICAvKiogV2UgZG9uJ3Qgd2FudCB0byBzZXQgYXMgZGlydHksIHNpbmNlIHdlIHdhbnQgdG8gZGlzcG9zZSBvZiBpbW1lZGlhdGVseS4gKi9cbiAgICAgICAgYXdhaXQgdGhpcy5jaGFuZ2VJdGVtcyh1dWlkcywgKG11dGF0b3IpID0+IHtcbiAgICAgICAgICAgIG11dGF0b3Iuc2V0RGVsZXRlZCgpO1xuICAgICAgICB9LCBNdXRhdGlvblR5cGUuTm9uRGlydHlpbmcpO1xuICAgICAgICB0aGlzLnJlc2V0U3RhdGUoKTtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIucmVzZXRTdGF0ZSgpO1xuICAgIH1cbiAgICByZW1vdmVJdGVtTG9jYWxseShpdGVtKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbi5kaXNjYXJkKGl0ZW0pO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlci5yZW1vdmVQYXlsb2FkTG9jYWxseShpdGVtLnBheWxvYWQpO1xuICAgIH1cbn1cbmNvbnN0IFNZU1RFTV9UQUdfQUxMX05PVEVTID0gJ2FsbC1ub3Rlcyc7XG5jb25zdCBTWVNURU1fVEFHX0FSQ0hJVkVEX05PVEVTID0gJ2FyY2hpdmVkLW5vdGVzJztcbmNvbnN0IFNZU1RFTV9UQUdfVFJBU0hFRF9OT1RFUyA9ICd0cmFzaGVkLW5vdGVzJztcbmZ1bmN0aW9uIEJ1aWxkU21hcnRUYWdzKCkge1xuICAgIGNvbnN0IGFsbE5vdGVzID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICB1dWlkOiBTWVNURU1fVEFHX0FMTF9OT1RFUyxcbiAgICAgICAgY29udGVudF90eXBlOiBDb250ZW50VHlwZS5TbWFydFRhZyxcbiAgICAgICAgY29udGVudDogRmlsbEl0ZW1Db250ZW50KHtcbiAgICAgICAgICAgIHRpdGxlOiAnQWxsIG5vdGVzJyxcbiAgICAgICAgICAgIGlzU3lzdGVtVGFnOiB0cnVlLFxuICAgICAgICAgICAgaXNBbGxUYWc6IHRydWUsXG4gICAgICAgICAgICBwcmVkaWNhdGU6IFNOUHJlZGljYXRlLkZyb21BcnJheShbJ2NvbnRlbnRfdHlwZScsICc9JywgQ29udGVudFR5cGUuTm90ZV0pXG4gICAgICAgIH0pXG4gICAgfSk7XG4gICAgY29uc3QgYXJjaGl2ZWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh7XG4gICAgICAgIHV1aWQ6IFNZU1RFTV9UQUdfQVJDSElWRURfTk9URVMsXG4gICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuU21hcnRUYWcsXG4gICAgICAgIGNvbnRlbnQ6IEZpbGxJdGVtQ29udGVudCh7XG4gICAgICAgICAgICB0aXRsZTogJ0FyY2hpdmVkJyxcbiAgICAgICAgICAgIGlzU3lzdGVtVGFnOiB0cnVlLFxuICAgICAgICAgICAgaXNBcmNoaXZlVGFnOiB0cnVlLFxuICAgICAgICAgICAgcHJlZGljYXRlOiBTTlByZWRpY2F0ZS5Gcm9tQXJyYXkoWydhcmNoaXZlZCcsICc9JywgSlNPTi5zdHJpbmdpZnkodHJ1ZSldKVxuICAgICAgICB9KVxuICAgIH0pO1xuICAgIGNvbnN0IHRyYXNoID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICB1dWlkOiBTWVNURU1fVEFHX1RSQVNIRURfTk9URVMsXG4gICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuU21hcnRUYWcsXG4gICAgICAgIGNvbnRlbnQ6IEZpbGxJdGVtQ29udGVudCh7XG4gICAgICAgICAgICB0aXRsZTogJ1RyYXNoJyxcbiAgICAgICAgICAgIGlzU3lzdGVtVGFnOiB0cnVlLFxuICAgICAgICAgICAgaXNUcmFzaFRhZzogdHJ1ZSxcbiAgICAgICAgICAgIHByZWRpY2F0ZTogU05QcmVkaWNhdGUuRnJvbUFycmF5KFsndHJhc2hlZCcsICc9JywgSlNPTi5zdHJpbmdpZnkodHJ1ZSldKVxuICAgICAgICB9KVxuICAgIH0pO1xuICAgIHJldHVybiBbXG4gICAgICAgIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChhbGxOb3RlcyksXG4gICAgICAgIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChhcmNoaXZlZCksXG4gICAgICAgIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCh0cmFzaClcbiAgICBdO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFQQTtBQVFBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBWkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBckJBO0FBQUE7QUFBQTtBQXVCQTtBQUNBO0FBeEJBO0FBQUE7QUFBQTtBQTBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBakNBO0FBQUE7QUFBQTtBQXFDQTtBQUNBO0FBQ0E7Ozs7OztBQXZDQTtBQUFBO0FBQUE7QUE0Q0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUEvQ0E7QUFBQTtBQUNBO0FBZ0VBOzs7QUFqRUE7QUFxRUE7QUFDQTtBQUNBOzs7O0FBdkVBO0FBQUE7QUFBQTtBQXlGQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXRHQTtBQUFBO0FBQUE7QUEwR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7OztBQWhIQTtBQUFBO0FBQUE7QUFvSEE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUExSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUErSEE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBcklBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxSUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXpJQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTRJQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQWxKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXZKQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStKQTs7Ozs7Ozs7OztBQS9KQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdLQTtBQUFBO0FBQUE7QUFDQTtBQXpLQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0S0E7QUE1S0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnTEE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUF6TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNE1BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUE5TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOE1BO0FBQ0E7QUFoTkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW1OQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUF6TkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJOQTtBQUFBO0FBQUE7QUEzTkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBOE5BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFoT0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQW1PQTtBQW5PQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzT0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXhPQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBMk9BO0FBM09BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThPQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBaFBBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFtUEE7QUFuUEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc1BBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUF4UEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTJQQTtBQTNQQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThQQTtBQUFBO0FBQ0E7QUFDQTtBQWhRQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1RQTs7Ozs7O0FBblFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3UUE7QUFDQTtBQXpRQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE0UUE7QUE1UUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUErUUE7Ozs7QUEvUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrUkE7QUFDQTtBQW5SQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3UkE7Ozs7QUF4UkE7QUFBQTtBQUFBO0FBNFJBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBblNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXlTQTtBQXpTQTtBQUFBO0FBQ0E7QUFEQTtBQTBTQTtBQTFTQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZTQTs7Ozs7QUE3U0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWlUQTtBQUNBO0FBQ0E7QUFuVEE7QUFBQTtBQUNBO0FBREE7QUFvVEE7QUFwVEE7QUFBQTtBQUNBO0FBREE7QUFzVEE7QUF0VEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF5VEE7Ozs7O0FBelRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTZUQTtBQUFBO0FBQ0E7QUE5VEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa1VBO0FBQ0E7QUFDQTtBQUNBO0FBclVBO0FBQUE7QUFpVUE7QUFqVUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRVQTtBQUNBO0FBQ0E7QUE5VUE7QUEyVUE7QUEzVUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtWQTtBQWxWQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXNWQTtBQXRWQTtBQUFBO0FBQ0E7QUFEQTtBQXdWQTtBQXhWQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTJWQTs7OztBQTNWQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQStWQTs7QUFFQTtBQUNBO0FBbFdBO0FBQUE7QUFvV0E7QUFDQTtBQUNBO0FBdFdBO0FBbVdBO0FBQ0E7QUFFQTs7QUF0V0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdVdBO0FBQ0E7QUFDQTtBQTFXQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRXQTtBQUNBO0FBQ0E7QUE5V0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWtYQTs7OztBQWxYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQXNYQTtBQXRYQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFzWEE7QUF2WEE7QUFBQTtBQUNBO0FBREE7QUF3WEE7QUFDQTtBQUNBO0FBMVhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2WEE7Ozs7OztBQTdYQTtBQUFBO0FBQUE7QUFtWUE7QUFDQTtBQUNBOzs7O0FBcllBO0FBQUE7QUFBQTtBQXlZQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUE1WUE7QUFBQTtBQUFBO0FBZ1pBO0FBQ0E7QUFDQTs7OztBQWxaQTtBQUFBO0FBQUE7QUFzWkE7QUFDQTtBQUNBOzs7OztBQXhaQTtBQUFBO0FBQUE7QUE2WkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUExYUE7QUFBQTtBQUFBO0FBOGFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFoYkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb2JBO0FBcGJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXFiQTtBQUFBO0FBQ0E7QUF0YkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXViQTs7OztBQXZiQTtBQUFBO0FBQUE7QUEyYkE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7OztBQW5jQTtBQUFBO0FBQ0E7QUE4Y0E7OztBQS9jQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1kQTtBQW5kQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXNkQTs7OztBQXRkQTtBQUFBO0FBQUE7QUEwZEE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUE3ZEE7QUFBQTtBQUNBO0FBa2VBOzs7OztBQW5lQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXllQTtBQUNBO0FBQ0E7QUEzZUE7QUFBQTtBQTRlQTtBQUNBO0FBQ0E7QUE5ZUE7QUE4ZUE7QUFDQTtBQUNBO0FBaGZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrZkE7QUFDQTtBQUNBO0FBcGZBO0FBQUE7QUFBQTtBQW1EQTtBQUNBO0FBQ0E7Ozs7QUFyREE7QUFBQTtBQUFBO0FBeURBO0FBQ0E7QUFDQTs7OztBQTNEQTtBQUFBO0FBQUE7QUErREE7QUFDQTtBQWhFQTtBQUFBO0FBQUE7QUEyRUE7QUFDQTtBQUNBOzs7O0FBN0VBO0FBQUE7QUFBQTtBQWlGQTtBQUNBO0FBQ0E7Ozs7QUFuRkE7QUFBQTtBQUFBO0FBdUZBO0FBQ0E7QUF4RkE7QUFBQTtBQUFBO0FBdWNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUF6Y0E7QUFBQTtBQUFBO0FBNmNBO0FBQ0E7QUE5Y0E7QUFBQTtBQUFBO0FBaWVBO0FBQ0E7QUFsZUE7QUFDQTtBQURBO0FBQUE7QUFzZkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUhBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBSEE7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFIQTtBQVVBO0FBS0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/item_manager.ts\n')},"./lib/services/migration_service.ts": /*!*******************************************!*\ !*** ./lib/services/migration_service.ts ***! \*******************************************/ /*! exports provided: SNMigrationService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNMigrationService", function() { return SNMigrationService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../events */ "./lib/events.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Lib_migrations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/migrations */ "./lib/migrations/index.ts");\n/* harmony import */ var _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/migrations/2020-01-01-base */ "./lib/migrations/2020-01-01-base.ts");\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n/**\n * The migration service orchestrates the execution of multi-stage migrations.\n * Migrations are registered during initial application launch, and listen for application\n * life-cycle events, and act accordingly. For example, a single migration may perform\n * a unique set of steps when the application first launches, and also other steps after the\n * application is unlocked, or after the first sync completes. Migrations live under /migrations\n * and inherit from the base Migration class.\n */\n\nvar SNMigrationService = /*#__PURE__*/function (_PureService) {\n _inherits(SNMigrationService, _PureService);\n\n function SNMigrationService(services) {\n var _this;\n\n _classCallCheck(this, SNMigrationService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNMigrationService).call(this));\n _this.services = services;\n _this.handledFullSyncStage = false;\n return _this;\n }\n\n _createClass(SNMigrationService, [{\n key: "deinit",\n value: function deinit() {\n this.services = undefined;\n\n if (this.activeMigrations) {\n this.activeMigrations.length = 0;\n }\n\n _get(_getPrototypeOf(SNMigrationService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initialize",\n value: function () {\n var _initialize = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var _this2 = this;\n\n var lastMigration;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.runBaseMigration();\n\n case 2:\n _context2.next = 4;\n return this.getRequiredMigrations();\n\n case 4:\n this.activeMigrations = _context2.sent;\n\n if (this.activeMigrations.length > 0) {\n lastMigration = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["lastElement"])(this.activeMigrations);\n lastMigration.onDone( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _this2.saveLastMigrationTimestamp(lastMigration.constructor.timestamp());\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n })));\n }\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function initialize() {\n return _initialize.apply(this, arguments);\n }\n\n return initialize;\n }()\n /**\n * Application instances will call this function directly when they arrive\n * at a certain migratory state.\n */\n\n }, {\n key: "handleApplicationStage",\n value: function () {\n var _handleApplicationStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(stage) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _get(_getPrototypeOf(SNMigrationService.prototype), "handleApplicationStage", this).call(this, stage);\n\n case 2:\n _context3.next = 4;\n return this.handleStage(stage);\n\n case 4:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function handleApplicationStage(_x) {\n return _handleApplicationStage.apply(this, arguments);\n }\n\n return handleApplicationStage;\n }()\n /**\n * Called by application\n */\n\n }, {\n key: "handleApplicationEvent",\n value: function () {\n var _handleApplicationEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(event) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(event === _events__WEBPACK_IMPORTED_MODULE_1__["ApplicationEvent"].SignedIn)) {\n _context4.next = 5;\n break;\n }\n\n _context4.next = 3;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].SignedIn_30);\n\n case 3:\n _context4.next = 10;\n break;\n\n case 5:\n if (!(event === _events__WEBPACK_IMPORTED_MODULE_1__["ApplicationEvent"].CompletedFullSync)) {\n _context4.next = 10;\n break;\n }\n\n if (this.handledFullSyncStage) {\n _context4.next = 10;\n break;\n }\n\n this.handledFullSyncStage = true;\n _context4.next = 10;\n return this.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].FullSyncCompleted_13);\n\n case 10:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function handleApplicationEvent(_x2) {\n return _handleApplicationEvent.apply(this, arguments);\n }\n\n return handleApplicationEvent;\n }()\n }, {\n key: "runBaseMigration",\n value: function () {\n var _runBaseMigration = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var baseMigration;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n baseMigration = new _Lib_migrations_2020_01_01_base__WEBPACK_IMPORTED_MODULE_4__["BaseMigration"](this.services);\n _context5.next = 3;\n return baseMigration.handleStage(_Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].PreparingForLaunch_0);\n\n case 3:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function runBaseMigration() {\n return _runBaseMigration.apply(this, arguments);\n }\n\n return runBaseMigration;\n }()\n }, {\n key: "getRequiredMigrations",\n value: function () {\n var _getRequiredMigrations = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n var lastMigrationTimestamp, activeMigrations, migrationClasses, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, migrationClass, migrationTimestamp;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.getLastMigrationTimestamp();\n\n case 2:\n lastMigrationTimestamp = _context6.sent;\n activeMigrations = [];\n migrationClasses = Object.keys(_Lib_migrations__WEBPACK_IMPORTED_MODULE_3__).map(function (key) {\n return _Lib_migrations__WEBPACK_IMPORTED_MODULE_3__[key];\n }).sort(function (a, b) {\n var aTimestamp = a.timestamp();\n var bTimestamp = b.timestamp();\n\n if (aTimestamp < bTimestamp) {\n return -1;\n } else if (aTimestamp > bTimestamp) {\n return 1;\n } else {\n return 0;\n }\n });\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context6.prev = 8;\n\n for (_iterator = migrationClasses[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n migrationClass = _step.value;\n migrationTimestamp = migrationClass.timestamp();\n\n if (migrationTimestamp > lastMigrationTimestamp) {\n // eslint-disable-next-line new-cap\n activeMigrations.push(new migrationClass(this.services));\n }\n }\n\n _context6.next = 16;\n break;\n\n case 12:\n _context6.prev = 12;\n _context6.t0 = _context6["catch"](8);\n _didIteratorError = true;\n _iteratorError = _context6.t0;\n\n case 16:\n _context6.prev = 16;\n _context6.prev = 17;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 19:\n _context6.prev = 19;\n\n if (!_didIteratorError) {\n _context6.next = 22;\n break;\n }\n\n throw _iteratorError;\n\n case 22:\n return _context6.finish(19);\n\n case 23:\n return _context6.finish(16);\n\n case 24:\n return _context6.abrupt("return", activeMigrations);\n\n case 25:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[8, 12, 16, 24], [17,, 19, 23]]);\n }));\n\n function getRequiredMigrations() {\n return _getRequiredMigrations.apply(this, arguments);\n }\n\n return getRequiredMigrations;\n }()\n /** @access private */\n\n }, {\n key: "getTimeStampKey",\n value: function getTimeStampKey() {\n return Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["namespacedKey"])(this.services.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_6__["RawStorageKey"].LastMigrationTimestamp);\n }\n }, {\n key: "getLastMigrationTimestamp",\n value: function () {\n var _getLastMigrationTimestamp = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n var timestamp;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.services.deviceInterface.getRawStorageValue(this.getTimeStampKey());\n\n case 2:\n timestamp = _context7.sent;\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(timestamp)) {\n _context7.next = 5;\n break;\n }\n\n throw \'Timestamp should not be null. Be sure to run base migration first.\';\n\n case 5:\n return _context7.abrupt("return", JSON.parse(timestamp));\n\n case 6:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getLastMigrationTimestamp() {\n return _getLastMigrationTimestamp.apply(this, arguments);\n }\n\n return getLastMigrationTimestamp;\n }()\n }, {\n key: "saveLastMigrationTimestamp",\n value: function () {\n var _saveLastMigrationTimestamp = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(timestamp) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.services.deviceInterface.setRawStorageValue(this.getTimeStampKey(), JSON.stringify(timestamp));\n\n case 2:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function saveLastMigrationTimestamp(_x3) {\n return _saveLastMigrationTimestamp.apply(this, arguments);\n }\n\n return saveLastMigrationTimestamp;\n }()\n }, {\n key: "handleStage",\n value: function () {\n var _handleStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(stage) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, migration;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context9.prev = 3;\n _iterator2 = this.activeMigrations[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context9.next = 12;\n break;\n }\n\n migration = _step2.value;\n _context9.next = 9;\n return migration.handleStage(stage);\n\n case 9:\n _iteratorNormalCompletion2 = true;\n _context9.next = 5;\n break;\n\n case 12:\n _context9.next = 18;\n break;\n\n case 14:\n _context9.prev = 14;\n _context9.t0 = _context9["catch"](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context9.t0;\n\n case 18:\n _context9.prev = 18;\n _context9.prev = 19;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 21:\n _context9.prev = 21;\n\n if (!_didIteratorError2) {\n _context9.next = 24;\n break;\n }\n\n throw _iteratorError2;\n\n case 24:\n return _context9.finish(21);\n\n case 25:\n return _context9.finish(18);\n\n case 26:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function handleStage(_x4) {\n return _handleStage.apply(this, arguments);\n }\n\n return handleStage;\n }()\n }]);\n\n return SNMigrationService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvbWlncmF0aW9uX3NlcnZpY2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvbWlncmF0aW9uX3NlcnZpY2UudHM/NjcxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkV2ZW50IH0gZnJvbSAnLi8uLi9ldmVudHMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TdGFnZSB9IGZyb20gJ0BMaWIvc3RhZ2VzJztcbmltcG9ydCAqIGFzIG1pZ3JhdGlvbkltcG9ydHMgZnJvbSAnQExpYi9taWdyYXRpb25zJztcbmltcG9ydCB7IEJhc2VNaWdyYXRpb24gfSBmcm9tICdATGliL21pZ3JhdGlvbnMvMjAyMC0wMS0wMS1iYXNlJztcbmltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSAnQFNlcnZpY2VzL3B1cmVfc2VydmljZSc7XG5pbXBvcnQgeyBuYW1lc3BhY2VkS2V5LCBSYXdTdG9yYWdlS2V5IH0gZnJvbSAnQExpYi9zdG9yYWdlX2tleXMnO1xuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIGxhc3RFbGVtZW50IH0gZnJvbSAnQExpYi91dGlscyc7XG4vKipcbiAqIFRoZSBtaWdyYXRpb24gc2VydmljZSBvcmNoZXN0cmF0ZXMgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aS1zdGFnZSBtaWdyYXRpb25zLlxuICogTWlncmF0aW9ucyBhcmUgcmVnaXN0ZXJlZCBkdXJpbmcgaW5pdGlhbCBhcHBsaWNhdGlvbiBsYXVuY2gsIGFuZCBsaXN0ZW4gZm9yIGFwcGxpY2F0aW9uXG4gKiBsaWZlLWN5Y2xlIGV2ZW50cywgYW5kIGFjdCBhY2NvcmRpbmdseS4gRm9yIGV4YW1wbGUsIGEgc2luZ2xlIG1pZ3JhdGlvbiBtYXkgcGVyZm9ybVxuICogYSB1bmlxdWUgc2V0IG9mIHN0ZXBzIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGZpcnN0IGxhdW5jaGVzLCBhbmQgYWxzbyBvdGhlciBzdGVwcyBhZnRlciB0aGVcbiAqIGFwcGxpY2F0aW9uIGlzIHVubG9ja2VkLCBvciBhZnRlciB0aGUgZmlyc3Qgc3luYyBjb21wbGV0ZXMuIE1pZ3JhdGlvbnMgbGl2ZSB1bmRlciAvbWlncmF0aW9uc1xuICogYW5kIGluaGVyaXQgZnJvbSB0aGUgYmFzZSBNaWdyYXRpb24gY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBTTk1pZ3JhdGlvblNlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3Ioc2VydmljZXMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IHNlcnZpY2VzO1xuICAgICAgICB0aGlzLmhhbmRsZWRGdWxsU3luY1N0YWdlID0gZmFsc2U7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXJ2aWNlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTWlncmF0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNaWdyYXRpb25zLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIuZGVpbml0KCk7XG4gICAgfVxuICAgIGFzeW5jIGluaXRpYWxpemUoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuQmFzZU1pZ3JhdGlvbigpO1xuICAgICAgICB0aGlzLmFjdGl2ZU1pZ3JhdGlvbnMgPSBhd2FpdCB0aGlzLmdldFJlcXVpcmVkTWlncmF0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVNaWdyYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RNaWdyYXRpb24gPSBsYXN0RWxlbWVudCh0aGlzLmFjdGl2ZU1pZ3JhdGlvbnMpO1xuICAgICAgICAgICAgbGFzdE1pZ3JhdGlvbi5vbkRvbmUoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUxhc3RNaWdyYXRpb25UaW1lc3RhbXAobGFzdE1pZ3JhdGlvbi5jb25zdHJ1Y3Rvci50aW1lc3RhbXAoKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBBcHBsaWNhdGlvbiBpbnN0YW5jZXMgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgd2hlbiB0aGV5IGFycml2ZVxuICAgICAqIGF0IGEgY2VydGFpbiBtaWdyYXRvcnkgc3RhdGUuXG4gICAgICovXG4gICAgYXN5bmMgaGFuZGxlQXBwbGljYXRpb25TdGFnZShzdGFnZSkge1xuICAgICAgICBhd2FpdCBzdXBlci5oYW5kbGVBcHBsaWNhdGlvblN0YWdlKHN0YWdlKTtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdGFnZShzdGFnZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhcHBsaWNhdGlvblxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZUFwcGxpY2F0aW9uRXZlbnQoZXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50ID09PSBBcHBsaWNhdGlvbkV2ZW50LlNpZ25lZEluKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuU2lnbmVkSW5fMzApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50ID09PSBBcHBsaWNhdGlvbkV2ZW50LkNvbXBsZXRlZEZ1bGxTeW5jKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaGFuZGxlZEZ1bGxTeW5jU3RhZ2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZWRGdWxsU3luY1N0YWdlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0YWdlKEFwcGxpY2F0aW9uU3RhZ2UuRnVsbFN5bmNDb21wbGV0ZWRfMTMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHJ1bkJhc2VNaWdyYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGJhc2VNaWdyYXRpb24gPSBuZXcgQmFzZU1pZ3JhdGlvbih0aGlzLnNlcnZpY2VzKTtcbiAgICAgICAgYXdhaXQgYmFzZU1pZ3JhdGlvbi5oYW5kbGVTdGFnZShBcHBsaWNhdGlvblN0YWdlLlByZXBhcmluZ0ZvckxhdW5jaF8wKTtcbiAgICB9XG4gICAgYXN5bmMgZ2V0UmVxdWlyZWRNaWdyYXRpb25zKCkge1xuICAgICAgICBjb25zdCBsYXN0TWlncmF0aW9uVGltZXN0YW1wID0gYXdhaXQgdGhpcy5nZXRMYXN0TWlncmF0aW9uVGltZXN0YW1wKCk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU1pZ3JhdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgbWlncmF0aW9uQ2xhc3NlcyA9IE9iamVjdC5rZXlzKG1pZ3JhdGlvbkltcG9ydHMpLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWlncmF0aW9uSW1wb3J0c1trZXldO1xuICAgICAgICB9KS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhVGltZXN0YW1wID0gYS50aW1lc3RhbXAoKTtcbiAgICAgICAgICAgIGNvbnN0IGJUaW1lc3RhbXAgPSBiLnRpbWVzdGFtcCgpO1xuICAgICAgICAgICAgaWYgKGFUaW1lc3RhbXAgPCBiVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoYVRpbWVzdGFtcCA+IGJUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBtaWdyYXRpb25DbGFzcyBvZiBtaWdyYXRpb25DbGFzc2VzKSB7XG4gICAgICAgICAgICBjb25zdCBtaWdyYXRpb25UaW1lc3RhbXAgPSBtaWdyYXRpb25DbGFzcy50aW1lc3RhbXAoKTtcbiAgICAgICAgICAgIGlmIChtaWdyYXRpb25UaW1lc3RhbXAgPiBsYXN0TWlncmF0aW9uVGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgICAgICAgICAgICBhY3RpdmVNaWdyYXRpb25zLnB1c2gobmV3IG1pZ3JhdGlvbkNsYXNzKHRoaXMuc2VydmljZXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aXZlTWlncmF0aW9ucztcbiAgICB9XG4gICAgLyoqIEBhY2Nlc3MgcHJpdmF0ZSAqL1xuICAgIGdldFRpbWVTdGFtcEtleSgpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZWRLZXkodGhpcy5zZXJ2aWNlcy5uYW1lc3BhY2UsIFJhd1N0b3JhZ2VLZXkuTGFzdE1pZ3JhdGlvblRpbWVzdGFtcCk7XG4gICAgfVxuICAgIGFzeW5jIGdldExhc3RNaWdyYXRpb25UaW1lc3RhbXAoKSB7XG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IGF3YWl0IHRoaXMuc2VydmljZXMuZGV2aWNlSW50ZXJmYWNlLmdldFJhd1N0b3JhZ2VWYWx1ZSh0aGlzLmdldFRpbWVTdGFtcEtleSgpKTtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRpbWVzdGFtcCkpIHtcbiAgICAgICAgICAgIHRocm93ICdUaW1lc3RhbXAgc2hvdWxkIG5vdCBiZSBudWxsLiBCZSBzdXJlIHRvIHJ1biBiYXNlIG1pZ3JhdGlvbiBmaXJzdC4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKHRpbWVzdGFtcCk7XG4gICAgfVxuICAgIGFzeW5jIHNhdmVMYXN0TWlncmF0aW9uVGltZXN0YW1wKHRpbWVzdGFtcCkge1xuICAgICAgICBhd2FpdCB0aGlzLnNlcnZpY2VzLmRldmljZUludGVyZmFjZS5zZXRSYXdTdG9yYWdlVmFsdWUodGhpcy5nZXRUaW1lU3RhbXBLZXkoKSwgSlNPTi5zdHJpbmdpZnkodGltZXN0YW1wKSk7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVN0YWdlKHN0YWdlKSB7XG4gICAgICAgIGZvciAoY29uc3QgbWlncmF0aW9uIG9mIHRoaXMuYWN0aXZlTWlncmF0aW9ucykge1xuICAgICAgICAgICAgYXdhaXQgbWlncmF0aW9uLmhhbmRsZVN0YWdlKHN0YWdlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBSUE7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBdUJBOzs7OztBQXZCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBK0JBOzs7O0FBL0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBdUNBO0FBeENBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4Q0E7QUE5Q0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFrREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFsRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFFQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNEVBO0FBQ0E7QUE3RUE7QUFBQTtBQUFBO0FBOEVBO0FBQ0E7QUEvRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpRkE7QUFDQTtBQWxGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMEZBO0FBM0ZBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/migration_service.ts\n')},"./lib/services/model_manager.ts": /*!***************************************!*\ !*** ./lib/services/model_manager.ts ***! \***************************************/ /*! exports provided: PayloadManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PayloadManager", function() { return PayloadManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/protocol/payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _protocol_payloads_deltas_file_import__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../protocol/payloads/deltas/file_import */ "./lib/protocol/payloads/deltas/file_import.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_protocol_collection_collection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/protocol/collection/collection */ "./lib/protocol/collection/collection.ts");\n/* harmony import */ var _Lib_protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Lib/protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n/**\n * The model manager is responsible for keeping state regarding what items exist in the\n * global application state. It does so by exposing functions that allow consumers to \'map\'\n * a detached payload into global application state. Whenever a change is made or retrieved\n * from any source, it must be mapped in order to be properly reflected in global application state.\n * The model manager deals only with in-memory state, and does not deal directly with storage.\n * It also serves as a query store, and can be queried for current notes, tags, etc.\n * It exposes methods that allow consumers to listen to mapping events. This is how\n * applications \'stream\' items to display in the interface.\n */\n\nvar PayloadManager = /*#__PURE__*/function (_PureService) {\n _inherits(PayloadManager, _PureService);\n\n function PayloadManager() {\n var _this;\n\n _classCallCheck(this, PayloadManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PayloadManager).call(this));\n _this.changeObservers = [];\n _this.emitQueue = [];\n _this.collection = new _Lib_protocol_collection_collection__WEBPACK_IMPORTED_MODULE_8__["MutableCollection"]();\n return _this;\n }\n /**\n * Our payload collection keeps the latest mapped payload for every payload\n * that passes through our mapping function. Use this to query current state\n * as needed to make decisions, like about duplication or uuid alteration.\n */\n\n\n _createClass(PayloadManager, [{\n key: "getMasterCollection",\n value: function getMasterCollection() {\n return _Lib_protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_9__["ImmutablePayloadCollection"].FromCollection(this.collection);\n }\n }, {\n key: "deinit",\n value: function deinit() {\n _get(_getPrototypeOf(PayloadManager.prototype), "deinit", this).call(this);\n\n this.changeObservers.length = 0;\n this.resetState();\n }\n }, {\n key: "resetState",\n value: function resetState() {\n this.collection = new _Lib_protocol_collection_collection__WEBPACK_IMPORTED_MODULE_8__["MutableCollection"]();\n }\n }, {\n key: "find",\n value: function find(uuids) {\n return this.collection.findAll(uuids);\n }\n /**\n * One of many mapping helpers available.\n * This function maps a collection of payloads.\n */\n\n }, {\n key: "emitCollection",\n value: function () {\n var _emitCollection = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(collection, sourceKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt("return", this.emitPayloads(collection.all(), collection.source, sourceKey));\n\n case 1:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function emitCollection(_x, _x2) {\n return _emitCollection.apply(this, arguments);\n }\n\n return emitCollection;\n }()\n /**\n * One of many mapping helpers available.\n * This function maps a payload to an item\n * @returns The mapped item\n */\n\n }, {\n key: "emitPayload",\n value: function () {\n var _emitPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payload, source, sourceKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.emitPayloads([payload], source, sourceKey);\n\n case 2:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function emitPayload(_x3, _x4, _x5) {\n return _emitPayload.apply(this, arguments);\n }\n\n return emitPayload;\n }()\n /**\n * This function maps multiple payloads to items, and is the authoratative mapping\n * function that all other mapping helpers rely on\n */\n\n }, {\n key: "emitPayloads",\n value: function () {\n var _emitPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(payloads, source, sourceKey) {\n var _this2 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (payloads.length === 0) {\n console.warn("Attempting to emit 0 payloads.");\n }\n\n return _context3.abrupt("return", new Promise(function (resolve) {\n _this2.emitQueue.push({\n payloads: payloads,\n source: source,\n sourceKey: sourceKey,\n resolve: resolve\n });\n\n if (_this2.emitQueue.length === 1) {\n _this2.popQueue();\n }\n }));\n\n case 2:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function emitPayloads(_x6, _x7, _x8) {\n return _emitPayloads.apply(this, arguments);\n }\n\n return emitPayloads;\n }()\n }, {\n key: "popQueue",\n value: function () {\n var _popQueue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var first, _this$mergePayloadsOn, changed, inserted, discarded;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n first = this.emitQueue[0];\n _this$mergePayloadsOn = this.mergePayloadsOntoMaster(first.payloads), changed = _this$mergePayloadsOn.changed, inserted = _this$mergePayloadsOn.inserted, discarded = _this$mergePayloadsOn.discarded;\n this.notifyChangeObservers(changed, inserted, discarded, first.source, first.sourceKey);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(this.emitQueue, first);\n first.resolve();\n\n if (this.emitQueue.length > 0) {\n this.popQueue();\n }\n\n case 6:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function popQueue() {\n return _popQueue.apply(this, arguments);\n }\n\n return popQueue;\n }()\n }, {\n key: "mergePayloadsOntoMaster",\n value: function mergePayloadsOntoMaster(payloads) {\n var changed = [];\n var inserted = [];\n var discarded = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = payloads[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var payload = _step.value;\n\n if (!payload.uuid || !payload.content_type) {\n console.error(\'Payload is corrupt:\', payload);\n continue;\n }\n\n var masterPayload = this.collection.find(payload.uuid);\n var newPayload = masterPayload ? Object(_Lib_protocol_payloads_generator__WEBPACK_IMPORTED_MODULE_2__["PayloadByMerging"])(masterPayload, payload) : payload;\n /** The item has been deleted and synced,\n * and can thus be removed from our local record */\n\n if (newPayload.discardable) {\n this.collection.discard(newPayload);\n discarded.push(newPayload);\n } else {\n this.collection.set(newPayload);\n\n if (!masterPayload) {\n inserted.push(newPayload);\n } else {\n changed.push(newPayload);\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return {\n changed: changed,\n inserted: inserted,\n discarded: discarded\n };\n }\n /**\n * Notifies observers when an item has been mapped.\n * @param types - An array of content types to listen for\n * @param priority - The lower the priority, the earlier the function is called\n * wrt to other observers\n */\n\n }, {\n key: "addObserver",\n value: function addObserver(types, callback) {\n var _this3 = this;\n\n var priority = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n var observer = {\n types: types,\n priority: priority,\n callback: callback\n };\n this.changeObservers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(_this3.changeObservers, observer);\n };\n }\n /**\n * This function is mostly for internal use, but can be used externally by consumers who\n * explicitely understand what they are doing (want to propagate model state without mapping)\n */\n\n }, {\n key: "notifyChangeObservers",\n value: function notifyChangeObservers(changed, inserted, discarded, source, sourceKey) {\n /** Slice the observers array as sort modifies in-place */\n var observers = this.changeObservers.slice().sort(function (a, b) {\n return a.priority < b.priority ? -1 : 1;\n });\n\n var filter = function filter(payloads, types) {\n return types.includes(_models_content_types__WEBPACK_IMPORTED_MODULE_5__["ContentType"].Any) ? payloads.slice() : payloads.slice().filter(function (payload) {\n return types.includes(payload.content_type);\n });\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = observers[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var observer = _step2.value;\n observer.callback(filter(changed, observer.types), filter(inserted, observer.types), filter(discarded, observer.types), source, sourceKey);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n /**\n * Imports an array of payloads from an external source (such as a backup file)\n * and marks the items as dirty.\n * @returns Resulting items\n */\n\n }, {\n key: "importPayloads",\n value: function () {\n var _importPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(payloads) {\n var delta, collection;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n delta = new _protocol_payloads_deltas_file_import__WEBPACK_IMPORTED_MODULE_3__["DeltaFileImport"](this.getMasterCollection(), _Lib_protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_9__["ImmutablePayloadCollection"].WithPayloads(payloads, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_4__["PayloadSource"].FileImport));\n _context5.next = 3;\n return delta.resultingCollection();\n\n case 3:\n collection = _context5.sent;\n _context5.next = 6;\n return this.emitCollection(collection);\n\n case 6:\n return _context5.abrupt("return", Object(_Models_functions__WEBPACK_IMPORTED_MODULE_6__["Uuids"])(collection.payloads));\n\n case 7:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function importPayloads(_x9) {\n return _importPayloads.apply(this, arguments);\n }\n\n return importPayloads;\n }()\n }, {\n key: "removePayloadLocally",\n value: function removePayloadLocally(payload) {\n this.collection.discard(payload);\n }\n }]);\n\n return PayloadManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_7__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvbW9kZWxfbWFuYWdlci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9tb2RlbF9tYW5hZ2VyLnRzP2Y1NjkiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVtb3ZlRnJvbUFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBQYXlsb2FkQnlNZXJnaW5nIH0gZnJvbSAnQExpYi9wcm90b2NvbC9wYXlsb2Fkcy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgRGVsdGFGaWxlSW1wb3J0IH0gZnJvbSAnLi8uLi9wcm90b2NvbC9wYXlsb2Fkcy9kZWx0YXMvZmlsZV9pbXBvcnQnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJy4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4vLi4vbW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgVXVpZHMgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IE11dGFibGVDb2xsZWN0aW9uIH0gZnJvbSAnQExpYi9wcm90b2NvbC9jb2xsZWN0aW9uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tICdATGliL3Byb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uJztcbi8qKlxuICogVGhlIG1vZGVsIG1hbmFnZXIgaXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgc3RhdGUgcmVnYXJkaW5nIHdoYXQgaXRlbXMgZXhpc3QgaW4gdGhlXG4gKiBnbG9iYWwgYXBwbGljYXRpb24gc3RhdGUuIEl0IGRvZXMgc28gYnkgZXhwb3NpbmcgZnVuY3Rpb25zIHRoYXQgYWxsb3cgY29uc3VtZXJzIHRvICdtYXAnXG4gKiBhIGRldGFjaGVkIHBheWxvYWQgaW50byBnbG9iYWwgYXBwbGljYXRpb24gc3RhdGUuIFdoZW5ldmVyIGEgY2hhbmdlIGlzIG1hZGUgb3IgcmV0cmlldmVkXG4gKiBmcm9tIGFueSBzb3VyY2UsIGl0IG11c3QgYmUgbWFwcGVkIGluIG9yZGVyIHRvIGJlIHByb3Blcmx5IHJlZmxlY3RlZCBpbiBnbG9iYWwgYXBwbGljYXRpb24gc3RhdGUuXG4gKiBUaGUgbW9kZWwgbWFuYWdlciBkZWFscyBvbmx5IHdpdGggaW4tbWVtb3J5IHN0YXRlLCBhbmQgZG9lcyBub3QgZGVhbCBkaXJlY3RseSB3aXRoIHN0b3JhZ2UuXG4gKiBJdCBhbHNvIHNlcnZlcyBhcyBhIHF1ZXJ5IHN0b3JlLCBhbmQgY2FuIGJlIHF1ZXJpZWQgZm9yIGN1cnJlbnQgbm90ZXMsIHRhZ3MsIGV0Yy5cbiAqIEl0IGV4cG9zZXMgbWV0aG9kcyB0aGF0IGFsbG93IGNvbnN1bWVycyB0byBsaXN0ZW4gdG8gbWFwcGluZyBldmVudHMuIFRoaXMgaXMgaG93XG4gKiBhcHBsaWNhdGlvbnMgJ3N0cmVhbScgaXRlbXMgdG8gZGlzcGxheSBpbiB0aGUgaW50ZXJmYWNlLlxuICovXG5leHBvcnQgY2xhc3MgUGF5bG9hZE1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2hhbmdlT2JzZXJ2ZXJzID0gW107XG4gICAgICAgIHRoaXMuZW1pdFF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IG5ldyBNdXRhYmxlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPdXIgcGF5bG9hZCBjb2xsZWN0aW9uIGtlZXBzIHRoZSBsYXRlc3QgbWFwcGVkIHBheWxvYWQgZm9yIGV2ZXJ5IHBheWxvYWRcbiAgICAgKiB0aGF0IHBhc3NlcyB0aHJvdWdoIG91ciBtYXBwaW5nIGZ1bmN0aW9uLiBVc2UgdGhpcyB0byBxdWVyeSBjdXJyZW50IHN0YXRlXG4gICAgICogYXMgbmVlZGVkIHRvIG1ha2UgZGVjaXNpb25zLCBsaWtlIGFib3V0IGR1cGxpY2F0aW9uIG9yIHV1aWQgYWx0ZXJhdGlvbi5cbiAgICAgKi9cbiAgICBnZXRNYXN0ZXJDb2xsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uRnJvbUNvbGxlY3Rpb24odGhpcy5jb2xsZWN0aW9uKTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICAgICAgdGhpcy5jaGFuZ2VPYnNlcnZlcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5yZXNldFN0YXRlKCk7XG4gICAgfVxuICAgIHJlc2V0U3RhdGUoKSB7XG4gICAgICAgIHRoaXMuY29sbGVjdGlvbiA9IG5ldyBNdXRhYmxlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgICBmaW5kKHV1aWRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbGxlY3Rpb24uZmluZEFsbCh1dWlkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE9uZSBvZiBtYW55IG1hcHBpbmcgaGVscGVycyBhdmFpbGFibGUuXG4gICAgICogVGhpcyBmdW5jdGlvbiBtYXBzIGEgY29sbGVjdGlvbiBvZiBwYXlsb2Fkcy5cbiAgICAgKi9cbiAgICBhc3luYyBlbWl0Q29sbGVjdGlvbihjb2xsZWN0aW9uLCBzb3VyY2VLZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1pdFBheWxvYWRzKGNvbGxlY3Rpb24uYWxsKCksIGNvbGxlY3Rpb24uc291cmNlLCBzb3VyY2VLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBPbmUgb2YgbWFueSBtYXBwaW5nIGhlbHBlcnMgYXZhaWxhYmxlLlxuICAgICAqIFRoaXMgZnVuY3Rpb24gbWFwcyBhIHBheWxvYWQgdG8gYW4gaXRlbVxuICAgICAqIEByZXR1cm5zIFRoZSBtYXBwZWQgaXRlbVxuICAgICAqL1xuICAgIGFzeW5jIGVtaXRQYXlsb2FkKHBheWxvYWQsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdFBheWxvYWRzKFtwYXlsb2FkXSwgc291cmNlLCBzb3VyY2VLZXkpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIG1hcHMgbXVsdGlwbGUgcGF5bG9hZHMgdG8gaXRlbXMsIGFuZCBpcyB0aGUgYXV0aG9yYXRhdGl2ZSBtYXBwaW5nXG4gICAgICogZnVuY3Rpb24gdGhhdCBhbGwgb3RoZXIgbWFwcGluZyBoZWxwZXJzIHJlbHkgb25cbiAgICAgKi9cbiAgICBhc3luYyBlbWl0UGF5bG9hZHMocGF5bG9hZHMsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIGlmIChwYXlsb2Fkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkF0dGVtcHRpbmcgdG8gZW1pdCAwIHBheWxvYWRzLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZW1pdFF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIHBheWxvYWRzLFxuICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VLZXksXG4gICAgICAgICAgICAgICAgcmVzb2x2ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5lbWl0UXVldWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BRdWV1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcG9wUXVldWUoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5lbWl0UXVldWVbMF07XG4gICAgICAgIGNvbnN0IHsgY2hhbmdlZCwgaW5zZXJ0ZWQsIGRpc2NhcmRlZCB9ID0gdGhpcy5tZXJnZVBheWxvYWRzT250b01hc3RlcihmaXJzdC5wYXlsb2Fkcyk7XG4gICAgICAgIHRoaXMubm90aWZ5Q2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIGZpcnN0LnNvdXJjZSwgZmlyc3Quc291cmNlS2V5KTtcbiAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMuZW1pdFF1ZXVlLCBmaXJzdCk7XG4gICAgICAgIGZpcnN0LnJlc29sdmUoKTtcbiAgICAgICAgaWYgKHRoaXMuZW1pdFF1ZXVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucG9wUXVldWUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBtZXJnZVBheWxvYWRzT250b01hc3RlcihwYXlsb2Fkcykge1xuICAgICAgICBjb25zdCBjaGFuZ2VkID0gW107XG4gICAgICAgIGNvbnN0IGluc2VydGVkID0gW107XG4gICAgICAgIGNvbnN0IGRpc2NhcmRlZCA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgcGF5bG9hZHMpIHtcbiAgICAgICAgICAgIGlmICghcGF5bG9hZC51dWlkIHx8ICFwYXlsb2FkLmNvbnRlbnRfdHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1BheWxvYWQgaXMgY29ycnVwdDonLCBwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG1hc3RlclBheWxvYWQgPSB0aGlzLmNvbGxlY3Rpb24uZmluZChwYXlsb2FkLnV1aWQpO1xuICAgICAgICAgICAgY29uc3QgbmV3UGF5bG9hZCA9IG1hc3RlclBheWxvYWQgPyBQYXlsb2FkQnlNZXJnaW5nKG1hc3RlclBheWxvYWQsIHBheWxvYWQpIDogcGF5bG9hZDtcbiAgICAgICAgICAgIC8qKiBUaGUgaXRlbSBoYXMgYmVlbiBkZWxldGVkIGFuZCBzeW5jZWQsXG4gICAgICAgICAgICAgKiBhbmQgY2FuIHRodXMgYmUgcmVtb3ZlZCBmcm9tIG91ciBsb2NhbCByZWNvcmQgKi9cbiAgICAgICAgICAgIGlmIChuZXdQYXlsb2FkLmRpc2NhcmRhYmxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsZWN0aW9uLmRpc2NhcmQobmV3UGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgZGlzY2FyZGVkLnB1c2gobmV3UGF5bG9hZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbGxlY3Rpb24uc2V0KG5ld1BheWxvYWQpO1xuICAgICAgICAgICAgICAgIGlmICghbWFzdGVyUGF5bG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRlZC5wdXNoKG5ld1BheWxvYWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlZC5wdXNoKG5ld1BheWxvYWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBjaGFuZ2VkLCBpbnNlcnRlZCwgZGlzY2FyZGVkIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIG9ic2VydmVycyB3aGVuIGFuIGl0ZW0gaGFzIGJlZW4gbWFwcGVkLlxuICAgICAqIEBwYXJhbSB0eXBlcyAtIEFuIGFycmF5IG9mIGNvbnRlbnQgdHlwZXMgdG8gbGlzdGVuIGZvclxuICAgICAqIEBwYXJhbSBwcmlvcml0eSAtIFRoZSBsb3dlciB0aGUgcHJpb3JpdHksIHRoZSBlYXJsaWVyIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWRcbiAgICAgKiAgd3J0IHRvIG90aGVyIG9ic2VydmVyc1xuICAgICAqL1xuICAgIGFkZE9ic2VydmVyKHR5cGVzLCBjYWxsYmFjaywgcHJpb3JpdHkgPSAxKSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh0eXBlcykpIHtcbiAgICAgICAgICAgIHR5cGVzID0gW3R5cGVzXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvYnNlcnZlciA9IHtcbiAgICAgICAgICAgIHR5cGVzLFxuICAgICAgICAgICAgcHJpb3JpdHksXG4gICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNoYW5nZU9ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZUZyb21BcnJheSh0aGlzLmNoYW5nZU9ic2VydmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIG1vc3RseSBmb3IgaW50ZXJuYWwgdXNlLCBidXQgY2FuIGJlIHVzZWQgZXh0ZXJuYWxseSBieSBjb25zdW1lcnMgd2hvXG4gICAgICogZXhwbGljaXRlbHkgdW5kZXJzdGFuZCB3aGF0IHRoZXkgYXJlIGRvaW5nICh3YW50IHRvIHByb3BhZ2F0ZSBtb2RlbCBzdGF0ZSB3aXRob3V0IG1hcHBpbmcpXG4gICAgICovXG4gICAgbm90aWZ5Q2hhbmdlT2JzZXJ2ZXJzKGNoYW5nZWQsIGluc2VydGVkLCBkaXNjYXJkZWQsIHNvdXJjZSwgc291cmNlS2V5KSB7XG4gICAgICAgIC8qKiBTbGljZSB0aGUgb2JzZXJ2ZXJzIGFycmF5IGFzIHNvcnQgbW9kaWZpZXMgaW4tcGxhY2UgKi9cbiAgICAgICAgY29uc3Qgb2JzZXJ2ZXJzID0gdGhpcy5jaGFuZ2VPYnNlcnZlcnMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSA8IGIucHJpb3JpdHkgPyAtMSA6IDE7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSAocGF5bG9hZHMsIHR5cGVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZXMuaW5jbHVkZXMoQ29udGVudFR5cGUuQW55KVxuICAgICAgICAgICAgICAgID8gcGF5bG9hZHMuc2xpY2UoKVxuICAgICAgICAgICAgICAgIDogcGF5bG9hZHMuc2xpY2UoKS5maWx0ZXIoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVzLmluY2x1ZGVzKHBheWxvYWQuY29udGVudF90eXBlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiBvYnNlcnZlcnMpIHtcbiAgICAgICAgICAgIG9ic2VydmVyLmNhbGxiYWNrKGZpbHRlcihjaGFuZ2VkLCBvYnNlcnZlci50eXBlcyksIGZpbHRlcihpbnNlcnRlZCwgb2JzZXJ2ZXIudHlwZXMpLCBmaWx0ZXIoZGlzY2FyZGVkLCBvYnNlcnZlci50eXBlcyksIHNvdXJjZSwgc291cmNlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbXBvcnRzIGFuIGFycmF5IG9mIHBheWxvYWRzIGZyb20gYW4gZXh0ZXJuYWwgc291cmNlIChzdWNoIGFzIGEgYmFja3VwIGZpbGUpXG4gICAgICogYW5kIG1hcmtzIHRoZSBpdGVtcyBhcyBkaXJ0eS5cbiAgICAgKiBAcmV0dXJucyBSZXN1bHRpbmcgaXRlbXNcbiAgICAgKi9cbiAgICBhc3luYyBpbXBvcnRQYXlsb2FkcyhwYXlsb2Fkcykge1xuICAgICAgICBjb25zdCBkZWx0YSA9IG5ldyBEZWx0YUZpbGVJbXBvcnQodGhpcy5nZXRNYXN0ZXJDb2xsZWN0aW9uKCksIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5GaWxlSW1wb3J0KSk7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBhd2FpdCBkZWx0YS5yZXN1bHRpbmdDb2xsZWN0aW9uKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuZW1pdENvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgICAgIHJldHVybiBVdWlkcyhjb2xsZWN0aW9uLnBheWxvYWRzKTtcbiAgICB9XG4gICAgcmVtb3ZlUGF5bG9hZExvY2FsbHkocGF5bG9hZCkge1xuICAgICAgICB0aGlzLmNvbGxlY3Rpb24uZGlzY2FyZChwYXlsb2FkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFLQTtBQUNBOzs7Ozs7O0FBUEE7QUFBQTtBQUFBO0FBYUE7QUFDQTtBQWRBO0FBQUE7QUFBQTtBQWdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBbkJBO0FBQUE7QUFBQTtBQXFCQTtBQUNBO0FBdEJBO0FBQUE7QUFBQTtBQXdCQTtBQUNBO0FBQ0E7Ozs7O0FBMUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlDQTs7Ozs7O0FBakNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBeUNBOzs7OztBQXpDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQThDQTtBQUNBO0FBQ0E7QUFDQTtBQWpEQTtBQWtEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBOERBO0FBOURBO0FBZ0VBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF0RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdFQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBSUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUExQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7Ozs7O0FBcEdBO0FBQUE7QUFBQTtBQTBHQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUF4SEE7QUFBQTtBQUFBO0FBNkhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBWUE7QUFBQTtBQUNBO0FBQ0E7QUFkQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUE7QUFDQTs7Ozs7O0FBNUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtKQTtBQWxKQTtBQUFBO0FBQ0E7QUFEQTtBQW1KQTtBQW5KQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0pBO0FBQ0E7QUF6SkE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/model_manager.ts\n')},"./lib/services/privileges_service.ts": /*!********************************************!*\ !*** ./lib/services/privileges_service.ts ***! \********************************************/ /*! exports provided: PrivilegeSessionLength, SNPrivilegesService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrivilegeSessionLength", function() { return PrivilegeSessionLength; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNPrivilegesService", function() { return SNPrivilegesService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Models_core_predicate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/core/predicate */ "./lib/models/core/predicate.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_models__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/models */ "./lib/models/index.ts");\n/* harmony import */ var _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/app/privileges */ "./lib/models/app/privileges.ts");\n\n\nvar _CredentialsMetadata, _ActionsMetadata;\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\nvar PrivilegeSessionLength;\n\n(function (PrivilegeSessionLength) {\n PrivilegeSessionLength[PrivilegeSessionLength["None"] = 0] = "None";\n PrivilegeSessionLength[PrivilegeSessionLength["FiveMinutes"] = 300] = "FiveMinutes";\n PrivilegeSessionLength[PrivilegeSessionLength["OneHour"] = 3600] = "OneHour";\n PrivilegeSessionLength[PrivilegeSessionLength["OneWeek"] = 604800] = "OneWeek";\n})(PrivilegeSessionLength || (PrivilegeSessionLength = {}));\n\nvar CredentialsMetadata = (_CredentialsMetadata = {}, _defineProperty(_CredentialsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword, {\n label: \'Account Password\',\n prompt: \'Please enter your account password.\'\n}), _defineProperty(_CredentialsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode, {\n label: \'Local Passcode\',\n prompt: \'Please enter your local passcode.\'\n}), _CredentialsMetadata);\nvar ActionsMetadata = (_ActionsMetadata = {}, _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManageExtensions, {\n label: \'Manage Extensions\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManageBackups, {\n label: \'Download/Import Backups\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ViewProtectedNotes, {\n label: \'View Protected Notes\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManagePrivileges, {\n label: \'Manage Privileges\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].ManagePasscode, {\n label: \'Manage Passcode\'\n}), _defineProperty(_ActionsMetadata, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"].DeleteNote, {\n label: \'Delete Notes\'\n}), _ActionsMetadata);\n/**\n * Privileges allows certain actions within the application to require extra authentication.\n * For example, the privileges service exposes functions that allow the action of deleting\n * a note or viewing a note to require extra authentication.\n * Privileges are a superficial-level locking feature; they do not deal at all with underlying\n * data state. For example, viewing a protected note may require extra authentication,\n * but the underlying note data may already be decrypted in application memory, whether or not\n * the user has yet authenticated this action.\n */\n\nvar SNPrivilegesService = /*#__PURE__*/function (_PureService) {\n _inherits(SNPrivilegesService, _PureService);\n\n // private sessionLengths: PrivilegeSessionLength[] = []\n function SNPrivilegesService(itemManager, syncService, singletonManager, protocolService, storageService, sessionManager) {\n var _this;\n\n _classCallCheck(this, SNPrivilegesService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNPrivilegesService).call(this));\n _this.availableActions = [];\n _this.availableCredentials = [];\n _this.itemManager = itemManager;\n _this.syncService = syncService;\n _this.singletonManager = singletonManager;\n _this.protocolService = protocolService;\n _this.storageService = storageService;\n _this.sessionManager = sessionManager;\n\n _this.loadDefaults();\n\n return _this;\n }\n\n _createClass(SNPrivilegesService, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.syncService = undefined;\n this.singletonManager = undefined;\n this.protocolService = undefined;\n this.storageService = undefined;\n this.sessionManager = undefined;\n\n _get(_getPrototypeOf(SNPrivilegesService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "loadDefaults",\n value: function loadDefaults() {\n this.availableActions = Object.keys(_Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"]).map(function (key) {\n return _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["ProtectedAction"][key];\n });\n this.availableCredentials = [_Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword, _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode];\n }\n }, {\n key: "getAvailableActions",\n value: function getAvailableActions() {\n return this.availableActions;\n }\n }, {\n key: "getAvailableCredentials",\n value: function getAvailableCredentials() {\n return this.availableCredentials;\n }\n /**\n * The credentials currently required to perform this action.\n */\n\n }, {\n key: "netCredentialsForAction",\n value: function () {\n var _netCredentialsForAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(action) {\n var privileges, credentials, netCredentials, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, credential, isOnline, hasPasscode;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getPrivileges();\n\n case 2:\n privileges = _context.sent;\n credentials = privileges.getCredentialsForAction(action);\n netCredentials = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 8;\n _iterator = credentials[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 27;\n break;\n }\n\n credential = _step.value;\n\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword)) {\n _context.next = 19;\n break;\n }\n\n _context.next = 15;\n return this.sessionManager.online();\n\n case 15:\n isOnline = _context.sent;\n\n if (isOnline) {\n netCredentials.push(credential);\n }\n\n _context.next = 24;\n break;\n\n case 19:\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode)) {\n _context.next = 24;\n break;\n }\n\n _context.next = 22;\n return this.protocolService.hasRootKeyWrapper();\n\n case 22:\n hasPasscode = _context.sent;\n\n if (hasPasscode) {\n netCredentials.push(credential);\n }\n\n case 24:\n _iteratorNormalCompletion = true;\n _context.next = 10;\n break;\n\n case 27:\n _context.next = 33;\n break;\n\n case 29:\n _context.prev = 29;\n _context.t0 = _context["catch"](8);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 33:\n _context.prev = 33;\n _context.prev = 34;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 36:\n _context.prev = 36;\n\n if (!_didIteratorError) {\n _context.next = 39;\n break;\n }\n\n throw _iteratorError;\n\n case 39:\n return _context.finish(36);\n\n case 40:\n return _context.finish(33);\n\n case 41:\n return _context.abrupt("return", netCredentials);\n\n case 42:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[8, 29, 33, 41], [34,, 36, 40]]);\n }));\n\n function netCredentialsForAction(_x) {\n return _netCredentialsForAction.apply(this, arguments);\n }\n\n return netCredentialsForAction;\n }()\n }, {\n key: "getPrivileges",\n value: function () {\n var _getPrivileges = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var contentType, predicate;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n contentType = _Lib_models__WEBPACK_IMPORTED_MODULE_5__["ContentType"].Privileges;\n predicate = new _Models_core_predicate__WEBPACK_IMPORTED_MODULE_3__["SNPredicate"](\'content_type\', \'=\', contentType);\n return _context2.abrupt("return", this.singletonManager.findOrCreateSingleton(predicate, contentType, Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])({})));\n\n case 3:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getPrivileges() {\n return _getPrivileges.apply(this, arguments);\n }\n\n return getPrivileges;\n }()\n }, {\n key: "setSessionLength",\n value: function () {\n var _setSessionLength = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(length) {\n var addSecondsToNow, expiresAt;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n addSecondsToNow = function addSecondsToNow(seconds) {\n var date = new Date();\n date.setSeconds(date.getSeconds() + seconds);\n return date;\n };\n\n expiresAt = addSecondsToNow(length);\n _context3.next = 4;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesExpirey, expiresAt);\n\n case 4:\n _context3.next = 6;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesSessionLength, length);\n\n case 6:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function setSessionLength(_x2) {\n return _setSessionLength.apply(this, arguments);\n }\n\n return setSessionLength;\n }()\n }, {\n key: "clearSession",\n value: function () {\n var _clearSession = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt("return", this.setSessionLength(PrivilegeSessionLength.None));\n\n case 1:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function clearSession() {\n return _clearSession.apply(this, arguments);\n }\n\n return clearSession;\n }()\n }, {\n key: "getSelectedSessionLength",\n value: function () {\n var _getSelectedSessionLength = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var length;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesSessionLength);\n\n case 2:\n length = _context5.sent;\n\n if (!length) {\n _context5.next = 7;\n break;\n }\n\n return _context5.abrupt("return", length);\n\n case 7:\n return _context5.abrupt("return", PrivilegeSessionLength.None);\n\n case 8:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getSelectedSessionLength() {\n return _getSelectedSessionLength.apply(this, arguments);\n }\n\n return getSelectedSessionLength;\n }()\n }, {\n key: "getSessionExpirey",\n value: function () {\n var _getSessionExpirey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n var expiresAt;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_4__["StorageKey"].PrivilegesExpirey);\n\n case 2:\n expiresAt = _context6.sent;\n\n if (!expiresAt) {\n _context6.next = 7;\n break;\n }\n\n return _context6.abrupt("return", new Date(expiresAt));\n\n case 7:\n return _context6.abrupt("return", new Date());\n\n case 8:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getSessionExpirey() {\n return _getSessionExpirey.apply(this, arguments);\n }\n\n return getSessionExpirey;\n }()\n }, {\n key: "actionHasPrivilegesConfigured",\n value: function () {\n var _actionHasPrivilegesConfigured = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(action) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.netCredentialsForAction(action);\n\n case 2:\n _context7.t0 = _context7.sent.length;\n return _context7.abrupt("return", _context7.t0 > 0);\n\n case 4:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function actionHasPrivilegesConfigured(_x3) {\n return _actionHasPrivilegesConfigured.apply(this, arguments);\n }\n\n return actionHasPrivilegesConfigured;\n }()\n /**\n * Whether the action requires present authentication.\n */\n\n }, {\n key: "actionRequiresPrivilege",\n value: function () {\n var _actionRequiresPrivilege = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(action) {\n var expiresAt, netCredentials;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.getSessionExpirey();\n\n case 2:\n expiresAt = _context8.sent;\n\n if (!(expiresAt > new Date())) {\n _context8.next = 5;\n break;\n }\n\n return _context8.abrupt("return", false);\n\n case 5:\n _context8.next = 7;\n return this.netCredentialsForAction(action);\n\n case 7:\n netCredentials = _context8.sent;\n return _context8.abrupt("return", netCredentials.length > 0);\n\n case 9:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function actionRequiresPrivilege(_x4) {\n return _actionRequiresPrivilege.apply(this, arguments);\n }\n\n return actionRequiresPrivilege;\n }()\n }, {\n key: "authenticateAction",\n value: function () {\n var _authenticateAction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(action, credentialAuthMapping) {\n var requiredCredentials, successfulCredentials, failedCredentials, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, credential, passesAuth;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.netCredentialsForAction(action);\n\n case 2:\n requiredCredentials = _context9.sent;\n successfulCredentials = [];\n failedCredentials = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context9.prev = 8;\n _iterator2 = requiredCredentials[Symbol.iterator]();\n\n case 10:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context9.next = 19;\n break;\n }\n\n credential = _step2.value;\n _context9.next = 14;\n return this.verifyAuthenticationParameters(credential, credentialAuthMapping[credential]);\n\n case 14:\n passesAuth = _context9.sent;\n\n if (passesAuth) {\n successfulCredentials.push(credential);\n } else {\n failedCredentials.push(credential);\n }\n\n case 16:\n _iteratorNormalCompletion2 = true;\n _context9.next = 10;\n break;\n\n case 19:\n _context9.next = 25;\n break;\n\n case 21:\n _context9.prev = 21;\n _context9.t0 = _context9["catch"](8);\n _didIteratorError2 = true;\n _iteratorError2 = _context9.t0;\n\n case 25:\n _context9.prev = 25;\n _context9.prev = 26;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 28:\n _context9.prev = 28;\n\n if (!_didIteratorError2) {\n _context9.next = 31;\n break;\n }\n\n throw _iteratorError2;\n\n case 31:\n return _context9.finish(28);\n\n case 32:\n return _context9.finish(25);\n\n case 33:\n return _context9.abrupt("return", {\n success: failedCredentials.length === 0,\n successfulCredentials: successfulCredentials,\n failedCredentials: failedCredentials\n });\n\n case 34:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[8, 21, 25, 33], [26,, 28, 32]]);\n }));\n\n function authenticateAction(_x5, _x6) {\n return _authenticateAction.apply(this, arguments);\n }\n\n return authenticateAction;\n }()\n }, {\n key: "verifyAuthenticationParameters",\n value: function () {\n var _verifyAuthenticationParameters = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(credential, value) {\n var _ref, valid, _ref2, _valid;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].AccountPassword)) {\n _context10.next = 8;\n break;\n }\n\n _context10.next = 3;\n return this.protocolService.validateAccountPassword(value);\n\n case 3:\n _ref = _context10.sent;\n valid = _ref.valid;\n return _context10.abrupt("return", valid);\n\n case 8:\n if (!(credential === _Models_app_privileges__WEBPACK_IMPORTED_MODULE_6__["PrivilegeCredential"].LocalPasscode)) {\n _context10.next = 14;\n break;\n }\n\n _context10.next = 11;\n return this.protocolService.validatePasscode(value);\n\n case 11:\n _ref2 = _context10.sent;\n _valid = _ref2.valid;\n return _context10.abrupt("return", _valid);\n\n case 14:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function verifyAuthenticationParameters(_x7, _x8) {\n return _verifyAuthenticationParameters.apply(this, arguments);\n }\n\n return verifyAuthenticationParameters;\n }()\n }, {\n key: "displayInfoForCredential",\n value: function displayInfoForCredential(credential) {\n return CredentialsMetadata[credential];\n }\n }, {\n key: "displayInfoForAction",\n value: function displayInfoForAction(action) {\n return ActionsMetadata[action];\n }\n }, {\n key: "getSessionLengthOptions",\n value: function getSessionLengthOptions() {\n return [{\n value: PrivilegeSessionLength.None,\n label: "Don\'t Remember"\n }, {\n value: PrivilegeSessionLength.FiveMinutes,\n label: \'5 Minutes\'\n }, {\n value: PrivilegeSessionLength.OneHour,\n label: \'1 Hour\'\n }, {\n value: PrivilegeSessionLength.OneWeek,\n label: \'1 Week\'\n }];\n }\n }]);\n\n return SNPrivilegesService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_2__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvcHJpdmlsZWdlc19zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3ByaXZpbGVnZXNfc2VydmljZS50cz8zNWNkIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IFB1cmVTZXJ2aWNlIH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9wdXJlX3NlcnZpY2UnO1xuaW1wb3J0IHsgU05QcmVkaWNhdGUgfSBmcm9tICdATW9kZWxzL2NvcmUvcHJlZGljYXRlJztcbmltcG9ydCB7IFN0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJ0BMaWIvbW9kZWxzJztcbmltcG9ydCB7IFByb3RlY3RlZEFjdGlvbiwgUHJpdmlsZWdlQ3JlZGVudGlhbCB9IGZyb20gJ0BNb2RlbHMvYXBwL3ByaXZpbGVnZXMnO1xuZXhwb3J0IHZhciBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoO1xuKGZ1bmN0aW9uIChQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoKSB7XG4gICAgUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoW1wiTm9uZVwiXSA9IDBdID0gXCJOb25lXCI7XG4gICAgUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoW1wiRml2ZU1pbnV0ZXNcIl0gPSAzMDBdID0gXCJGaXZlTWludXRlc1wiO1xuICAgIFByaXZpbGVnZVNlc3Npb25MZW5ndGhbUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtcIk9uZUhvdXJcIl0gPSAzNjAwXSA9IFwiT25lSG91clwiO1xuICAgIFByaXZpbGVnZVNlc3Npb25MZW5ndGhbUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aFtcIk9uZVdlZWtcIl0gPSA2MDQ4MDBdID0gXCJPbmVXZWVrXCI7XG59KShQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoIHx8IChQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoID0ge30pKTtcbmNvbnN0IENyZWRlbnRpYWxzTWV0YWRhdGEgPSB7XG4gICAgW1ByaXZpbGVnZUNyZWRlbnRpYWwuQWNjb3VudFBhc3N3b3JkXToge1xuICAgICAgICBsYWJlbDogJ0FjY291bnQgUGFzc3dvcmQnLFxuICAgICAgICBwcm9tcHQ6ICdQbGVhc2UgZW50ZXIgeW91ciBhY2NvdW50IHBhc3N3b3JkLidcbiAgICB9LFxuICAgIFtQcml2aWxlZ2VDcmVkZW50aWFsLkxvY2FsUGFzc2NvZGVdOiB7XG4gICAgICAgIGxhYmVsOiAnTG9jYWwgUGFzc2NvZGUnLFxuICAgICAgICBwcm9tcHQ6ICdQbGVhc2UgZW50ZXIgeW91ciBsb2NhbCBwYXNzY29kZS4nXG4gICAgfVxufTtcbmNvbnN0IEFjdGlvbnNNZXRhZGF0YSA9IHtcbiAgICBbUHJvdGVjdGVkQWN0aW9uLk1hbmFnZUV4dGVuc2lvbnNdOiB7XG4gICAgICAgIGxhYmVsOiAnTWFuYWdlIEV4dGVuc2lvbnMnXG4gICAgfSxcbiAgICBbUHJvdGVjdGVkQWN0aW9uLk1hbmFnZUJhY2t1cHNdOiB7XG4gICAgICAgIGxhYmVsOiAnRG93bmxvYWQvSW1wb3J0IEJhY2t1cHMnXG4gICAgfSxcbiAgICBbUHJvdGVjdGVkQWN0aW9uLlZpZXdQcm90ZWN0ZWROb3Rlc106IHtcbiAgICAgICAgbGFiZWw6ICdWaWV3IFByb3RlY3RlZCBOb3RlcydcbiAgICB9LFxuICAgIFtQcm90ZWN0ZWRBY3Rpb24uTWFuYWdlUHJpdmlsZWdlc106IHtcbiAgICAgICAgbGFiZWw6ICdNYW5hZ2UgUHJpdmlsZWdlcydcbiAgICB9LFxuICAgIFtQcm90ZWN0ZWRBY3Rpb24uTWFuYWdlUGFzc2NvZGVdOiB7XG4gICAgICAgIGxhYmVsOiAnTWFuYWdlIFBhc3Njb2RlJ1xuICAgIH0sXG4gICAgW1Byb3RlY3RlZEFjdGlvbi5EZWxldGVOb3RlXToge1xuICAgICAgICBsYWJlbDogJ0RlbGV0ZSBOb3RlcydcbiAgICB9LFxufTtcbi8qKlxuICogUHJpdmlsZWdlcyBhbGxvd3MgY2VydGFpbiBhY3Rpb25zIHdpdGhpbiB0aGUgYXBwbGljYXRpb24gdG8gcmVxdWlyZSBleHRyYSBhdXRoZW50aWNhdGlvbi5cbiAqIEZvciBleGFtcGxlLCB0aGUgcHJpdmlsZWdlcyBzZXJ2aWNlIGV4cG9zZXMgZnVuY3Rpb25zIHRoYXQgYWxsb3cgdGhlIGFjdGlvbiBvZiBkZWxldGluZ1xuICogYSBub3RlIG9yIHZpZXdpbmcgYSBub3RlIHRvIHJlcXVpcmUgZXh0cmEgYXV0aGVudGljYXRpb24uXG4gKiBQcml2aWxlZ2VzIGFyZSBhIHN1cGVyZmljaWFsLWxldmVsIGxvY2tpbmcgZmVhdHVyZTsgdGhleSBkbyBub3QgZGVhbCBhdCBhbGwgd2l0aCB1bmRlcmx5aW5nXG4gKiBkYXRhIHN0YXRlLiBGb3IgZXhhbXBsZSwgdmlld2luZyBhIHByb3RlY3RlZCBub3RlIG1heSByZXF1aXJlIGV4dHJhIGF1dGhlbnRpY2F0aW9uLFxuICogYnV0IHRoZSB1bmRlcmx5aW5nIG5vdGUgZGF0YSBtYXkgYWxyZWFkeSBiZSBkZWNyeXB0ZWQgaW4gYXBwbGljYXRpb24gbWVtb3J5LCB3aGV0aGVyIG9yIG5vdFxuICogdGhlIHVzZXIgaGFzIHlldCBhdXRoZW50aWNhdGVkIHRoaXMgYWN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgU05Qcml2aWxlZ2VzU2VydmljZSBleHRlbmRzIFB1cmVTZXJ2aWNlIHtcbiAgICAvLyBwcml2YXRlIHNlc3Npb25MZW5ndGhzOiBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoW10gPSBbXVxuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBzeW5jU2VydmljZSwgc2luZ2xldG9uTWFuYWdlciwgcHJvdG9jb2xTZXJ2aWNlLCBzdG9yYWdlU2VydmljZSwgc2Vzc2lvbk1hbmFnZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVBY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlQ3JlZGVudGlhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gc3luY1NlcnZpY2U7XG4gICAgICAgIHRoaXMuc2luZ2xldG9uTWFuYWdlciA9IHNpbmdsZXRvbk1hbmFnZXI7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gc3RvcmFnZVNlcnZpY2U7XG4gICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIgPSBzZXNzaW9uTWFuYWdlcjtcbiAgICAgICAgdGhpcy5sb2FkRGVmYXVsdHMoKTtcbiAgICB9XG4gICAgZGVpbml0KCkge1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNpbmdsZXRvbk1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnNlc3Npb25NYW5hZ2VyID0gdW5kZWZpbmVkO1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICB9XG4gICAgbG9hZERlZmF1bHRzKCkge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUFjdGlvbnMgPSBPYmplY3Qua2V5cyhQcm90ZWN0ZWRBY3Rpb24pLm1hcCgoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvdGVjdGVkQWN0aW9uW2tleV07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUNyZWRlbnRpYWxzID0gW1xuICAgICAgICAgICAgUHJpdmlsZWdlQ3JlZGVudGlhbC5BY2NvdW50UGFzc3dvcmQsXG4gICAgICAgICAgICBQcml2aWxlZ2VDcmVkZW50aWFsLkxvY2FsUGFzc2NvZGVcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZ2V0QXZhaWxhYmxlQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhaWxhYmxlQWN0aW9ucztcbiAgICB9XG4gICAgZ2V0QXZhaWxhYmxlQ3JlZGVudGlhbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZUNyZWRlbnRpYWxzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgY3JlZGVudGlhbHMgY3VycmVudGx5IHJlcXVpcmVkIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uXG4gICAgICovXG4gICAgYXN5bmMgbmV0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHByaXZpbGVnZXMgPSBhd2FpdCB0aGlzLmdldFByaXZpbGVnZXMoKTtcbiAgICAgICAgY29uc3QgY3JlZGVudGlhbHMgPSBwcml2aWxlZ2VzLmdldENyZWRlbnRpYWxzRm9yQWN0aW9uKGFjdGlvbik7XG4gICAgICAgIGNvbnN0IG5ldENyZWRlbnRpYWxzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY3JlZGVudGlhbCBvZiBjcmVkZW50aWFscykge1xuICAgICAgICAgICAgaWYgKGNyZWRlbnRpYWwgPT09IFByaXZpbGVnZUNyZWRlbnRpYWwuQWNjb3VudFBhc3N3b3JkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPbmxpbmUgPSBhd2FpdCB0aGlzLnNlc3Npb25NYW5hZ2VyLm9ubGluZSgpO1xuICAgICAgICAgICAgICAgIGlmIChpc09ubGluZSkge1xuICAgICAgICAgICAgICAgICAgICBuZXRDcmVkZW50aWFscy5wdXNoKGNyZWRlbnRpYWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNyZWRlbnRpYWwgPT09IFByaXZpbGVnZUNyZWRlbnRpYWwuTG9jYWxQYXNzY29kZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1Bhc3Njb2RlID0gYXdhaXQgdGhpcy5wcm90b2NvbFNlcnZpY2UuaGFzUm9vdEtleVdyYXBwZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzUGFzc2NvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV0Q3JlZGVudGlhbHMucHVzaChjcmVkZW50aWFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldENyZWRlbnRpYWxzO1xuICAgIH1cbiAgICBhc3luYyBnZXRQcml2aWxlZ2VzKCkge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlLlByaXZpbGVnZXM7XG4gICAgICAgIGNvbnN0IHByZWRpY2F0ZSA9IG5ldyBTTlByZWRpY2F0ZSgnY29udGVudF90eXBlJywgJz0nLCBjb250ZW50VHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZXRvbk1hbmFnZXIuZmluZE9yQ3JlYXRlU2luZ2xldG9uKHByZWRpY2F0ZSwgY29udGVudFR5cGUsIEZpbGxJdGVtQ29udGVudCh7fSkpO1xuICAgIH1cbiAgICBhc3luYyBzZXRTZXNzaW9uTGVuZ3RoKGxlbmd0aCkge1xuICAgICAgICBjb25zdCBhZGRTZWNvbmRzVG9Ob3cgPSAoc2Vjb25kcykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBkYXRlLnNldFNlY29uZHMoZGF0ZS5nZXRTZWNvbmRzKCkgKyBzZWNvbmRzKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBhZGRTZWNvbmRzVG9Ob3cobGVuZ3RoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlByaXZpbGVnZXNFeHBpcmV5LCBleHBpcmVzQXQpO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFZhbHVlKFN0b3JhZ2VLZXkuUHJpdmlsZWdlc1Nlc3Npb25MZW5ndGgsIGxlbmd0aCk7XG4gICAgfVxuICAgIGFzeW5jIGNsZWFyU2Vzc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0U2Vzc2lvbkxlbmd0aChQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoLk5vbmUpO1xuICAgIH1cbiAgICBhc3luYyBnZXRTZWxlY3RlZFNlc3Npb25MZW5ndGgoKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5Qcml2aWxlZ2VzU2Vzc2lvbkxlbmd0aCk7XG4gICAgICAgIGlmIChsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aC5Ob25lO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldFNlc3Npb25FeHBpcmV5KCkge1xuICAgICAgICBjb25zdCBleHBpcmVzQXQgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuUHJpdmlsZWdlc0V4cGlyZXkpO1xuICAgICAgICBpZiAoZXhwaXJlc0F0KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoZXhwaXJlc0F0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGFjdGlvbkhhc1ByaXZpbGVnZXNDb25maWd1cmVkKGFjdGlvbikge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHRoaXMubmV0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uKSkubGVuZ3RoID4gMDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgYWN0aW9uIHJlcXVpcmVzIHByZXNlbnQgYXV0aGVudGljYXRpb24uXG4gICAgICovXG4gICAgYXN5bmMgYWN0aW9uUmVxdWlyZXNQcml2aWxlZ2UoYWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IGV4cGlyZXNBdCA9IGF3YWl0IHRoaXMuZ2V0U2Vzc2lvbkV4cGlyZXkoKTtcbiAgICAgICAgaWYgKGV4cGlyZXNBdCA+IG5ldyBEYXRlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXRDcmVkZW50aWFscyA9IGF3YWl0IHRoaXMubmV0Q3JlZGVudGlhbHNGb3JBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIG5ldENyZWRlbnRpYWxzLmxlbmd0aCA+IDA7XG4gICAgfVxuICAgIGFzeW5jIGF1dGhlbnRpY2F0ZUFjdGlvbihhY3Rpb24sIGNyZWRlbnRpYWxBdXRoTWFwcGluZykge1xuICAgICAgICBjb25zdCByZXF1aXJlZENyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5uZXRDcmVkZW50aWFsc0ZvckFjdGlvbihhY3Rpb24pO1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsQ3JlZGVudGlhbHMgPSBbXTtcbiAgICAgICAgY29uc3QgZmFpbGVkQ3JlZGVudGlhbHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjcmVkZW50aWFsIG9mIHJlcXVpcmVkQ3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhc3Nlc0F1dGggPSBhd2FpdCB0aGlzLnZlcmlmeUF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyhjcmVkZW50aWFsLCBjcmVkZW50aWFsQXV0aE1hcHBpbmdbY3JlZGVudGlhbF0pO1xuICAgICAgICAgICAgaWYgKHBhc3Nlc0F1dGgpIHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzZnVsQ3JlZGVudGlhbHMucHVzaChjcmVkZW50aWFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZhaWxlZENyZWRlbnRpYWxzLnB1c2goY3JlZGVudGlhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhaWxlZENyZWRlbnRpYWxzLmxlbmd0aCA9PT0gMCxcbiAgICAgICAgICAgIHN1Y2Nlc3NmdWxDcmVkZW50aWFsczogc3VjY2Vzc2Z1bENyZWRlbnRpYWxzLFxuICAgICAgICAgICAgZmFpbGVkQ3JlZGVudGlhbHM6IGZhaWxlZENyZWRlbnRpYWxzXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIHZlcmlmeUF1dGhlbnRpY2F0aW9uUGFyYW1ldGVycyhjcmVkZW50aWFsLCB2YWx1ZSkge1xuICAgICAgICBpZiAoY3JlZGVudGlhbCA9PT0gUHJpdmlsZWdlQ3JlZGVudGlhbC5BY2NvdW50UGFzc3dvcmQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsaWQgfSA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnZhbGlkYXRlQWNjb3VudFBhc3N3b3JkKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB2YWxpZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjcmVkZW50aWFsID09PSBQcml2aWxlZ2VDcmVkZW50aWFsLkxvY2FsUGFzc2NvZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsaWQgfSA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnZhbGlkYXRlUGFzc2NvZGUodmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbGlkO1xuICAgICAgICB9XG4gICAgfVxuICAgIGRpc3BsYXlJbmZvRm9yQ3JlZGVudGlhbChjcmVkZW50aWFsKSB7XG4gICAgICAgIHJldHVybiBDcmVkZW50aWFsc01ldGFkYXRhW2NyZWRlbnRpYWxdO1xuICAgIH1cbiAgICBkaXNwbGF5SW5mb0ZvckFjdGlvbihhY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIEFjdGlvbnNNZXRhZGF0YVthY3Rpb25dO1xuICAgIH1cbiAgICBnZXRTZXNzaW9uTGVuZ3RoT3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogUHJpdmlsZWdlU2Vzc2lvbkxlbmd0aC5Ob25lLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBcIkRvbid0IFJlbWVtYmVyXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IFByaXZpbGVnZVNlc3Npb25MZW5ndGguRml2ZU1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICc1IE1pbnV0ZXMnXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoLk9uZUhvdXIsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICcxIEhvdXInXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZhbHVlOiBQcml2aWxlZ2VTZXNzaW9uTGVuZ3RoLk9uZVdlZWssXG4gICAgICAgICAgICAgICAgbGFiZWw6ICcxIFdlZWsnXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBRkE7QUFLQTtBQUVBO0FBREE7QUFJQTtBQURBO0FBSUE7QUFEQTtBQUlBO0FBREE7QUFJQTtBQURBO0FBSUE7QUFEQTtBQUlBOzs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBWEE7QUFXQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBdEJBO0FBQUE7QUFBQTtBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBL0JBO0FBQUE7QUFBQTtBQWlDQTtBQUNBO0FBbENBO0FBQUE7QUFBQTtBQW9DQTtBQUNBO0FBQ0E7Ozs7QUF0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTBDQTtBQUNBO0FBQ0E7QUE1Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNENBO0FBQ0E7QUE5Q0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBK0NBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQW5EQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXFEQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF6REE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQThEQTtBQUNBO0FBL0RBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBeEVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF5RkE7QUFDQTtBQTFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb0dBOzs7O0FBcEdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBd0dBO0FBQ0E7QUF6R0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNEdBO0FBNUdBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWdIQTtBQUNBO0FBQ0E7QUFsSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBa0hBO0FBbkhBO0FBQUE7QUFDQTtBQURBO0FBb0hBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUEzSEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZIQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBN0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb0lBO0FBcElBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBd0lBO0FBeElBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNklBO0FBQ0E7QUE5SUE7QUFBQTtBQUFBO0FBZ0pBO0FBQ0E7QUFqSkE7QUFBQTtBQUFBO0FBbUpBO0FBRUE7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFDQTtBQUZBO0FBS0E7QUFyS0E7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/privileges_service.ts\n')},"./lib/services/protocol_service.ts": /*!******************************************!*\ !*** ./lib/services/protocol_service.ts ***! \******************************************/ /*! exports provided: KeyMode, SNProtocolService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyMode", function() { return KeyMode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNProtocolService", function() { return SNProtocolService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _protocol_intents__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/versions */ "./lib/protocol/versions.ts");\n/* harmony import */ var _Protocol_key_params__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/key_params */ "./lib/protocol/key_params.ts");\n/* harmony import */ var _protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../protocol/operator/004/operator_004 */ "./lib/protocol/operator/004/operator_004.ts");\n/* harmony import */ var _protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./../protocol/operator/003/operator_003 */ "./lib/protocol/operator/003/operator_003.ts");\n/* harmony import */ var _protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./../protocol/operator/002/operator_002 */ "./lib/protocol/operator/002/operator_002.ts");\n/* harmony import */ var _protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./../protocol/operator/001/operator_001 */ "./lib/protocol/operator/001/operator_001.ts");\n/* harmony import */ var _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./../protocol/payloads/formats */ "./lib/protocol/payloads/formats.ts");\n/* harmony import */ var _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./../protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Lib/events */ "./lib/events.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Protocol_root_key__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Protocol/root_key */ "./lib/protocol/root_key.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../protocol/operator/algorithms */ "./lib/protocol/operator/algorithms.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @Lib/services/storage_service */ "./lib/services/storage_service.ts");\n/* harmony import */ var _Lib_protocol__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @Lib/protocol */ "./lib/protocol/index.ts");\n/* harmony import */ var _api_messages__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./api/messages */ "./lib/services/api/messages.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar KeyMode;\n\n(function (KeyMode) {\n /** i.e No account and no passcode */\n KeyMode[KeyMode["RootKeyNone"] = 0] = "RootKeyNone";\n /** i.e Account but no passcode */\n\n KeyMode[KeyMode["RootKeyOnly"] = 1] = "RootKeyOnly";\n /** i.e Account plus passcode */\n\n KeyMode[KeyMode["RootKeyPlusWrapper"] = 2] = "RootKeyPlusWrapper";\n /** i.e No account, but passcode */\n\n KeyMode[KeyMode["WrapperOnly"] = 3] = "WrapperOnly";\n})(KeyMode || (KeyMode = {}));\n/** The last protocol version to not use root-key based items keys */\n\n\nvar LAST_NONROOT_ITEMS_KEY_VERSION = _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003;\n/**\n * The protocol service is responsible for the encryption and decryption of payloads, and\n * handles delegation of a task to the respective protocol operator. Each version of the protocol\n * (001, 002, 003, 004, etc) uses a respective operator version to perform encryption operations.\n * Operators are located in /protocol/operator.\n * The protocol service depends on the keyManager for determining which key to use for the\n * encryption and decryption of a particular payload.\n * The protocol service is also responsible for dictating which protocol versions are valid,\n * and which are no longer valid or not supported.\n\n * The key manager is responsible for managing root key and root key wrapper states.\n * When the key manager is initialized, it initiates itself with a keyMode, which\n * dictates the entire flow of key management. The key manager\'s responsibilities include:\n * - interacting with the device keychain to save or clear the root key\n * - interacting with storage to save root key params or wrapper params, or the wrapped root key.\n * - exposing methods that allow the application to unwrap the root key (unlock the application)\n *\n * It also exposes two primary methods for determining what key should be used to encrypt\n * or decrypt a particular payload. Some payloads are encrypted directly with the rootKey\n * (such as itemsKeys and encryptedStorage). Others are encrypted with itemsKeys (notes, tags, etc).\n\n * The items key manager manages the lifecycle of items keys.\n * It is responsible for creating the default items key when conditions call for it\n * (such as after the first sync completes and no key exists).\n * It also exposes public methods that allows consumers to retrieve an items key\n * for a particular payload, and also retrieve all available items keys.\n*/\n\nvar SNProtocolService = /*#__PURE__*/function (_PureService) {\n _inherits(SNProtocolService, _PureService);\n\n function SNProtocolService(itemManager, modelManager, deviceInterface, storageService, crypto) {\n var _this;\n\n _classCallCheck(this, SNProtocolService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNProtocolService).call(this));\n _this.operators = {};\n _this.keyMode = KeyMode.RootKeyNone;\n _this.keyObservers = [];\n _this.itemManager = itemManager;\n _this.modelManager = modelManager;\n _this.deviceInterface = deviceInterface;\n _this.storageService = storageService;\n _this.crypto = crypto;\n\n if (Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isReactNativeEnvironment"])()) {\n _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__["Uuid"].SetGenerators(_this.crypto.generateUUID, undefined // no sync implementation on React Native\n );\n } else {\n _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__["Uuid"].SetGenerators(_this.crypto.generateUUID, _this.crypto.generateUUIDSync);\n }\n /** Hide rootKey enumeration */\n\n\n Object.defineProperty(_assertThisInitialized(_this), \'rootKey\', {\n enumerable: false,\n writable: true\n });\n _this.removeItemsObserver = _this.itemManager.addObserver([_Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey], function (_, inserted) {\n if (inserted.length > 0) {\n _this.decryptErroredItems();\n }\n });\n return _this;\n }\n /** @override */\n\n\n _createClass(SNProtocolService, [{\n key: "deinit",\n value: function deinit() {\n this.itemManager = undefined;\n this.modelManager = undefined;\n this.deviceInterface = undefined;\n this.storageService = undefined;\n this.crypto.deinit();\n this.crypto = undefined;\n this.operators = {};\n this.keyObservers.length = 0;\n this.removeItemsObserver();\n this.removeItemsObserver = null;\n this.rootKey = undefined;\n\n _get(_getPrototypeOf(SNProtocolService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initialize",\n value: function () {\n var _initialize = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var wrappedRootKey, accountKeyParams, hasWrapper, hasRootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getWrappedRootKey();\n\n case 2:\n wrappedRootKey = _context.sent;\n _context.next = 5;\n return this.getAccountKeyParams();\n\n case 5:\n accountKeyParams = _context.sent;\n _context.next = 8;\n return this.hasRootKeyWrapper();\n\n case 8:\n hasWrapper = _context.sent;\n hasRootKey = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(wrappedRootKey) || !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(accountKeyParams);\n\n if (!(hasWrapper && hasRootKey)) {\n _context.next = 14;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyPlusWrapper;\n _context.next = 27;\n break;\n\n case 14:\n if (!(hasWrapper && !hasRootKey)) {\n _context.next = 18;\n break;\n }\n\n this.keyMode = KeyMode.WrapperOnly;\n _context.next = 27;\n break;\n\n case 18:\n if (!(!hasWrapper && hasRootKey)) {\n _context.next = 22;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyOnly;\n _context.next = 27;\n break;\n\n case 22:\n if (!(!hasWrapper && !hasRootKey)) {\n _context.next = 26;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyNone;\n _context.next = 27;\n break;\n\n case 26:\n throw \'Invalid key mode condition\';\n\n case 27:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context.next = 33;\n break;\n }\n\n _context.next = 30;\n return this.getRootKeyFromKeychain();\n\n case 30:\n this.rootKey = _context.sent;\n _context.next = 33;\n return this.notifyObserversOfKeyChange();\n\n case 33:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function initialize() {\n return _initialize.apply(this, arguments);\n }\n\n return initialize;\n }()\n /**\n * Returns the latest protocol version\n */\n\n }, {\n key: "getLatestVersion",\n value: function getLatestVersion() {\n return _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004;\n }\n /**\n * Returns the protocol version associated with the user\'s account\n */\n\n }, {\n key: "getUserVersion",\n value: function () {\n var _getUserVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var keyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.getAccountKeyParams();\n\n case 2:\n keyParams = _context2.sent;\n return _context2.abrupt("return", keyParams && keyParams.version);\n\n case 4:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getUserVersion() {\n return _getUserVersion.apply(this, arguments);\n }\n\n return getUserVersion;\n }()\n /**\n * Returns true if there is an upgrade available for the account or passcode\n */\n\n }, {\n key: "upgradeAvailable",\n value: function () {\n var _upgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n var accountUpgradeAvailable, passcodeUpgradeAvailable;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.accountUpgradeAvailable();\n\n case 2:\n accountUpgradeAvailable = _context3.sent;\n _context3.next = 5;\n return this.passcodeUpgradeAvailable();\n\n case 5:\n passcodeUpgradeAvailable = _context3.sent;\n return _context3.abrupt("return", accountUpgradeAvailable || passcodeUpgradeAvailable);\n\n case 7:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function upgradeAvailable() {\n return _upgradeAvailable.apply(this, arguments);\n }\n\n return upgradeAvailable;\n }()\n /**\n * Returns true if the user\'s account protocol version is not equal to the latest version.\n */\n\n }, {\n key: "accountUpgradeAvailable",\n value: function () {\n var _accountUpgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var userVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.getUserVersion();\n\n case 2:\n userVersion = _context4.sent;\n\n if (userVersion) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt("return", false);\n\n case 5:\n return _context4.abrupt("return", userVersion !== this.getLatestVersion());\n\n case 6:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function accountUpgradeAvailable() {\n return _accountUpgradeAvailable.apply(this, arguments);\n }\n\n return accountUpgradeAvailable;\n }()\n /**\n * Returns true if the user\'s account protocol version is not equal to the latest version.\n */\n\n }, {\n key: "passcodeUpgradeAvailable",\n value: function () {\n var _passcodeUpgradeAvailable = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5() {\n var passcodeParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n passcodeParams = _context5.sent;\n\n if (passcodeParams) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt("return", false);\n\n case 5:\n return _context5.abrupt("return", passcodeParams.version !== this.getLatestVersion());\n\n case 6:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function passcodeUpgradeAvailable() {\n return _passcodeUpgradeAvailable.apply(this, arguments);\n }\n\n return passcodeUpgradeAvailable;\n }()\n /**\n * Determines whether the current environment is capable of supporting\n * key derivation.\n */\n\n }, {\n key: "platformSupportsKeyDerivation",\n value: function platformSupportsKeyDerivation(keyParams) {\n /**\n * If the version is 003 or lower, key derivation is supported unless the browser is\n * IE or Edge (or generally, where WebCrypto is not available).\n *\n * Versions 004 and above are always supported.\n */\n if (Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(keyParams.version, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004) >= 0) {\n /* keyParams.version >= 004 */\n return true;\n } else {\n return !!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isWebCryptoAvailable"])();\n }\n }\n /**\n * @returns The versions that this library supports.\n */\n\n }, {\n key: "supportedVersions",\n value: function supportedVersions() {\n return [_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004];\n }\n /**\n * Determines whether the input version is greater than the latest supported library version.\n */\n\n }, {\n key: "isVersionNewerThanLibraryVersion",\n value: function isVersionNewerThanLibraryVersion(version) {\n var libraryVersion = this.getLatestVersion();\n return Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(version, libraryVersion) === 1;\n }\n /**\n * Determines whether the input version is expired\n */\n\n }, {\n key: "isProtocolVersionOutdated",\n value: function isProtocolVersionOutdated(version) {\n var _expirationDates;\n\n var expirationDates = (_expirationDates = {}, _defineProperty(_expirationDates, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001, Date.parse(\'2018-01-01\')), _defineProperty(_expirationDates, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002, Date.parse(\'2020-01-01\')), _expirationDates);\n var date = expirationDates[version];\n\n if (!date) {\n /* No expiration date, is active version */\n return false;\n }\n\n var expired = new Date().getTime() > date;\n return expired;\n }\n /**\n * Versions 001 and 002 of the protocol supported dynamic costs, as reported by the server.\n * This function returns the client-enforced minimum cost, to prevent the server from\n * overwhelmingly under-reporting the cost.\n */\n\n }, {\n key: "costMinimumForVersion",\n value: function costMinimumForVersion(version) {\n if (Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(version, _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003) >= 0) {\n throw \'Cost minimums only apply to versions <= 002\';\n }\n\n if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001) {\n return _protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_18__["V001Algorithm"].PbkdfMinCost;\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002) {\n return _protocol_operator_algorithms__WEBPACK_IMPORTED_MODULE_18__["V002Algorithm"].PbkdfMinCost;\n } else {\n throw "Invalid version for cost minimum: ".concat(version);\n }\n }\n }, {\n key: "createOperatorForLatestVersion",\n value: function createOperatorForLatestVersion() {\n return this.createOperatorForVersion(this.getLatestVersion());\n }\n }, {\n key: "createOperatorForVersion",\n value: function createOperatorForVersion(version) {\n if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V001) {\n return new _protocol_operator_001_operator_001__WEBPACK_IMPORTED_MODULE_8__["SNProtocolOperator001"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002) {\n return new _protocol_operator_002_operator_002__WEBPACK_IMPORTED_MODULE_7__["SNProtocolOperator002"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V003) {\n return new _protocol_operator_003_operator_003__WEBPACK_IMPORTED_MODULE_6__["SNProtocolOperator003"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V004) {\n return new _protocol_operator_004_operator_004__WEBPACK_IMPORTED_MODULE_5__["SNProtocolOperator004"](this.crypto);\n } else if (version === _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V000Base64Decrypted) {\n return this.createOperatorForLatestVersion();\n } else {\n throw "Unable to find operator for version ".concat(version);\n }\n }\n }, {\n key: "operatorForVersion",\n value: function operatorForVersion(version) {\n var operatorKey = version;\n var operator = this.operators[operatorKey];\n\n if (!operator) {\n operator = this.createOperatorForVersion(version);\n this.operators[operatorKey] = operator;\n }\n\n return operator;\n }\n /**\n * Returns the operator corresponding to the latest protocol version\n */\n\n }, {\n key: "defaultOperator",\n value: function defaultOperator() {\n return this.operatorForVersion(this.getLatestVersion());\n }\n /**\n * Computes a root key given a password and key params.\n * Delegates computation to respective protocol operator.\n */\n\n }, {\n key: "computeRootKey",\n value: function () {\n var _computeRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(password, keyParams) {\n var version, operator;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n version = keyParams.version;\n operator = this.operatorForVersion(version);\n return _context6.abrupt("return", operator.computeRootKey(password, keyParams));\n\n case 3:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function computeRootKey(_x, _x2) {\n return _computeRootKey.apply(this, arguments);\n }\n\n return computeRootKey;\n }()\n /**\n * Creates a root key using the latest protocol version\n */\n\n }, {\n key: "createRootKey",\n value: function () {\n var _createRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7(identifier, password) {\n var operator;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n operator = this.defaultOperator();\n return _context7.abrupt("return", operator.createRootKey(identifier, password));\n\n case 2:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function createRootKey(_x3, _x4) {\n return _createRootKey.apply(this, arguments);\n }\n\n return createRootKey;\n }()\n /**\n * Given a key and intent, returns the proper PayloadFormat,\n * or throws an exception if unsupported configuration of parameters.\n */\n\n }, {\n key: "payloadContentFormatForIntent",\n value: function payloadContentFormatForIntent(intent, key) {\n if (!key) {\n /** Decrypted */\n if (intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageDecrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStoragePreferEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileDecrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted) {\n return _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBareObject;\n } else if (intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].SyncDecrypted) {\n return _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBase64String;\n } else {\n throw \'Unhandled decrypted case in protocolService.payloadContentFormatForIntent.\';\n }\n } else {\n /** Encrypted */\n if (intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].Sync || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageEncrypted || intent === _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStoragePreferEncrypted) {\n return _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].EncryptedString;\n } else {\n throw \'Unhandled encrypted case in protocolService.payloadContentFormatForIntent.\';\n }\n }\n }\n /**\n * Generates parameters for a payload that are typically encrypted, and used for syncing\n * or saving locally. Parameters are non-typed objects that can later by converted to objects.\n * If the input payload is not properly decrypted in the first place, it will be returned\n * as-is. If the payload is deleted, it will be returned as-is (assuming that the content field is null)\n * @param payload - The payload to encrypt\n * @param key The key to use to encrypt the payload.\n * Will be looked up if not supplied.\n * @param intent - The target of the encryption\n * @returns The encrypted payload\n */\n\n }, {\n key: "payloadByEncryptingPayload",\n value: function () {\n var _payloadByEncryptingPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8(payload, intent, key) {\n var version, format, operator, encryptionParameters, result;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!payload.errorDecrypting) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt("return", payload);\n\n case 2:\n if (!payload.deleted) {\n _context8.next = 4;\n break;\n }\n\n return _context8.abrupt("return", payload);\n\n case 4:\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(intent)) {\n _context8.next = 6;\n break;\n }\n\n throw \'Attempting to encrypt payload with null intent\';\n\n case 6:\n if (!(!key && !Object(_Lib_protocol__WEBPACK_IMPORTED_MODULE_22__["isDecryptedIntent"])(intent))) {\n _context8.next = 10;\n break;\n }\n\n _context8.next = 9;\n return this.keyToUseForEncryptionOfPayload(payload, intent);\n\n case 9:\n key = _context8.sent;\n\n case 10:\n if (!(!key && Object(_Lib_protocol__WEBPACK_IMPORTED_MODULE_22__["intentRequiresEncryption"])(intent))) {\n _context8.next = 12;\n break;\n }\n\n throw Error(\'Attempting to generate encrypted payload with no key.\');\n\n case 12:\n if (!(payload.format !== _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBareObject)) {\n _context8.next = 14;\n break;\n }\n\n throw \'Attempting to encrypt already encrypted payload.\';\n\n case 14:\n if (payload.content) {\n _context8.next = 16;\n break;\n }\n\n throw \'Attempting to encrypt payload with no content.\';\n\n case 16:\n if (payload.uuid) {\n _context8.next = 18;\n break;\n }\n\n throw \'Attempting to encrypt payload with no uuid.\';\n\n case 18:\n version = key ? key.version : this.getLatestVersion();\n format = this.payloadContentFormatForIntent(intent, key);\n operator = this.operatorForVersion(version);\n _context8.next = 23;\n return operator.generateEncryptedParameters(payload, format, key);\n\n case 23:\n encryptionParameters = _context8.sent;\n\n if (encryptionParameters) {\n _context8.next = 26;\n break;\n }\n\n throw \'Unable to generate encryption parameters\';\n\n case 26:\n result = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateIntentPayloadFromObject"])(payload, intent, encryptionParameters);\n return _context8.abrupt("return", result);\n\n case 28:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function payloadByEncryptingPayload(_x5, _x6, _x7) {\n return _payloadByEncryptingPayload.apply(this, arguments);\n }\n\n return payloadByEncryptingPayload;\n }()\n /**\n * Similar to `payloadByEncryptingPayload`, but operates on an array of payloads.\n * `intent` can also be a function of the current iteration payload.\n */\n\n }, {\n key: "payloadsByEncryptingPayloads",\n value: function () {\n var _payloadsByEncryptingPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9(payloads, intent) {\n var results, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, useIntent, encryptedPayload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n results = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context9.prev = 4;\n _iterator = payloads[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context9.next = 16;\n break;\n }\n\n payload = _step.value;\n useIntent = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isFunction"])(intent) ? intent(payload) : intent;\n _context9.next = 11;\n return this.payloadByEncryptingPayload(payload, useIntent);\n\n case 11:\n encryptedPayload = _context9.sent;\n results.push(encryptedPayload);\n\n case 13:\n _iteratorNormalCompletion = true;\n _context9.next = 6;\n break;\n\n case 16:\n _context9.next = 22;\n break;\n\n case 18:\n _context9.prev = 18;\n _context9.t0 = _context9["catch"](4);\n _didIteratorError = true;\n _iteratorError = _context9.t0;\n\n case 22:\n _context9.prev = 22;\n _context9.prev = 23;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 25:\n _context9.prev = 25;\n\n if (!_didIteratorError) {\n _context9.next = 28;\n break;\n }\n\n throw _iteratorError;\n\n case 28:\n return _context9.finish(25);\n\n case 29:\n return _context9.finish(22);\n\n case 30:\n return _context9.abrupt("return", results);\n\n case 31:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this, [[4, 18, 22, 30], [23,, 25, 29]]);\n }));\n\n function payloadsByEncryptingPayloads(_x8, _x9) {\n return _payloadsByEncryptingPayloads.apply(this, arguments);\n }\n\n return payloadsByEncryptingPayloads;\n }()\n /**\n * Generates a new payload by decrypting the input payload.\n * If the input payload is already decrypted, it will be returned as-is.\n * @param payload - The payload to decrypt.\n * @param key The key to use to decrypt the payload.\n * If none is supplied, it will be automatically looked up.\n */\n\n }, {\n key: "payloadByDecryptingPayload",\n value: function () {\n var _payloadByDecryptingPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(payload, key) {\n var format, version, operator, encryptionParameters, decryptedParameters;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (payload.content) {\n _context10.next = 2;\n break;\n }\n\n throw \'Attempting to decrypt payload that has no content.\';\n\n case 2:\n format = payload.format;\n\n if (!(format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].DecryptedBareObject)) {\n _context10.next = 5;\n break;\n }\n\n return _context10.abrupt("return", payload);\n\n case 5:\n if (!(!key && format === _protocol_payloads_formats__WEBPACK_IMPORTED_MODULE_9__["PayloadFormat"].EncryptedString)) {\n _context10.next = 11;\n break;\n }\n\n _context10.next = 8;\n return this.keyToUseForDecryptionOfPayload(payload);\n\n case 8:\n key = _context10.sent;\n\n if (key) {\n _context10.next = 11;\n break;\n }\n\n return _context10.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(payload, {\n waitingForKey: true,\n errorDecrypting: true\n }));\n\n case 11:\n version = payload.version;\n operator = this.operatorForVersion(version);\n encryptionParameters = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateEncryptionParameters"])(payload);\n _context10.next = 16;\n return operator.generateDecryptedParameters(encryptionParameters, key);\n\n case 16:\n decryptedParameters = _context10.sent;\n return _context10.abrupt("return", Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(payload, decryptedParameters));\n\n case 18:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function payloadByDecryptingPayload(_x10, _x11) {\n return _payloadByDecryptingPayload.apply(this, arguments);\n }\n\n return payloadByDecryptingPayload;\n }()\n /**\n * Similar to `payloadByDecryptingPayload`, but operates on an array of payloads.\n */\n\n }, {\n key: "payloadsByDecryptingPayloads",\n value: function () {\n var _payloadsByDecryptingPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(payloads, key) {\n var decryptedPayloads, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, encryptedPayload, isDecryptable, decryptedPayload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n decryptedPayloads = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context11.prev = 4;\n _iterator2 = payloads[Symbol.iterator]();\n\n case 6:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context11.next = 32;\n break;\n }\n\n encryptedPayload = _step2.value;\n\n if (encryptedPayload) {\n _context11.next = 11;\n break;\n }\n\n /** Keep in-counts similar to out-counts */\n decryptedPayloads.push(encryptedPayload);\n return _context11.abrupt("continue", 29);\n\n case 11:\n if (!(encryptedPayload.deleted === true && Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(encryptedPayload.content))) {\n _context11.next = 14;\n break;\n }\n\n decryptedPayloads.push(encryptedPayload);\n return _context11.abrupt("continue", 29);\n\n case 14:\n isDecryptable = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isString"])(encryptedPayload.content);\n\n if (isDecryptable) {\n _context11.next = 18;\n break;\n }\n\n decryptedPayloads.push(encryptedPayload);\n return _context11.abrupt("continue", 29);\n\n case 18:\n _context11.prev = 18;\n _context11.next = 21;\n return this.payloadByDecryptingPayload(encryptedPayload, key);\n\n case 21:\n decryptedPayload = _context11.sent;\n decryptedPayloads.push(decryptedPayload);\n _context11.next = 29;\n break;\n\n case 25:\n _context11.prev = 25;\n _context11.t0 = _context11["catch"](18);\n decryptedPayloads.push(Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(encryptedPayload, {\n errorDecrypting: true,\n errorDecryptingValueChanged: !encryptedPayload.errorDecrypting\n }));\n console.error(\'Error decrypting payload\', encryptedPayload, _context11.t0);\n\n case 29:\n _iteratorNormalCompletion2 = true;\n _context11.next = 6;\n break;\n\n case 32:\n _context11.next = 38;\n break;\n\n case 34:\n _context11.prev = 34;\n _context11.t1 = _context11["catch"](4);\n _didIteratorError2 = true;\n _iteratorError2 = _context11.t1;\n\n case 38:\n _context11.prev = 38;\n _context11.prev = 39;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 41:\n _context11.prev = 41;\n\n if (!_didIteratorError2) {\n _context11.next = 44;\n break;\n }\n\n throw _iteratorError2;\n\n case 44:\n return _context11.finish(41);\n\n case 45:\n return _context11.finish(38);\n\n case 46:\n return _context11.abrupt("return", decryptedPayloads);\n\n case 47:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[4, 34, 38, 46], [18, 25], [39,, 41, 45]]);\n }));\n\n function payloadsByDecryptingPayloads(_x12, _x13) {\n return _payloadsByDecryptingPayloads.apply(this, arguments);\n }\n\n return payloadsByDecryptingPayloads;\n }()\n /**\n * If an item was attempting to decrypt, but failed, either because the keys\n * for that item had not downloaded yet, or any other reason, it will be deferred\n * item.errorDecrypting = true and possibly item.waitingForKey = true.\n * Here we find such items, and attempt to decrypt them again.\n */\n\n }, {\n key: "decryptErroredItems",\n value: function () {\n var _decryptErroredItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12() {\n var items, payloads, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n items = this.itemManager.invalidItems;\n\n if (!(items.length === 0)) {\n _context12.next = 3;\n break;\n }\n\n return _context12.abrupt("return");\n\n case 3:\n payloads = items.map(function (item) {\n return item.payloadRepresentation();\n });\n _context12.next = 6;\n return this.payloadsByDecryptingPayloads(payloads);\n\n case 6:\n decrypted = _context12.sent;\n _context12.next = 9;\n return this.modelManager.emitPayloads(decrypted, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].LocalChanged);\n\n case 9:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function decryptErroredItems() {\n return _decryptErroredItems.apply(this, arguments);\n }\n\n return decryptErroredItems;\n }()\n /**\n * Decrypts a backup file using user-inputted password\n * @param password - The raw user password associated with this backup file\n */\n\n }, {\n key: "payloadsByDecryptingBackupFile",\n value: function () {\n var _payloadsByDecryptingBackupFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(data, password) {\n var keyParams, rawItems, encryptedPayloads, decryptedPayloads, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n keyParams = data.keyParams || data.auth_params;\n rawItems = data.items;\n encryptedPayloads = rawItems.map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateSourcedPayloadFromObject"])(rawItem, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].FileImport);\n });\n\n if (!keyParams) {\n _context13.next = 12;\n break;\n }\n\n _context13.next = 6;\n return this.computeRootKey(password, keyParams);\n\n case 6:\n key = _context13.sent;\n _context13.next = 9;\n return this.payloadsByDecryptingPayloads(encryptedPayloads, key);\n\n case 9:\n decryptedPayloads = _context13.sent;\n _context13.next = 13;\n break;\n\n case 12:\n decryptedPayloads = encryptedPayloads;\n\n case 13:\n return _context13.abrupt("return", decryptedPayloads);\n\n case 14:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function payloadsByDecryptingBackupFile(_x14, _x15) {\n return _payloadsByDecryptingBackupFile.apply(this, arguments);\n }\n\n return payloadsByDecryptingBackupFile;\n }()\n /**\n * Creates a key params object from a raw object\n * @param keyParams - The raw key params object to create a KeyParams object from\n */\n\n }, {\n key: "createKeyParams",\n value: function createKeyParams(keyParams) {\n /* 002 doesn\'t have version automatically, newer versions do. */\n if (!keyParams.version) {\n keyParams.version = _Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["ProtocolVersion"].V002;\n }\n\n return Object(_Protocol_key_params__WEBPACK_IMPORTED_MODULE_4__["CreateKeyParams"])(keyParams);\n }\n /**\n * Creates a JSON string representing the backup format of all items, or just subitems\n * if supplied.\n * @param subItems An optional array of items to create backup of.\n * If not supplied, all items are backed up.\n * @param returnIfEmpty Returns null if there are no items to make backup of.\n * @returns JSON stringified representation of data, including keyParams.\n */\n\n }, {\n key: "createBackupFile",\n value: function () {\n var _createBackupFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14(subItems) {\n var intent,\n returnIfEmpty,\n items,\n encryptedPayloads,\n _iteratorNormalCompletion3,\n _didIteratorError3,\n _iteratorError3,\n _iterator3,\n _step3,\n item,\n payload,\n encrypted,\n data,\n keyParams,\n prettyPrint,\n _args14 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n intent = _args14.length > 1 && _args14[1] !== undefined ? _args14[1] : _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FilePreferEncrypted;\n returnIfEmpty = _args14.length > 2 && _args14[2] !== undefined ? _args14[2] : false;\n items = subItems || this.itemManager.items;\n\n if (!(returnIfEmpty && items.length === 0)) {\n _context14.next = 5;\n break;\n }\n\n return _context14.abrupt("return", undefined);\n\n case 5:\n encryptedPayloads = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context14.prev = 9;\n _iterator3 = items[Symbol.iterator]();\n\n case 11:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context14.next = 25;\n break;\n }\n\n item = _step3.value;\n\n if (!item.errorDecrypting) {\n _context14.next = 17;\n break;\n }\n\n /** Keep payload as-is */\n encryptedPayloads.push(item.payload);\n _context14.next = 22;\n break;\n\n case 17:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateSourcedPayloadFromObject"])(item.payload, _protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_10__["PayloadSource"].FileImport);\n _context14.next = 20;\n return this.payloadByEncryptingPayload(payload, intent);\n\n case 20:\n encrypted = _context14.sent;\n encryptedPayloads.push(encrypted);\n\n case 22:\n _iteratorNormalCompletion3 = true;\n _context14.next = 11;\n break;\n\n case 25:\n _context14.next = 31;\n break;\n\n case 27:\n _context14.prev = 27;\n _context14.t0 = _context14["catch"](9);\n _didIteratorError3 = true;\n _iteratorError3 = _context14.t0;\n\n case 31:\n _context14.prev = 31;\n _context14.prev = 32;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 34:\n _context14.prev = 34;\n\n if (!_didIteratorError3) {\n _context14.next = 37;\n break;\n }\n\n throw _iteratorError3;\n\n case 37:\n return _context14.finish(34);\n\n case 38:\n return _context14.finish(31);\n\n case 39:\n data = {\n items: encryptedPayloads.map(function (p) {\n return p.ejected();\n })\n };\n _context14.next = 42;\n return this.getRootKeyParams();\n\n case 42:\n keyParams = _context14.sent;\n\n if (keyParams && intent !== _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].FileDecrypted) {\n data.keyParams = keyParams.getPortableValue();\n }\n\n prettyPrint = 2;\n return _context14.abrupt("return", JSON.stringify(data, null, prettyPrint));\n\n case 46:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this, [[9, 27, 31, 39], [32,, 34, 38]]);\n }));\n\n function createBackupFile(_x16) {\n return _createBackupFile.apply(this, arguments);\n }\n\n return createBackupFile;\n }()\n /**\n * Register a callback to be notified when root key status changes.\n * @param callback A function that takes in a content type to call back when root\n * key or wrapper status has changed.\n */\n\n }, {\n key: "onKeyStatusChange",\n value: function onKeyStatusChange(callback) {\n var _this2 = this;\n\n this.keyObservers.push(callback);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["removeFromArray"])(_this2.keyObservers, callback);\n };\n }\n }, {\n key: "notifyObserversOfKeyChange",\n value: function () {\n var _notifyObserversOfKeyChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15() {\n var _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, observer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context15.prev = 3;\n _iterator4 = this.keyObservers[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context15.next = 12;\n break;\n }\n\n observer = _step4.value;\n _context15.next = 9;\n return observer();\n\n case 9:\n _iteratorNormalCompletion4 = true;\n _context15.next = 5;\n break;\n\n case 12:\n _context15.next = 18;\n break;\n\n case 14:\n _context15.prev = 14;\n _context15.t0 = _context15["catch"](3);\n _didIteratorError4 = true;\n _iteratorError4 = _context15.t0;\n\n case 18:\n _context15.prev = 18;\n _context15.prev = 19;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 21:\n _context15.prev = 21;\n\n if (!_didIteratorError4) {\n _context15.next = 24;\n break;\n }\n\n throw _iteratorError4;\n\n case 24:\n return _context15.finish(21);\n\n case 25:\n return _context15.finish(18);\n\n case 26:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function notifyObserversOfKeyChange() {\n return _notifyObserversOfKeyChange.apply(this, arguments);\n }\n\n return notifyObserversOfKeyChange;\n }()\n }, {\n key: "getRootKeyFromKeychain",\n value: function () {\n var _getRootKeyFromKeychain = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16() {\n var rawKey, rootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return this.deviceInterface.getKeychainValue();\n\n case 2:\n rawKey = _context16.sent;\n\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(rawKey)) {\n _context16.next = 5;\n break;\n }\n\n return _context16.abrupt("return", undefined);\n\n case 5:\n _context16.next = 7;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_14__["SNRootKey"].Create(rawKey);\n\n case 7:\n rootKey = _context16.sent;\n return _context16.abrupt("return", rootKey);\n\n case 9:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function getRootKeyFromKeychain() {\n return _getRootKeyFromKeychain.apply(this, arguments);\n }\n\n return getRootKeyFromKeychain;\n }()\n }, {\n key: "saveRootKeyToKeychain",\n value: function () {\n var _saveRootKeyToKeychain = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17() {\n var _this3 = this;\n\n var rawKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(this.rootKey)) {\n _context17.next = 2;\n break;\n }\n\n throw \'Attempting to non-existent root key to the keychain.\';\n\n case 2:\n if (!(this.keyMode !== KeyMode.RootKeyOnly)) {\n _context17.next = 4;\n break;\n }\n\n throw \'Should not be persisting wrapped key to keychain.\';\n\n case 4:\n rawKey = this.rootKey.getPersistableValue();\n return _context17.abrupt("return", this.executeCriticalFunction(function () {\n return _this3.deviceInterface.setKeychainValue(rawKey);\n }));\n\n case 6:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function saveRootKeyToKeychain() {\n return _saveRootKeyToKeychain.apply(this, arguments);\n }\n\n return saveRootKeyToKeychain;\n }()\n /**\n * @returns True if a root key wrapper (passcode) is configured.\n */\n\n }, {\n key: "hasRootKeyWrapper",\n value: function () {\n var _hasRootKeyWrapper = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18() {\n var wrapper;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n wrapper = _context18.sent;\n return _context18.abrupt("return", !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(wrapper));\n\n case 4:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function hasRootKeyWrapper() {\n return _hasRootKeyWrapper.apply(this, arguments);\n }\n\n return hasRootKeyWrapper;\n }()\n /**\n * A non-async alternative to `hasRootKeyWrapper` which uses pre-loaded state\n * to determine if a passcode is configured.\n */\n\n }, {\n key: "hasPasscode",\n value: function hasPasscode() {\n return this.keyMode === KeyMode.WrapperOnly || this.keyMode === KeyMode.RootKeyPlusWrapper;\n }\n /**\n * @returns True if the root key has not yet been unwrapped (passcode locked).\n */\n\n }, {\n key: "rootKeyNeedsUnwrapping",\n value: function () {\n var _rootKeyNeedsUnwrapping = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _context19.next = 2;\n return this.hasRootKeyWrapper();\n\n case 2:\n _context19.t0 = _context19.sent;\n\n if (!_context19.t0) {\n _context19.next = 5;\n break;\n }\n\n _context19.t0 = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(this.rootKey);\n\n case 5:\n return _context19.abrupt("return", _context19.t0);\n\n case 6:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function rootKeyNeedsUnwrapping() {\n return _rootKeyNeedsUnwrapping.apply(this, arguments);\n }\n\n return rootKeyNeedsUnwrapping;\n }()\n /**\n * @returns Key params object containing root key wrapper key params\n */\n\n }, {\n key: "getRootKeyWrapperKeyParams",\n value: function () {\n var _getRootKeyWrapperKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20() {\n var rawKeyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n _context20.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 2:\n rawKeyParams = _context20.sent;\n\n if (rawKeyParams) {\n _context20.next = 5;\n break;\n }\n\n return _context20.abrupt("return", undefined);\n\n case 5:\n return _context20.abrupt("return", this.createKeyParams(rawKeyParams));\n\n case 6:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function getRootKeyWrapperKeyParams() {\n return _getRootKeyWrapperKeyParams.apply(this, arguments);\n }\n\n return getRootKeyWrapperKeyParams;\n }()\n /**\n * @returns Object containing persisted wrapped (encrypted) root key\n */\n\n }, {\n key: "getWrappedRootKey",\n value: function () {\n var _getWrappedRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n return _context21.abrupt("return", this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped));\n\n case 1:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function getWrappedRootKey() {\n return _getWrappedRootKey.apply(this, arguments);\n }\n\n return getWrappedRootKey;\n }()\n /**\n * Returns rootKeyParams by reading from storage.\n */\n\n }, {\n key: "getRootKeyParams",\n value: function () {\n var _getRootKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context22.next = 4;\n break;\n }\n\n return _context22.abrupt("return", this.getRootKeyWrapperKeyParams());\n\n case 4:\n if (!(this.keyMode === KeyMode.RootKeyOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context22.next = 8;\n break;\n }\n\n return _context22.abrupt("return", this.getAccountKeyParams());\n\n case 8:\n if (!(this.keyMode === KeyMode.RootKeyNone)) {\n _context22.next = 12;\n break;\n }\n\n return _context22.abrupt("return", undefined);\n\n case 12:\n throw "Unhandled key mode for getRootKeyParams ".concat(this.keyMode);\n\n case 13:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this);\n }));\n\n function getRootKeyParams() {\n return _getRootKeyParams.apply(this, arguments);\n }\n\n return getRootKeyParams;\n }()\n /**\n * @returns getRootKeyParams may return different params based on different\n * keyMode. This function however strictly returns only account params.\n */\n\n }, {\n key: "getAccountKeyParams",\n value: function () {\n var _getAccountKeyParams = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23() {\n var rawKeyParams;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n _context23.next = 2;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 2:\n rawKeyParams = _context23.sent;\n\n if (rawKeyParams) {\n _context23.next = 5;\n break;\n }\n\n return _context23.abrupt("return", undefined);\n\n case 5:\n return _context23.abrupt("return", this.createKeyParams(rawKeyParams));\n\n case 6:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function getAccountKeyParams() {\n return _getAccountKeyParams.apply(this, arguments);\n }\n\n return getAccountKeyParams;\n }()\n /**\n * We know a wrappingKey is correct if it correctly decrypts\n * wrapped root key.\n */\n\n }, {\n key: "validateWrappingKey",\n value: function () {\n var _validateWrappingKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24(wrappingKey) {\n var wrappedRootKey, wrappedKeyPayload, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n _context24.next = 2;\n return this.getWrappedRootKey();\n\n case 2:\n wrappedRootKey = _context24.sent;\n\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context24.next = 7;\n break;\n }\n\n return _context24.abrupt("return", this.storageService.canDecryptWithKey(wrappingKey));\n\n case 7:\n if (!(this.keyMode === KeyMode.RootKeyOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context24.next = 15;\n break;\n }\n\n /**\n * In these modes, storage is encrypted with account keys, and\n * account keys are encrypted with wrappingKey. Here we validate\n * by attempting to decrypt account keys.\n */\n wrappedKeyPayload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(wrappedRootKey);\n _context24.next = 11;\n return this.payloadByDecryptingPayload(wrappedKeyPayload, wrappingKey);\n\n case 11:\n decrypted = _context24.sent;\n return _context24.abrupt("return", !decrypted.errorDecrypting);\n\n case 15:\n throw \'Unhandled case in validateWrappingKey\';\n\n case 16:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function validateWrappingKey(_x17) {\n return _validateWrappingKey.apply(this, arguments);\n }\n\n return validateWrappingKey;\n }()\n /**\n * Computes the root key wrapping key given a passcode.\n * Wrapping key params are read from disk.\n */\n\n }, {\n key: "computeWrappingKey",\n value: function () {\n var _computeWrappingKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee25(passcode) {\n var keyParams, key;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n _context25.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n keyParams = _context25.sent;\n _context25.next = 5;\n return this.computeRootKey(passcode, keyParams);\n\n case 5:\n key = _context25.sent;\n return _context25.abrupt("return", key);\n\n case 7:\n case "end":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function computeWrappingKey(_x18) {\n return _computeWrappingKey.apply(this, arguments);\n }\n\n return computeWrappingKey;\n }()\n /**\n * Unwraps the persisted root key value using the supplied wrappingKey.\n * Application interfaces must check to see if the root key requires unwrapping on load.\n * If so, they must generate the unwrapping key by getting our saved wrapping key keyParams.\n * After unwrapping, the root key is automatically loaded.\n */\n\n }, {\n key: "unwrapRootKey",\n value: function () {\n var _unwrapRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee26(wrappingKey) {\n var wrappedKey, payload, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context26.next = 3;\n break;\n }\n\n this.rootKey = wrappingKey;\n return _context26.abrupt("return");\n\n case 3:\n if (!(this.keyMode !== KeyMode.RootKeyPlusWrapper)) {\n _context26.next = 5;\n break;\n }\n\n throw \'Invalid key mode condition for unwrapping.\';\n\n case 5:\n _context26.next = 7;\n return this.getWrappedRootKey();\n\n case 7:\n wrappedKey = _context26.sent;\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(wrappedKey);\n _context26.next = 11;\n return this.payloadByDecryptingPayload(payload, wrappingKey);\n\n case 11:\n decrypted = _context26.sent;\n\n if (!decrypted.errorDecrypting) {\n _context26.next = 16;\n break;\n }\n\n throw Error(\'Unable to decrypt root key with provided wrapping key.\');\n\n case 16:\n _context26.next = 18;\n return _Protocol_root_key__WEBPACK_IMPORTED_MODULE_14__["SNRootKey"].Create(decrypted.contentObject, decrypted.uuid);\n\n case 18:\n this.rootKey = _context26.sent;\n _context26.next = 21;\n return this.notifyObserversOfKeyChange();\n\n case 21:\n case "end":\n return _context26.stop();\n }\n }\n }, _callee26, this);\n }));\n\n function unwrapRootKey(_x19) {\n return _unwrapRootKey.apply(this, arguments);\n }\n\n return unwrapRootKey;\n }()\n /**\n * Encrypts rootKey and saves it in storage instead of keychain, and then\n * clears keychain. This is because we don\'t want to store large encrypted\n * payloads in the keychain. If the root key is not wrapped, it is stored\n * in plain form in the user\'s secure keychain.\n */\n\n }, {\n key: "setNewRootKeyWrapper",\n value: function () {\n var _setNewRootKeyWrapper = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee27(wrappingKey, keyParams) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n if (!(this.keyMode === KeyMode.RootKeyNone)) {\n _context27.next = 4;\n break;\n }\n\n this.keyMode = KeyMode.WrapperOnly;\n _context27.next = 9;\n break;\n\n case 4:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context27.next = 8;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyPlusWrapper;\n _context27.next = 9;\n break;\n\n case 8:\n throw Error(\'Attempting to set wrapper on already wrapped key.\');\n\n case 9:\n _context27.next = 11;\n return this.deviceInterface.clearKeychainValue();\n\n case 11:\n if (!(this.keyMode === KeyMode.WrapperOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context27.next = 26;\n break;\n }\n\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context27.next = 18;\n break;\n }\n\n this.rootKey = wrappingKey;\n _context27.next = 16;\n return this.reencryptItemsKeys();\n\n case 16:\n _context27.next = 20;\n break;\n\n case 18:\n _context27.next = 20;\n return this.wrapAndPersistRootKey(wrappingKey);\n\n case 20:\n _context27.next = 22;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, keyParams.getPortableValue(), _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 22:\n _context27.next = 24;\n return this.notifyObserversOfKeyChange();\n\n case 24:\n _context27.next = 27;\n break;\n\n case 26:\n throw Error(\'Invalid keyMode on setNewRootKeyWrapper\');\n\n case 27:\n case "end":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function setNewRootKeyWrapper(_x20, _x21) {\n return _setNewRootKeyWrapper.apply(this, arguments);\n }\n\n return setNewRootKeyWrapper;\n }()\n /**\n * Wraps the current in-memory root key value using the wrappingKey,\n * then persists the wrapped value to disk.\n */\n\n }, {\n key: "wrapAndPersistRootKey",\n value: function () {\n var _wrapAndPersistRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee28(wrappingKey) {\n var payload, wrappedKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(this.rootKey, {\n content: this.rootKey.getPersistableValue()\n });\n _context28.next = 3;\n return this.payloadByEncryptingPayload(payload, _protocol_intents__WEBPACK_IMPORTED_MODULE_2__["EncryptionIntent"].LocalStorageEncrypted, wrappingKey);\n\n case 3:\n wrappedKey = _context28.sent;\n _context28.next = 6;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, wrappedKey.ejected(), _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 6:\n case "end":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function wrapAndPersistRootKey(_x22) {\n return _wrapAndPersistRootKey.apply(this, arguments);\n }\n\n return wrapAndPersistRootKey;\n }()\n /**\n * Removes root key wrapper from local storage and stores root key bare in secure keychain.\n */\n\n }, {\n key: "removeRootKeyWrapper",\n value: function () {\n var _removeRootKeyWrapper = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee29() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee29$(_context29) {\n while (1) {\n switch (_context29.prev = _context29.next) {\n case 0:\n if (!(this.keyMode !== KeyMode.WrapperOnly && this.keyMode !== KeyMode.RootKeyPlusWrapper)) {\n _context29.next = 2;\n break;\n }\n\n throw \'Attempting to remove root key wrapper on unwrapped key.\';\n\n case 2:\n if (this.keyMode === KeyMode.WrapperOnly) {\n this.keyMode = KeyMode.RootKeyNone;\n this.rootKey = undefined;\n } else if (this.keyMode === KeyMode.RootKeyPlusWrapper) {\n this.keyMode = KeyMode.RootKeyOnly;\n }\n\n _context29.next = 5;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 5:\n _context29.next = 7;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 7:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context29.next = 10;\n break;\n }\n\n _context29.next = 10;\n return this.saveRootKeyToKeychain();\n\n case 10:\n _context29.next = 12;\n return this.notifyObserversOfKeyChange();\n\n case 12:\n case "end":\n return _context29.stop();\n }\n }\n }, _callee29, this);\n }));\n\n function removeRootKeyWrapper() {\n return _removeRootKeyWrapper.apply(this, arguments);\n }\n\n return removeRootKeyWrapper;\n }()\n /**\n * The root key is distinct from regular keys and are only saved locally in the keychain,\n * in non-item form. Applications set root key on sign in, register, or password change.\n * @param key A SNRootKey object.\n * @param wrappingKey If a passcode is configured, the wrapping key\n * must be supplied, so that the new root key can be wrapped with the wrapping key.\n */\n\n }, {\n key: "setNewRootKey",\n value: function () {\n var _setNewRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee30(key, keyParams, wrappingKey) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee30$(_context30) {\n while (1) {\n switch (_context30.prev = _context30.next) {\n case 0:\n if (keyParams) {\n _context30.next = 2;\n break;\n }\n\n throw Error(\'keyParams must be supplied if setting root key.\');\n\n case 2:\n if (!(this.rootKey === key)) {\n _context30.next = 4;\n break;\n }\n\n throw Error(\'Attempting to set root key as same current value.\');\n\n case 4:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context30.next = 8;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyPlusWrapper;\n _context30.next = 16;\n break;\n\n case 8:\n if (!(this.keyMode === KeyMode.RootKeyNone)) {\n _context30.next = 12;\n break;\n }\n\n this.keyMode = KeyMode.RootKeyOnly;\n _context30.next = 16;\n break;\n\n case 12:\n if (!(this.keyMode === KeyMode.RootKeyOnly || this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context30.next = 15;\n break;\n }\n\n _context30.next = 16;\n break;\n\n case 15:\n throw Error("Unhandled key mode for setNewRootKey ".concat(this.keyMode));\n\n case 16:\n this.rootKey = key;\n _context30.next = 19;\n return this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyParams, keyParams.getPortableValue(), _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 19:\n if (!(this.keyMode === KeyMode.RootKeyOnly)) {\n _context30.next = 24;\n break;\n }\n\n _context30.next = 22;\n return this.saveRootKeyToKeychain();\n\n case 22:\n _context30.next = 29;\n break;\n\n case 24:\n if (!(this.keyMode === KeyMode.RootKeyPlusWrapper)) {\n _context30.next = 29;\n break;\n }\n\n if (wrappingKey) {\n _context30.next = 27;\n break;\n }\n\n throw Error(\'wrappingKey must be supplied\');\n\n case 27:\n _context30.next = 29;\n return this.wrapAndPersistRootKey(wrappingKey);\n\n case 29:\n _context30.next = 31;\n return this.notifyObserversOfKeyChange();\n\n case 31:\n _context30.next = 33;\n return this.reencryptItemsKeys();\n\n case 33:\n case "end":\n return _context30.stop();\n }\n }\n }, _callee30, this);\n }));\n\n function setNewRootKey(_x23, _x24, _x25) {\n return _setNewRootKey.apply(this, arguments);\n }\n\n return setNewRootKey;\n }()\n /**\n * Returns the in-memory root key value.\n */\n\n }, {\n key: "getRootKey",\n value: function () {\n var _getRootKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee31() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee31$(_context31) {\n while (1) {\n switch (_context31.prev = _context31.next) {\n case 0:\n return _context31.abrupt("return", this.rootKey);\n\n case 1:\n case "end":\n return _context31.stop();\n }\n }\n }, _callee31, this);\n }));\n\n function getRootKey() {\n return _getRootKey.apply(this, arguments);\n }\n\n return getRootKey;\n }()\n /**\n * Deletes root key and wrapper from keychain. Used when signing out of application.\n */\n\n }, {\n key: "clearLocalKeyState",\n value: function () {\n var _clearLocalKeyState = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee32() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee32$(_context32) {\n while (1) {\n switch (_context32.prev = _context32.next) {\n case 0:\n _context32.next = 2;\n return this.deviceInterface.clearKeychainValue();\n\n case 2:\n _context32.next = 4;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].WrappedRootKey, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 4:\n _context32.next = 6;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyWrapperKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 6:\n _context32.next = 8;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_20__["StorageKey"].RootKeyParams, _Lib_services_storage_service__WEBPACK_IMPORTED_MODULE_21__["StorageValueModes"].Nonwrapped);\n\n case 8:\n this.keyMode = KeyMode.RootKeyNone;\n this.rootKey = undefined;\n _context32.next = 12;\n return this.notifyObserversOfKeyChange();\n\n case 12:\n case "end":\n return _context32.stop();\n }\n }\n }, _callee32, this);\n }));\n\n function clearLocalKeyState() {\n return _clearLocalKeyState.apply(this, arguments);\n }\n\n return clearLocalKeyState;\n }()\n /**\n * @param password The password string to generate a root key from.\n */\n\n }, {\n key: "validateAccountPassword",\n value: function () {\n var _validateAccountPassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee33(password) {\n var keyParams, key, valid;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee33$(_context33) {\n while (1) {\n switch (_context33.prev = _context33.next) {\n case 0:\n _context33.next = 2;\n return this.getRootKeyParams();\n\n case 2:\n keyParams = _context33.sent;\n _context33.next = 5;\n return this.computeRootKey(password, keyParams);\n\n case 5:\n key = _context33.sent;\n valid = key.compare(this.rootKey);\n\n if (!valid) {\n _context33.next = 11;\n break;\n }\n\n return _context33.abrupt("return", {\n valid: valid,\n artifacts: {\n rootKey: key\n }\n });\n\n case 11:\n return _context33.abrupt("return", {\n valid: false\n });\n\n case 12:\n case "end":\n return _context33.stop();\n }\n }\n }, _callee33, this);\n }));\n\n function validateAccountPassword(_x26) {\n return _validateAccountPassword.apply(this, arguments);\n }\n\n return validateAccountPassword;\n }()\n /**\n * @param passcode The passcode string to generate a root key from.\n */\n\n }, {\n key: "validatePasscode",\n value: function () {\n var _validatePasscode = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee34(passcode) {\n var keyParams, key, valid;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee34$(_context34) {\n while (1) {\n switch (_context34.prev = _context34.next) {\n case 0:\n _context34.next = 2;\n return this.getRootKeyWrapperKeyParams();\n\n case 2:\n keyParams = _context34.sent;\n _context34.next = 5;\n return this.computeRootKey(passcode, keyParams);\n\n case 5:\n key = _context34.sent;\n _context34.next = 8;\n return this.validateWrappingKey(key);\n\n case 8:\n valid = _context34.sent;\n\n if (!valid) {\n _context34.next = 13;\n break;\n }\n\n return _context34.abrupt("return", {\n valid: valid,\n artifacts: {\n wrappingKey: key\n }\n });\n\n case 13:\n return _context34.abrupt("return", {\n valid: false\n });\n\n case 14:\n case "end":\n return _context34.stop();\n }\n }\n }, _callee34, this);\n }));\n\n function validatePasscode(_x27) {\n return _validatePasscode.apply(this, arguments);\n }\n\n return validatePasscode;\n }()\n /**\n * Only two types of items should be encrypted with a root key:\n * - An SNItemsKey object\n * - An encrypted storage object (local)\n */\n\n }, {\n key: "contentTypeUsesRootKeyEncryption",\n value: function contentTypeUsesRootKeyEncryption(contentType) {\n return contentType === _Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey || contentType === _Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].EncryptedStorage;\n }\n /**\n * Determines which key to use for encryption of the payload\n * The key object to use for encrypting the payload.\n */\n\n }, {\n key: "keyToUseForEncryptionOfPayload",\n value: function () {\n var _keyToUseForEncryptionOfPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee35(payload, intent) {\n var rootKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee35$(_context35) {\n while (1) {\n switch (_context35.prev = _context35.next) {\n case 0:\n if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(intent)) {\n _context35.next = 2;\n break;\n }\n\n throw \'Intent must be supplied when looking up key for encryption of item.\';\n\n case 2:\n if (!this.contentTypeUsesRootKeyEncryption(payload.content_type)) {\n _context35.next = 15;\n break;\n }\n\n _context35.next = 5;\n return this.getRootKey();\n\n case 5:\n rootKey = _context35.sent;\n\n if (rootKey) {\n _context35.next = 12;\n break;\n }\n\n if (!Object(_Lib_protocol__WEBPACK_IMPORTED_MODULE_22__["intentRequiresEncryption"])(intent)) {\n _context35.next = 11;\n break;\n }\n\n throw \'Root key encryption is required but no root key is available.\';\n\n case 11:\n return _context35.abrupt("return", undefined);\n\n case 12:\n return _context35.abrupt("return", rootKey);\n\n case 15:\n return _context35.abrupt("return", this.getDefaultItemsKey());\n\n case 16:\n case "end":\n return _context35.stop();\n }\n }\n }, _callee35, this);\n }));\n\n function keyToUseForEncryptionOfPayload(_x28, _x29) {\n return _keyToUseForEncryptionOfPayload.apply(this, arguments);\n }\n\n return keyToUseForEncryptionOfPayload;\n }()\n /**\n * Payloads could have been previously encrypted with any arbitrary SNItemsKey object.\n * If the payload is an items key object, it is always encrypted with the root key,\n * and so return that. Otherwise, we check to see if the payload has an\n * items_key_id and return that key. If it doesn\'t, this means the payload was\n * encrypted with legacy behavior. We return then the key object corresponding\n * to the version of this payload.\n * @returns The key object to use for decrypting this payload.\n */\n\n }, {\n key: "keyToUseForDecryptionOfPayload",\n value: function () {\n var _keyToUseForDecryptionOfPayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee36(payload) {\n var itemsKey, payloadVersion;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee36$(_context36) {\n while (1) {\n switch (_context36.prev = _context36.next) {\n case 0:\n if (!this.contentTypeUsesRootKeyEncryption(payload.content_type)) {\n _context36.next = 2;\n break;\n }\n\n return _context36.abrupt("return", this.getRootKey());\n\n case 2:\n if (!payload.items_key_id) {\n _context36.next = 5;\n break;\n }\n\n itemsKey = this.itemsKeyForPayload(payload);\n return _context36.abrupt("return", itemsKey);\n\n case 5:\n payloadVersion = payload.version;\n\n if (!(payloadVersion === this.getLatestVersion())) {\n _context36.next = 8;\n break;\n }\n\n throw \'No associated key found for item encrypted with latest protocol version.\';\n\n case 8:\n return _context36.abrupt("return", this.defaultItemsKeyForItemVersion(payloadVersion));\n\n case 9:\n case "end":\n return _context36.stop();\n }\n }\n }, _callee36, this);\n }));\n\n function keyToUseForDecryptionOfPayload(_x30) {\n return _keyToUseForDecryptionOfPayload.apply(this, arguments);\n }\n\n return keyToUseForDecryptionOfPayload;\n }()\n }, {\n key: "onSyncEvent",\n value: function () {\n var _onSyncEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee37(eventName) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee37$(_context37) {\n while (1) {\n switch (_context37.prev = _context37.next) {\n case 0:\n if (!(eventName === _Lib_events__WEBPACK_IMPORTED_MODULE_12__["SyncEvent"].FullSyncCompleted)) {\n _context37.next = 3;\n break;\n }\n\n _context37.next = 3;\n return this.handleFullSyncCompletion();\n\n case 3:\n if (!(eventName === _Lib_events__WEBPACK_IMPORTED_MODULE_12__["SyncEvent"].DownloadFirstSyncCompleted)) {\n _context37.next = 6;\n break;\n }\n\n _context37.next = 6;\n return this.handleDownloadFirstSyncCompletion();\n\n case 6:\n case "end":\n return _context37.stop();\n }\n }\n }, _callee37, this);\n }));\n\n function onSyncEvent(_x31) {\n return _onSyncEvent.apply(this, arguments);\n }\n\n return onSyncEvent;\n }()\n /**\n * When a download-first sync completes, it means we\'ve completed a (potentially multipage)\n * sync where we only downloaded what the server had before uploading anything. We will be\n * allowed to make local accomadations here before the server begins with the upload\n * part of the sync (automatically runs after download-first sync completes).\n * We use this to see if the server has any default itemsKeys, and if so, allows us to\n * delete any never-synced items keys we have here locally.\n */\n\n }, {\n key: "handleDownloadFirstSyncCompletion",\n value: function () {\n var _handleDownloadFirstSyncCompletion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee38() {\n var itemsKeys, neverSyncedKeys, defaultSyncedKey, hasSyncedItemsKey, rootKey, toDelete;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee38$(_context38) {\n while (1) {\n switch (_context38.prev = _context38.next) {\n case 0:\n /**\n * Find items keys with null or epoch updated_at value, indicating\n * that they haven\'t been synced yet.\n */\n itemsKeys = this.latestItemsKeys();\n neverSyncedKeys = itemsKeys.filter(function (key) {\n return key.neverSynced;\n });\n /**\n * Find isDefault items key that have been previously synced.\n * If we find one, this means we can delete any non-synced keys.\n */\n\n defaultSyncedKey = itemsKeys.find(function (key) {\n return !key.neverSynced && key.isDefault;\n });\n hasSyncedItemsKey = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_17__["isNullOrUndefined"])(defaultSyncedKey);\n\n if (!hasSyncedItemsKey) {\n _context38.next = 9;\n break;\n }\n\n _context38.next = 7;\n return this.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(neverSyncedKeys));\n\n case 7:\n _context38.next = 20;\n break;\n\n case 9:\n _context38.next = 11;\n return this.getRootKey();\n\n case 11:\n rootKey = _context38.sent;\n\n if (!rootKey) {\n _context38.next = 20;\n break;\n }\n\n /** If neverSynced.version != rootKey.version, delete. */\n toDelete = neverSyncedKeys.filter(function (itemsKey) {\n return itemsKey.version !== rootKey.version;\n });\n\n if (!(toDelete.length > 0)) {\n _context38.next = 17;\n break;\n }\n\n _context38.next = 17;\n return this.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(toDelete));\n\n case 17:\n if (!(this.latestItemsKeys().length === 0)) {\n _context38.next = 20;\n break;\n }\n\n _context38.next = 20;\n return this.createNewDefaultItemsKey();\n\n case 20:\n case "end":\n return _context38.stop();\n }\n }\n }, _callee38, this);\n }));\n\n function handleDownloadFirstSyncCompletion() {\n return _handleDownloadFirstSyncCompletion.apply(this, arguments);\n }\n\n return handleDownloadFirstSyncCompletion;\n }()\n }, {\n key: "handleFullSyncCompletion",\n value: function () {\n var _handleFullSyncCompletion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee39() {\n var currentItemsKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee39$(_context39) {\n while (1) {\n switch (_context39.prev = _context39.next) {\n case 0:\n /** Always create a new items key after full sync, if no items key is found */\n currentItemsKey = this.getDefaultItemsKey();\n\n if (currentItemsKey) {\n _context39.next = 6;\n break;\n }\n\n _context39.next = 4;\n return this.createNewDefaultItemsKey();\n\n case 4:\n if (!(this.keyMode === KeyMode.WrapperOnly)) {\n _context39.next = 6;\n break;\n }\n\n return _context39.abrupt("return", this.repersistAllItems());\n\n case 6:\n case "end":\n return _context39.stop();\n }\n }\n }, _callee39, this);\n }));\n\n function handleFullSyncCompletion() {\n return _handleFullSyncCompletion.apply(this, arguments);\n }\n\n return handleFullSyncCompletion;\n }()\n /**\n * If encryption status changes (esp. on mobile, where local storage encryption\n * can be disabled), consumers may call this function to repersist all items to\n * disk using latest encryption status.\n * @access public\n */\n\n }, {\n key: "repersistAllItems",\n value: function () {\n var _repersistAllItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee40() {\n var items, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee40$(_context40) {\n while (1) {\n switch (_context40.prev = _context40.next) {\n case 0:\n items = this.itemManager.items;\n payloads = items.map(function (item) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"])(item);\n });\n return _context40.abrupt("return", this.storageService.savePayloads(payloads));\n\n case 3:\n case "end":\n return _context40.stop();\n }\n }\n }, _callee40, this);\n }));\n\n function repersistAllItems() {\n return _repersistAllItems.apply(this, arguments);\n }\n\n return repersistAllItems;\n }()\n /**\n * @returns All SN|ItemsKey objects synced to the account.\n */\n\n }, {\n key: "latestItemsKeys",\n value: function latestItemsKeys() {\n return this.itemManager.itemsKeys();\n }\n /**\n * @returns The items key used to encrypt the payload\n */\n\n }, {\n key: "itemsKeyForPayload",\n value: function itemsKeyForPayload(payload) {\n return this.latestItemsKeys().find(function (key) {\n return key.uuid === payload.items_key_id;\n });\n }\n /**\n * @returns The SNItemsKey object to use to encrypt new or updated items.\n */\n\n }, {\n key: "getDefaultItemsKey",\n value: function getDefaultItemsKey() {\n var itemsKeys = this.latestItemsKeys();\n\n if (itemsKeys.length === 1) {\n return itemsKeys[0];\n }\n\n return itemsKeys.find(function (key) {\n return key.isDefault;\n });\n }\n /**\n * When the root key changes (non-null only), we must re-encrypt all items\n * keys with this new root key (by simply re-syncing).\n */\n\n }, {\n key: "reencryptItemsKeys",\n value: function () {\n var _reencryptItemsKeys = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee41() {\n var itemsKeys;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee41$(_context41) {\n while (1) {\n switch (_context41.prev = _context41.next) {\n case 0:\n itemsKeys = this.latestItemsKeys();\n\n if (!(itemsKeys.length > 0)) {\n _context41.next = 4;\n break;\n }\n\n _context41.next = 4;\n return this.itemManager.setItemsDirty(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["Uuids"])(itemsKeys));\n\n case 4:\n case "end":\n return _context41.stop();\n }\n }\n }, _callee41, this);\n }));\n\n function reencryptItemsKeys() {\n return _reencryptItemsKeys.apply(this, arguments);\n }\n\n return reencryptItemsKeys;\n }()\n /**\n * When migrating from non-SNItemsKey architecture, many items will not have a\n * relationship with any key object. For those items, we can be sure that only 1 key\n * object will correspond to that protocol version.\n * @returns The SNItemsKey object to decrypt items encrypted\n * with previous protocol version.\n */\n\n }, {\n key: "defaultItemsKeyForItemVersion",\n value: function () {\n var _defaultItemsKeyForItemVersion = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee42(version) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee42$(_context42) {\n while (1) {\n switch (_context42.prev = _context42.next) {\n case 0:\n return _context42.abrupt("return", this.latestItemsKeys().find(function (key) {\n return key.version === version;\n }));\n\n case 1:\n case "end":\n return _context42.stop();\n }\n }\n }, _callee42, this);\n }));\n\n function defaultItemsKeyForItemVersion(_x32) {\n return _defaultItemsKeyForItemVersion.apply(this, arguments);\n }\n\n return defaultItemsKeyForItemVersion;\n }()\n /**\n * Creates a new random SNItemsKey to use for item encryption, and adds it to model management.\n * Consumer must call sync. If the protocol version <= 003, only one items key should be created,\n * and its .itemsKey value should be equal to the root key masterKey value.\n */\n\n }, {\n key: "createNewDefaultItemsKey",\n value: function () {\n var _createNewDefaultItemsKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee43() {\n var rootKey, operatorVersion, itemTemplate, payload, currentDefault, itemsKey;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee43$(_context43) {\n while (1) {\n switch (_context43.prev = _context43.next) {\n case 0:\n _context43.next = 2;\n return this.getRootKey();\n\n case 2:\n rootKey = _context43.sent;\n operatorVersion = rootKey ? rootKey.version : this.getLatestVersion();\n\n if (!(Object(_Protocol_versions__WEBPACK_IMPORTED_MODULE_3__["compareVersions"])(operatorVersion, LAST_NONROOT_ITEMS_KEY_VERSION) <= 0)) {\n _context43.next = 16;\n break;\n }\n\n _context43.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_11__["CreateMaxPayloadFromAnyObject"];\n _context43.next = 8;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_16__["Uuid"].GenerateUuid();\n\n case 8:\n _context43.t1 = _context43.sent;\n _context43.t2 = _Models_content_types__WEBPACK_IMPORTED_MODULE_19__["ContentType"].ItemsKey;\n _context43.t3 = Object(_Models_functions__WEBPACK_IMPORTED_MODULE_1__["FillItemContent"])({\n itemsKey: rootKey.masterKey,\n dataAuthenticationKey: rootKey.dataAuthenticationKey,\n version: operatorVersion\n });\n _context43.t4 = {\n uuid: _context43.t1,\n content_type: _context43.t2,\n content: _context43.t3\n };\n payload = (0, _context43.t0)(_context43.t4);\n itemTemplate = Object(_Models_generator__WEBPACK_IMPORTED_MODULE_13__["CreateItemFromPayload"])(payload);\n _context43.next = 19;\n break;\n\n case 16:\n _context43.next = 18;\n return this.operatorForVersion(operatorVersion).createItemsKey();\n\n case 18:\n itemTemplate = _context43.sent;\n\n case 19:\n currentDefault = this.getDefaultItemsKey();\n\n if (!currentDefault) {\n _context43.next = 23;\n break;\n }\n\n _context43.next = 23;\n return this.itemManager.changeItemsKey(currentDefault.uuid, function (mutator) {\n mutator.isDefault = false;\n });\n\n case 23:\n _context43.next = 25;\n return this.itemManager.insertItem(itemTemplate);\n\n case 25:\n itemsKey = _context43.sent;\n _context43.next = 28;\n return this.itemManager.changeItemsKey(itemsKey.uuid, function (mutator) {\n mutator.isDefault = true;\n });\n\n case 28:\n return _context43.abrupt("return", itemsKey);\n\n case 29:\n case "end":\n return _context43.stop();\n }\n }\n }, _callee43, this);\n }));\n\n function createNewDefaultItemsKey() {\n return _createNewDefaultItemsKey.apply(this, arguments);\n }\n\n return createNewDefaultItemsKey;\n }()\n }, {\n key: "changePassword",\n value: function () {\n var _changePassword = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee45(email, currentPassword, newPassword, wrappingKey) {\n var _this4 = this;\n\n var _ref, _ref2, currentRootKey, currentKeyParams, currentDefaultItemsKey, computedRootKey, _ref3, newRootKey, newKeyParams, newDefaultItemsKey;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee45$(_context45) {\n while (1) {\n switch (_context45.prev = _context45.next) {\n case 0:\n _context45.next = 2;\n return Promise.all([this.getRootKey(), this.getRootKeyParams()]);\n\n case 2:\n _ref = _context45.sent;\n _ref2 = _slicedToArray(_ref, 2);\n currentRootKey = _ref2[0];\n currentKeyParams = _ref2[1];\n currentDefaultItemsKey = this.getDefaultItemsKey();\n _context45.next = 9;\n return this.computeRootKey(currentPassword, currentKeyParams);\n\n case 9:\n computedRootKey = _context45.sent;\n\n if (currentRootKey.compare(computedRootKey)) {\n _context45.next = 12;\n break;\n }\n\n return _context45.abrupt("return", [Error(_api_messages__WEBPACK_IMPORTED_MODULE_23__["INVALID_PASSWORD"])]);\n\n case 12:\n _context45.next = 14;\n return this.createRootKey(email, newPassword);\n\n case 14:\n _ref3 = _context45.sent;\n newRootKey = _ref3.key;\n newKeyParams = _ref3.keyParams;\n _context45.next = 19;\n return this.setNewRootKey(newRootKey, newKeyParams, wrappingKey);\n\n case 19:\n _context45.next = 21;\n return this.createNewDefaultItemsKey();\n\n case 21:\n newDefaultItemsKey = _context45.sent;\n return _context45.abrupt("return", [null, {\n previousRootKey: currentRootKey,\n newRootKey: newRootKey,\n newKeyParams: newKeyParams,\n rollback: function () {\n var _rollback = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee44() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee44$(_context44) {\n while (1) {\n switch (_context44.prev = _context44.next) {\n case 0:\n _context44.next = 2;\n return _this4.setNewRootKey(currentRootKey, currentKeyParams, wrappingKey);\n\n case 2:\n _context44.next = 4;\n return Promise.all([_this4.itemManager.setItemToBeDeleted(newDefaultItemsKey.uuid), _this4.itemManager.changeItem(currentDefaultItemsKey.uuid, function (mutator) {\n mutator.isDefault = true;\n })]);\n\n case 4:\n case "end":\n return _context44.stop();\n }\n }\n }, _callee44);\n }));\n\n function rollback() {\n return _rollback.apply(this, arguments);\n }\n\n return rollback;\n }()\n }]);\n\n case 23:\n case "end":\n return _context45.stop();\n }\n }\n }, _callee45, this);\n }));\n\n function changePassword(_x33, _x34, _x35, _x36) {\n return _changePassword.apply(this, arguments);\n }\n\n return changePassword;\n }()\n }]);\n\n return SNProtocolService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_15__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvcHJvdG9jb2xfc2VydmljZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9wcm90b2NvbF9zZXJ2aWNlLnRzPzE5NDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXVpZHMsIEZpbGxJdGVtQ29udGVudCB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IEVuY3J5cHRpb25JbnRlbnQgfSBmcm9tICcuLy4uL3Byb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgY29tcGFyZVZlcnNpb25zIH0gZnJvbSAnQFByb3RvY29sL3ZlcnNpb25zJztcbmltcG9ydCB7IFByb3RvY29sVmVyc2lvbiB9IGZyb20gJy4vLi4vcHJvdG9jb2wvdmVyc2lvbnMnO1xuaW1wb3J0IHsgQ3JlYXRlS2V5UGFyYW1zIH0gZnJvbSAnQFByb3RvY29sL2tleV9wYXJhbXMnO1xuaW1wb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDA0IH0gZnJvbSAnLi8uLi9wcm90b2NvbC9vcGVyYXRvci8wMDQvb3BlcmF0b3JfMDA0JztcbmltcG9ydCB7IFNOUHJvdG9jb2xPcGVyYXRvcjAwMyB9IGZyb20gJy4vLi4vcHJvdG9jb2wvb3BlcmF0b3IvMDAzL29wZXJhdG9yXzAwMyc7XG5pbXBvcnQgeyBTTlByb3RvY29sT3BlcmF0b3IwMDIgfSBmcm9tICcuLy4uL3Byb3RvY29sL29wZXJhdG9yLzAwMi9vcGVyYXRvcl8wMDInO1xuaW1wb3J0IHsgU05Qcm90b2NvbE9wZXJhdG9yMDAxIH0gZnJvbSAnLi8uLi9wcm90b2NvbC9vcGVyYXRvci8wMDEvb3BlcmF0b3JfMDAxJztcbmltcG9ydCB7IFBheWxvYWRGb3JtYXQgfSBmcm9tICcuLy4uL3Byb3RvY29sL3BheWxvYWRzL2Zvcm1hdHMnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJy4vLi4vcHJvdG9jb2wvcGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBDcmVhdGVFbmNyeXB0aW9uUGFyYW1ldGVycywgQ3JlYXRlSW50ZW50UGF5bG9hZEZyb21PYmplY3QsIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdCwgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BMaWIvZXZlbnRzJztcbmltcG9ydCB7IENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZCB9IGZyb20gJ0BNb2RlbHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFNOUm9vdEtleSB9IGZyb20gJ0BQcm90b2NvbC9yb290X2tleSc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IFV1aWQgfSBmcm9tICdATGliL3V1aWQnO1xuaW1wb3J0IHsgaXNSZWFjdE5hdGl2ZUVudmlyb25tZW50LCBpc1N0cmluZywgaXNOdWxsT3JVbmRlZmluZWQsIGlzRnVuY3Rpb24sIHJlbW92ZUZyb21BcnJheSwgaXNXZWJDcnlwdG9BdmFpbGFibGUgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IFYwMDFBbGdvcml0aG0sIFYwMDJBbGdvcml0aG0gfSBmcm9tICcuLi9wcm90b2NvbC9vcGVyYXRvci9hbGdvcml0aG1zJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IFN0b3JhZ2VLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBTdG9yYWdlVmFsdWVNb2RlcyB9IGZyb20gJ0BMaWIvc2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlJztcbmltcG9ydCB7IGlzRGVjcnlwdGVkSW50ZW50LCBpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24gfSBmcm9tICdATGliL3Byb3RvY29sJztcbmltcG9ydCB7IElOVkFMSURfUEFTU1dPUkQgfSBmcm9tICcuL2FwaS9tZXNzYWdlcyc7XG5leHBvcnQgdmFyIEtleU1vZGU7XG4oZnVuY3Rpb24gKEtleU1vZGUpIHtcbiAgICAvKiogaS5lIE5vIGFjY291bnQgYW5kIG5vIHBhc3Njb2RlICovXG4gICAgS2V5TW9kZVtLZXlNb2RlW1wiUm9vdEtleU5vbmVcIl0gPSAwXSA9IFwiUm9vdEtleU5vbmVcIjtcbiAgICAvKiogaS5lIEFjY291bnQgYnV0IG5vIHBhc3Njb2RlICovXG4gICAgS2V5TW9kZVtLZXlNb2RlW1wiUm9vdEtleU9ubHlcIl0gPSAxXSA9IFwiUm9vdEtleU9ubHlcIjtcbiAgICAvKiogaS5lIEFjY291bnQgcGx1cyBwYXNzY29kZSAqL1xuICAgIEtleU1vZGVbS2V5TW9kZVtcIlJvb3RLZXlQbHVzV3JhcHBlclwiXSA9IDJdID0gXCJSb290S2V5UGx1c1dyYXBwZXJcIjtcbiAgICAvKiogaS5lIE5vIGFjY291bnQsIGJ1dCBwYXNzY29kZSAqL1xuICAgIEtleU1vZGVbS2V5TW9kZVtcIldyYXBwZXJPbmx5XCJdID0gM10gPSBcIldyYXBwZXJPbmx5XCI7XG59KShLZXlNb2RlIHx8IChLZXlNb2RlID0ge30pKTtcbi8qKiBUaGUgbGFzdCBwcm90b2NvbCB2ZXJzaW9uIHRvIG5vdCB1c2Ugcm9vdC1rZXkgYmFzZWQgaXRlbXMga2V5cyAqL1xuY29uc3QgTEFTVF9OT05ST09UX0lURU1TX0tFWV9WRVJTSU9OID0gUHJvdG9jb2xWZXJzaW9uLlYwMDM7XG4vKipcbiAqIFRoZSBwcm90b2NvbCBzZXJ2aWNlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBvZiBwYXlsb2FkcywgYW5kXG4gKiBoYW5kbGVzIGRlbGVnYXRpb24gb2YgYSB0YXNrIHRvIHRoZSByZXNwZWN0aXZlIHByb3RvY29sIG9wZXJhdG9yLiBFYWNoIHZlcnNpb24gb2YgdGhlIHByb3RvY29sXG4gKiAoMDAxLCAwMDIsIDAwMywgMDA0LCBldGMpIHVzZXMgYSByZXNwZWN0aXZlIG9wZXJhdG9yIHZlcnNpb24gdG8gcGVyZm9ybSBlbmNyeXB0aW9uIG9wZXJhdGlvbnMuXG4gKiBPcGVyYXRvcnMgYXJlIGxvY2F0ZWQgaW4gL3Byb3RvY29sL29wZXJhdG9yLlxuICogVGhlIHByb3RvY29sIHNlcnZpY2UgZGVwZW5kcyBvbiB0aGUga2V5TWFuYWdlciBmb3IgZGV0ZXJtaW5pbmcgd2hpY2gga2V5IHRvIHVzZSBmb3IgdGhlXG4gKiBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIG9mIGEgcGFydGljdWxhciBwYXlsb2FkLlxuICogVGhlIHByb3RvY29sIHNlcnZpY2UgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZGljdGF0aW5nIHdoaWNoIHByb3RvY29sIHZlcnNpb25zIGFyZSB2YWxpZCxcbiAqIGFuZCB3aGljaCBhcmUgbm8gbG9uZ2VyIHZhbGlkIG9yIG5vdCBzdXBwb3J0ZWQuXG5cbiAqIFRoZSBrZXkgbWFuYWdlciBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgcm9vdCBrZXkgYW5kIHJvb3Qga2V5IHdyYXBwZXIgc3RhdGVzLlxuICogV2hlbiB0aGUga2V5IG1hbmFnZXIgaXMgaW5pdGlhbGl6ZWQsIGl0IGluaXRpYXRlcyBpdHNlbGYgd2l0aCBhIGtleU1vZGUsIHdoaWNoXG4gKiBkaWN0YXRlcyB0aGUgZW50aXJlIGZsb3cgb2Yga2V5IG1hbmFnZW1lbnQuIFRoZSBrZXkgbWFuYWdlcidzIHJlc3BvbnNpYmlsaXRpZXMgaW5jbHVkZTpcbiAqIC0gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlIGtleWNoYWluIHRvIHNhdmUgb3IgY2xlYXIgdGhlIHJvb3Qga2V5XG4gKiAtIGludGVyYWN0aW5nIHdpdGggc3RvcmFnZSB0byBzYXZlIHJvb3Qga2V5IHBhcmFtcyBvciB3cmFwcGVyIHBhcmFtcywgb3IgdGhlIHdyYXBwZWQgcm9vdCBrZXkuXG4gKiAtIGV4cG9zaW5nIG1ldGhvZHMgdGhhdCBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gdW53cmFwIHRoZSByb290IGtleSAodW5sb2NrIHRoZSBhcHBsaWNhdGlvbilcbiAqXG4gKiBJdCBhbHNvIGV4cG9zZXMgdHdvIHByaW1hcnkgbWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcgd2hhdCBrZXkgc2hvdWxkIGJlIHVzZWQgdG8gZW5jcnlwdFxuICogb3IgZGVjcnlwdCBhIHBhcnRpY3VsYXIgcGF5bG9hZC4gU29tZSBwYXlsb2FkcyBhcmUgZW5jcnlwdGVkIGRpcmVjdGx5IHdpdGggdGhlIHJvb3RLZXlcbiAqIChzdWNoIGFzIGl0ZW1zS2V5cyBhbmQgZW5jcnlwdGVkU3RvcmFnZSkuIE90aGVycyBhcmUgZW5jcnlwdGVkIHdpdGggaXRlbXNLZXlzIChub3RlcywgdGFncywgZXRjKS5cblxuICogVGhlIGl0ZW1zIGtleSBtYW5hZ2VyIG1hbmFnZXMgdGhlIGxpZmVjeWNsZSBvZiBpdGVtcyBrZXlzLlxuICogSXQgaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBkZWZhdWx0IGl0ZW1zIGtleSB3aGVuIGNvbmRpdGlvbnMgY2FsbCBmb3IgaXRcbiAqIChzdWNoIGFzIGFmdGVyIHRoZSBmaXJzdCBzeW5jIGNvbXBsZXRlcyBhbmQgbm8ga2V5IGV4aXN0cykuXG4gKiBJdCBhbHNvIGV4cG9zZXMgcHVibGljIG1ldGhvZHMgdGhhdCBhbGxvd3MgY29uc3VtZXJzIHRvIHJldHJpZXZlIGFuIGl0ZW1zIGtleVxuICogZm9yIGEgcGFydGljdWxhciBwYXlsb2FkLCBhbmQgYWxzbyByZXRyaWV2ZSBhbGwgYXZhaWxhYmxlIGl0ZW1zIGtleXMuXG4qL1xuZXhwb3J0IGNsYXNzIFNOUHJvdG9jb2xTZXJ2aWNlIGV4dGVuZHMgUHVyZVNlcnZpY2Uge1xuICAgIGNvbnN0cnVjdG9yKGl0ZW1NYW5hZ2VyLCBtb2RlbE1hbmFnZXIsIGRldmljZUludGVyZmFjZSwgc3RvcmFnZVNlcnZpY2UsIGNyeXB0bykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wZXJhdG9ycyA9IHt9O1xuICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLlJvb3RLZXlOb25lO1xuICAgICAgICB0aGlzLmtleU9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLml0ZW1NYW5hZ2VyID0gaXRlbU1hbmFnZXI7XG4gICAgICAgIHRoaXMubW9kZWxNYW5hZ2VyID0gbW9kZWxNYW5hZ2VyO1xuICAgICAgICB0aGlzLmRldmljZUludGVyZmFjZSA9IGRldmljZUludGVyZmFjZTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHN0b3JhZ2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmNyeXB0byA9IGNyeXB0bztcbiAgICAgICAgaWYgKGlzUmVhY3ROYXRpdmVFbnZpcm9ubWVudCgpKSB7XG4gICAgICAgICAgICBVdWlkLlNldEdlbmVyYXRvcnModGhpcy5jcnlwdG8uZ2VuZXJhdGVVVUlELCB1bmRlZmluZWQgLy8gbm8gc3luYyBpbXBsZW1lbnRhdGlvbiBvbiBSZWFjdCBOYXRpdmVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBVdWlkLlNldEdlbmVyYXRvcnModGhpcy5jcnlwdG8uZ2VuZXJhdGVVVUlELCB0aGlzLmNyeXB0by5nZW5lcmF0ZVVVSURTeW5jKTtcbiAgICAgICAgfVxuICAgICAgICAvKiogSGlkZSByb290S2V5IGVudW1lcmF0aW9uICovXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncm9vdEtleScsIHtcbiAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbXNPYnNlcnZlciA9IHRoaXMuaXRlbU1hbmFnZXIuYWRkT2JzZXJ2ZXIoW0NvbnRlbnRUeXBlLkl0ZW1zS2V5XSwgKF8sIGluc2VydGVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zZXJ0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjcnlwdEVycm9yZWRJdGVtcygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqIEBvdmVycmlkZSAqL1xuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5tb2RlbE1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyeXB0by5kZWluaXQoKTtcbiAgICAgICAgdGhpcy5jcnlwdG8gPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0ge307XG4gICAgICAgIHRoaXMua2V5T2JzZXJ2ZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMucmVtb3ZlSXRlbXNPYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1zT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgICB0aGlzLnJvb3RLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplKCkge1xuICAgICAgICBjb25zdCB3cmFwcGVkUm9vdEtleSA9IGF3YWl0IHRoaXMuZ2V0V3JhcHBlZFJvb3RLZXkoKTtcbiAgICAgICAgY29uc3QgYWNjb3VudEtleVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0QWNjb3VudEtleVBhcmFtcygpO1xuICAgICAgICBjb25zdCBoYXNXcmFwcGVyID0gYXdhaXQgdGhpcy5oYXNSb290S2V5V3JhcHBlcigpO1xuICAgICAgICBjb25zdCBoYXNSb290S2V5ID0gIWlzTnVsbE9yVW5kZWZpbmVkKHdyYXBwZWRSb290S2V5KSB8fFxuICAgICAgICAgICAgIWlzTnVsbE9yVW5kZWZpbmVkKGFjY291bnRLZXlQYXJhbXMpO1xuICAgICAgICBpZiAoaGFzV3JhcHBlciAmJiBoYXNSb290S2V5KSB7XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChoYXNXcmFwcGVyICYmICFoYXNSb290S2V5KSB7XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLldyYXBwZXJPbmx5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFoYXNXcmFwcGVyICYmIGhhc1Jvb3RLZXkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU9ubHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWhhc1dyYXBwZXIgJiYgIWhhc1Jvb3RLZXkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyAnSW52YWxpZCBrZXkgbW9kZSBjb25kaXRpb24nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMucm9vdEtleSA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleUZyb21LZXljaGFpbigpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnlPYnNlcnZlcnNPZktleUNoYW5nZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGxhdGVzdCBwcm90b2NvbCB2ZXJzaW9uXG4gICAgICovXG4gICAgZ2V0TGF0ZXN0VmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIFByb3RvY29sVmVyc2lvbi5WMDA0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXNlcidzIGFjY291bnRcbiAgICAgKi9cbiAgICBhc3luYyBnZXRVc2VyVmVyc2lvbigpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gYXdhaXQgdGhpcy5nZXRBY2NvdW50S2V5UGFyYW1zKCk7XG4gICAgICAgIHJldHVybiBrZXlQYXJhbXMgJiYga2V5UGFyYW1zLnZlcnNpb247XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiB1cGdyYWRlIGF2YWlsYWJsZSBmb3IgdGhlIGFjY291bnQgb3IgcGFzc2NvZGVcbiAgICAgKi9cbiAgICBhc3luYyB1cGdyYWRlQXZhaWxhYmxlKCkge1xuICAgICAgICBjb25zdCBhY2NvdW50VXBncmFkZUF2YWlsYWJsZSA9IGF3YWl0IHRoaXMuYWNjb3VudFVwZ3JhZGVBdmFpbGFibGUoKTtcbiAgICAgICAgY29uc3QgcGFzc2NvZGVVcGdyYWRlQXZhaWxhYmxlID0gYXdhaXQgdGhpcy5wYXNzY29kZVVwZ3JhZGVBdmFpbGFibGUoKTtcbiAgICAgICAgcmV0dXJuIGFjY291bnRVcGdyYWRlQXZhaWxhYmxlIHx8IHBhc3Njb2RlVXBncmFkZUF2YWlsYWJsZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyJ3MgYWNjb3VudCBwcm90b2NvbCB2ZXJzaW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICovXG4gICAgYXN5bmMgYWNjb3VudFVwZ3JhZGVBdmFpbGFibGUoKSB7XG4gICAgICAgIGNvbnN0IHVzZXJWZXJzaW9uID0gYXdhaXQgdGhpcy5nZXRVc2VyVmVyc2lvbigpO1xuICAgICAgICBpZiAoIXVzZXJWZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVzZXJWZXJzaW9uICE9PSB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyJ3MgYWNjb3VudCBwcm90b2NvbCB2ZXJzaW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAgICovXG4gICAgYXN5bmMgcGFzc2NvZGVVcGdyYWRlQXZhaWxhYmxlKCkge1xuICAgICAgICBjb25zdCBwYXNzY29kZVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgaWYgKCFwYXNzY29kZVBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXNzY29kZVBhcmFtcy52ZXJzaW9uICE9PSB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGNhcGFibGUgb2Ygc3VwcG9ydGluZ1xuICAgICAqIGtleSBkZXJpdmF0aW9uLlxuICAgICAqL1xuICAgIHBsYXRmb3JtU3VwcG9ydHNLZXlEZXJpdmF0aW9uKGtleVBhcmFtcykge1xuICAgICAgICAvKipcbiAgICAgICAgICogSWYgdGhlIHZlcnNpb24gaXMgMDAzIG9yIGxvd2VyLCBrZXkgZGVyaXZhdGlvbiBpcyBzdXBwb3J0ZWQgdW5sZXNzIHRoZSBicm93c2VyIGlzXG4gICAgICAgICAqIElFIG9yIEVkZ2UgKG9yIGdlbmVyYWxseSwgd2hlcmUgV2ViQ3J5cHRvIGlzIG5vdCBhdmFpbGFibGUpLlxuICAgICAgICAgKlxuICAgICAgICAgKiBWZXJzaW9ucyAwMDQgYW5kIGFib3ZlIGFyZSBhbHdheXMgc3VwcG9ydGVkLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhrZXlQYXJhbXMudmVyc2lvbiwgUHJvdG9jb2xWZXJzaW9uLlYwMDQpID49IDApIHtcbiAgICAgICAgICAgIC8qIGtleVBhcmFtcy52ZXJzaW9uID49IDAwNCAqL1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gISFpc1dlYkNyeXB0b0F2YWlsYWJsZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRoZSB2ZXJzaW9ucyB0aGF0IHRoaXMgbGlicmFyeSBzdXBwb3J0cy5cbiAgICAgKi9cbiAgICBzdXBwb3J0ZWRWZXJzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3RvY29sVmVyc2lvbi5WMDAxLFxuICAgICAgICAgICAgUHJvdG9jb2xWZXJzaW9uLlYwMDIsXG4gICAgICAgICAgICBQcm90b2NvbFZlcnNpb24uVjAwMyxcbiAgICAgICAgICAgIFByb3RvY29sVmVyc2lvbi5WMDA0LFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGlucHV0IHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIHRoZSBsYXRlc3Qgc3VwcG9ydGVkIGxpYnJhcnkgdmVyc2lvbi5cbiAgICAgKi9cbiAgICBpc1ZlcnNpb25OZXdlclRoYW5MaWJyYXJ5VmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgICAgIGNvbnN0IGxpYnJhcnlWZXJzaW9uID0gdGhpcy5nZXRMYXRlc3RWZXJzaW9uKCk7XG4gICAgICAgIHJldHVybiBjb21wYXJlVmVyc2lvbnModmVyc2lvbiwgbGlicmFyeVZlcnNpb24pID09PSAxO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGlucHV0IHZlcnNpb24gaXMgZXhwaXJlZFxuICAgICAqL1xuICAgIGlzUHJvdG9jb2xWZXJzaW9uT3V0ZGF0ZWQodmVyc2lvbikge1xuICAgICAgICBjb25zdCBleHBpcmF0aW9uRGF0ZXMgPSB7XG4gICAgICAgICAgICBbUHJvdG9jb2xWZXJzaW9uLlYwMDFdOiBEYXRlLnBhcnNlKCcyMDE4LTAxLTAxJyksXG4gICAgICAgICAgICBbUHJvdG9jb2xWZXJzaW9uLlYwMDJdOiBEYXRlLnBhcnNlKCcyMDIwLTAxLTAxJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IGV4cGlyYXRpb25EYXRlc1t2ZXJzaW9uXTtcbiAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAvKiBObyBleHBpcmF0aW9uIGRhdGUsIGlzIGFjdGl2ZSB2ZXJzaW9uICovXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZXhwaXJlZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gZGF0ZTtcbiAgICAgICAgcmV0dXJuIGV4cGlyZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFZlcnNpb25zIDAwMSBhbmQgMDAyIG9mIHRoZSBwcm90b2NvbCBzdXBwb3J0ZWQgZHluYW1pYyBjb3N0cywgYXMgcmVwb3J0ZWQgYnkgdGhlIHNlcnZlci5cbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNsaWVudC1lbmZvcmNlZCBtaW5pbXVtIGNvc3QsIHRvIHByZXZlbnQgdGhlIHNlcnZlciBmcm9tXG4gICAgICogb3ZlcndoZWxtaW5nbHkgdW5kZXItcmVwb3J0aW5nIHRoZSBjb3N0LlxuICAgICAqL1xuICAgIGNvc3RNaW5pbXVtRm9yVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnModmVyc2lvbiwgUHJvdG9jb2xWZXJzaW9uLlYwMDMpID49IDApIHtcbiAgICAgICAgICAgIHRocm93ICdDb3N0IG1pbmltdW1zIG9ubHkgYXBwbHkgdG8gdmVyc2lvbnMgPD0gMDAyJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodmVyc2lvbiA9PT0gUHJvdG9jb2xWZXJzaW9uLlYwMDEpIHtcbiAgICAgICAgICAgIHJldHVybiBWMDAxQWxnb3JpdGhtLlBia2RmTWluQ29zdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwMikge1xuICAgICAgICAgICAgcmV0dXJuIFYwMDJBbGdvcml0aG0uUGJrZGZNaW5Db3N0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgYEludmFsaWQgdmVyc2lvbiBmb3IgY29zdCBtaW5pbXVtOiAke3ZlcnNpb259YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjcmVhdGVPcGVyYXRvckZvckxhdGVzdFZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU9wZXJhdG9yRm9yVmVyc2lvbih0aGlzLmdldExhdGVzdFZlcnNpb24oKSk7XG4gICAgfVxuICAgIGNyZWF0ZU9wZXJhdG9yRm9yVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgICAgIGlmICh2ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwMSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTTlByb3RvY29sT3BlcmF0b3IwMDEodGhpcy5jcnlwdG8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZlcnNpb24gPT09IFByb3RvY29sVmVyc2lvbi5WMDAyKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNOUHJvdG9jb2xPcGVyYXRvcjAwMih0aGlzLmNyeXB0byk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmVyc2lvbiA9PT0gUHJvdG9jb2xWZXJzaW9uLlYwMDMpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU05Qcm90b2NvbE9wZXJhdG9yMDAzKHRoaXMuY3J5cHRvKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2ZXJzaW9uID09PSBQcm90b2NvbFZlcnNpb24uVjAwNCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTTlByb3RvY29sT3BlcmF0b3IwMDQodGhpcy5jcnlwdG8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZlcnNpb24gPT09IFByb3RvY29sVmVyc2lvbi5WMDAwQmFzZTY0RGVjcnlwdGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPcGVyYXRvckZvckxhdGVzdFZlcnNpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IGBVbmFibGUgdG8gZmluZCBvcGVyYXRvciBmb3IgdmVyc2lvbiAke3ZlcnNpb259YDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvcGVyYXRvckZvclZlcnNpb24odmVyc2lvbikge1xuICAgICAgICBjb25zdCBvcGVyYXRvcktleSA9IHZlcnNpb247XG4gICAgICAgIGxldCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JzW29wZXJhdG9yS2V5XTtcbiAgICAgICAgaWYgKCFvcGVyYXRvcikge1xuICAgICAgICAgICAgb3BlcmF0b3IgPSB0aGlzLmNyZWF0ZU9wZXJhdG9yRm9yVmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgICAgICAgIHRoaXMub3BlcmF0b3JzW29wZXJhdG9yS2V5XSA9IG9wZXJhdG9yO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcGVyYXRvcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgb3BlcmF0b3IgY29ycmVzcG9uZGluZyB0byB0aGUgbGF0ZXN0IHByb3RvY29sIHZlcnNpb25cbiAgICAgKi9cbiAgICBkZWZhdWx0T3BlcmF0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wZXJhdG9yRm9yVmVyc2lvbih0aGlzLmdldExhdGVzdFZlcnNpb24oKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENvbXB1dGVzIGEgcm9vdCBrZXkgZ2l2ZW4gYSBwYXNzd29yZCBhbmQga2V5IHBhcmFtcy5cbiAgICAgKiBEZWxlZ2F0ZXMgY29tcHV0YXRpb24gdG8gcmVzcGVjdGl2ZSBwcm90b2NvbCBvcGVyYXRvci5cbiAgICAgKi9cbiAgICBhc3luYyBjb21wdXRlUm9vdEtleShwYXNzd29yZCwga2V5UGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBrZXlQYXJhbXMudmVyc2lvbjtcbiAgICAgICAgY29uc3Qgb3BlcmF0b3IgPSB0aGlzLm9wZXJhdG9yRm9yVmVyc2lvbih2ZXJzaW9uKTtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yLmNvbXB1dGVSb290S2V5KHBhc3N3b3JkLCBrZXlQYXJhbXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgcm9vdCBrZXkgdXNpbmcgdGhlIGxhdGVzdCBwcm90b2NvbCB2ZXJzaW9uXG4gICAgKi9cbiAgICBhc3luYyBjcmVhdGVSb290S2V5KGlkZW50aWZpZXIsIHBhc3N3b3JkKSB7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5kZWZhdWx0T3BlcmF0b3IoKTtcbiAgICAgICAgcmV0dXJuIG9wZXJhdG9yLmNyZWF0ZVJvb3RLZXkoaWRlbnRpZmllciwgcGFzc3dvcmQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHaXZlbiBhIGtleSBhbmQgaW50ZW50LCByZXR1cm5zIHRoZSBwcm9wZXIgUGF5bG9hZEZvcm1hdCxcbiAgICAgKiBvciB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIHVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gb2YgcGFyYW1ldGVycy5cbiAgICAgKi9cbiAgICBwYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudChpbnRlbnQsIGtleSkge1xuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgLyoqIERlY3J5cHRlZCAqL1xuICAgICAgICAgICAgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCB8fFxuICAgICAgICAgICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRGVjcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkZpbGVQcmVmZXJFbmNyeXB0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBheWxvYWRGb3JtYXQuRGVjcnlwdGVkQmFyZU9iamVjdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuU3luY0RlY3J5cHRlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGF5bG9hZEZvcm1hdC5EZWNyeXB0ZWRCYXNlNjRTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAnVW5oYW5kbGVkIGRlY3J5cHRlZCBjYXNlIGluIHByb3RvY29sU2VydmljZS5wYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudC4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIEVuY3J5cHRlZCAqL1xuICAgICAgICAgICAgaWYgKChpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuU3luYyB8fFxuICAgICAgICAgICAgICAgIGludGVudCA9PT0gRW5jcnlwdGlvbkludGVudC5GaWxlRW5jcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkZpbGVQcmVmZXJFbmNyeXB0ZWQgfHxcbiAgICAgICAgICAgICAgICBpbnRlbnQgPT09IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRW5jcnlwdGVkIHx8XG4gICAgICAgICAgICAgICAgaW50ZW50ID09PSBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUGF5bG9hZEZvcm1hdC5FbmNyeXB0ZWRTdHJpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyAnVW5oYW5kbGVkIGVuY3J5cHRlZCBjYXNlIGluIHByb3RvY29sU2VydmljZS5wYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudC4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBwYXJhbWV0ZXJzIGZvciBhIHBheWxvYWQgdGhhdCBhcmUgdHlwaWNhbGx5IGVuY3J5cHRlZCwgYW5kIHVzZWQgZm9yIHN5bmNpbmdcbiAgICAgKiBvciBzYXZpbmcgbG9jYWxseS4gUGFyYW1ldGVycyBhcmUgbm9uLXR5cGVkIG9iamVjdHMgdGhhdCBjYW4gbGF0ZXIgYnkgY29udmVydGVkIHRvIG9iamVjdHMuXG4gICAgICogSWYgdGhlIGlucHV0IHBheWxvYWQgaXMgbm90IHByb3Blcmx5IGRlY3J5cHRlZCBpbiB0aGUgZmlyc3QgcGxhY2UsIGl0IHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgKiBhcy1pcy4gSWYgdGhlIHBheWxvYWQgaXMgZGVsZXRlZCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcy1pcyAoYXNzdW1pbmcgdGhhdCB0aGUgY29udGVudCBmaWVsZCBpcyBudWxsKVxuICAgICAqIEBwYXJhbSBwYXlsb2FkIC0gVGhlIHBheWxvYWQgdG8gZW5jcnlwdFxuICAgICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byB1c2UgdG8gZW5jcnlwdCB0aGUgcGF5bG9hZC5cbiAgICAgKiAgIFdpbGwgYmUgbG9va2VkIHVwIGlmIG5vdCBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gaW50ZW50IC0gVGhlIHRhcmdldCBvZiB0aGUgZW5jcnlwdGlvblxuICAgICAqIEByZXR1cm5zIFRoZSBlbmNyeXB0ZWQgcGF5bG9hZFxuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIGludGVudCwga2V5KSB7XG4gICAgICAgIGlmIChwYXlsb2FkLmVycm9yRGVjcnlwdGluZykge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBheWxvYWQuZGVsZXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGludGVudCkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGVuY3J5cHQgcGF5bG9hZCB3aXRoIG51bGwgaW50ZW50JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSAmJiAhaXNEZWNyeXB0ZWRJbnRlbnQoaW50ZW50KSkge1xuICAgICAgICAgICAga2V5ID0gYXdhaXQgdGhpcy5rZXlUb1VzZUZvckVuY3J5cHRpb25PZlBheWxvYWQocGF5bG9hZCwgaW50ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWtleSAmJiBpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24oaW50ZW50KSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gZ2VuZXJhdGUgZW5jcnlwdGVkIHBheWxvYWQgd2l0aCBubyBrZXkuJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBheWxvYWQuZm9ybWF0ICE9PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGVuY3J5cHQgYWxyZWFkeSBlbmNyeXB0ZWQgcGF5bG9hZC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcGF5bG9hZC5jb250ZW50KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBlbmNyeXB0IHBheWxvYWQgd2l0aCBubyBjb250ZW50Lic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFwYXlsb2FkLnV1aWQpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIGVuY3J5cHQgcGF5bG9hZCB3aXRoIG5vIHV1aWQuJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZXJzaW9uID0ga2V5ID8ga2V5LnZlcnNpb24gOiB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5wYXlsb2FkQ29udGVudEZvcm1hdEZvckludGVudChpbnRlbnQsIGtleSk7XG4gICAgICAgIGNvbnN0IG9wZXJhdG9yID0gdGhpcy5vcGVyYXRvckZvclZlcnNpb24odmVyc2lvbik7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRpb25QYXJhbWV0ZXJzID0gYXdhaXQgb3BlcmF0b3IuZ2VuZXJhdGVFbmNyeXB0ZWRQYXJhbWV0ZXJzKHBheWxvYWQsIGZvcm1hdCwga2V5KTtcbiAgICAgICAgaWYgKCFlbmNyeXB0aW9uUGFyYW1ldGVycykge1xuICAgICAgICAgICAgdGhyb3cgJ1VuYWJsZSB0byBnZW5lcmF0ZSBlbmNyeXB0aW9uIHBhcmFtZXRlcnMnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IENyZWF0ZUludGVudFBheWxvYWRGcm9tT2JqZWN0KHBheWxvYWQsIGludGVudCwgZW5jcnlwdGlvblBhcmFtZXRlcnMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTaW1pbGFyIHRvIGBwYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZGAsIGJ1dCBvcGVyYXRlcyBvbiBhbiBhcnJheSBvZiBwYXlsb2Fkcy5cbiAgICAgKiBgaW50ZW50YCBjYW4gYWxzbyBiZSBhIGZ1bmN0aW9uIG9mIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwYXlsb2FkLlxuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRzQnlFbmNyeXB0aW5nUGF5bG9hZHMocGF5bG9hZHMsIGludGVudCkge1xuICAgICAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiBwYXlsb2Fkcykge1xuICAgICAgICAgICAgY29uc3QgdXNlSW50ZW50ID0gaXNGdW5jdGlvbihpbnRlbnQpID8gaW50ZW50KHBheWxvYWQpIDogaW50ZW50O1xuICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQocGF5bG9hZCwgdXNlSW50ZW50KTtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbmNyeXB0ZWRQYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgbmV3IHBheWxvYWQgYnkgZGVjcnlwdGluZyB0aGUgaW5wdXQgcGF5bG9hZC5cbiAgICAgKiBJZiB0aGUgaW5wdXQgcGF5bG9hZCBpcyBhbHJlYWR5IGRlY3J5cHRlZCwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcy1pcy5cbiAgICAgKiBAcGFyYW0gcGF5bG9hZCAtIFRoZSBwYXlsb2FkIHRvIGRlY3J5cHQuXG4gICAgICogQHBhcmFtIGtleSBUaGUga2V5IHRvIHVzZSB0byBkZWNyeXB0IHRoZSBwYXlsb2FkLlxuICAgICAqIElmIG5vbmUgaXMgc3VwcGxpZWQsIGl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb29rZWQgdXAuXG4gICAgICovXG4gICAgYXN5bmMgcGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQocGF5bG9hZCwga2V5KSB7XG4gICAgICAgIGlmICghcGF5bG9hZC5jb250ZW50KSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBkZWNyeXB0IHBheWxvYWQgdGhhdCBoYXMgbm8gY29udGVudC4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHBheWxvYWQuZm9ybWF0O1xuICAgICAgICBpZiAoZm9ybWF0ID09PSBQYXlsb2FkRm9ybWF0LkRlY3J5cHRlZEJhcmVPYmplY3QpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGlmICgha2V5ICYmIGZvcm1hdCA9PT0gUGF5bG9hZEZvcm1hdC5FbmNyeXB0ZWRTdHJpbmcpIHtcbiAgICAgICAgICAgIGtleSA9IGF3YWl0IHRoaXMua2V5VG9Vc2VGb3JEZWNyeXB0aW9uT2ZQYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAgICAgaWYgKCFrZXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocGF5bG9hZCwge1xuICAgICAgICAgICAgICAgICAgICB3YWl0aW5nRm9yS2V5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmc6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2ZXJzaW9uID0gcGF5bG9hZC52ZXJzaW9uO1xuICAgICAgICBjb25zdCBvcGVyYXRvciA9IHRoaXMub3BlcmF0b3JGb3JWZXJzaW9uKHZlcnNpb24pO1xuICAgICAgICBjb25zdCBlbmNyeXB0aW9uUGFyYW1ldGVycyA9IENyZWF0ZUVuY3J5cHRpb25QYXJhbWV0ZXJzKHBheWxvYWQpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXJhbWV0ZXJzID0gYXdhaXQgb3BlcmF0b3IuZ2VuZXJhdGVEZWNyeXB0ZWRQYXJhbWV0ZXJzKGVuY3J5cHRpb25QYXJhbWV0ZXJzLCBrZXkpO1xuICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocGF5bG9hZCwgZGVjcnlwdGVkUGFyYW1ldGVycyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNpbWlsYXIgdG8gYHBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkYCwgYnV0IG9wZXJhdGVzIG9uIGFuIGFycmF5IG9mIHBheWxvYWRzLlxuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMocGF5bG9hZHMsIGtleSkge1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGVuY3J5cHRlZFBheWxvYWQgb2YgcGF5bG9hZHMpIHtcbiAgICAgICAgICAgIGlmICghZW5jcnlwdGVkUGF5bG9hZCkge1xuICAgICAgICAgICAgICAgIC8qKiBLZWVwIGluLWNvdW50cyBzaW1pbGFyIHRvIG91dC1jb3VudHMgKi9cbiAgICAgICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2Fkcy5wdXNoKGVuY3J5cHRlZFBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBzdGlsbCB3YW50IHRvIGRlY3J5cHQgZGVsZXRlZCBwYXlsb2FkcyBpZiB0aGV5IGhhdmUgY29udGVudCBpbiBjYXNlXG4gICAgICAgICAgICAgKiB0aGV5IHdlcmUgbWFya2VkIGFzIGRpcnR5IGJ1dCBub3QgeWV0IHN5bmNlZC5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGVuY3J5cHRlZFBheWxvYWQuZGVsZXRlZCA9PT0gdHJ1ZSAmJiBpc051bGxPclVuZGVmaW5lZChlbmNyeXB0ZWRQYXlsb2FkLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMucHVzaChlbmNyeXB0ZWRQYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlzRGVjcnlwdGFibGUgPSBpc1N0cmluZyhlbmNyeXB0ZWRQYXlsb2FkLmNvbnRlbnQpO1xuICAgICAgICAgICAgaWYgKCFpc0RlY3J5cHRhYmxlKSB7XG4gICAgICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMucHVzaChlbmNyeXB0ZWRQYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQoZW5jcnlwdGVkUGF5bG9hZCwga2V5KTtcbiAgICAgICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2Fkcy5wdXNoKGRlY3J5cHRlZFBheWxvYWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2Fkcy5wdXNoKENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KGVuY3J5cHRlZFBheWxvYWQsIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JEZWNyeXB0aW5nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckRlY3J5cHRpbmdWYWx1ZUNoYW5nZWQ6ICFlbmNyeXB0ZWRQYXlsb2FkLmVycm9yRGVjcnlwdGluZ1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBkZWNyeXB0aW5nIHBheWxvYWQnLCBlbmNyeXB0ZWRQYXlsb2FkLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjcnlwdGVkUGF5bG9hZHM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIGFuIGl0ZW0gd2FzIGF0dGVtcHRpbmcgdG8gZGVjcnlwdCwgYnV0IGZhaWxlZCwgZWl0aGVyIGJlY2F1c2UgdGhlIGtleXNcbiAgICAgKiBmb3IgdGhhdCBpdGVtIGhhZCBub3QgZG93bmxvYWRlZCB5ZXQsIG9yIGFueSBvdGhlciByZWFzb24sIGl0IHdpbGwgYmUgZGVmZXJyZWRcbiAgICAgKiBpdGVtLmVycm9yRGVjcnlwdGluZyA9IHRydWUgYW5kIHBvc3NpYmx5IGl0ZW0ud2FpdGluZ0ZvcktleSA9IHRydWUuXG4gICAgICogSGVyZSB3ZSBmaW5kIHN1Y2ggaXRlbXMsIGFuZCBhdHRlbXB0IHRvIGRlY3J5cHQgdGhlbSBhZ2Fpbi5cbiAgICAgKi9cbiAgICBhc3luYyBkZWNyeXB0RXJyb3JlZEl0ZW1zKCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbU1hbmFnZXIuaW52YWxpZEl0ZW1zO1xuICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gYXdhaXQgdGhpcy5wYXlsb2Fkc0J5RGVjcnlwdGluZ1BheWxvYWRzKHBheWxvYWRzKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKGRlY3J5cHRlZCwgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWNyeXB0cyBhIGJhY2t1cCBmaWxlIHVzaW5nIHVzZXItaW5wdXR0ZWQgcGFzc3dvcmRcbiAgICAgKiBAcGFyYW0gcGFzc3dvcmQgLSBUaGUgcmF3IHVzZXIgcGFzc3dvcmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYmFja3VwIGZpbGVcbiAgICAgKi9cbiAgICBhc3luYyBwYXlsb2Fkc0J5RGVjcnlwdGluZ0JhY2t1cEZpbGUoZGF0YSwgcGFzc3dvcmQpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gZGF0YS5rZXlQYXJhbXMgfHwgZGF0YS5hdXRoX3BhcmFtcztcbiAgICAgICAgY29uc3QgcmF3SXRlbXMgPSBkYXRhLml0ZW1zO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWRQYXlsb2FkcyA9IHJhd0l0ZW1zLm1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLkZpbGVJbXBvcnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGRlY3J5cHRlZFBheWxvYWRzO1xuICAgICAgICBpZiAoa2V5UGFyYW1zKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmNvbXB1dGVSb290S2V5KHBhc3N3b3JkLCBrZXlQYXJhbXMpO1xuICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMgPSBhd2FpdCB0aGlzLnBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMoZW5jcnlwdGVkUGF5bG9hZHMsIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBkZWNyeXB0ZWRQYXlsb2FkcyA9IGVuY3J5cHRlZFBheWxvYWRzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWRQYXlsb2FkcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGtleSBwYXJhbXMgb2JqZWN0IGZyb20gYSByYXcgb2JqZWN0XG4gICAgICogQHBhcmFtIGtleVBhcmFtcyAtIFRoZSByYXcga2V5IHBhcmFtcyBvYmplY3QgdG8gY3JlYXRlIGEgS2V5UGFyYW1zIG9iamVjdCBmcm9tXG4gICAgICovXG4gICAgY3JlYXRlS2V5UGFyYW1zKGtleVBhcmFtcykge1xuICAgICAgICAvKiAwMDIgZG9lc24ndCBoYXZlIHZlcnNpb24gYXV0b21hdGljYWxseSwgbmV3ZXIgdmVyc2lvbnMgZG8uICovXG4gICAgICAgIGlmICgha2V5UGFyYW1zLnZlcnNpb24pIHtcbiAgICAgICAgICAgIGtleVBhcmFtcy52ZXJzaW9uID0gUHJvdG9jb2xWZXJzaW9uLlYwMDI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIENyZWF0ZUtleVBhcmFtcyhrZXlQYXJhbXMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgSlNPTiBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBiYWNrdXAgZm9ybWF0IG9mIGFsbCBpdGVtcywgb3IganVzdCBzdWJpdGVtc1xuICAgICAqIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSBzdWJJdGVtcyBBbiBvcHRpb25hbCBhcnJheSBvZiBpdGVtcyB0byBjcmVhdGUgYmFja3VwIG9mLlxuICAgICAqIElmIG5vdCBzdXBwbGllZCwgYWxsIGl0ZW1zIGFyZSBiYWNrZWQgdXAuXG4gICAgICogQHBhcmFtIHJldHVybklmRW1wdHkgUmV0dXJucyBudWxsIGlmIHRoZXJlIGFyZSBubyBpdGVtcyB0byBtYWtlIGJhY2t1cCBvZi5cbiAgICAgKiBAcmV0dXJucyBKU09OIHN0cmluZ2lmaWVkIHJlcHJlc2VudGF0aW9uIG9mIGRhdGEsIGluY2x1ZGluZyBrZXlQYXJhbXMuXG4gICAgICovXG4gICAgYXN5bmMgY3JlYXRlQmFja3VwRmlsZShzdWJJdGVtcywgaW50ZW50ID0gRW5jcnlwdGlvbkludGVudC5GaWxlUHJlZmVyRW5jcnlwdGVkLCByZXR1cm5JZkVtcHR5ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBzdWJJdGVtcyB8fCB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zO1xuICAgICAgICBpZiAocmV0dXJuSWZFbXB0eSAmJiBpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUGF5bG9hZHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgICAgICAvKiogS2VlcCBwYXlsb2FkIGFzLWlzICovXG4gICAgICAgICAgICAgICAgZW5jcnlwdGVkUGF5bG9hZHMucHVzaChpdGVtLnBheWxvYWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChpdGVtLnBheWxvYWQsIFBheWxvYWRTb3VyY2UuRmlsZUltcG9ydCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgdGhpcy5wYXlsb2FkQnlFbmNyeXB0aW5nUGF5bG9hZChwYXlsb2FkLCBpbnRlbnQpO1xuICAgICAgICAgICAgICAgIGVuY3J5cHRlZFBheWxvYWRzLnB1c2goZW5jcnlwdGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgaXRlbXM6IGVuY3J5cHRlZFBheWxvYWRzLm1hcCgocCkgPT4gcC5lamVjdGVkKCkpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGtleVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVBhcmFtcygpO1xuICAgICAgICBpZiAoa2V5UGFyYW1zICYmIGludGVudCAhPT0gRW5jcnlwdGlvbkludGVudC5GaWxlRGVjcnlwdGVkKSB7XG4gICAgICAgICAgICBkYXRhLmtleVBhcmFtcyA9IGtleVBhcmFtcy5nZXRQb3J0YWJsZVZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJldHR5UHJpbnQgPSAyO1xuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgcHJldHR5UHJpbnQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlciBhIGNhbGxiYWNrIHRvIGJlIG5vdGlmaWVkIHdoZW4gcm9vdCBrZXkgc3RhdHVzIGNoYW5nZXMuXG4gICAgICogQHBhcmFtIGNhbGxiYWNrICBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgaW4gYSBjb250ZW50IHR5cGUgdG8gY2FsbCBiYWNrIHdoZW4gcm9vdFxuICAgICAqICAgICAgICAgICAgICAgICAga2V5IG9yIHdyYXBwZXIgc3RhdHVzIGhhcyBjaGFuZ2VkLlxuICAgICAqL1xuICAgIG9uS2V5U3RhdHVzQ2hhbmdlKGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMua2V5T2JzZXJ2ZXJzLnB1c2goY2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgcmVtb3ZlRnJvbUFycmF5KHRoaXMua2V5T2JzZXJ2ZXJzLCBjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzeW5jIG5vdGlmeU9ic2VydmVyc09mS2V5Q2hhbmdlKCkge1xuICAgICAgICBmb3IgKGNvbnN0IG9ic2VydmVyIG9mIHRoaXMua2V5T2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBvYnNlcnZlcigpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGdldFJvb3RLZXlGcm9tS2V5Y2hhaW4oKSB7XG4gICAgICAgIGNvbnN0IHJhd0tleSA9IGF3YWl0IHRoaXMuZGV2aWNlSW50ZXJmYWNlLmdldEtleWNoYWluVmFsdWUoKTtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHJhd0tleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm9vdEtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUocmF3S2V5KTtcbiAgICAgICAgcmV0dXJuIHJvb3RLZXk7XG4gICAgfVxuICAgIGFzeW5jIHNhdmVSb290S2V5VG9LZXljaGFpbigpIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKHRoaXMucm9vdEtleSkpIHtcbiAgICAgICAgICAgIHRocm93ICdBdHRlbXB0aW5nIHRvIG5vbi1leGlzdGVudCByb290IGtleSB0byB0aGUga2V5Y2hhaW4uJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5rZXlNb2RlICE9PSBLZXlNb2RlLlJvb3RLZXlPbmx5KSB7XG4gICAgICAgICAgICB0aHJvdyAnU2hvdWxkIG5vdCBiZSBwZXJzaXN0aW5nIHdyYXBwZWQga2V5IHRvIGtleWNoYWluLic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmF3S2V5ID0gdGhpcy5yb290S2V5LmdldFBlcnNpc3RhYmxlVmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnNldEtleWNoYWluVmFsdWUocmF3S2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgYSByb290IGtleSB3cmFwcGVyIChwYXNzY29kZSkgaXMgY29uZmlndXJlZC5cbiAgICAgKi9cbiAgICBhc3luYyBoYXNSb290S2V5V3JhcHBlcigpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh3cmFwcGVyKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQSBub24tYXN5bmMgYWx0ZXJuYXRpdmUgdG8gYGhhc1Jvb3RLZXlXcmFwcGVyYCB3aGljaCB1c2VzIHByZS1sb2FkZWQgc3RhdGVcbiAgICAgKiB0byBkZXRlcm1pbmUgaWYgYSBwYXNzY29kZSBpcyBjb25maWd1cmVkLlxuICAgICAqL1xuICAgIGhhc1Bhc3Njb2RlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5XcmFwcGVyT25seSB8fFxuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIHJvb3Qga2V5IGhhcyBub3QgeWV0IGJlZW4gdW53cmFwcGVkIChwYXNzY29kZSBsb2NrZWQpLlxuICAgICAqL1xuICAgIGFzeW5jIHJvb3RLZXlOZWVkc1Vud3JhcHBpbmcoKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmhhc1Jvb3RLZXlXcmFwcGVyKCkgJiYgaXNOdWxsT3JVbmRlZmluZWQodGhpcy5yb290S2V5KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgS2V5IHBhcmFtcyBvYmplY3QgY29udGFpbmluZyByb290IGtleSB3cmFwcGVyIGtleSBwYXJhbXNcbiAgICAgKi9cbiAgICBhc3luYyBnZXRSb290S2V5V3JhcHBlcktleVBhcmFtcygpIHtcbiAgICAgICAgY29uc3QgcmF3S2V5UGFyYW1zID0gYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRWYWx1ZShTdG9yYWdlS2V5LlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zLCBTdG9yYWdlVmFsdWVNb2Rlcy5Ob253cmFwcGVkKTtcbiAgICAgICAgaWYgKCFyYXdLZXlQYXJhbXMpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlS2V5UGFyYW1zKHJhd0tleVBhcmFtcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIE9iamVjdCBjb250YWluaW5nIHBlcnNpc3RlZCB3cmFwcGVkIChlbmNyeXB0ZWQpIHJvb3Qga2V5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0V3JhcHBlZFJvb3RLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFZhbHVlKFN0b3JhZ2VLZXkuV3JhcHBlZFJvb3RLZXksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHJvb3RLZXlQYXJhbXMgYnkgcmVhZGluZyBmcm9tIHN0b3JhZ2UuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0Um9vdEtleVBhcmFtcygpIHtcbiAgICAgICAgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5XcmFwcGVyT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU9ubHkgfHxcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5UGx1c1dyYXBwZXIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEFjY291bnRLZXlQYXJhbXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU5vbmUpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBgVW5oYW5kbGVkIGtleSBtb2RlIGZvciBnZXRSb290S2V5UGFyYW1zICR7dGhpcy5rZXlNb2RlfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgZ2V0Um9vdEtleVBhcmFtcyBtYXkgcmV0dXJuIGRpZmZlcmVudCBwYXJhbXMgYmFzZWQgb24gZGlmZmVyZW50XG4gICAgICogICAgICAgICAgIGtleU1vZGUuIFRoaXMgZnVuY3Rpb24gaG93ZXZlciBzdHJpY3RseSByZXR1cm5zIG9ubHkgYWNjb3VudCBwYXJhbXMuXG4gICAgICovXG4gICAgYXN5bmMgZ2V0QWNjb3VudEtleVBhcmFtcygpIHtcbiAgICAgICAgY29uc3QgcmF3S2V5UGFyYW1zID0gYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRWYWx1ZShTdG9yYWdlS2V5LlJvb3RLZXlQYXJhbXMsIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBpZiAoIXJhd0tleVBhcmFtcykge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVLZXlQYXJhbXMocmF3S2V5UGFyYW1zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2Uga25vdyBhIHdyYXBwaW5nS2V5IGlzIGNvcnJlY3QgaWYgaXQgY29ycmVjdGx5IGRlY3J5cHRzXG4gICAgICogd3JhcHBlZCByb290IGtleS5cbiAgICAgKi9cbiAgICBhc3luYyB2YWxpZGF0ZVdyYXBwaW5nS2V5KHdyYXBwaW5nS2V5KSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRSb290S2V5ID0gYXdhaXQgdGhpcy5nZXRXcmFwcGVkUm9vdEtleSgpO1xuICAgICAgICAvKiogSWYgd3JhcHBlciBvbmx5LCBzdG9yYWdlIGlzIGVuY3J5cHRlZCBkaXJlY3RseSB3aXRoIHdyYXBwaW5nS2V5ICovXG4gICAgICAgIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuV3JhcHBlck9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNhbkRlY3J5cHRXaXRoS2V5KHdyYXBwaW5nS2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlPbmx5IHx8XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleVBsdXNXcmFwcGVyKSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAqIEluIHRoZXNlIG1vZGVzLCBzdG9yYWdlIGlzIGVuY3J5cHRlZCB3aXRoIGFjY291bnQga2V5cywgYW5kXG4gICAgICAgICAgICAqIGFjY291bnQga2V5cyBhcmUgZW5jcnlwdGVkIHdpdGggd3JhcHBpbmdLZXkuIEhlcmUgd2UgdmFsaWRhdGVcbiAgICAgICAgICAgICogYnkgYXR0ZW1wdGluZyB0byBkZWNyeXB0IGFjY291bnQga2V5cy5cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCB3cmFwcGVkS2V5UGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHdyYXBwZWRSb290S2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IHRoaXMucGF5bG9hZEJ5RGVjcnlwdGluZ1BheWxvYWQod3JhcHBlZEtleVBheWxvYWQsIHdyYXBwaW5nS2V5KTtcbiAgICAgICAgICAgIHJldHVybiAhZGVjcnlwdGVkLmVycm9yRGVjcnlwdGluZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93ICdVbmhhbmRsZWQgY2FzZSBpbiB2YWxpZGF0ZVdyYXBwaW5nS2V5JztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBDb21wdXRlcyB0aGUgcm9vdCBrZXkgd3JhcHBpbmcga2V5IGdpdmVuIGEgcGFzc2NvZGUuXG4gICAgICogV3JhcHBpbmcga2V5IHBhcmFtcyBhcmUgcmVhZCBmcm9tIGRpc2suXG4gICAgICovXG4gICAgYXN5bmMgY29tcHV0ZVdyYXBwaW5nS2V5KHBhc3Njb2RlKSB7XG4gICAgICAgIGNvbnN0IGtleVBhcmFtcyA9IGF3YWl0IHRoaXMuZ2V0Um9vdEtleVdyYXBwZXJLZXlQYXJhbXMoKTtcbiAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5jb21wdXRlUm9vdEtleShwYXNzY29kZSwga2V5UGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW53cmFwcyB0aGUgcGVyc2lzdGVkIHJvb3Qga2V5IHZhbHVlIHVzaW5nIHRoZSBzdXBwbGllZCB3cmFwcGluZ0tleS5cbiAgICAgKiBBcHBsaWNhdGlvbiBpbnRlcmZhY2VzIG11c3QgY2hlY2sgdG8gc2VlIGlmIHRoZSByb290IGtleSByZXF1aXJlcyB1bndyYXBwaW5nIG9uIGxvYWQuXG4gICAgICogSWYgc28sIHRoZXkgbXVzdCBnZW5lcmF0ZSB0aGUgdW53cmFwcGluZyBrZXkgYnkgZ2V0dGluZyBvdXIgc2F2ZWQgd3JhcHBpbmcga2V5IGtleVBhcmFtcy5cbiAgICAgKiBBZnRlciB1bndyYXBwaW5nLCB0aGUgcm9vdCBrZXkgaXMgYXV0b21hdGljYWxseSBsb2FkZWQuXG4gICAgICovXG4gICAgYXN5bmMgdW53cmFwUm9vdEtleSh3cmFwcGluZ0tleSkge1xuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLldyYXBwZXJPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLnJvb3RLZXkgPSB3cmFwcGluZ0tleTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5rZXlNb2RlICE9PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcikge1xuICAgICAgICAgICAgdGhyb3cgJ0ludmFsaWQga2V5IG1vZGUgY29uZGl0aW9uIGZvciB1bndyYXBwaW5nLic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMuZ2V0V3JhcHBlZFJvb3RLZXkoKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0KHdyYXBwZWRLZXkpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCB0aGlzLnBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIHdyYXBwaW5nS2V5KTtcbiAgICAgICAgaWYgKGRlY3J5cHRlZC5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdVbmFibGUgdG8gZGVjcnlwdCByb290IGtleSB3aXRoIHByb3ZpZGVkIHdyYXBwaW5nIGtleS4nKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm9vdEtleSA9IGF3YWl0IFNOUm9vdEtleS5DcmVhdGUoZGVjcnlwdGVkLmNvbnRlbnRPYmplY3QsIGRlY3J5cHRlZC51dWlkKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubm90aWZ5T2JzZXJ2ZXJzT2ZLZXlDaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbmNyeXB0cyByb290S2V5IGFuZCBzYXZlcyBpdCBpbiBzdG9yYWdlIGluc3RlYWQgb2Yga2V5Y2hhaW4sIGFuZCB0aGVuXG4gICAgICogY2xlYXJzIGtleWNoYWluLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzdG9yZSBsYXJnZSBlbmNyeXB0ZWRcbiAgICAgKiBwYXlsb2FkcyBpbiB0aGUga2V5Y2hhaW4uIElmIHRoZSByb290IGtleSBpcyBub3Qgd3JhcHBlZCwgaXQgaXMgc3RvcmVkXG4gICAgICogaW4gcGxhaW4gZm9ybSBpbiB0aGUgdXNlcidzIHNlY3VyZSBrZXljaGFpbi5cbiAgICAqL1xuICAgIGFzeW5jIHNldE5ld1Jvb3RLZXlXcmFwcGVyKHdyYXBwaW5nS2V5LCBrZXlQYXJhbXMpIHtcbiAgICAgICAgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5Tm9uZSkge1xuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID0gS2V5TW9kZS5XcmFwcGVyT25seTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleVBsdXNXcmFwcGVyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IHdyYXBwZXIgb24gYWxyZWFkeSB3cmFwcGVkIGtleS4nKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLmRldmljZUludGVyZmFjZS5jbGVhcktleWNoYWluVmFsdWUoKTtcbiAgICAgICAgaWYgKCh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuV3JhcHBlck9ubHkgfHxcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5UGx1c1dyYXBwZXIpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLldyYXBwZXJPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb290S2V5ID0gd3JhcHBpbmdLZXk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWVuY3J5cHRJdGVtc0tleXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMud3JhcEFuZFBlcnNpc3RSb290S2V5KHdyYXBwaW5nS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5Sb290S2V5V3JhcHBlcktleVBhcmFtcywga2V5UGFyYW1zLmdldFBvcnRhYmxlVmFsdWUoKSwgU3RvcmFnZVZhbHVlTW9kZXMuTm9ud3JhcHBlZCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeU9ic2VydmVyc09mS2V5Q2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCBrZXlNb2RlIG9uIHNldE5ld1Jvb3RLZXlXcmFwcGVyJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV3JhcHMgdGhlIGN1cnJlbnQgaW4tbWVtb3J5IHJvb3Qga2V5IHZhbHVlIHVzaW5nIHRoZSB3cmFwcGluZ0tleSxcbiAgICAgKiB0aGVuIHBlcnNpc3RzIHRoZSB3cmFwcGVkIHZhbHVlIHRvIGRpc2suXG4gICAgICovXG4gICAgYXN5bmMgd3JhcEFuZFBlcnNpc3RSb290S2V5KHdyYXBwaW5nS2V5KSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh0aGlzLnJvb3RLZXksIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMucm9vdEtleS5nZXRQZXJzaXN0YWJsZVZhbHVlKClcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBhd2FpdCB0aGlzLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRW5jcnlwdGVkLCB3cmFwcGluZ0tleSk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleSwgd3JhcHBlZEtleS5lamVjdGVkKCksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIHJvb3Qga2V5IHdyYXBwZXIgZnJvbSBsb2NhbCBzdG9yYWdlIGFuZCBzdG9yZXMgcm9vdCBrZXkgYmFyZSBpbiBzZWN1cmUga2V5Y2hhaW4uXG4gICAgICovXG4gICAgYXN5bmMgcmVtb3ZlUm9vdEtleVdyYXBwZXIoKSB7XG4gICAgICAgIGlmICgodGhpcy5rZXlNb2RlICE9PSBLZXlNb2RlLldyYXBwZXJPbmx5ICYmXG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgIT09IEtleU1vZGUuUm9vdEtleVBsdXNXcmFwcGVyKSkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gcmVtb3ZlIHJvb3Qga2V5IHdyYXBwZXIgb24gdW53cmFwcGVkIGtleS4nO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuV3JhcHBlck9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU5vbmU7XG4gICAgICAgICAgICB0aGlzLnJvb3RLZXkgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcikge1xuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID0gS2V5TW9kZS5Sb290S2V5T25seTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuV3JhcHBlZFJvb3RLZXksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuUm9vdEtleVdyYXBwZXJLZXlQYXJhbXMsIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlPbmx5KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVSb290S2V5VG9LZXljaGFpbigpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5T2JzZXJ2ZXJzT2ZLZXlDaGFuZ2UoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHJvb3Qga2V5IGlzIGRpc3RpbmN0IGZyb20gcmVndWxhciBrZXlzIGFuZCBhcmUgb25seSBzYXZlZCBsb2NhbGx5IGluIHRoZSBrZXljaGFpbixcbiAgICAgKiBpbiBub24taXRlbSBmb3JtLiBBcHBsaWNhdGlvbnMgc2V0IHJvb3Qga2V5IG9uIHNpZ24gaW4sIHJlZ2lzdGVyLCBvciBwYXNzd29yZCBjaGFuZ2UuXG4gICAgICogQHBhcmFtIGtleSBBIFNOUm9vdEtleSBvYmplY3QuXG4gICAgICogQHBhcmFtIHdyYXBwaW5nS2V5IElmIGEgcGFzc2NvZGUgaXMgY29uZmlndXJlZCwgdGhlIHdyYXBwaW5nIGtleVxuICAgICAqIG11c3QgYmUgc3VwcGxpZWQsIHNvIHRoYXQgdGhlIG5ldyByb290IGtleSBjYW4gYmUgd3JhcHBlZCB3aXRoIHRoZSB3cmFwcGluZyBrZXkuXG4gICAgICovXG4gICAgYXN5bmMgc2V0TmV3Um9vdEtleShrZXksIGtleVBhcmFtcywgd3JhcHBpbmdLZXkpIHtcbiAgICAgICAgaWYgKCFrZXlQYXJhbXMpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdrZXlQYXJhbXMgbXVzdCBiZSBzdXBwbGllZCBpZiBzZXR0aW5nIHJvb3Qga2V5LicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvb3RLZXkgPT09IGtleSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IHJvb3Qga2V5IGFzIHNhbWUgY3VycmVudCB2YWx1ZS4nKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLldyYXBwZXJPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmtleU1vZGUgPSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmtleU1vZGUgPT09IEtleU1vZGUuUm9vdEtleU5vbmUpIHtcbiAgICAgICAgICAgIHRoaXMua2V5TW9kZSA9IEtleU1vZGUuUm9vdEtleU9ubHk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5T25seSB8fFxuICAgICAgICAgICAgdGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlQbHVzV3JhcHBlcikpIHtcbiAgICAgICAgICAgIC8qKiBSb290IGtleSBpcyBzaW1wbHkgY2hhbmdpbmcsIG1vZGUgc3RheXMgdGhlIHNhbWUgKi9cbiAgICAgICAgICAgIC8qKiB0aGlzLmtleU1vZGUgPSB0aGlzLmtleU1vZGU7ICovXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgVW5oYW5kbGVkIGtleSBtb2RlIGZvciBzZXROZXdSb290S2V5ICR7dGhpcy5rZXlNb2RlfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm9vdEtleSA9IGtleTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRWYWx1ZShTdG9yYWdlS2V5LlJvb3RLZXlQYXJhbXMsIGtleVBhcmFtcy5nZXRQb3J0YWJsZVZhbHVlKCksIFN0b3JhZ2VWYWx1ZU1vZGVzLk5vbndyYXBwZWQpO1xuICAgICAgICBpZiAodGhpcy5rZXlNb2RlID09PSBLZXlNb2RlLlJvb3RLZXlPbmx5KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVSb290S2V5VG9LZXljaGFpbigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5Sb290S2V5UGx1c1dyYXBwZXIpIHtcbiAgICAgICAgICAgIGlmICghd3JhcHBpbmdLZXkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignd3JhcHBpbmdLZXkgbXVzdCBiZSBzdXBwbGllZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy53cmFwQW5kUGVyc2lzdFJvb3RLZXkod3JhcHBpbmdLZXkpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMubm90aWZ5T2JzZXJ2ZXJzT2ZLZXlDaGFuZ2UoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWVuY3J5cHRJdGVtc0tleXMoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgaW4tbWVtb3J5IHJvb3Qga2V5IHZhbHVlLlxuICAgICAqL1xuICAgIGFzeW5jIGdldFJvb3RLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvb3RLZXk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgcm9vdCBrZXkgYW5kIHdyYXBwZXIgZnJvbSBrZXljaGFpbi4gVXNlZCB3aGVuIHNpZ25pbmcgb3V0IG9mIGFwcGxpY2F0aW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGNsZWFyTG9jYWxLZXlTdGF0ZSgpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZXZpY2VJbnRlcmZhY2UuY2xlYXJLZXljaGFpblZhbHVlKCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5XcmFwcGVkUm9vdEtleSwgU3RvcmFnZVZhbHVlTW9kZXMuTm9ud3JhcHBlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5Sb290S2V5V3JhcHBlcktleVBhcmFtcywgU3RvcmFnZVZhbHVlTW9kZXMuTm9ud3JhcHBlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlVmFsdWUoU3RvcmFnZUtleS5Sb290S2V5UGFyYW1zLCBTdG9yYWdlVmFsdWVNb2Rlcy5Ob253cmFwcGVkKTtcbiAgICAgICAgdGhpcy5rZXlNb2RlID0gS2V5TW9kZS5Sb290S2V5Tm9uZTtcbiAgICAgICAgdGhpcy5yb290S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeU9ic2VydmVyc09mS2V5Q2hhbmdlKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXNzd29yZCAgVGhlIHBhc3N3b3JkIHN0cmluZyB0byBnZW5lcmF0ZSBhIHJvb3Qga2V5IGZyb20uXG4gICAgICovXG4gICAgYXN5bmMgdmFsaWRhdGVBY2NvdW50UGFzc3dvcmQocGFzc3dvcmQpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gYXdhaXQgdGhpcy5nZXRSb290S2V5UGFyYW1zKCk7XG4gICAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMuY29tcHV0ZVJvb3RLZXkocGFzc3dvcmQsIGtleVBhcmFtcyk7XG4gICAgICAgIGNvbnN0IHZhbGlkID0ga2V5LmNvbXBhcmUodGhpcy5yb290S2V5KTtcbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZCwgYXJ0aWZhY3RzOiB7IHJvb3RLZXk6IGtleSB9IH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcGFzc2NvZGUgIFRoZSBwYXNzY29kZSBzdHJpbmcgdG8gZ2VuZXJhdGUgYSByb290IGtleSBmcm9tLlxuICAgICAqL1xuICAgIGFzeW5jIHZhbGlkYXRlUGFzc2NvZGUocGFzc2NvZGUpIHtcbiAgICAgICAgY29uc3Qga2V5UGFyYW1zID0gYXdhaXQgdGhpcy5nZXRSb290S2V5V3JhcHBlcktleVBhcmFtcygpO1xuICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmNvbXB1dGVSb290S2V5KHBhc3Njb2RlLCBrZXlQYXJhbXMpO1xuICAgICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdGVXcmFwcGluZ0tleShrZXkpO1xuICAgICAgICBpZiAodmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkLCBhcnRpZmFjdHM6IHsgd3JhcHBpbmdLZXk6IGtleSB9IH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBPbmx5IHR3byB0eXBlcyBvZiBpdGVtcyBzaG91bGQgYmUgZW5jcnlwdGVkIHdpdGggYSByb290IGtleTpcbiAgICAgKiAtIEFuIFNOSXRlbXNLZXkgb2JqZWN0XG4gICAgICogLSBBbiBlbmNyeXB0ZWQgc3RvcmFnZSBvYmplY3QgKGxvY2FsKVxuICAgICAqL1xuICAgIGNvbnRlbnRUeXBlVXNlc1Jvb3RLZXlFbmNyeXB0aW9uKGNvbnRlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiAoY29udGVudFR5cGUgPT09IENvbnRlbnRUeXBlLkl0ZW1zS2V5IHx8XG4gICAgICAgICAgICBjb250ZW50VHlwZSA9PT0gQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hpY2gga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbiBvZiB0aGUgcGF5bG9hZFxuICAgICAqIFRoZSBrZXkgb2JqZWN0IHRvIHVzZSBmb3IgZW5jcnlwdGluZyB0aGUgcGF5bG9hZC5cbiAgICAqL1xuICAgIGFzeW5jIGtleVRvVXNlRm9yRW5jcnlwdGlvbk9mUGF5bG9hZChwYXlsb2FkLCBpbnRlbnQpIHtcbiAgICAgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKGludGVudCkpIHtcbiAgICAgICAgICAgIHRocm93ICdJbnRlbnQgbXVzdCBiZSBzdXBwbGllZCB3aGVuIGxvb2tpbmcgdXAga2V5IGZvciBlbmNyeXB0aW9uIG9mIGl0ZW0uJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250ZW50VHlwZVVzZXNSb290S2V5RW5jcnlwdGlvbihwYXlsb2FkLmNvbnRlbnRfdHlwZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmdldFJvb3RLZXkoKTtcbiAgICAgICAgICAgIGlmICghcm9vdEtleSkge1xuICAgICAgICAgICAgICAgIGlmIChpbnRlbnRSZXF1aXJlc0VuY3J5cHRpb24oaW50ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyAnUm9vdCBrZXkgZW5jcnlwdGlvbiBpcyByZXF1aXJlZCBidXQgbm8gcm9vdCBrZXkgaXMgYXZhaWxhYmxlLic7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByb290S2V5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUGF5bG9hZHMgY291bGQgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZW5jcnlwdGVkIHdpdGggYW55IGFyYml0cmFyeSBTTkl0ZW1zS2V5IG9iamVjdC5cbiAgICAgKiBJZiB0aGUgcGF5bG9hZCBpcyBhbiBpdGVtcyBrZXkgb2JqZWN0LCBpdCBpcyBhbHdheXMgZW5jcnlwdGVkIHdpdGggdGhlIHJvb3Qga2V5LFxuICAgICAqIGFuZCBzbyByZXR1cm4gdGhhdC4gT3RoZXJ3aXNlLCB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHBheWxvYWQgaGFzIGFuXG4gICAgICogaXRlbXNfa2V5X2lkIGFuZCByZXR1cm4gdGhhdCBrZXkuIElmIGl0IGRvZXNuJ3QsIHRoaXMgbWVhbnMgdGhlIHBheWxvYWQgd2FzXG4gICAgICogZW5jcnlwdGVkIHdpdGggbGVnYWN5IGJlaGF2aW9yLiBXZSByZXR1cm4gdGhlbiB0aGUga2V5IG9iamVjdCBjb3JyZXNwb25kaW5nXG4gICAgICogdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYXlsb2FkLlxuICAgICAqIEByZXR1cm5zIFRoZSBrZXkgb2JqZWN0IHRvIHVzZSBmb3IgZGVjcnlwdGluZyB0aGlzIHBheWxvYWQuXG4gICAgKi9cbiAgICBhc3luYyBrZXlUb1VzZUZvckRlY3J5cHRpb25PZlBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICBpZiAodGhpcy5jb250ZW50VHlwZVVzZXNSb290S2V5RW5jcnlwdGlvbihwYXlsb2FkLmNvbnRlbnRfdHlwZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFJvb3RLZXkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC5pdGVtc19rZXlfaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zS2V5ID0gdGhpcy5pdGVtc0tleUZvclBheWxvYWQocGF5bG9hZCk7XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNLZXk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGF5bG9hZFZlcnNpb24gPSBwYXlsb2FkLnZlcnNpb247XG4gICAgICAgIGlmIChwYXlsb2FkVmVyc2lvbiA9PT0gdGhpcy5nZXRMYXRlc3RWZXJzaW9uKCkpIHtcbiAgICAgICAgICAgIHRocm93ICdObyBhc3NvY2lhdGVkIGtleSBmb3VuZCBmb3IgaXRlbSBlbmNyeXB0ZWQgd2l0aCBsYXRlc3QgcHJvdG9jb2wgdmVyc2lvbi4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRJdGVtc0tleUZvckl0ZW1WZXJzaW9uKHBheWxvYWRWZXJzaW9uKTtcbiAgICB9XG4gICAgYXN5bmMgb25TeW5jRXZlbnQoZXZlbnROYW1lKSB7XG4gICAgICAgIGlmIChldmVudE5hbWUgPT09IFN5bmNFdmVudC5GdWxsU3luY0NvbXBsZXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVGdWxsU3luY0NvbXBsZXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSBTeW5jRXZlbnQuRG93bmxvYWRGaXJzdFN5bmNDb21wbGV0ZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRG93bmxvYWRGaXJzdFN5bmNDb21wbGV0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBhIGRvd25sb2FkLWZpcnN0IHN5bmMgY29tcGxldGVzLCBpdCBtZWFucyB3ZSd2ZSBjb21wbGV0ZWQgYSAocG90ZW50aWFsbHkgbXVsdGlwYWdlKVxuICAgICAqIHN5bmMgd2hlcmUgd2Ugb25seSBkb3dubG9hZGVkIHdoYXQgdGhlIHNlcnZlciBoYWQgYmVmb3JlIHVwbG9hZGluZyBhbnl0aGluZy4gV2Ugd2lsbCBiZVxuICAgICAqIGFsbG93ZWQgdG8gbWFrZSBsb2NhbCBhY2NvbWFkYXRpb25zIGhlcmUgYmVmb3JlIHRoZSBzZXJ2ZXIgYmVnaW5zIHdpdGggdGhlIHVwbG9hZFxuICAgICAqIHBhcnQgb2YgdGhlIHN5bmMgKGF1dG9tYXRpY2FsbHkgcnVucyBhZnRlciBkb3dubG9hZC1maXJzdCBzeW5jIGNvbXBsZXRlcykuXG4gICAgICogV2UgdXNlIHRoaXMgdG8gc2VlIGlmIHRoZSBzZXJ2ZXIgaGFzIGFueSBkZWZhdWx0IGl0ZW1zS2V5cywgYW5kIGlmIHNvLCBhbGxvd3MgdXMgdG9cbiAgICAgKiBkZWxldGUgYW55IG5ldmVyLXN5bmNlZCBpdGVtcyBrZXlzIHdlIGhhdmUgaGVyZSBsb2NhbGx5LlxuICAgICAqL1xuICAgIGFzeW5jIGhhbmRsZURvd25sb2FkRmlyc3RTeW5jQ29tcGxldGlvbigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICogRmluZCBpdGVtcyBrZXlzIHdpdGggbnVsbCBvciBlcG9jaCB1cGRhdGVkX2F0IHZhbHVlLCBpbmRpY2F0aW5nXG4gICAgICAgICogdGhhdCB0aGV5IGhhdmVuJ3QgYmVlbiBzeW5jZWQgeWV0LlxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBpdGVtc0tleXMgPSB0aGlzLmxhdGVzdEl0ZW1zS2V5cygpO1xuICAgICAgICBjb25zdCBuZXZlclN5bmNlZEtleXMgPSBpdGVtc0tleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXkubmV2ZXJTeW5jZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgKiBGaW5kIGlzRGVmYXVsdCBpdGVtcyBrZXkgdGhhdCBoYXZlIGJlZW4gcHJldmlvdXNseSBzeW5jZWQuXG4gICAgICAgICogSWYgd2UgZmluZCBvbmUsIHRoaXMgbWVhbnMgd2UgY2FuIGRlbGV0ZSBhbnkgbm9uLXN5bmNlZCBrZXlzLlxuICAgICAgICAqL1xuICAgICAgICBjb25zdCBkZWZhdWx0U3luY2VkS2V5ID0gaXRlbXNLZXlzLmZpbmQoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFrZXkubmV2ZXJTeW5jZWQgJiYga2V5LmlzRGVmYXVsdDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGhhc1N5bmNlZEl0ZW1zS2V5ID0gIWlzTnVsbE9yVW5kZWZpbmVkKGRlZmF1bHRTeW5jZWRLZXkpO1xuICAgICAgICBpZiAoaGFzU3luY2VkSXRlbXNLZXkpIHtcbiAgICAgICAgICAgIC8qKiBEZWxldGUgYWxsIG5ldmVyIHN5bmNlZCBrZXlzICovXG4gICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zVG9CZURlbGV0ZWQoVXVpZHMobmV2ZXJTeW5jZWRLZXlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE5vIHByZXZpb3VzIHN5bmNlZCBpdGVtcyBrZXkuXG4gICAgICAgICAgICAgKiBXZSBjYW4ga2VlcCB0aGUgb25lKHMpIHdlIGhhdmUsIG9ubHkgaWYgdGhlaXIgdmVyc2lvbiBpcyBlcXVhbCB0byBvdXIgcm9vdCBrZXkgdmVyc2lvbi5cbiAgICAgICAgICAgICAqIElmIHRoZWlyIHZlcnNpb24gaXMgbm90IGVxdWFsIHRvIG91ciByb290IGtleSB2ZXJzaW9uLCBkZWxldGUgdGhlbS4gSWYgd2UgZW5kIHVwIHdpdGggMFxuICAgICAgICAgICAgICogaXRlbXMga2V5cywgY3JlYXRlIGEgbmV3IG9uZS4gICovXG4gICAgICAgICAgICBjb25zdCByb290S2V5ID0gYXdhaXQgdGhpcy5nZXRSb290S2V5KCk7XG4gICAgICAgICAgICBpZiAocm9vdEtleSkge1xuICAgICAgICAgICAgICAgIC8qKiBJZiBuZXZlclN5bmNlZC52ZXJzaW9uICE9IHJvb3RLZXkudmVyc2lvbiwgZGVsZXRlLiAqL1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvRGVsZXRlID0gbmV2ZXJTeW5jZWRLZXlzLmZpbHRlcigoaXRlbXNLZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zS2V5LnZlcnNpb24gIT09IHJvb3RLZXkudmVyc2lvbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAodG9EZWxldGUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zVG9CZURlbGV0ZWQoVXVpZHModG9EZWxldGUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGF0ZXN0SXRlbXNLZXlzKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlTmV3RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZUZ1bGxTeW5jQ29tcGxldGlvbigpIHtcbiAgICAgICAgLyoqIEFsd2F5cyBjcmVhdGUgYSBuZXcgaXRlbXMga2V5IGFmdGVyIGZ1bGwgc3luYywgaWYgbm8gaXRlbXMga2V5IGlzIGZvdW5kICovXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtc0tleSA9IHRoaXMuZ2V0RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIGlmICghY3VycmVudEl0ZW1zS2V5KSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNyZWF0ZU5ld0RlZmF1bHRJdGVtc0tleSgpO1xuICAgICAgICAgICAgaWYgKHRoaXMua2V5TW9kZSA9PT0gS2V5TW9kZS5XcmFwcGVyT25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcGVyc2lzdEFsbEl0ZW1zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSWYgZW5jcnlwdGlvbiBzdGF0dXMgY2hhbmdlcyAoZXNwLiBvbiBtb2JpbGUsIHdoZXJlIGxvY2FsIHN0b3JhZ2UgZW5jcnlwdGlvblxuICAgICAqIGNhbiBiZSBkaXNhYmxlZCksIGNvbnN1bWVycyBtYXkgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHJlcGVyc2lzdCBhbGwgaXRlbXMgdG9cbiAgICAgKiBkaXNrIHVzaW5nIGxhdGVzdCBlbmNyeXB0aW9uIHN0YXR1cy5cbiAgICAgKiBAYWNjZXNzIHB1YmxpY1xuICAgICAqL1xuICAgIGFzeW5jIHJlcGVyc2lzdEFsbEl0ZW1zKCkge1xuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbU1hbmFnZXIuaXRlbXM7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gaXRlbXMubWFwKChpdGVtKSA9PiBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdChpdGVtKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmVQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEByZXR1cm5zIEFsbCBTTnxJdGVtc0tleSBvYmplY3RzIHN5bmNlZCB0byB0aGUgYWNjb3VudC5cbiAgICAgKi9cbiAgICBsYXRlc3RJdGVtc0tleXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zS2V5cygpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBUaGUgaXRlbXMga2V5IHVzZWQgdG8gZW5jcnlwdCB0aGUgcGF5bG9hZFxuICAgICAqL1xuICAgIGl0ZW1zS2V5Rm9yUGF5bG9hZChwYXlsb2FkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhdGVzdEl0ZW1zS2V5cygpLmZpbmQoKGtleSkgPT4ga2V5LnV1aWQgPT09IHBheWxvYWQuaXRlbXNfa2V5X2lkKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQHJldHVybnMgVGhlIFNOSXRlbXNLZXkgb2JqZWN0IHRvIHVzZSB0byBlbmNyeXB0IG5ldyBvciB1cGRhdGVkIGl0ZW1zLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRJdGVtc0tleSgpIHtcbiAgICAgICAgY29uc3QgaXRlbXNLZXlzID0gdGhpcy5sYXRlc3RJdGVtc0tleXMoKTtcbiAgICAgICAgaWYgKGl0ZW1zS2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtc0tleXNbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW1zS2V5cy5maW5kKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBrZXkuaXNEZWZhdWx0O1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiB0aGUgcm9vdCBrZXkgY2hhbmdlcyAobm9uLW51bGwgb25seSksIHdlIG11c3QgcmUtZW5jcnlwdCBhbGwgaXRlbXNcbiAgICAgKiBrZXlzIHdpdGggdGhpcyBuZXcgcm9vdCBrZXkgKGJ5IHNpbXBseSByZS1zeW5jaW5nKS5cbiAgICAgKi9cbiAgICBhc3luYyByZWVuY3J5cHRJdGVtc0tleXMoKSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zS2V5cyA9IHRoaXMubGF0ZXN0SXRlbXNLZXlzKCk7XG4gICAgICAgIGlmIChpdGVtc0tleXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEbyBub3QgY2FsbCBzeW5jIGFmdGVyIG1hcmtpbmcgZGlydHkuXG4gICAgICAgICAgICAgKiBSZS1lbmNyeXB0aW5nIGl0ZW1zIGtleXMgaXMgY2FsbGVkIGJ5IGNvbnN1bWVycyB3aG8gaGF2ZSBzcGVjaWZpYyBmbG93cyB3aG9cbiAgICAgICAgICAgICAqIHdpbGwgc3luYyBvbiB0aGVpciBvd24gdGltaW5nXG4gICAgICAgICAgICAgICovXG4gICAgICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLnNldEl0ZW1zRGlydHkoVXVpZHMoaXRlbXNLZXlzKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBtaWdyYXRpbmcgZnJvbSBub24tU05JdGVtc0tleSBhcmNoaXRlY3R1cmUsIG1hbnkgaXRlbXMgd2lsbCBub3QgaGF2ZSBhXG4gICAgICogcmVsYXRpb25zaGlwIHdpdGggYW55IGtleSBvYmplY3QuIEZvciB0aG9zZSBpdGVtcywgd2UgY2FuIGJlIHN1cmUgdGhhdCBvbmx5IDEga2V5XG4gICAgICogb2JqZWN0IHdpbGwgY29ycmVzcG9uZCB0byB0aGF0IHByb3RvY29sIHZlcnNpb24uXG4gICAgICogQHJldHVybnMgVGhlIFNOSXRlbXNLZXkgb2JqZWN0IHRvIGRlY3J5cHQgaXRlbXMgZW5jcnlwdGVkXG4gICAgICogd2l0aCBwcmV2aW91cyBwcm90b2NvbCB2ZXJzaW9uLlxuICAgICAqL1xuICAgIGFzeW5jIGRlZmF1bHRJdGVtc0tleUZvckl0ZW1WZXJzaW9uKHZlcnNpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF0ZXN0SXRlbXNLZXlzKCkuZmluZCgoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5LnZlcnNpb24gPT09IHZlcnNpb247XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHJhbmRvbSBTTkl0ZW1zS2V5IHRvIHVzZSBmb3IgaXRlbSBlbmNyeXB0aW9uLCBhbmQgYWRkcyBpdCB0byBtb2RlbCBtYW5hZ2VtZW50LlxuICAgICAqIENvbnN1bWVyIG11c3QgY2FsbCBzeW5jLiBJZiB0aGUgcHJvdG9jb2wgdmVyc2lvbiA8PSAwMDMsIG9ubHkgb25lIGl0ZW1zIGtleSBzaG91bGQgYmUgY3JlYXRlZCxcbiAgICAgKiBhbmQgaXRzIC5pdGVtc0tleSB2YWx1ZSBzaG91bGQgYmUgZXF1YWwgdG8gdGhlIHJvb3Qga2V5IG1hc3RlcktleSB2YWx1ZS5cbiAgICAgKi9cbiAgICBhc3luYyBjcmVhdGVOZXdEZWZhdWx0SXRlbXNLZXkoKSB7XG4gICAgICAgIGNvbnN0IHJvb3RLZXkgPSAoYXdhaXQgdGhpcy5nZXRSb290S2V5KCkpO1xuICAgICAgICBjb25zdCBvcGVyYXRvclZlcnNpb24gPSByb290S2V5XG4gICAgICAgICAgICA/IHJvb3RLZXkudmVyc2lvblxuICAgICAgICAgICAgOiB0aGlzLmdldExhdGVzdFZlcnNpb24oKTtcbiAgICAgICAgbGV0IGl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgaWYgKGNvbXBhcmVWZXJzaW9ucyhvcGVyYXRvclZlcnNpb24sIExBU1RfTk9OUk9PVF9JVEVNU19LRVlfVkVSU0lPTikgPD0gMCkge1xuICAgICAgICAgICAgLyoqIENyZWF0ZSByb290IGtleSBiYXNlZCBpdGVtcyBrZXkgKi9cbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh7XG4gICAgICAgICAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU6IENvbnRlbnRUeXBlLkl0ZW1zS2V5LFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IEZpbGxJdGVtQ29udGVudCh7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zS2V5OiByb290S2V5Lm1hc3RlcktleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUF1dGhlbnRpY2F0aW9uS2V5OiByb290S2V5LmRhdGFBdXRoZW50aWNhdGlvbktleSxcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogb3BlcmF0b3JWZXJzaW9uXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaXRlbVRlbXBsYXRlID0gQ3JlYXRlSXRlbUZyb21QYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIENyZWF0ZSBpbmRlcGVuZGVudCBpdGVtcyBrZXkgKi9cbiAgICAgICAgICAgIGl0ZW1UZW1wbGF0ZSA9IGF3YWl0IHRoaXMub3BlcmF0b3JGb3JWZXJzaW9uKG9wZXJhdG9yVmVyc2lvbikuY3JlYXRlSXRlbXNLZXkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50RGVmYXVsdCA9IHRoaXMuZ2V0RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIGlmIChjdXJyZW50RGVmYXVsdCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5pdGVtTWFuYWdlci5jaGFuZ2VJdGVtc0tleShjdXJyZW50RGVmYXVsdC51dWlkLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IuaXNEZWZhdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtc0tleSA9IGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuaW5zZXJ0SXRlbShpdGVtVGVtcGxhdGUpO1xuICAgICAgICBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmNoYW5nZUl0ZW1zS2V5KGl0ZW1zS2V5LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICBtdXRhdG9yLmlzRGVmYXVsdCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXRlbXNLZXk7XG4gICAgfVxuICAgIGFzeW5jIGNoYW5nZVBhc3N3b3JkKGVtYWlsLCBjdXJyZW50UGFzc3dvcmQsIG5ld1Bhc3N3b3JkLCB3cmFwcGluZ0tleSkge1xuICAgICAgICBjb25zdCBbY3VycmVudFJvb3RLZXksIGN1cnJlbnRLZXlQYXJhbXNdID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgdGhpcy5nZXRSb290S2V5KCksXG4gICAgICAgICAgICB0aGlzLmdldFJvb3RLZXlQYXJhbXMoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWZhdWx0SXRlbXNLZXkgPSB0aGlzLmdldERlZmF1bHRJdGVtc0tleSgpO1xuICAgICAgICBjb25zdCBjb21wdXRlZFJvb3RLZXkgPSBhd2FpdCB0aGlzLmNvbXB1dGVSb290S2V5KGN1cnJlbnRQYXNzd29yZCwgY3VycmVudEtleVBhcmFtcyk7XG4gICAgICAgIGlmICghY3VycmVudFJvb3RLZXkuY29tcGFyZShjb21wdXRlZFJvb3RLZXkpKSB7XG4gICAgICAgICAgICAvKiogUGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4gKi9cbiAgICAgICAgICAgIHJldHVybiBbRXJyb3IoSU5WQUxJRF9QQVNTV09SRCldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsga2V5OiBuZXdSb290S2V5LCBrZXlQYXJhbXM6IG5ld0tleVBhcmFtcywgfSA9IGF3YWl0IHRoaXMuY3JlYXRlUm9vdEtleShlbWFpbCwgbmV3UGFzc3dvcmQpO1xuICAgICAgICBhd2FpdCB0aGlzLnNldE5ld1Jvb3RLZXkobmV3Um9vdEtleSwgbmV3S2V5UGFyYW1zLCB3cmFwcGluZ0tleSk7XG4gICAgICAgIGNvbnN0IG5ld0RlZmF1bHRJdGVtc0tleSA9IGF3YWl0IHRoaXMuY3JlYXRlTmV3RGVmYXVsdEl0ZW1zS2V5KCk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzUm9vdEtleTogY3VycmVudFJvb3RLZXksXG4gICAgICAgICAgICAgICAgbmV3Um9vdEtleSxcbiAgICAgICAgICAgICAgICBuZXdLZXlQYXJhbXMsXG4gICAgICAgICAgICAgICAgcm9sbGJhY2s6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zZXROZXdSb290S2V5KGN1cnJlbnRSb290S2V5LCBjdXJyZW50S2V5UGFyYW1zLCB3cmFwcGluZ0tleSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbVRvQmVEZWxldGVkKG5ld0RlZmF1bHRJdGVtc0tleS51dWlkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbShjdXJyZW50RGVmYXVsdEl0ZW1zS2V5LnV1aWQsIChtdXRhdG9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0YXRvci5pc0RlZmF1bHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFCQTtBQTJCQTtBQUNBO0FBQ0E7QUFDQTtBQS9CQTtBQUFBO0FBQUE7QUErQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTZDQTtBQTdDQTtBQUFBO0FBQ0E7QUFEQTtBQThDQTtBQTlDQTtBQUFBO0FBQ0E7QUFEQTtBQStDQTtBQUNBO0FBQ0E7QUFqREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtEQTtBQW5EQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxREE7QUF0REE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBd0RBO0FBekRBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTJEQTtBQTVEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWtFQTtBQWxFQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBc0VBOzs7O0FBdEVBO0FBQUE7QUFBQTtBQTBFQTtBQUNBO0FBQ0E7Ozs7QUE1RUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFnRkE7QUFoRkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFtRkE7Ozs7QUFuRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF1RkE7QUF2RkE7QUFBQTtBQUNBO0FBREE7QUF3RkE7QUF4RkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUEyRkE7Ozs7QUEzRkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUErRkE7QUFDQTtBQWhHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxR0E7Ozs7QUFyR0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF5R0E7QUFDQTtBQTFHQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUErR0E7Ozs7O0FBL0dBO0FBQUE7QUFBQTtBQW9IQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQWxJQTtBQUFBO0FBQUE7QUFzSUE7QUFNQTtBQUNBOzs7O0FBN0lBO0FBQUE7QUFBQTtBQWlKQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXBKQTtBQUFBO0FBQUE7QUF1SkE7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7O0FBcEtBO0FBQUE7QUFBQTtBQTBLQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUF0TEE7QUFBQTtBQUFBO0FBd0xBO0FBQ0E7QUF6TEE7QUFBQTtBQUFBO0FBMkxBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUE3TUE7QUFBQTtBQUFBO0FBK01BO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUF2TkE7QUFBQTtBQUFBO0FBMk5BO0FBQ0E7QUFDQTs7Ozs7QUE3TkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa09BO0FBQ0E7QUFuT0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzT0E7Ozs7QUF0T0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBME9BO0FBMU9BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNk9BOzs7OztBQTdPQTtBQUFBO0FBQUE7QUFrUEE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBS0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQS9RQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFxU0E7QUFDQTtBQXRTQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFtVEE7QUFDQTtBQUNBO0FBclRBO0FBQUE7QUFDQTtBQURBO0FBc1RBO0FBQ0E7QUF2VEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTBUQTtBQTFUQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTZUQTs7Ozs7QUE3VEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFrVUE7QUFsVUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBa1VBO0FBQ0E7QUFwVUE7QUFBQTtBQUNBO0FBREE7QUFxVUE7QUFDQTtBQUNBO0FBdlVBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUEwVUE7Ozs7Ozs7O0FBMVVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFxVkE7QUFDQTtBQXRWQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBMFZBO0FBQ0E7QUEzVkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNlZBO0FBQ0E7QUFGQTtBQUNBO0FBN1ZBO0FBa1dBO0FBQ0E7QUFDQTtBQXBXQTtBQUFBO0FBQ0E7QUFEQTtBQXFXQTtBQXJXQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdXQTs7OztBQXhXQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQTRXQTtBQTVXQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUE0V0E7QUFDQTtBQTlXQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBOFdBO0FBQ0E7QUFoWEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXVYQTtBQXhYQTtBQUNBO0FBREE7QUEyWEE7QUFDQTtBQTVYQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNFhBO0FBN1hBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFpWUE7QUFDQTtBQWxZQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFxWUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBMVlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4WUE7Ozs7Ozs7QUE5WUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcVpBO0FBQ0E7QUF0WkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlaQTtBQUNBO0FBQ0E7QUEzWkE7QUFBQTtBQUNBO0FBREE7QUE0WkE7QUE1WkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQStaQTs7Ozs7QUEvWkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBb2FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXphQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUEyYUE7QUEzYUE7QUFBQTtBQUNBO0FBREE7QUE0YUE7QUE1YUE7QUFBQTtBQUNBO0FBREE7QUErYUE7QUFDQTtBQWhiQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBbWJBOzs7OztBQW5iQTtBQUFBO0FBQUE7QUF3YkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7O0FBOWJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBc2NBO0FBQUE7QUFDQTtBQUNBO0FBeGNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUEyY0E7QUEzY0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBMmNBO0FBQ0E7QUE3Y0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTZjQTtBQUNBO0FBL2NBO0FBQUE7QUFDQTtBQURBO0FBa2RBO0FBbGRBO0FBQUE7QUFDQTtBQURBO0FBbWRBO0FBQ0E7QUFDQTtBQXJkQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXVkQTtBQUNBO0FBQUE7QUFBQTtBQURBO0FBdmRBO0FBQUE7QUFDQTtBQURBO0FBMGRBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBOWRBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBaWVBOzs7Ozs7QUFqZUE7QUFBQTtBQUFBO0FBc2VBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBM2VBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNGVBO0FBN2VBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWtmQTtBQUNBO0FBbmZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXNmQTtBQXRmQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQWdnQkE7QUFoZ0JBO0FBa2dCQTtBQUNBO0FBQ0E7QUFwZ0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxZ0JBOzs7O0FBcmdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXlnQkE7QUF6Z0JBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNGdCQTs7Ozs7QUE1Z0JBO0FBQUE7QUFBQTtBQWloQkE7QUFFQTtBQUNBOzs7O0FBcGhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBMGhCQTs7OztBQTFoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUE4aEJBO0FBQ0E7QUEvaEJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW9pQkE7Ozs7QUFwaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTBpQkE7Ozs7QUExaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRqQkE7Ozs7O0FBNWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQWlrQkE7QUFDQTtBQWxrQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBdWtCQTs7Ozs7QUF2a0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNGtCQTtBQUNBO0FBN2tCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtsQkE7Ozs7O0FBS0E7QUF4bEJBO0FBQUE7QUFDQTtBQURBO0FBeWxCQTtBQXpsQkE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFnbUJBOzs7OztBQWhtQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFxbUJBO0FBcm1CQTtBQUFBO0FBQ0E7QUFEQTtBQXNtQkE7QUF0bUJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBeW1CQTs7Ozs7OztBQXptQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWduQkE7QUFqbkJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXVuQkE7QUFDQTtBQXhuQkE7QUFBQTtBQUNBO0FBREE7QUF5bkJBO0FBQ0E7QUExbkJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQThuQkE7QUE5bkJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFrb0JBOzs7Ozs7O0FBbG9CQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXlvQkE7QUExb0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTRvQkE7QUE3b0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXFwQkE7QUF0cEJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBbXFCQTs7Ozs7QUFucUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXdxQkE7QUFDQTtBQURBO0FBeHFCQTtBQUFBO0FBQ0E7QUFEQTtBQTJxQkE7QUEzcUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE4cUJBOzs7O0FBOXFCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUE3ckJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb3NCQTs7Ozs7Ozs7QUFwc0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrdEJBO0FBbnRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFxdEJBO0FBdHRCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWd1QkE7QUFodUJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOHVCQTs7OztBQTl1QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBb3ZCQTs7OztBQXB2QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNHZCQTtBQUNBO0FBN3ZCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBZ3dCQTs7OztBQWh3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFvd0JBO0FBcHdCQTtBQUFBO0FBQ0E7QUFEQTtBQXF3QkE7QUFDQTtBQUNBO0FBdndCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUF3d0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXp3QkE7QUFBQTtBQTJ3QkE7QUFBQTtBQUNBO0FBNXdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOHdCQTs7OztBQTl3QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFreEJBO0FBbHhCQTtBQUFBO0FBQ0E7QUFEQTtBQW14QkE7QUFueEJBO0FBQUE7QUFDQTtBQURBO0FBb3hCQTtBQUNBO0FBcnhCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFzeEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXZ4QkE7QUFBQTtBQXl4QkE7QUFBQTtBQUNBO0FBMXhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNHhCQTs7Ozs7O0FBNXhCQTtBQUFBO0FBQUE7QUFreUJBO0FBRUE7QUFDQTs7Ozs7QUFyeUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUE4eUJBO0FBQ0E7QUEveUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2ekJBOzs7Ozs7Ozs7O0FBN3pCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQTAwQkE7QUEzMEJBO0FBQ0E7QUFEQTtBQTgwQkE7QUFDQTtBQS8wQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNDFCQTs7Ozs7Ozs7O0FBNTFCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxMkJBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcjNCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBKzNCQTtBQUNBO0FBaDRCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZzRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBcjRCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQSs0QkE7QUFDQTtBQUNBO0FBajVCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUF3NUJBOzs7Ozs7O0FBeDVCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUErNUJBO0FBQ0E7QUFBQTtBQUFBO0FBaDZCQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW02QkE7Ozs7QUFuNkJBO0FBQUE7QUFBQTtBQXU2QkE7QUFDQTtBQUNBOzs7O0FBejZCQTtBQUFBO0FBQUE7QUE2NkJBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUEvNkJBO0FBQUE7QUFBQTtBQW03QkE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUEzN0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWc4QkE7QUFDQTtBQWo4QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUEwOEJBOzs7Ozs7OztBQTE4QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbTlCQTtBQUNBO0FBQ0E7QUFyOUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzOUJBOzs7Ozs7QUF0OUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNDlCQTtBQUNBO0FBQ0E7QUE5OUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBdStCQTtBQUNBO0FBQ0E7QUFIQTtBQXQrQkE7QUFvK0JBO0FBQ0E7QUFDQTtBQXQrQkE7QUFtK0JBO0FBU0E7QUE1K0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFnL0JBO0FBQ0E7QUFqL0JBO0FBay9CQTtBQUNBO0FBbi9CQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXEvQkE7QUFDQTtBQUNBO0FBdi9CQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdy9CQTtBQXgvQkE7QUFBQTtBQTAvQkE7QUFDQTtBQUNBO0FBNS9CQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBKy9CQTtBQUFBO0FBSUE7QUFuZ0NBO0FBQUE7QUFDQTtBQURBO0FBb2dDQTtBQUNBO0FBcmdDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXlnQ0E7QUFBQTtBQXpnQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTJnQ0E7QUEzZ0NBO0FBK2dDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFQQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBSkE7QUFDQTtBQS9nQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/protocol_service.ts\n')},"./lib/services/pure_service.ts": /*!**************************************!*\ !*** ./lib/services/pure_service.ts ***! \**************************************/ /*! exports provided: PureService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PureService", function() { return PureService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar PureService = /*#__PURE__*/function () {\n function PureService() {\n _classCallCheck(this, PureService);\n\n this.eventObservers = [];\n this.loggingEnabled = false;\n this.criticalPromises = [];\n }\n\n _createClass(PureService, [{\n key: "addEventObserver",\n value: function addEventObserver(observer) {\n var _this = this;\n\n this.eventObservers.push(observer);\n return function () {\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["removeFromArray"])(_this.eventObservers, observer);\n };\n }\n }, {\n key: "notifyEvent",\n value: function () {\n var _notifyEvent = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(eventName, data) {\n var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, observer;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 3;\n _iterator = this.eventObservers[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 12;\n break;\n }\n\n observer = _step.value;\n _context.next = 9;\n return observer(eventName, data || {});\n\n case 9:\n _iteratorNormalCompletion = true;\n _context.next = 5;\n break;\n\n case 12:\n _context.next = 18;\n break;\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context["catch"](3);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 18:\n _context.prev = 18;\n _context.prev = 19;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 21:\n _context.prev = 21;\n\n if (!_didIteratorError) {\n _context.next = 24;\n break;\n }\n\n throw _iteratorError;\n\n case 24:\n return _context.finish(21);\n\n case 25:\n return _context.finish(18);\n\n case 26:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function notifyEvent(_x, _x2) {\n return _notifyEvent.apply(this, arguments);\n }\n\n return notifyEvent;\n }()\n /**\n * Called by application to allow services to momentarily block deinit until\n * sensitive operations complete.\n */\n\n }, {\n key: "blockDeinit",\n value: function () {\n var _blockDeinit = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Promise.all(this.criticalPromises);\n\n case 2:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function blockDeinit() {\n return _blockDeinit.apply(this, arguments);\n }\n\n return blockDeinit;\n }()\n /**\n * Called by application before restart.\n * Subclasses should deregister any observers/timers\n */\n\n }, {\n key: "deinit",\n value: function deinit() {\n this.eventObservers.length = 0;\n this.deviceInterface = undefined;\n }\n /**\n * A critical function is one that should block signing out or destroying application\n * session until the crticial function has completed. For example, persisting keys to\n * disk is a critical operation, and should be wrapped in this function call. The\n * parent application instance will await all criticial functions via the `blockDeinit`\n * function before signing out and deiniting.\n */\n\n }, {\n key: "executeCriticalFunction",\n value: function () {\n var _executeCriticalFunction = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(func) {\n var promise;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n promise = func();\n this.criticalPromises.push(promise);\n return _context3.abrupt("return", promise);\n\n case 3:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function executeCriticalFunction(_x3) {\n return _executeCriticalFunction.apply(this, arguments);\n }\n\n return executeCriticalFunction;\n }()\n /**\n * Application instances will call this function directly when they arrive\n * at a certain migratory state.\n */\n\n }, {\n key: "handleApplicationStage",\n value: function () {\n var _handleApplicationStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(stage) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function handleApplicationStage(_x4) {\n return _handleApplicationStage.apply(this, arguments);\n }\n\n return handleApplicationStage;\n }()\n }, {\n key: "log",\n value: function log(message) {\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.loggingEnabled) {\n var date = new Date();\n var timeString = date.toLocaleTimeString().replace(\' PM\', \'\').replace(\' AM\', \'\');\n var string = "".concat(timeString, ".").concat(date.getMilliseconds());\n\n if (args) {\n var _console;\n\n args = args.map(function (arg) {\n if (Array.isArray(arg)) {\n return arg.slice();\n } else {\n return arg;\n }\n });\n\n (_console = console).log.apply(_console, [string, message].concat(_toConsumableArray(args)));\n } else {\n console.log(string, message);\n }\n }\n }\n }]);\n\n return PureService;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3B1cmVfc2VydmljZS50cz85ZDI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbW92ZUZyb21BcnJheSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIFB1cmVTZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmVudE9ic2VydmVycyA9IFtdO1xuICAgICAgICB0aGlzLmxvZ2dpbmdFbmFibGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3JpdGljYWxQcm9taXNlcyA9IFtdO1xuICAgIH1cbiAgICBhZGRFdmVudE9ic2VydmVyKG9ic2VydmVyKSB7XG4gICAgICAgIHRoaXMuZXZlbnRPYnNlcnZlcnMucHVzaChvYnNlcnZlcik7XG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICByZW1vdmVGcm9tQXJyYXkodGhpcy5ldmVudE9ic2VydmVycywgb2JzZXJ2ZXIpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3luYyBub3RpZnlFdmVudChldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgZm9yIChjb25zdCBvYnNlcnZlciBvZiB0aGlzLmV2ZW50T2JzZXJ2ZXJzKSB7XG4gICAgICAgICAgICBhd2FpdCBvYnNlcnZlcihldmVudE5hbWUsIGRhdGEgfHwge30pO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhcHBsaWNhdGlvbiB0byBhbGxvdyBzZXJ2aWNlcyB0byBtb21lbnRhcmlseSBibG9jayBkZWluaXQgdW50aWxcbiAgICAgKiBzZW5zaXRpdmUgb3BlcmF0aW9ucyBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBhc3luYyBibG9ja0RlaW5pdCgpIHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5jcml0aWNhbFByb21pc2VzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGVkIGJ5IGFwcGxpY2F0aW9uIGJlZm9yZSByZXN0YXJ0LlxuICAgICAqIFN1YmNsYXNzZXMgc2hvdWxkIGRlcmVnaXN0ZXIgYW55IG9ic2VydmVycy90aW1lcnNcbiAgICAgKi9cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuZXZlbnRPYnNlcnZlcnMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5kZXZpY2VJbnRlcmZhY2UgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgY3JpdGljYWwgZnVuY3Rpb24gaXMgb25lIHRoYXQgc2hvdWxkIGJsb2NrIHNpZ25pbmcgb3V0IG9yIGRlc3Ryb3lpbmcgYXBwbGljYXRpb25cbiAgICAgKiBzZXNzaW9uIHVudGlsIHRoZSBjcnRpY2lhbCBmdW5jdGlvbiBoYXMgY29tcGxldGVkLiBGb3IgZXhhbXBsZSwgcGVyc2lzdGluZyBrZXlzIHRvXG4gICAgICogZGlzayBpcyBhIGNyaXRpY2FsIG9wZXJhdGlvbiwgYW5kIHNob3VsZCBiZSB3cmFwcGVkIGluIHRoaXMgZnVuY3Rpb24gY2FsbC4gVGhlXG4gICAgICogcGFyZW50IGFwcGxpY2F0aW9uIGluc3RhbmNlIHdpbGwgYXdhaXQgYWxsIGNyaXRpY2lhbCBmdW5jdGlvbnMgdmlhIHRoZSBgYmxvY2tEZWluaXRgXG4gICAgICogZnVuY3Rpb24gYmVmb3JlIHNpZ25pbmcgb3V0IGFuZCBkZWluaXRpbmcuXG4gICAgICovXG4gICAgYXN5bmMgZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oZnVuYykge1xuICAgICAgICBjb25zdCBwcm9taXNlID0gZnVuYygpO1xuICAgICAgICB0aGlzLmNyaXRpY2FsUHJvbWlzZXMucHVzaChwcm9taXNlKTtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuICAgIC8qKlxuICAgICogQXBwbGljYXRpb24gaW5zdGFuY2VzIHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHdoZW4gdGhleSBhcnJpdmVcbiAgICAqIGF0IGEgY2VydGFpbiBtaWdyYXRvcnkgc3RhdGUuXG4gICAgKi9cbiAgICBhc3luYyBoYW5kbGVBcHBsaWNhdGlvblN0YWdlKHN0YWdlKSB7XG4gICAgfVxuICAgIGxvZyhtZXNzYWdlLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmICh0aGlzLmxvZ2dpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVTdHJpbmcgPSBkYXRlLnRvTG9jYWxlVGltZVN0cmluZygpLnJlcGxhY2UoJyBQTScsICcnKS5yZXBsYWNlKCcgQU0nLCAnJyk7XG4gICAgICAgICAgICBjb25zdCBzdHJpbmcgPSBgJHt0aW1lU3RyaW5nfS4ke2RhdGUuZ2V0TWlsbGlzZWNvbmRzKCl9YDtcbiAgICAgICAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgYXJncyA9IGFyZ3MubWFwKChhcmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZy5zbGljZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHN0cmluZywgbWVzc2FnZSwgLi4uYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhzdHJpbmcsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQUFBO0FBQUE7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBWUE7QUFiQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBaUJBOzs7OztBQWpCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXdCQTs7Ozs7QUF4QkE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7OztBQWhDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF3Q0E7QUFDQTtBQXpDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTRDQTs7Ozs7QUE1Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0RBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUF0RUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/pure_service.ts\n')},"./lib/services/singleton_manager.ts": /*!*******************************************!*\ !*** ./lib/services/singleton_manager.ts ***! \*******************************************/ /*! exports provided: SNSingletonManager */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSingletonManager", function() { return SNSingletonManager; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _models_content_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n/**\n * The singleton manager allow consumers to ensure that only 1 item exists of a certain\n * predicate. For example, consumers may want to ensure that only one item of contentType\n * UserPreferences exist. The singleton manager allows consumers to do this via 2 methods:\n * 1. Consumers may use `findOrCreateSingleton` to retrieve an item if it exists, or create\n * it otherwise. While this method may serve most cases, it does not allow the consumer\n * to subscribe to changes, such as if after this method is called, a UserPreferences object\n * is downloaded from a remote source.\n * 2. Consumers may use `registerPredicate` in order to constantly monitor a particular\n * predicate and ensure that only 1 value exists for that predicate. This may be used in\n * tandem with `findOrCreateSingleton`, for example to monitor a predicate after we\n * intitially create the item.\n */\n\nvar SNSingletonManager = /*#__PURE__*/function (_PureService) {\n _inherits(SNSingletonManager, _PureService);\n\n function SNSingletonManager(itemManager, syncService) {\n var _this;\n\n _classCallCheck(this, SNSingletonManager);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSingletonManager).call(this));\n _this.resolveQueue = [];\n _this.registeredPredicates = [];\n _this.itemManager = itemManager;\n _this.syncService = syncService;\n\n _this.addObservers();\n\n return _this;\n }\n\n _createClass(SNSingletonManager, [{\n key: "deinit",\n value: function deinit() {\n this.syncService = undefined;\n this.itemManager = undefined;\n this.resolveQueue.length = 0;\n this.registeredPredicates.length = 0;\n this.removeItemObserver();\n this.removeItemObserver = undefined;\n this.removeSyncObserver();\n this.removeSyncObserver = undefined;\n\n _get(_getPrototypeOf(SNSingletonManager.prototype), "deinit", this).call(this);\n }\n }, {\n key: "popResolveQueue",\n value: function popResolveQueue() {\n var queue = this.resolveQueue.slice();\n this.resolveQueue = [];\n return queue;\n }\n /**\n * We only want to resolve singletons for items that are newly created (because this\n * is when items proliferate). However, we don\'t want to resolve immediately on creation,\n * but instead wait for the next full sync to complete. This is so that when you download\n * a singleton and create the object, but the items key for the item has not yet been\n * downloaded, the singleton will be errorDecrypting, and would be mishandled in the\n * overall singleton logic. By waiting for a full sync to complete, we can be sure that\n * all items keys have been downloaded.\n */\n\n }, {\n key: "addObservers",\n value: function addObservers() {\n var _this2 = this;\n\n this.removeItemObserver = this.itemManager.addObserver(_models_content_types__WEBPACK_IMPORTED_MODULE_1__["ContentType"].Any, function (_, inserted) {\n if (inserted.length > 0) {\n _this2.resolveQueue = _this2.resolveQueue.concat(inserted);\n }\n });\n this.removeSyncObserver = this.syncService.addEventObserver( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(eventName) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(eventName === _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__["SyncEvent"].DownloadFirstSyncCompleted || eventName === _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__["SyncEvent"].FullSyncCompleted)) {\n _context.next = 3;\n break;\n }\n\n _context.next = 3;\n return _this2.resolveSingletonsForItems(_this2.popResolveQueue(), eventName);\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }());\n }\n /**\n * Predicates registered are automatically observed. If global item state changes\n * such that the item(s) match the predicate, procedures will be followed such that\n * the end result is that only 1 item remains, and the others are deleted.\n */\n\n }, {\n key: "registerPredicate",\n value: function registerPredicate(predicate) {\n this.registeredPredicates.push(predicate);\n }\n }, {\n key: "validItemsMatchingPredicate",\n value: function validItemsMatchingPredicate(predicate) {\n return this.itemManager.itemsMatchingPredicate(predicate).filter(function (item) {\n return !item.errorDecrypting;\n });\n }\n }, {\n key: "resolveSingletonsForItems",\n value: function () {\n var _resolveSingletonsForItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(items, eventSource) {\n var _this3 = this;\n\n var matchesForRegisteredPredicate, matchesForSelfPredicate, matches, handled, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, item, matchingItems;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n matchesForRegisteredPredicate = function matchesForRegisteredPredicate(item) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this3.registeredPredicates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var predicate = _step.value;\n\n if (item.satisfiesPredicate(predicate)) {\n return _this3.validItemsMatchingPredicate(predicate);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n\n matchesForSelfPredicate = function matchesForSelfPredicate(item) {\n if (!item.isSingleton) {\n return null;\n }\n\n return _this3.validItemsMatchingPredicate(item.singletonPredicate);\n };\n\n matches = function matches(item) {\n var selfMatches = matchesForSelfPredicate(item);\n\n if (selfMatches && selfMatches.length > 0) {\n return selfMatches;\n }\n\n return matchesForRegisteredPredicate(item);\n };\n\n handled = [];\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context2.prev = 7;\n _iterator2 = items[Symbol.iterator]();\n\n case 9:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context2.next = 22;\n break;\n }\n\n item = _step2.value;\n\n if (!handled.includes(item)) {\n _context2.next = 13;\n break;\n }\n\n return _context2.abrupt("continue", 19);\n\n case 13:\n matchingItems = matches(item);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["extendArray"])(handled, matchingItems || []);\n\n if (!(!matchingItems || matchingItems.length <= 1)) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt("continue", 19);\n\n case 17:\n _context2.next = 19;\n return this.handleStrategy(matchingItems, item.singletonStrategy);\n\n case 19:\n _iteratorNormalCompletion2 = true;\n _context2.next = 9;\n break;\n\n case 22:\n _context2.next = 28;\n break;\n\n case 24:\n _context2.prev = 24;\n _context2.t0 = _context2["catch"](7);\n _didIteratorError2 = true;\n _iteratorError2 = _context2.t0;\n\n case 28:\n _context2.prev = 28;\n _context2.prev = 29;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 31:\n _context2.prev = 31;\n\n if (!_didIteratorError2) {\n _context2.next = 34;\n break;\n }\n\n throw _iteratorError2;\n\n case 34:\n return _context2.finish(31);\n\n case 35:\n return _context2.finish(28);\n\n case 36:\n /**\n * Only sync if event source is FullSyncCompleted.\n * If it is on DownloadFirstSyncCompleted, we don\'t need to sync,\n * as a sync request will automatically be made as part of the second phase\n * of a download-first request.\n */\n if (handled.length > 0 && eventSource === _Services_sync_events__WEBPACK_IMPORTED_MODULE_7__["SyncEvent"].FullSyncCompleted) {\n /**\n * Do not await. We want any local-side changes to\n * be awaited but the actual sync shouldn\'t be since it\'s non-essential\n * Perform after timeout so that we can yield to event notifier that triggered us\n */\n setTimeout(function () {\n _this3.syncService.sync();\n });\n }\n\n case 37:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[7, 24, 28, 36], [29,, 31, 35]]);\n }));\n\n function resolveSingletonsForItems(_x2, _x3) {\n return _resolveSingletonsForItems.apply(this, arguments);\n }\n\n return resolveSingletonsForItems;\n }()\n }, {\n key: "handleStrategy",\n value: function () {\n var _handleStrategy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(items, strategy) {\n var earliestFirst, deleteItems;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(strategy !== _Models_core_item__WEBPACK_IMPORTED_MODULE_2__["SingletonStrategy"].KeepEarliest)) {\n _context3.next = 2;\n break;\n }\n\n throw \'Unhandled singleton strategy\';\n\n case 2:\n earliestFirst = items.sort(function (a, b) {\n /** -1: a comes first, 1: b comes first */\n if (a.errorDecrypting) {\n return 1;\n }\n\n if (b.errorDecrypting) {\n return -1;\n }\n\n return a.created_at < b.created_at ? -1 : 1;\n });\n deleteItems = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["arrayByRemovingFromIndex"])(earliestFirst, 0);\n _context3.next = 6;\n return this.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["Uuids"])(deleteItems));\n\n case 6:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function handleStrategy(_x4, _x5) {\n return _handleStrategy.apply(this, arguments);\n }\n\n return handleStrategy;\n }()\n }, {\n key: "findOrCreateSingleton",\n value: function () {\n var _findOrCreateSingleton = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(predicate, createContentType, createContent) {\n var _this4 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n return _context5.abrupt("return", new Promise( /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(resolve) {\n var matchingItems, didResolve, removeObserver, refreshedItems, errorDecrypting, dirtyPayload, item;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n matchingItems = _this4.validItemsMatchingPredicate(predicate);\n\n if (!(matchingItems.length > 0)) {\n _context4.next = 3;\n break;\n }\n\n return _context4.abrupt("return", resolve(matchingItems[0]));\n\n case 3:\n if (_this4.syncService.getLastSyncDate()) {\n _context4.next = 14;\n break;\n }\n\n /** Add a temporary observer in case of long-running sync request, where\n * the item we\'re looking for ends up resolving early or in the middle. */\n didResolve = false;\n removeObserver = _this4.itemManager.addObserver(createContentType, function (_, inserted) {\n if (inserted.length > 0) {\n var _matchingItems = _this4.itemManager.subItemsMatchingPredicates(inserted, [predicate]);\n\n if (_matchingItems.length > 0) {\n didResolve = true;\n resolve(_matchingItems[0]);\n }\n }\n });\n _context4.next = 8;\n return _this4.syncService.sync();\n\n case 8:\n removeObserver();\n\n if (!didResolve) {\n _context4.next = 11;\n break;\n }\n\n return _context4.abrupt("return");\n\n case 11:\n /** Check again */\n refreshedItems = _this4.validItemsMatchingPredicate(predicate);\n\n if (!(refreshedItems.length > 0)) {\n _context4.next = 14;\n break;\n }\n\n return _context4.abrupt("return", resolve(refreshedItems[0]));\n\n case 14:\n /** Delete any items that are errored */\n errorDecrypting = _this4.itemManager.itemsMatchingPredicate(predicate).filter(function (item) {\n return item.errorDecrypting;\n });\n _context4.next = 17;\n return _this4.itemManager.setItemsToBeDeleted(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_8__["Uuids"])(errorDecrypting));\n\n case 17:\n _context4.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CreateMaxPayloadFromAnyObject"];\n _context4.next = 20;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_6__["Uuid"].GenerateUuid();\n\n case 20:\n _context4.t1 = _context4.sent;\n _context4.t2 = createContentType;\n _context4.t3 = createContent;\n _context4.t4 = new Date();\n _context4.t5 = {\n uuid: _context4.t1,\n content_type: _context4.t2,\n content: _context4.t3,\n dirty: true,\n dirtiedDate: _context4.t4\n };\n dirtyPayload = (0, _context4.t0)(_context4.t5);\n _context4.next = 28;\n return _this4.itemManager.emitItemFromPayload(dirtyPayload);\n\n case 28:\n item = _context4.sent;\n\n if (item) {\n _context4.next = 31;\n break;\n }\n\n throw Error("Created singleton item should not be null ".concat(createContentType));\n\n case 31:\n _context4.next = 33;\n return _this4.syncService.sync();\n\n case 33:\n return _context4.abrupt("return", resolve(item));\n\n case 34:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n return function (_x9) {\n return _ref2.apply(this, arguments);\n };\n }()));\n\n case 1:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n\n function findOrCreateSingleton(_x6, _x7, _x8) {\n return _findOrCreateSingleton.apply(this, arguments);\n }\n\n return findOrCreateSingleton;\n }()\n }]);\n\n return SNSingletonManager;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_3__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc2luZ2xldG9uX21hbmFnZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc2luZ2xldG9uX21hbmFnZXIudHM/ZmQ1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJy4vLi4vbW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgU2luZ2xldG9uU3RyYXRlZ3kgfSBmcm9tICdATW9kZWxzL2NvcmUvaXRlbSc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IGFycmF5QnlSZW1vdmluZ0Zyb21JbmRleCwgZXh0ZW5kQXJyYXkgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnQExpYi91dWlkJztcbmltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5pbXBvcnQgeyBVdWlkcyB9IGZyb20gJ0BNb2RlbHMvZnVuY3Rpb25zJztcbi8qKlxuICogVGhlIHNpbmdsZXRvbiBtYW5hZ2VyIGFsbG93IGNvbnN1bWVycyB0byBlbnN1cmUgdGhhdCBvbmx5IDEgaXRlbSBleGlzdHMgb2YgYSBjZXJ0YWluXG4gKiBwcmVkaWNhdGUuIEZvciBleGFtcGxlLCBjb25zdW1lcnMgbWF5IHdhbnQgdG8gZW5zdXJlIHRoYXQgb25seSBvbmUgaXRlbSBvZiBjb250ZW50VHlwZVxuICogVXNlclByZWZlcmVuY2VzIGV4aXN0LiBUaGUgc2luZ2xldG9uIG1hbmFnZXIgYWxsb3dzIGNvbnN1bWVycyB0byBkbyB0aGlzIHZpYSAyIG1ldGhvZHM6XG4gKiAxLiBDb25zdW1lcnMgbWF5IHVzZSBgZmluZE9yQ3JlYXRlU2luZ2xldG9uYCB0byByZXRyaWV2ZSBhbiBpdGVtIGlmIGl0IGV4aXN0cywgb3IgY3JlYXRlXG4gKiAgICBpdCBvdGhlcndpc2UuIFdoaWxlIHRoaXMgbWV0aG9kIG1heSBzZXJ2ZSBtb3N0IGNhc2VzLCBpdCBkb2VzIG5vdCBhbGxvdyB0aGUgY29uc3VtZXJcbiAqICAgIHRvIHN1YnNjcmliZSB0byBjaGFuZ2VzLCBzdWNoIGFzIGlmIGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgYSBVc2VyUHJlZmVyZW5jZXMgb2JqZWN0XG4gKiAgICBpcyBkb3dubG9hZGVkIGZyb20gYSByZW1vdGUgc291cmNlLlxuICogMi4gQ29uc3VtZXJzIG1heSB1c2UgYHJlZ2lzdGVyUHJlZGljYXRlYCBpbiBvcmRlciB0byBjb25zdGFudGx5IG1vbml0b3IgYSBwYXJ0aWN1bGFyXG4gKiAgICBwcmVkaWNhdGUgYW5kIGVuc3VyZSB0aGF0IG9ubHkgMSB2YWx1ZSBleGlzdHMgZm9yIHRoYXQgcHJlZGljYXRlLiBUaGlzIG1heSBiZSB1c2VkIGluXG4gKiAgICB0YW5kZW0gd2l0aCBgZmluZE9yQ3JlYXRlU2luZ2xldG9uYCwgZm9yIGV4YW1wbGUgdG8gbW9uaXRvciBhIHByZWRpY2F0ZSBhZnRlciB3ZVxuICogICAgaW50aXRpYWxseSBjcmVhdGUgdGhlIGl0ZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBTTlNpbmdsZXRvbk1hbmFnZXIgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoaXRlbU1hbmFnZXIsIHN5bmNTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlID0gW107XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFByZWRpY2F0ZXMgPSBbXTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnN5bmNTZXJ2aWNlID0gc3luY1NlcnZpY2U7XG4gICAgICAgIHRoaXMuYWRkT2JzZXJ2ZXJzKCk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5zeW5jU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5yZWdpc3RlcmVkUHJlZGljYXRlcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlcigpO1xuICAgICAgICB0aGlzLnJlbW92ZUl0ZW1PYnNlcnZlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZW1vdmVTeW5jT2JzZXJ2ZXIoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVTeW5jT2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBwb3BSZXNvbHZlUXVldWUoKSB7XG4gICAgICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5yZXNvbHZlUXVldWUuc2xpY2UoKTtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUgPSBbXTtcbiAgICAgICAgcmV0dXJuIHF1ZXVlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXZSBvbmx5IHdhbnQgdG8gcmVzb2x2ZSBzaW5nbGV0b25zIGZvciBpdGVtcyB0aGF0IGFyZSBuZXdseSBjcmVhdGVkIChiZWNhdXNlIHRoaXNcbiAgICAgKiBpcyB3aGVuIGl0ZW1zIHByb2xpZmVyYXRlKS4gSG93ZXZlciwgd2UgZG9uJ3Qgd2FudCB0byByZXNvbHZlIGltbWVkaWF0ZWx5IG9uIGNyZWF0aW9uLFxuICAgICAqIGJ1dCBpbnN0ZWFkIHdhaXQgZm9yIHRoZSBuZXh0IGZ1bGwgc3luYyB0byBjb21wbGV0ZS4gVGhpcyBpcyBzbyB0aGF0IHdoZW4geW91IGRvd25sb2FkXG4gICAgICogYSBzaW5nbGV0b24gYW5kIGNyZWF0ZSB0aGUgb2JqZWN0LCBidXQgdGhlIGl0ZW1zIGtleSBmb3IgdGhlIGl0ZW0gaGFzIG5vdCB5ZXQgYmVlblxuICAgICAqIGRvd25sb2FkZWQsIHRoZSBzaW5nbGV0b24gd2lsbCBiZSBlcnJvckRlY3J5cHRpbmcsIGFuZCB3b3VsZCBiZSBtaXNoYW5kbGVkIGluIHRoZVxuICAgICAqIG92ZXJhbGwgc2luZ2xldG9uIGxvZ2ljLiBCeSB3YWl0aW5nIGZvciBhIGZ1bGwgc3luYyB0byBjb21wbGV0ZSwgd2UgY2FuIGJlIHN1cmUgdGhhdFxuICAgICAqIGFsbCBpdGVtcyBrZXlzIGhhdmUgYmVlbiBkb3dubG9hZGVkLlxuICAgICAqL1xuICAgIGFkZE9ic2VydmVycygpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVJdGVtT2JzZXJ2ZXIgPSB0aGlzLml0ZW1NYW5hZ2VyLmFkZE9ic2VydmVyKENvbnRlbnRUeXBlLkFueSwgKF8sIGluc2VydGVkKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5zZXJ0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlID0gdGhpcy5yZXNvbHZlUXVldWUuY29uY2F0KGluc2VydGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVtb3ZlU3luY09ic2VydmVyID0gdGhpcy5zeW5jU2VydmljZS5hZGRFdmVudE9ic2VydmVyKGFzeW5jIChldmVudE5hbWUpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudE5hbWUgPT09IFN5bmNFdmVudC5Eb3dubG9hZEZpcnN0U3luY0NvbXBsZXRlZCB8fFxuICAgICAgICAgICAgICAgIGV2ZW50TmFtZSA9PT0gU3luY0V2ZW50LkZ1bGxTeW5jQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZXNvbHZlU2luZ2xldG9uc0Zvckl0ZW1zKHRoaXMucG9wUmVzb2x2ZVF1ZXVlKCksIGV2ZW50TmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmVkaWNhdGVzIHJlZ2lzdGVyZWQgYXJlIGF1dG9tYXRpY2FsbHkgb2JzZXJ2ZWQuIElmIGdsb2JhbCBpdGVtIHN0YXRlIGNoYW5nZXNcbiAgICAgKiBzdWNoIHRoYXQgdGhlIGl0ZW0ocykgbWF0Y2ggdGhlIHByZWRpY2F0ZSwgcHJvY2VkdXJlcyB3aWxsIGJlIGZvbGxvd2VkIHN1Y2ggdGhhdFxuICAgICAqIHRoZSBlbmQgcmVzdWx0IGlzIHRoYXQgb25seSAxIGl0ZW0gcmVtYWlucywgYW5kIHRoZSBvdGhlcnMgYXJlIGRlbGV0ZWQuXG4gICAgICovXG4gICAgcmVnaXN0ZXJQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJlZFByZWRpY2F0ZXMucHVzaChwcmVkaWNhdGUpO1xuICAgIH1cbiAgICB2YWxpZEl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1NYW5hZ2VyLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFpdGVtLmVycm9yRGVjcnlwdGluZztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIHJlc29sdmVTaW5nbGV0b25zRm9ySXRlbXMoaXRlbXMsIGV2ZW50U291cmNlKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXNGb3JSZWdpc3RlcmVkUHJlZGljYXRlID0gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcHJlZGljYXRlIG9mIHRoaXMucmVnaXN0ZXJlZFByZWRpY2F0ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5zYXRpc2ZpZXNQcmVkaWNhdGUocHJlZGljYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52YWxpZEl0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1hdGNoZXNGb3JTZWxmUHJlZGljYXRlID0gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghaXRlbS5pc1NpbmdsZXRvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsaWRJdGVtc01hdGNoaW5nUHJlZGljYXRlKGl0ZW0uc2luZ2xldG9uUHJlZGljYXRlKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IChpdGVtKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxmTWF0Y2hlcyA9IG1hdGNoZXNGb3JTZWxmUHJlZGljYXRlKGl0ZW0pO1xuICAgICAgICAgICAgaWYgKHNlbGZNYXRjaGVzICYmIHNlbGZNYXRjaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZk1hdGNoZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc0ZvclJlZ2lzdGVyZWRQcmVkaWNhdGUoaXRlbSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhhbmRsZWQgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlZC5pbmNsdWRlcyhpdGVtKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdJdGVtcyA9IG1hdGNoZXMoaXRlbSk7XG4gICAgICAgICAgICBleHRlbmRBcnJheShoYW5kbGVkLCBtYXRjaGluZ0l0ZW1zIHx8IFtdKTtcbiAgICAgICAgICAgIGlmICghbWF0Y2hpbmdJdGVtcyB8fCBtYXRjaGluZ0l0ZW1zLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0cmF0ZWd5KG1hdGNoaW5nSXRlbXMsIGl0ZW0uc2luZ2xldG9uU3RyYXRlZ3kpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPbmx5IHN5bmMgaWYgZXZlbnQgc291cmNlIGlzIEZ1bGxTeW5jQ29tcGxldGVkLlxuICAgICAgICAgKiBJZiBpdCBpcyBvbiBEb3dubG9hZEZpcnN0U3luY0NvbXBsZXRlZCwgd2UgZG9uJ3QgbmVlZCB0byBzeW5jLFxuICAgICAgICAgKiBhcyBhIHN5bmMgcmVxdWVzdCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgbWFkZSBhcyBwYXJ0IG9mIHRoZSBzZWNvbmQgcGhhc2VcbiAgICAgICAgICogb2YgYSBkb3dubG9hZC1maXJzdCByZXF1ZXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGhhbmRsZWQubGVuZ3RoID4gMCAmJiBldmVudFNvdXJjZSA9PT0gU3luY0V2ZW50LkZ1bGxTeW5jQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERvIG5vdCBhd2FpdC4gV2Ugd2FudCBhbnkgbG9jYWwtc2lkZSBjaGFuZ2VzIHRvXG4gICAgICAgICAgICAgKiBiZSBhd2FpdGVkIGJ1dCB0aGUgYWN0dWFsIHN5bmMgc2hvdWxkbid0IGJlIHNpbmNlIGl0J3Mgbm9uLWVzc2VudGlhbFxuICAgICAgICAgICAgICogUGVyZm9ybSBhZnRlciB0aW1lb3V0IHNvIHRoYXQgd2UgY2FuIHlpZWxkIHRvIGV2ZW50IG5vdGlmaWVyIHRoYXQgdHJpZ2dlcmVkIHVzXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3luY1NlcnZpY2Uuc3luYygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU3RyYXRlZ3koaXRlbXMsIHN0cmF0ZWd5KSB7XG4gICAgICAgIGlmIChzdHJhdGVneSAhPT0gU2luZ2xldG9uU3RyYXRlZ3kuS2VlcEVhcmxpZXN0KSB7XG4gICAgICAgICAgICB0aHJvdyAnVW5oYW5kbGVkIHNpbmdsZXRvbiBzdHJhdGVneSc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWFybGllc3RGaXJzdCA9IGl0ZW1zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIC8qKiAtMTogYSBjb21lcyBmaXJzdCwgMTogYiBjb21lcyBmaXJzdCAqL1xuICAgICAgICAgICAgaWYgKGEuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYi5lcnJvckRlY3J5cHRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYS5jcmVhdGVkX2F0IDwgYi5jcmVhdGVkX2F0ID8gLTEgOiAxO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVsZXRlSXRlbXMgPSBhcnJheUJ5UmVtb3ZpbmdGcm9tSW5kZXgoZWFybGllc3RGaXJzdCwgMCk7XG4gICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbXNUb0JlRGVsZXRlZChVdWlkcyhkZWxldGVJdGVtcykpO1xuICAgIH1cbiAgICBhc3luYyBmaW5kT3JDcmVhdGVTaW5nbGV0b24ocHJlZGljYXRlLCBjcmVhdGVDb250ZW50VHlwZSwgY3JlYXRlQ29udGVudCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nSXRlbXMgPSB0aGlzLnZhbGlkSXRlbXNNYXRjaGluZ1ByZWRpY2F0ZShwcmVkaWNhdGUpO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKG1hdGNoaW5nSXRlbXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqIEl0ZW0gbm90IGZvdW5kLCBzYWZlIHRvIGNyZWF0ZSBhZnRlciBmdWxsIHN5bmMgaGFzIGNvbXBsZXRlZCAqL1xuICAgICAgICAgICAgaWYgKCF0aGlzLnN5bmNTZXJ2aWNlLmdldExhc3RTeW5jRGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgLyoqIEFkZCBhIHRlbXBvcmFyeSBvYnNlcnZlciBpbiBjYXNlIG9mIGxvbmctcnVubmluZyBzeW5jIHJlcXVlc3QsIHdoZXJlXG4gICAgICAgICAgICAgICAgICogdGhlIGl0ZW0gd2UncmUgbG9va2luZyBmb3IgZW5kcyB1cCByZXNvbHZpbmcgZWFybHkgb3IgaW4gdGhlIG1pZGRsZS4gKi9cbiAgICAgICAgICAgICAgICBsZXQgZGlkUmVzb2x2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZU9ic2VydmVyID0gdGhpcy5pdGVtTWFuYWdlci5hZGRPYnNlcnZlcihjcmVhdGVDb250ZW50VHlwZSwgKF8sIGluc2VydGVkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnNlcnRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ0l0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5zdWJJdGVtc01hdGNoaW5nUHJlZGljYXRlcyhpbnNlcnRlZCwgW3ByZWRpY2F0ZV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoaW5nSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlc29sdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobWF0Y2hpbmdJdGVtc1swXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmNTZXJ2aWNlLnN5bmMoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVPYnNlcnZlcigpO1xuICAgICAgICAgICAgICAgIGlmIChkaWRSZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqIENoZWNrIGFnYWluICovXG4gICAgICAgICAgICAgICAgY29uc3QgcmVmcmVzaGVkSXRlbXMgPSB0aGlzLnZhbGlkSXRlbXNNYXRjaGluZ1ByZWRpY2F0ZShwcmVkaWNhdGUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWZyZXNoZWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHJlZnJlc2hlZEl0ZW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiogRGVsZXRlIGFueSBpdGVtcyB0aGF0IGFyZSBlcnJvcmVkICovXG4gICAgICAgICAgICBjb25zdCBlcnJvckRlY3J5cHRpbmcgPSB0aGlzLml0ZW1NYW5hZ2VyXG4gICAgICAgICAgICAgICAgLml0ZW1zTWF0Y2hpbmdQcmVkaWNhdGUocHJlZGljYXRlKS5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5lcnJvckRlY3J5cHRpbmc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuc2V0SXRlbXNUb0JlRGVsZXRlZChVdWlkcyhlcnJvckRlY3J5cHRpbmcpKTtcbiAgICAgICAgICAgIC8qKiBTYWZlIHRvIGNyZWF0ZSAqL1xuICAgICAgICAgICAgY29uc3QgZGlydHlQYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgICAgIHV1aWQ6IGF3YWl0IFV1aWQuR2VuZXJhdGVVdWlkKCksXG4gICAgICAgICAgICAgICAgY29udGVudF90eXBlOiBjcmVhdGVDb250ZW50VHlwZSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBjcmVhdGVDb250ZW50LFxuICAgICAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpcnRpZWREYXRlOiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCB0aGlzLml0ZW1NYW5hZ2VyLmVtaXRJdGVtRnJvbVBheWxvYWQoZGlydHlQYXlsb2FkKTtcbiAgICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKGBDcmVhdGVkIHNpbmdsZXRvbiBpdGVtIHNob3VsZCBub3QgYmUgbnVsbCAke2NyZWF0ZUNvbnRlbnRUeXBlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdGhpcy5zeW5jU2VydmljZS5zeW5jKCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZShpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBUEE7QUFPQTtBQUNBO0FBVEE7QUFBQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQW5CQTtBQUFBO0FBQUE7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQXpCQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTs7Ozs7O0FBL0NBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBdERBO0FBQUE7QUFBQTtBQXdEQTtBQUVBO0FBQ0E7QUFDQTtBQTVEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUE4REE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFMQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBbEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWtGQTtBQUNBO0FBcEZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF1RkE7QUFDQTtBQUNBO0FBekZBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQThGQTs7Ozs7O0FBTUE7QUFDQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBOUdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBN0hBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaUlBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQU1BOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFBQTtBQUNBO0FBREE7QUFvQkE7QUFDQTtBQXJCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBd0JBO0FBQ0E7QUFDQTtBQTFCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBOEJBO0FBQ0E7QUFFQTtBQUNBO0FBbENBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQTFDQTtBQXFDQTtBQXJDQTtBQUFBO0FBQ0E7QUFEQTtBQTRDQTtBQUNBO0FBN0NBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWxJQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/singleton_manager.ts\n')},"./lib/services/storage_service.ts": /*!*****************************************!*\ !*** ./lib/services/storage_service.ts ***! \*****************************************/ /*! exports provided: StoragePersistencePolicies, StorageEncryptionPolicies, StorageValueModes, ValueModesKeys, SNStorageService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StoragePersistencePolicies", function() { return StoragePersistencePolicies; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageEncryptionPolicies", function() { return StorageEncryptionPolicies; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageValueModes", function() { return StorageValueModes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueModesKeys", function() { return ValueModesKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNStorageService", function() { return SNStorageService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Lib_stages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/stages */ "./lib/stages.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Lib_uuid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Lib/uuid */ "./lib/uuid.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\nvar StoragePersistencePolicies;\n\n(function (StoragePersistencePolicies) {\n StoragePersistencePolicies[StoragePersistencePolicies["Default"] = 1] = "Default";\n StoragePersistencePolicies[StoragePersistencePolicies["Ephemeral"] = 2] = "Ephemeral";\n})(StoragePersistencePolicies || (StoragePersistencePolicies = {}));\n\n;\nvar StorageEncryptionPolicies;\n\n(function (StorageEncryptionPolicies) {\n StorageEncryptionPolicies[StorageEncryptionPolicies["Default"] = 1] = "Default";\n StorageEncryptionPolicies[StorageEncryptionPolicies["Disabled"] = 2] = "Disabled";\n})(StorageEncryptionPolicies || (StorageEncryptionPolicies = {}));\n\n;\nvar StorageValueModes;\n\n(function (StorageValueModes) {\n /** Stored inside wrapped encrpyed storage object */\n StorageValueModes[StorageValueModes["Default"] = 1] = "Default";\n /** Stored outside storage object, unencrypted */\n\n StorageValueModes[StorageValueModes["Nonwrapped"] = 2] = "Nonwrapped";\n})(StorageValueModes || (StorageValueModes = {}));\n\n;\nvar ValueModesKeys;\n\n(function (ValueModesKeys) {\n /* Is encrypted */\n ValueModesKeys["Wrapped"] = "wrapped";\n /* Is decrypted */\n\n ValueModesKeys["Unwrapped"] = "unwrapped";\n /* Lives outside of wrapped/unwrapped */\n\n ValueModesKeys["Nonwrapped"] = "nonwrapped";\n})(ValueModesKeys || (ValueModesKeys = {}));\n\n;\n/**\n * The storage service is responsible for persistence of both simple key-values, and payload\n * storage. It does so by relying on deviceInterface to save and retrieve raw values and payloads.\n * For simple key/values, items are grouped together in an in-memory hash, and persisted to disk\n * as a single object (encrypted, when possible). It handles persisting payloads in the local\n * database by encrypting the payloads when possible.\n * The storage service also exposes methods that allow the application to initially\n * decrypt the persisted key/values, and also a method to determine whether a particular\n * key can decrypt wrapped storage.\n */\n\nvar SNStorageService = /*#__PURE__*/function (_PureService) {\n _inherits(SNStorageService, _PureService);\n\n function SNStorageService(deviceInterface, namespace) {\n var _this;\n\n _classCallCheck(this, SNStorageService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNStorageService).call(this));\n /** Wait until application has been unlocked before trying to persist */\n\n _this.storagePersistable = false;\n _this.deviceInterface = deviceInterface;\n _this.namespace = namespace;\n\n _this.setPersistencePolicy(StoragePersistencePolicies.Default);\n\n _this.setEncryptionPolicy(StorageEncryptionPolicies.Default);\n\n return _this;\n }\n\n _createClass(SNStorageService, [{\n key: "deinit",\n value: function deinit() {\n this.deviceInterface = undefined;\n this.encryptionDelegate = undefined;\n\n _get(_getPrototypeOf(SNStorageService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "handleApplicationStage",\n value: function () {\n var _handleApplicationStage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(stage) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return _get(_getPrototypeOf(SNStorageService.prototype), "handleApplicationStage", this).call(this, stage);\n\n case 2:\n if (stage === _Lib_stages__WEBPACK_IMPORTED_MODULE_2__["ApplicationStage"].Launched_10) {\n this.storagePersistable = true;\n }\n\n case 3:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function handleApplicationStage(_x) {\n return _handleApplicationStage.apply(this, arguments);\n }\n\n return handleApplicationStage;\n }()\n }, {\n key: "setPersistencePolicy",\n value: function () {\n var _setPersistencePolicy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(persistencePolicy) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.persistencePolicy = persistencePolicy;\n\n if (!(this.persistencePolicy === StoragePersistencePolicies.Ephemeral)) {\n _context2.next = 6;\n break;\n }\n\n _context2.next = 4;\n return this.deviceInterface.removeAllRawStorageValues();\n\n case 4:\n _context2.next = 6;\n return this.clearAllPayloads();\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setPersistencePolicy(_x2) {\n return _setPersistencePolicy.apply(this, arguments);\n }\n\n return setPersistencePolicy;\n }()\n }, {\n key: "setEncryptionPolicy",\n value: function () {\n var _setEncryptionPolicy = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(encryptionPolicy) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.encryptionPolicy = encryptionPolicy;\n\n case 1:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function setEncryptionPolicy(_x3) {\n return _setEncryptionPolicy.apply(this, arguments);\n }\n\n return setEncryptionPolicy;\n }()\n }, {\n key: "isEphemeralSession",\n value: function isEphemeralSession() {\n return this.persistencePolicy === StoragePersistencePolicies.Ephemeral;\n }\n }, {\n key: "initializeFromDisk",\n value: function () {\n var _initializeFromDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4() {\n var value, payload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.deviceInterface.getRawStorageValue(this.getPersistenceKey());\n\n case 2:\n value = _context4.sent;\n payload = value ? JSON.parse(value) : null;\n this.setInitialValues(payload);\n\n case 5:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function initializeFromDisk() {\n return _initializeFromDisk.apply(this, arguments);\n }\n\n return initializeFromDisk;\n }()\n /**\n * Called by platforms with the value they load from disk,\n * after they handle initializeFromDisk\n */\n\n }, {\n key: "setInitialValues",\n value: function setInitialValues(values) {\n if (!values) {\n values = this.defaultValuesObject();\n }\n\n if (!values[ValueModesKeys.Unwrapped]) {\n values[ValueModesKeys.Unwrapped] = {};\n }\n\n this.values = values;\n }\n }, {\n key: "isStorageWrapped",\n value: function isStorageWrapped() {\n var wrappedValue = this.values[ValueModesKeys.Wrapped];\n return !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["isNullOrUndefined"])(wrappedValue) && Object.keys(wrappedValue).length > 0;\n }\n }, {\n key: "canDecryptWithKey",\n value: function () {\n var _canDecryptWithKey = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(key) {\n var wrappedValue, decryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n wrappedValue = this.values[ValueModesKeys.Wrapped];\n _context5.next = 3;\n return this.decryptWrappedValue(wrappedValue, key);\n\n case 3:\n decryptedPayload = _context5.sent;\n return _context5.abrupt("return", !decryptedPayload.errorDecrypting);\n\n case 5:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function canDecryptWithKey(_x4) {\n return _canDecryptWithKey.apply(this, arguments);\n }\n\n return canDecryptWithKey;\n }()\n }, {\n key: "decryptWrappedValue",\n value: function () {\n var _decryptWrappedValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6(wrappedValue, key) {\n var payload, decryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (wrappedValue.content_type) {\n _context6.next = 2;\n break;\n }\n\n throw \'Attempting to decrypt nonexistent wrapped value\';\n\n case 2:\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateMaxPayloadFromAnyObject"])(wrappedValue, {\n content_type: _Models_content_types__WEBPACK_IMPORTED_MODULE_6__["ContentType"].EncryptedStorage\n });\n _context6.next = 5;\n return this.encryptionDelegate.payloadByDecryptingPayload(payload, key);\n\n case 5:\n decryptedPayload = _context6.sent;\n return _context6.abrupt("return", decryptedPayload);\n\n case 7:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function decryptWrappedValue(_x5, _x6) {\n return _decryptWrappedValue.apply(this, arguments);\n }\n\n return decryptWrappedValue;\n }()\n }, {\n key: "decryptStorage",\n value: function () {\n var _decryptStorage = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n var wrappedValue, decryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n wrappedValue = this.values[ValueModesKeys.Wrapped];\n _context7.next = 3;\n return this.decryptWrappedValue(wrappedValue);\n\n case 3:\n decryptedPayload = _context7.sent;\n\n if (!decryptedPayload.errorDecrypting) {\n _context7.next = 6;\n break;\n }\n\n throw \'Unable to decrypt storage.\';\n\n case 6:\n this.values[ValueModesKeys.Unwrapped] = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_7__["Copy"])(decryptedPayload.contentObject);\n delete this.values[ValueModesKeys.Wrapped];\n\n case 8:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function decryptStorage() {\n return _decryptStorage.apply(this, arguments);\n }\n\n return decryptStorage;\n }()\n /**\n * Generates a payload that can be persisted to disk,\n * either as a plain object, or an encrypted item.\n */\n\n }, {\n key: "generatePersistenceValue",\n value: function () {\n var _generatePersistenceValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8() {\n var rawContent, valuesToWrap, payload, encryptedPayload;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n rawContent = Object.assign({}, this.values);\n valuesToWrap = rawContent[ValueModesKeys.Unwrapped];\n _context8.t0 = _Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateMaxPayloadFromAnyObject"];\n _context8.next = 5;\n return _Lib_uuid__WEBPACK_IMPORTED_MODULE_8__["Uuid"].GenerateUuid();\n\n case 5:\n _context8.t1 = _context8.sent;\n _context8.t2 = valuesToWrap;\n _context8.t3 = _Models_content_types__WEBPACK_IMPORTED_MODULE_6__["ContentType"].EncryptedStorage;\n _context8.t4 = {\n uuid: _context8.t1,\n content: _context8.t2,\n content_type: _context8.t3\n };\n payload = (0, _context8.t0)(_context8.t4);\n _context8.next = 12;\n return this.encryptionDelegate.payloadByEncryptingPayload(payload, _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].LocalStoragePreferEncrypted);\n\n case 12:\n encryptedPayload = _context8.sent;\n rawContent[ValueModesKeys.Wrapped] = encryptedPayload.ejected();\n rawContent[ValueModesKeys.Unwrapped] = undefined;\n return _context8.abrupt("return", rawContent);\n\n case 16:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function generatePersistenceValue() {\n return _generatePersistenceValue.apply(this, arguments);\n }\n\n return generatePersistenceValue;\n }()\n /** @todo This function should be debounced. */\n\n }, {\n key: "repersistToDisk",\n value: function () {\n var _repersistToDisk = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10() {\n var _this2 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (this.storagePersistable) {\n _context10.next = 2;\n break;\n }\n\n return _context10.abrupt("return");\n\n case 2:\n if (!(this.persistencePolicy === StoragePersistencePolicies.Ephemeral)) {\n _context10.next = 4;\n break;\n }\n\n return _context10.abrupt("return");\n\n case 4:\n return _context10.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var value;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return _this2.generatePersistenceValue();\n\n case 2:\n value = _context9.sent;\n\n /** Save the persisted value so we have access to it in memory (for unit tests afawk) */\n _this2.values[ValueModesKeys.Wrapped] = value[ValueModesKeys.Wrapped];\n return _context9.abrupt("return", _this2.deviceInterface.setRawStorageValue(_this2.getPersistenceKey(), JSON.stringify(value)));\n\n case 5:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9);\n }))));\n\n case 5:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function repersistToDisk() {\n return _repersistToDisk.apply(this, arguments);\n }\n\n return repersistToDisk;\n }()\n }, {\n key: "setValue",\n value: function () {\n var _setValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(key, value) {\n var mode,\n _args11 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n mode = _args11.length > 2 && _args11[2] !== undefined ? _args11[2] : StorageValueModes.Default;\n\n if (this.values) {\n _context11.next = 3;\n break;\n }\n\n throw "Attempting to set storage key ".concat(key, " before loading local storage.");\n\n case 3:\n this.values[this.domainKeyForMode(mode)][key] = value;\n return _context11.abrupt("return", this.repersistToDisk());\n\n case 5:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function setValue(_x7, _x8) {\n return _setValue.apply(this, arguments);\n }\n\n return setValue;\n }()\n }, {\n key: "getValue",\n value: function () {\n var _getValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(key) {\n var mode,\n _args12 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n mode = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : StorageValueModes.Default;\n\n if (this.values) {\n _context12.next = 3;\n break;\n }\n\n throw "Attempting to get storage key ".concat(key, " before loading local storage.");\n\n case 3:\n if (this.values[this.domainKeyForMode(mode)]) {\n _context12.next = 5;\n break;\n }\n\n throw "Storage domain mode not available ".concat(mode, " for key ").concat(key);\n\n case 5:\n return _context12.abrupt("return", this.values[this.domainKeyForMode(mode)][key]);\n\n case 6:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function getValue(_x9) {\n return _getValue.apply(this, arguments);\n }\n\n return getValue;\n }()\n }, {\n key: "removeValue",\n value: function () {\n var _removeValue = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(key) {\n var mode,\n _args13 = arguments;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n mode = _args13.length > 1 && _args13[1] !== undefined ? _args13[1] : StorageValueModes.Default;\n\n if (this.values) {\n _context13.next = 3;\n break;\n }\n\n throw "Attempting to remove storage key ".concat(key, " before loading local storage.");\n\n case 3:\n delete this.values[this.domainKeyForMode(mode)][key];\n return _context13.abrupt("return", this.repersistToDisk());\n\n case 5:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function removeValue(_x10) {\n return _removeValue.apply(this, arguments);\n }\n\n return removeValue;\n }()\n /**\n * Default persistence key. Platforms can override as needed.\n */\n\n }, {\n key: "getPersistenceKey",\n value: function getPersistenceKey() {\n return Object(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_1__["namespacedKey"])(this.namespace, _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_1__["RawStorageKey"].StorageObject);\n }\n }, {\n key: "defaultValuesObject",\n value: function defaultValuesObject(wrapped, unwrapped, nonwrapped) {\n return SNStorageService.defaultValuesObject(wrapped, unwrapped, nonwrapped);\n }\n }, {\n key: "domainKeyForMode",\n value: function domainKeyForMode(mode) {\n if (mode === StorageValueModes.Default) {\n return ValueModesKeys.Unwrapped;\n } else if (mode === StorageValueModes.Nonwrapped) {\n return ValueModesKeys.Nonwrapped;\n } else {\n throw \'Invalid mode\';\n }\n }\n /**\n * Clears simple values from storage only. Does not affect payloads.\n */\n\n }, {\n key: "clearValues",\n value: function () {\n var _clearValues = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n this.setInitialValues();\n _context14.next = 3;\n return this.repersistToDisk();\n\n case 3:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function clearValues() {\n return _clearValues.apply(this, arguments);\n }\n\n return clearValues;\n }()\n }, {\n key: "getAllRawPayloads",\n value: function () {\n var _getAllRawPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n return _context15.abrupt("return", this.deviceInterface.getAllRawDatabasePayloads());\n\n case 1:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function getAllRawPayloads() {\n return _getAllRawPayloads.apply(this, arguments);\n }\n\n return getAllRawPayloads;\n }()\n }, {\n key: "savePayload",\n value: function () {\n var _savePayload = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(payload) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt("return", this.savePayloads([payload]));\n\n case 1:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function savePayload(_x11) {\n return _savePayload.apply(this, arguments);\n }\n\n return savePayload;\n }()\n }, {\n key: "savePayloads",\n value: function () {\n var _savePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(decryptedPayloads) {\n var _this3 = this;\n\n var nondeleted, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, payload, encrypted;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n if (!(this.persistencePolicy === StoragePersistencePolicies.Ephemeral)) {\n _context18.next = 2;\n break;\n }\n\n return _context18.abrupt("return");\n\n case 2:\n nondeleted = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context18.prev = 6;\n _iterator = decryptedPayloads[Symbol.iterator]();\n\n case 8:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context18.next = 24;\n break;\n }\n\n payload = _step.value;\n\n if (!payload.discardable) {\n _context18.next = 15;\n break;\n }\n\n _context18.next = 13;\n return this.deletePayloadWithId(payload.uuid);\n\n case 13:\n _context18.next = 21;\n break;\n\n case 15:\n if (payload.uuid) {\n _context18.next = 17;\n break;\n }\n\n throw Error(\'Attempting to persist payload with no uuid\');\n\n case 17:\n _context18.next = 19;\n return this.encryptionDelegate.payloadByEncryptingPayload(payload, this.encryptionPolicy === StorageEncryptionPolicies.Default ? _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].LocalStoragePreferEncrypted : _Protocol_intents__WEBPACK_IMPORTED_MODULE_4__["EncryptionIntent"].LocalStorageDecrypted);\n\n case 19:\n encrypted = _context18.sent;\n nondeleted.push(encrypted.ejected());\n\n case 21:\n _iteratorNormalCompletion = true;\n _context18.next = 8;\n break;\n\n case 24:\n _context18.next = 30;\n break;\n\n case 26:\n _context18.prev = 26;\n _context18.t0 = _context18["catch"](6);\n _didIteratorError = true;\n _iteratorError = _context18.t0;\n\n case 30:\n _context18.prev = 30;\n _context18.prev = 31;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 33:\n _context18.prev = 33;\n\n if (!_didIteratorError) {\n _context18.next = 36;\n break;\n }\n\n throw _iteratorError;\n\n case 36:\n return _context18.finish(33);\n\n case 37:\n return _context18.finish(30);\n\n case 38:\n return _context18.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n return _context17.abrupt("return", _this3.deviceInterface.saveRawDatabasePayloads(nondeleted));\n\n case 1:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17);\n }))));\n\n case 39:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this, [[6, 26, 30, 38], [31,, 33, 37]]);\n }));\n\n function savePayloads(_x12) {\n return _savePayloads.apply(this, arguments);\n }\n\n return savePayloads;\n }()\n }, {\n key: "deletePayloads",\n value: function () {\n var _deletePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(payloads) {\n var _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, payload;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context19.prev = 3;\n _iterator2 = payloads[Symbol.iterator]();\n\n case 5:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context19.next = 12;\n break;\n }\n\n payload = _step2.value;\n _context19.next = 9;\n return this.deletePayloadWithId(payload.uuid);\n\n case 9:\n _iteratorNormalCompletion2 = true;\n _context19.next = 5;\n break;\n\n case 12:\n _context19.next = 18;\n break;\n\n case 14:\n _context19.prev = 14;\n _context19.t0 = _context19["catch"](3);\n _didIteratorError2 = true;\n _iteratorError2 = _context19.t0;\n\n case 18:\n _context19.prev = 18;\n _context19.prev = 19;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 21:\n _context19.prev = 21;\n\n if (!_didIteratorError2) {\n _context19.next = 24;\n break;\n }\n\n throw _iteratorError2;\n\n case 24:\n return _context19.finish(21);\n\n case 25:\n return _context19.finish(18);\n\n case 26:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this, [[3, 14, 18, 26], [19,, 21, 25]]);\n }));\n\n function deletePayloads(_x13) {\n return _deletePayloads.apply(this, arguments);\n }\n\n return deletePayloads;\n }()\n }, {\n key: "deletePayloadWithId",\n value: function () {\n var _deletePayloadWithId = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(id) {\n var _this4 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n return _context21.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n return _context20.abrupt("return", _this4.deviceInterface.removeRawDatabasePayloadWithId(id));\n\n case 1:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20);\n }))));\n\n case 1:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function deletePayloadWithId(_x14) {\n return _deletePayloadWithId.apply(this, arguments);\n }\n\n return deletePayloadWithId;\n }()\n }, {\n key: "clearAllPayloads",\n value: function () {\n var _clearAllPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23() {\n var _this5 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n return _context23.abrupt("return", this.executeCriticalFunction( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n return _context22.abrupt("return", _this5.deviceInterface.removeAllRawDatabasePayloads());\n\n case 1:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22);\n }))));\n\n case 1:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function clearAllPayloads() {\n return _clearAllPayloads.apply(this, arguments);\n }\n\n return clearAllPayloads;\n }()\n }, {\n key: "clearAllData",\n value: function () {\n var _clearAllData = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n return _context24.abrupt("return", Promise.all([this.clearValues(), this.clearAllPayloads()]));\n\n case 1:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function clearAllData() {\n return _clearAllData.apply(this, arguments);\n }\n\n return clearAllData;\n }()\n }], [{\n key: "defaultValuesObject",\n value: function defaultValuesObject() {\n var _ref5;\n\n var wrapped = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var unwrapped = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var nonwrapped = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return _ref5 = {}, _defineProperty(_ref5, ValueModesKeys.Wrapped, wrapped), _defineProperty(_ref5, ValueModesKeys.Unwrapped, unwrapped), _defineProperty(_ref5, ValueModesKeys.Nonwrapped, nonwrapped), _ref5;\n }\n }]);\n\n return SNStorageService;\n}(_Lib_services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3RvcmFnZV9zZXJ2aWNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N0b3JhZ2Vfc2VydmljZS50cz83MjkxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJhd1N0b3JhZ2VLZXksIG5hbWVzcGFjZWRLZXkgfSBmcm9tICdATGliL3N0b3JhZ2Vfa2V5cyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblN0YWdlIH0gZnJvbSAnQExpYi9zdGFnZXMnO1xuaW1wb3J0IHsgQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IEVuY3J5cHRpb25JbnRlbnQgfSBmcm9tICdAUHJvdG9jb2wvaW50ZW50cyc7XG5pbXBvcnQgeyBQdXJlU2VydmljZSB9IGZyb20gJ0BMaWIvc2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRlbnRUeXBlIH0gZnJvbSAnQE1vZGVscy9jb250ZW50X3R5cGVzJztcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkLCBDb3B5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBVdWlkIH0gZnJvbSAnQExpYi91dWlkJztcbmV4cG9ydCB2YXIgU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXM7XG4oZnVuY3Rpb24gKFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzKSB7XG4gICAgU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXNbU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXNbXCJEZWZhdWx0XCJdID0gMV0gPSBcIkRlZmF1bHRcIjtcbiAgICBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llc1tTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llc1tcIkVwaGVtZXJhbFwiXSA9IDJdID0gXCJFcGhlbWVyYWxcIjtcbn0pKFN0b3JhZ2VQZXJzaXN0ZW5jZVBvbGljaWVzIHx8IChTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcyA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFN0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXM7XG4oZnVuY3Rpb24gKFN0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXMpIHtcbiAgICBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzW1N0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXNbXCJEZWZhdWx0XCJdID0gMV0gPSBcIkRlZmF1bHRcIjtcbiAgICBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzW1N0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXNbXCJEaXNhYmxlZFwiXSA9IDJdID0gXCJEaXNhYmxlZFwiO1xufSkoU3RvcmFnZUVuY3J5cHRpb25Qb2xpY2llcyB8fCAoU3RvcmFnZUVuY3J5cHRpb25Qb2xpY2llcyA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFN0b3JhZ2VWYWx1ZU1vZGVzO1xuKGZ1bmN0aW9uIChTdG9yYWdlVmFsdWVNb2Rlcykge1xuICAgIC8qKiBTdG9yZWQgaW5zaWRlIHdyYXBwZWQgZW5jcnB5ZWQgc3RvcmFnZSBvYmplY3QgKi9cbiAgICBTdG9yYWdlVmFsdWVNb2Rlc1tTdG9yYWdlVmFsdWVNb2Rlc1tcIkRlZmF1bHRcIl0gPSAxXSA9IFwiRGVmYXVsdFwiO1xuICAgIC8qKiBTdG9yZWQgb3V0c2lkZSBzdG9yYWdlIG9iamVjdCwgdW5lbmNyeXB0ZWQgKi9cbiAgICBTdG9yYWdlVmFsdWVNb2Rlc1tTdG9yYWdlVmFsdWVNb2Rlc1tcIk5vbndyYXBwZWRcIl0gPSAyXSA9IFwiTm9ud3JhcHBlZFwiO1xufSkoU3RvcmFnZVZhbHVlTW9kZXMgfHwgKFN0b3JhZ2VWYWx1ZU1vZGVzID0ge30pKTtcbjtcbmV4cG9ydCB2YXIgVmFsdWVNb2Rlc0tleXM7XG4oZnVuY3Rpb24gKFZhbHVlTW9kZXNLZXlzKSB7XG4gICAgLyogSXMgZW5jcnlwdGVkICovXG4gICAgVmFsdWVNb2Rlc0tleXNbXCJXcmFwcGVkXCJdID0gXCJ3cmFwcGVkXCI7XG4gICAgLyogSXMgZGVjcnlwdGVkICovXG4gICAgVmFsdWVNb2Rlc0tleXNbXCJVbndyYXBwZWRcIl0gPSBcInVud3JhcHBlZFwiO1xuICAgIC8qIExpdmVzIG91dHNpZGUgb2Ygd3JhcHBlZC91bndyYXBwZWQgKi9cbiAgICBWYWx1ZU1vZGVzS2V5c1tcIk5vbndyYXBwZWRcIl0gPSBcIm5vbndyYXBwZWRcIjtcbn0pKFZhbHVlTW9kZXNLZXlzIHx8IChWYWx1ZU1vZGVzS2V5cyA9IHt9KSk7XG47XG4vKipcbiAqIFRoZSBzdG9yYWdlIHNlcnZpY2UgaXMgcmVzcG9uc2libGUgZm9yIHBlcnNpc3RlbmNlIG9mIGJvdGggc2ltcGxlIGtleS12YWx1ZXMsIGFuZCBwYXlsb2FkXG4gKiBzdG9yYWdlLiBJdCBkb2VzIHNvIGJ5IHJlbHlpbmcgb24gZGV2aWNlSW50ZXJmYWNlIHRvIHNhdmUgYW5kIHJldHJpZXZlIHJhdyB2YWx1ZXMgYW5kIHBheWxvYWRzLlxuICogRm9yIHNpbXBsZSBrZXkvdmFsdWVzLCBpdGVtcyBhcmUgZ3JvdXBlZCB0b2dldGhlciBpbiBhbiBpbi1tZW1vcnkgaGFzaCwgYW5kIHBlcnNpc3RlZCB0byBkaXNrXG4gKiBhcyBhIHNpbmdsZSBvYmplY3QgKGVuY3J5cHRlZCwgd2hlbiBwb3NzaWJsZSkuIEl0IGhhbmRsZXMgcGVyc2lzdGluZyBwYXlsb2FkcyBpbiB0aGUgbG9jYWxcbiAqIGRhdGFiYXNlIGJ5IGVuY3J5cHRpbmcgdGhlIHBheWxvYWRzIHdoZW4gcG9zc2libGUuXG4gKiBUaGUgc3RvcmFnZSBzZXJ2aWNlIGFsc28gZXhwb3NlcyBtZXRob2RzIHRoYXQgYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGluaXRpYWxseVxuICogZGVjcnlwdCB0aGUgcGVyc2lzdGVkIGtleS92YWx1ZXMsIGFuZCBhbHNvIGEgbWV0aG9kIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcGFydGljdWxhclxuICoga2V5IGNhbiBkZWNyeXB0IHdyYXBwZWQgc3RvcmFnZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOU3RvcmFnZVNlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoZGV2aWNlSW50ZXJmYWNlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgLyoqIFdhaXQgdW50aWwgYXBwbGljYXRpb24gaGFzIGJlZW4gdW5sb2NrZWQgYmVmb3JlIHRyeWluZyB0byBwZXJzaXN0ICovXG4gICAgICAgIHRoaXMuc3RvcmFnZVBlcnNpc3RhYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGV2aWNlSW50ZXJmYWNlID0gZGV2aWNlSW50ZXJmYWNlO1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICAgICAgdGhpcy5zZXRQZXJzaXN0ZW5jZVBvbGljeShTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5EZWZhdWx0KTtcbiAgICAgICAgdGhpcy5zZXRFbmNyeXB0aW9uUG9saWN5KFN0b3JhZ2VFbmNyeXB0aW9uUG9saWNpZXMuRGVmYXVsdCk7XG4gICAgfVxuICAgIGRlaW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZXZpY2VJbnRlcmZhY2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuZW5jcnlwdGlvbkRlbGVnYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICBzdXBlci5kZWluaXQoKTtcbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlQXBwbGljYXRpb25TdGFnZShzdGFnZSkge1xuICAgICAgICBhd2FpdCBzdXBlci5oYW5kbGVBcHBsaWNhdGlvblN0YWdlKHN0YWdlKTtcbiAgICAgICAgaWYgKHN0YWdlID09PSBBcHBsaWNhdGlvblN0YWdlLkxhdW5jaGVkXzEwKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VQZXJzaXN0YWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgc2V0UGVyc2lzdGVuY2VQb2xpY3kocGVyc2lzdGVuY2VQb2xpY3kpIHtcbiAgICAgICAgdGhpcy5wZXJzaXN0ZW5jZVBvbGljeSA9IHBlcnNpc3RlbmNlUG9saWN5O1xuICAgICAgICBpZiAodGhpcy5wZXJzaXN0ZW5jZVBvbGljeSA9PT0gU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRXBoZW1lcmFsKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRldmljZUludGVyZmFjZS5yZW1vdmVBbGxSYXdTdG9yYWdlVmFsdWVzKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmNsZWFyQWxsUGF5bG9hZHMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBzZXRFbmNyeXB0aW9uUG9saWN5KGVuY3J5cHRpb25Qb2xpY3kpIHtcbiAgICAgICAgdGhpcy5lbmNyeXB0aW9uUG9saWN5ID0gZW5jcnlwdGlvblBvbGljeTtcbiAgICB9XG4gICAgaXNFcGhlbWVyYWxTZXNzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJzaXN0ZW5jZVBvbGljeSA9PT0gU3RvcmFnZVBlcnNpc3RlbmNlUG9saWNpZXMuRXBoZW1lcmFsO1xuICAgIH1cbiAgICBhc3luYyBpbml0aWFsaXplRnJvbURpc2soKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgdGhpcy5kZXZpY2VJbnRlcmZhY2UuZ2V0UmF3U3RvcmFnZVZhbHVlKHRoaXMuZ2V0UGVyc2lzdGVuY2VLZXkoKSk7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSB2YWx1ZSA/IEpTT04ucGFyc2UodmFsdWUpIDogbnVsbDtcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWVzKHBheWxvYWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxsZWQgYnkgcGxhdGZvcm1zIHdpdGggdGhlIHZhbHVlIHRoZXkgbG9hZCBmcm9tIGRpc2ssXG4gICAgICogYWZ0ZXIgdGhleSBoYW5kbGUgaW5pdGlhbGl6ZUZyb21EaXNrXG4gICAgICovXG4gICAgc2V0SW5pdGlhbFZhbHVlcyh2YWx1ZXMpIHtcbiAgICAgICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMuZGVmYXVsdFZhbHVlc09iamVjdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmFsdWVzW1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0pIHtcbiAgICAgICAgICAgIHZhbHVlc1tWYWx1ZU1vZGVzS2V5cy5VbndyYXBwZWRdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgfVxuICAgIGlzU3RvcmFnZVdyYXBwZWQoKSB7XG4gICAgICAgIGNvbnN0IHdyYXBwZWRWYWx1ZSA9IHRoaXMudmFsdWVzW1ZhbHVlTW9kZXNLZXlzLldyYXBwZWRdO1xuICAgICAgICByZXR1cm4gIWlzTnVsbE9yVW5kZWZpbmVkKHdyYXBwZWRWYWx1ZSkgJiYgT2JqZWN0LmtleXMod3JhcHBlZFZhbHVlKS5sZW5ndGggPiAwO1xuICAgIH1cbiAgICBhc3luYyBjYW5EZWNyeXB0V2l0aEtleShrZXkpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFZhbHVlID0gdGhpcy52YWx1ZXNbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF07XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBheWxvYWQgPSBhd2FpdCB0aGlzLmRlY3J5cHRXcmFwcGVkVmFsdWUod3JhcHBlZFZhbHVlLCBrZXkpO1xuICAgICAgICByZXR1cm4gIWRlY3J5cHRlZFBheWxvYWQuZXJyb3JEZWNyeXB0aW5nO1xuICAgIH1cbiAgICBhc3luYyBkZWNyeXB0V3JhcHBlZFZhbHVlKHdyYXBwZWRWYWx1ZSwga2V5KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAqIFRoZSByZWFkIGNvbnRlbnQgdHlwZSBkb2Vzbid0IG1hdHRlciwgc28gbG9uZyBhcyB3ZSBrbm93IGl0IHJlc3BvbmRzXG4gICAgICAgICogdG8gY29udGVudCB0eXBlLiBUaGlzIGFsbG93cyBhIG1vcmUgc2VhbWxlc3MgdHJhbnNpdGlvbiB3aGVuIGJvdGggd2ViXG4gICAgICAgICogYW5kIG1vYmlsZSB1c2VkIGRpZmZlcmVudCBjb250ZW50IHR5cGVzIGZvciBlbmNyeXB0ZWQgc3RvcmFnZS5cbiAgICAgICAgKi9cbiAgICAgICAgaWYgKCF3cmFwcGVkVmFsdWUuY29udGVudF90eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyAnQXR0ZW1wdGluZyB0byBkZWNyeXB0IG5vbmV4aXN0ZW50IHdyYXBwZWQgdmFsdWUnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBDcmVhdGVNYXhQYXlsb2FkRnJvbUFueU9iamVjdCh3cmFwcGVkVmFsdWUsIHtcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvbkRlbGVnYXRlLnBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIGtleSk7XG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWRQYXlsb2FkO1xuICAgIH1cbiAgICBhc3luYyBkZWNyeXB0U3RvcmFnZSgpIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFZhbHVlID0gdGhpcy52YWx1ZXNbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF07XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFBheWxvYWQgPSBhd2FpdCB0aGlzLmRlY3J5cHRXcmFwcGVkVmFsdWUod3JhcHBlZFZhbHVlKTtcbiAgICAgICAgaWYgKGRlY3J5cHRlZFBheWxvYWQuZXJyb3JEZWNyeXB0aW5nKSB7XG4gICAgICAgICAgICB0aHJvdyAnVW5hYmxlIHRvIGRlY3J5cHQgc3RvcmFnZS4nO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmFsdWVzW1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0gPSBDb3B5KGRlY3J5cHRlZFBheWxvYWQuY29udGVudE9iamVjdCk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnZhbHVlc1tWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGEgcGF5bG9hZCB0aGF0IGNhbiBiZSBwZXJzaXN0ZWQgdG8gZGlzayxcbiAgICAgKiBlaXRoZXIgYXMgYSBwbGFpbiBvYmplY3QsIG9yIGFuIGVuY3J5cHRlZCBpdGVtLlxuICAgICAqL1xuICAgIGFzeW5jIGdlbmVyYXRlUGVyc2lzdGVuY2VWYWx1ZSgpIHtcbiAgICAgICAgY29uc3QgcmF3Q29udGVudCA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmFsdWVzKTtcbiAgICAgICAgY29uc3QgdmFsdWVzVG9XcmFwID0gcmF3Q29udGVudFtWYWx1ZU1vZGVzS2V5cy5VbndyYXBwZWRdO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3Qoe1xuICAgICAgICAgICAgdXVpZDogYXdhaXQgVXVpZC5HZW5lcmF0ZVV1aWQoKSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHZhbHVlc1RvV3JhcCxcbiAgICAgICAgICAgIGNvbnRlbnRfdHlwZTogQ29udGVudFR5cGUuRW5jcnlwdGVkU3RvcmFnZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUGF5bG9hZCA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvbkRlbGVnYXRlLnBheWxvYWRCeUVuY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQsIEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlUHJlZmVyRW5jcnlwdGVkKTtcbiAgICAgICAgcmF3Q29udGVudFtWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXSA9IGVuY3J5cHRlZFBheWxvYWQuZWplY3RlZCgpO1xuICAgICAgICByYXdDb250ZW50W1ZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiByYXdDb250ZW50O1xuICAgIH1cbiAgICAvKiogQHRvZG8gVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZGVib3VuY2VkLiAqL1xuICAgIGFzeW5jIHJlcGVyc2lzdFRvRGlzaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnN0b3JhZ2VQZXJzaXN0YWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RlbmNlUG9saWN5ID09PSBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5FcGhlbWVyYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5leGVjdXRlQ3JpdGljYWxGdW5jdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVQZXJzaXN0ZW5jZVZhbHVlKCk7XG4gICAgICAgICAgICAvKiogU2F2ZSB0aGUgcGVyc2lzdGVkIHZhbHVlIHNvIHdlIGhhdmUgYWNjZXNzIHRvIGl0IGluIG1lbW9yeSAoZm9yIHVuaXQgdGVzdHMgYWZhd2spICovXG4gICAgICAgICAgICB0aGlzLnZhbHVlc1tWYWx1ZU1vZGVzS2V5cy5XcmFwcGVkXSA9IHZhbHVlW1ZhbHVlTW9kZXNLZXlzLldyYXBwZWRdO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnNldFJhd1N0b3JhZ2VWYWx1ZSh0aGlzLmdldFBlcnNpc3RlbmNlS2V5KCksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzZXRWYWx1ZShrZXksIHZhbHVlLCBtb2RlID0gU3RvcmFnZVZhbHVlTW9kZXMuRGVmYXVsdCkge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVzKSB7XG4gICAgICAgICAgICB0aHJvdyBgQXR0ZW1wdGluZyB0byBzZXQgc3RvcmFnZSBrZXkgJHtrZXl9IGJlZm9yZSBsb2FkaW5nIGxvY2FsIHN0b3JhZ2UuYDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZhbHVlc1t0aGlzLmRvbWFpbktleUZvck1vZGUobW9kZSldW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwZXJzaXN0VG9EaXNrKCk7XG4gICAgfVxuICAgIGFzeW5jIGdldFZhbHVlKGtleSwgbW9kZSA9IFN0b3JhZ2VWYWx1ZU1vZGVzLkRlZmF1bHQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlcykge1xuICAgICAgICAgICAgdGhyb3cgYEF0dGVtcHRpbmcgdG8gZ2V0IHN0b3JhZ2Uga2V5ICR7a2V5fSBiZWZvcmUgbG9hZGluZyBsb2NhbCBzdG9yYWdlLmA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlc1t0aGlzLmRvbWFpbktleUZvck1vZGUobW9kZSldKSB7XG4gICAgICAgICAgICB0aHJvdyBgU3RvcmFnZSBkb21haW4gbW9kZSBub3QgYXZhaWxhYmxlICR7bW9kZX0gZm9yIGtleSAke2tleX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlc1t0aGlzLmRvbWFpbktleUZvck1vZGUobW9kZSldW2tleV07XG4gICAgfVxuICAgIGFzeW5jIHJlbW92ZVZhbHVlKGtleSwgbW9kZSA9IFN0b3JhZ2VWYWx1ZU1vZGVzLkRlZmF1bHQpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbHVlcykge1xuICAgICAgICAgICAgdGhyb3cgYEF0dGVtcHRpbmcgdG8gcmVtb3ZlIHN0b3JhZ2Uga2V5ICR7a2V5fSBiZWZvcmUgbG9hZGluZyBsb2NhbCBzdG9yYWdlLmA7XG4gICAgICAgIH1cbiAgICAgICAgZGVsZXRlIHRoaXMudmFsdWVzW3RoaXMuZG9tYWluS2V5Rm9yTW9kZShtb2RlKV1ba2V5XTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVwZXJzaXN0VG9EaXNrKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgcGVyc2lzdGVuY2Uga2V5LiBQbGF0Zm9ybXMgY2FuIG92ZXJyaWRlIGFzIG5lZWRlZC5cbiAgICAgKi9cbiAgICBnZXRQZXJzaXN0ZW5jZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIG5hbWVzcGFjZWRLZXkodGhpcy5uYW1lc3BhY2UsIFJhd1N0b3JhZ2VLZXkuU3RvcmFnZU9iamVjdCk7XG4gICAgfVxuICAgIGRlZmF1bHRWYWx1ZXNPYmplY3Qod3JhcHBlZCwgdW53cmFwcGVkLCBub253cmFwcGVkKSB7XG4gICAgICAgIHJldHVybiBTTlN0b3JhZ2VTZXJ2aWNlLmRlZmF1bHRWYWx1ZXNPYmplY3Qod3JhcHBlZCwgdW53cmFwcGVkLCBub253cmFwcGVkKTtcbiAgICB9XG4gICAgc3RhdGljIGRlZmF1bHRWYWx1ZXNPYmplY3Qod3JhcHBlZCA9IHt9LCB1bndyYXBwZWQgPSB7fSwgbm9ud3JhcHBlZCA9IHt9KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuV3JhcHBlZF06IHdyYXBwZWQsXG4gICAgICAgICAgICBbVmFsdWVNb2Rlc0tleXMuVW53cmFwcGVkXTogdW53cmFwcGVkLFxuICAgICAgICAgICAgW1ZhbHVlTW9kZXNLZXlzLk5vbndyYXBwZWRdOiBub253cmFwcGVkXG4gICAgICAgIH07XG4gICAgfVxuICAgIGRvbWFpbktleUZvck1vZGUobW9kZSkge1xuICAgICAgICBpZiAobW9kZSA9PT0gU3RvcmFnZVZhbHVlTW9kZXMuRGVmYXVsdCkge1xuICAgICAgICAgICAgcmV0dXJuIFZhbHVlTW9kZXNLZXlzLlVud3JhcHBlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtb2RlID09PSBTdG9yYWdlVmFsdWVNb2Rlcy5Ob253cmFwcGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gVmFsdWVNb2Rlc0tleXMuTm9ud3JhcHBlZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93ICdJbnZhbGlkIG1vZGUnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsZWFycyBzaW1wbGUgdmFsdWVzIGZyb20gc3RvcmFnZSBvbmx5LiBEb2VzIG5vdCBhZmZlY3QgcGF5bG9hZHMuXG4gICAgICovXG4gICAgYXN5bmMgY2xlYXJWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlcygpO1xuICAgICAgICBhd2FpdCB0aGlzLnJlcGVyc2lzdFRvRGlzaygpO1xuICAgIH1cbiAgICBhc3luYyBnZXRBbGxSYXdQYXlsb2FkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLmdldEFsbFJhd0RhdGFiYXNlUGF5bG9hZHMoKTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zYXZlUGF5bG9hZHMoW3BheWxvYWRdKTtcbiAgICB9XG4gICAgYXN5bmMgc2F2ZVBheWxvYWRzKGRlY3J5cHRlZFBheWxvYWRzKSB7XG4gICAgICAgIGlmICh0aGlzLnBlcnNpc3RlbmNlUG9saWN5ID09PSBTdG9yYWdlUGVyc2lzdGVuY2VQb2xpY2llcy5FcGhlbWVyYWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub25kZWxldGVkID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcGF5bG9hZCBvZiBkZWNyeXB0ZWRQYXlsb2Fkcykge1xuICAgICAgICAgICAgaWYgKHBheWxvYWQuZGlzY2FyZGFibGUpIHtcbiAgICAgICAgICAgICAgICAvKiogSWYgdGhlIHBheWxvYWQgaXMgZGVsZXRlZCBhbmQgbm90IGRpcnR5LCByZW1vdmUgaXQgZnJvbSBkYi4gKi9cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVBheWxvYWRXaXRoSWQocGF5bG9hZC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghcGF5bG9hZC51dWlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdBdHRlbXB0aW5nIHRvIHBlcnNpc3QgcGF5bG9hZCB3aXRoIG5vIHV1aWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uRGVsZWdhdGUucGF5bG9hZEJ5RW5jcnlwdGluZ1BheWxvYWQocGF5bG9hZCwgdGhpcy5lbmNyeXB0aW9uUG9saWN5ID09PSBTdG9yYWdlRW5jcnlwdGlvblBvbGljaWVzLkRlZmF1bHRcbiAgICAgICAgICAgICAgICAgICAgPyBFbmNyeXB0aW9uSW50ZW50LkxvY2FsU3RvcmFnZVByZWZlckVuY3J5cHRlZFxuICAgICAgICAgICAgICAgICAgICA6IEVuY3J5cHRpb25JbnRlbnQuTG9jYWxTdG9yYWdlRGVjcnlwdGVkKTtcbiAgICAgICAgICAgICAgICBub25kZWxldGVkLnB1c2goZW5jcnlwdGVkLmVqZWN0ZWQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnNhdmVSYXdEYXRhYmFzZVBheWxvYWRzKG5vbmRlbGV0ZWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlUGF5bG9hZHMocGF5bG9hZHMpIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXlsb2FkIG9mIHBheWxvYWRzKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZVBheWxvYWRXaXRoSWQocGF5bG9hZC51dWlkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBkZWxldGVQYXlsb2FkV2l0aElkKGlkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV4ZWN1dGVDcml0aWNhbEZ1bmN0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRldmljZUludGVyZmFjZS5yZW1vdmVSYXdEYXRhYmFzZVBheWxvYWRXaXRoSWQoaWQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgY2xlYXJBbGxQYXlsb2FkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXhlY3V0ZUNyaXRpY2FsRnVuY3Rpb24oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGV2aWNlSW50ZXJmYWNlLnJlbW92ZUFsbFJhd0RhdGFiYXNlUGF5bG9hZHMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGNsZWFyQWxsRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJWYWx1ZXMoKSxcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxQYXlsb2FkcygpXG4gICAgICAgIF0pO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFSQTtBQVFBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFXQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBZEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaUJBO0FBQ0E7QUFDQTtBQUNBO0FBcEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBc0JBO0FBQ0E7QUF2QkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2QkE7QUFDQTtBQTlCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0NBO0FBQ0E7QUFqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFtQ0E7QUFDQTtBQUNBO0FBQ0E7QUF0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXVDQTs7Ozs7QUF2Q0E7QUFBQTtBQUFBO0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBbkRBO0FBQUE7QUFBQTtBQXFEQTtBQUNBO0FBQ0E7QUF2REE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBeURBO0FBekRBO0FBQUE7QUFDQTtBQURBO0FBMERBO0FBMURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXNFQTtBQUNBO0FBREE7QUF0RUE7QUFBQTtBQUNBO0FBREE7QUF5RUE7QUF6RUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RUE7QUE3RUE7QUFBQTtBQUNBO0FBREE7QUE4RUE7QUFDQTtBQS9FQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBa0ZBO0FBQ0E7QUFDQTtBQXBGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBcUZBOzs7OztBQXJGQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwRkE7QUFDQTtBQTNGQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE2RkE7QUFDQTtBQUNBO0FBL0ZBO0FBNEZBO0FBNUZBO0FBQUE7QUFDQTtBQURBO0FBaUdBO0FBQ0E7QUFDQTtBQW5HQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQXNHQTtBQUNBO0FBdkdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQThHQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUhBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBL0dBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFIQTtBQUNBO0FBdEhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5SEE7QUF6SEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQTRIQTtBQUNBO0FBN0hBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFJQTtBQUNBO0FBdElBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUF5SUE7QUF6SUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE0SUE7Ozs7QUE1SUE7QUFBQTtBQUFBO0FBZ0pBO0FBQ0E7QUFqSkE7QUFBQTtBQUFBO0FBbUpBO0FBQ0E7QUFwSkE7QUFBQTtBQUFBO0FBNkpBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQXZLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMktBO0FBM0tBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBd0xBO0FBeExBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXdMQTtBQUNBO0FBMUxBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBa01BO0FBR0E7QUFDQTtBQXRNQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBd01BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF6TUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBNE1BO0FBN01BO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa05BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFuTkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1TkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXhOQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUpBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQUtBO0FBM0pBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/storage_service.ts\n')},"./lib/services/sync/account/downloader.ts": /*!*************************************************!*\ !*** ./lib/services/sync/account/downloader.ts ***! \*************************************************/ /*! exports provided: AccountDownloader */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccountDownloader", function() { return AccountDownloader; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/protocol/payloads/sources */ "./lib/protocol/payloads/sources.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nvar AccountDownloader = /*#__PURE__*/function () {\n function AccountDownloader(apiService, protocolService, contentType, customEvent, limit) {\n _classCallCheck(this, AccountDownloader);\n\n this.apiService = apiService;\n this.protocolService = protocolService;\n this.contentType = contentType;\n this.customEvent = customEvent;\n this.limit = limit;\n this.progress = {\n retrievedPayloads: []\n };\n }\n /**\n * Executes a sync request with a blank sync token and high download limit. It will download all items,\n * but won\'t do anything with them other than decrypting and creating respective objects.\n */\n\n\n _createClass(AccountDownloader, [{\n key: "run",\n value: function () {\n var _run = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var response, encryptedPayloads, decryptedPayloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.apiService.sync([], this.progress.lastSyncToken, this.progress.paginationToken, this.limit || 500, false, this.contentType, this.customEvent);\n\n case 2:\n response = _context.sent;\n encryptedPayloads = response.retrieved_items.map(function (rawPayload) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CreateSourcedPayloadFromObject"])(rawPayload, _Lib_protocol_payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved);\n });\n _context.next = 6;\n return this.protocolService.payloadsByDecryptingPayloads(encryptedPayloads);\n\n case 6:\n decryptedPayloads = _context.sent;\n this.progress.retrievedPayloads = this.progress.retrievedPayloads.concat(decryptedPayloads);\n this.progress.lastSyncToken = response.sync_token;\n this.progress.paginationToken = response.cursor_token;\n\n if (!response.cursor_token) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt("return", this.run());\n\n case 14:\n return _context.abrupt("return", this.progress.retrievedPayloads);\n\n case 15:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function run() {\n return _run.apply(this, arguments);\n }\n\n return run;\n }()\n }]);\n\n return AccountDownloader;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L2Rvd25sb2FkZXIudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L2Rvd25sb2FkZXIudHM/MGYxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVTb3VyY2VkUGF5bG9hZEZyb21PYmplY3QgfSBmcm9tICdAUGF5bG9hZHMvZ2VuZXJhdG9yJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdATGliL3Byb3RvY29sL3BheWxvYWRzL3NvdXJjZXMnO1xuZXhwb3J0IGNsYXNzIEFjY291bnREb3dubG9hZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihhcGlTZXJ2aWNlLCBwcm90b2NvbFNlcnZpY2UsIGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCwgbGltaXQpIHtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlID0gYXBpU2VydmljZTtcbiAgICAgICAgdGhpcy5wcm90b2NvbFNlcnZpY2UgPSBwcm90b2NvbFNlcnZpY2U7XG4gICAgICAgIHRoaXMuY29udGVudFR5cGUgPSBjb250ZW50VHlwZTtcbiAgICAgICAgdGhpcy5jdXN0b21FdmVudCA9IGN1c3RvbUV2ZW50O1xuICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSB7IHJldHJpZXZlZFBheWxvYWRzOiBbXSB9O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFeGVjdXRlcyBhIHN5bmMgcmVxdWVzdCB3aXRoIGEgYmxhbmsgc3luYyB0b2tlbiBhbmQgaGlnaCBkb3dubG9hZCBsaW1pdC4gSXQgd2lsbCBkb3dubG9hZCBhbGwgaXRlbXMsXG4gICAgICogYnV0IHdvbid0IGRvIGFueXRoaW5nIHdpdGggdGhlbSBvdGhlciB0aGFuIGRlY3J5cHRpbmcgYW5kIGNyZWF0aW5nIHJlc3BlY3RpdmUgb2JqZWN0cy5cbiAgICAgKi9cbiAgICBhc3luYyBydW4oKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnN5bmMoW10sIHRoaXMucHJvZ3Jlc3MubGFzdFN5bmNUb2tlbiwgdGhpcy5wcm9ncmVzcy5wYWdpbmF0aW9uVG9rZW4sIHRoaXMubGltaXQgfHwgNTAwLCBmYWxzZSwgdGhpcy5jb250ZW50VHlwZSwgdGhpcy5jdXN0b21FdmVudCk7XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZFBheWxvYWRzID0gcmVzcG9uc2UucmV0cmlldmVkX2l0ZW1zLm1hcCgocmF3UGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdQYXlsb2FkLCBQYXlsb2FkU291cmNlLlJlbW90ZVJldHJpZXZlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMoZW5jcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICB0aGlzLnByb2dyZXNzLnJldHJpZXZlZFBheWxvYWRzID0gdGhpcy5wcm9ncmVzcy5yZXRyaWV2ZWRQYXlsb2Fkcy5jb25jYXQoZGVjcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICB0aGlzLnByb2dyZXNzLmxhc3RTeW5jVG9rZW4gPSByZXNwb25zZS5zeW5jX3Rva2VuO1xuICAgICAgICB0aGlzLnByb2dyZXNzLnBhZ2luYXRpb25Ub2tlbiA9IHJlc3BvbnNlLmN1cnNvcl90b2tlbjtcbiAgICAgICAgaWYgKHJlc3BvbnNlLmN1cnNvcl90b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmVzcy5yZXRyaWV2ZWRQYXlsb2FkcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFBQTtBQUNBO0FBREE7QUFrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXRCQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/account/downloader.ts\n')},"./lib/services/sync/account/operation.ts": /*!************************************************!*\ !*** ./lib/services/sync/account/operation.ts ***! \************************************************/ /*! exports provided: AccountSyncOperation */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccountSyncOperation", function() { return AccountSyncOperation; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Services_sync_response__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Services/sync/response */ "./lib/services/sync/response.ts");\n/* harmony import */ var _Services_sync_signals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Services/sync/signals */ "./lib/services/sync/signals.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\nvar DEFAULT_UP_DOWN_LIMIT = 150;\n/**\n * A long running operation that handles multiple roundtrips from a server,\n * emitting a stream of values that should be acted upon in real time.\n */\n\nvar AccountSyncOperation = /*#__PURE__*/function () {\n /**\n * @param payloads An array of payloads to send to the server\n * @param receiver A function that receives callback multiple times during the operation\n */\n function AccountSyncOperation(payloads, receiver, lastSyncToken, paginationToken, checkIntegrity, apiService) {\n _classCallCheck(this, AccountSyncOperation);\n\n this.responses = [];\n this.payloads = payloads;\n this.lastSyncToken = lastSyncToken;\n this.paginationToken = paginationToken;\n this.checkIntegrity = checkIntegrity;\n this.apiService = apiService;\n this.receiver = receiver;\n this.pendingPayloads = payloads;\n }\n /**\n * Read the payloads that have been saved, or are currently in flight.\n */\n\n\n _createClass(AccountSyncOperation, [{\n key: "popPayloads",\n value: function popPayloads(count) {\n var payloads = this.pendingPayloads.slice(0, count);\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["subtractFromArray"])(this.pendingPayloads, payloads);\n return payloads;\n }\n }, {\n key: "run",\n value: function () {\n var _run = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var payloads, rawResponse, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n payloads = this.popPayloads(this.upLimit);\n _context.next = 3;\n return this.apiService.sync(payloads, this.lastSyncToken, this.paginationToken, this.downLimit, this.checkIntegrity, undefined, undefined);\n\n case 3:\n rawResponse = _context.sent;\n response = new _Services_sync_response__WEBPACK_IMPORTED_MODULE_2__["SyncResponse"](rawResponse);\n this.responses.push(response);\n this.lastSyncToken = response.lastSyncToken;\n this.paginationToken = response.paginationToken;\n _context.next = 10;\n return this.receiver(_Services_sync_signals__WEBPACK_IMPORTED_MODULE_3__["SyncSignal"].Response, response);\n\n case 10:\n if (this.done) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt("return", this.run());\n\n case 12:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function run() {\n return _run.apply(this, arguments);\n }\n\n return run;\n }()\n }, {\n key: "pendingUploadCount",\n value: function pendingUploadCount() {\n return this.pendingPayloads.length;\n }\n }, {\n key: "totalUploadCount",\n value: function totalUploadCount() {\n return this.payloads.length;\n }\n }, {\n key: "payloadsSavedOrSaving",\n get: function get() {\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["arrayByDifference"])(this.payloads, this.pendingPayloads);\n }\n }, {\n key: "done",\n get: function get() {\n return this.pendingPayloads.length === 0 && !this.paginationToken;\n }\n }, {\n key: "upLimit",\n get: function get() {\n return DEFAULT_UP_DOWN_LIMIT;\n }\n }, {\n key: "downLimit",\n get: function get() {\n return DEFAULT_UP_DOWN_LIMIT;\n }\n }, {\n key: "numberOfItemsInvolved",\n get: function get() {\n var total = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.responses[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var response = _step.value;\n total += response.numberOfItemsInvolved;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return total;\n }\n }]);\n\n return AccountSyncOperation;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L29wZXJhdGlvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL2FjY291bnQvb3BlcmF0aW9uLnRzPzZhNGUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXJyYXlCeURpZmZlcmVuY2UsIHN1YnRyYWN0RnJvbUFycmF5IH0gZnJvbSAnQExpYi91dGlscyc7XG5pbXBvcnQgeyBTeW5jUmVzcG9uc2UgfSBmcm9tICdAU2VydmljZXMvc3luYy9yZXNwb25zZSc7XG5pbXBvcnQgeyBTeW5jU2lnbmFsIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc2lnbmFscyc7XG5jb25zdCBERUZBVUxUX1VQX0RPV05fTElNSVQgPSAxNTA7XG4vKipcbiAqIEEgbG9uZyBydW5uaW5nIG9wZXJhdGlvbiB0aGF0IGhhbmRsZXMgbXVsdGlwbGUgcm91bmR0cmlwcyBmcm9tIGEgc2VydmVyLFxuICogZW1pdHRpbmcgYSBzdHJlYW0gb2YgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIGFjdGVkIHVwb24gaW4gcmVhbCB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgQWNjb3VudFN5bmNPcGVyYXRpb24ge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkcyAgIEFuIGFycmF5IG9mIHBheWxvYWRzIHRvIHNlbmQgdG8gdGhlIHNlcnZlclxuICAgICAqIEBwYXJhbSByZWNlaXZlciAgIEEgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBjYWxsYmFjayBtdWx0aXBsZSB0aW1lcyBkdXJpbmcgdGhlIG9wZXJhdGlvblxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHBheWxvYWRzLCByZWNlaXZlciwgbGFzdFN5bmNUb2tlbiwgcGFnaW5hdGlvblRva2VuLCBjaGVja0ludGVncml0eSwgYXBpU2VydmljZSkge1xuICAgICAgICB0aGlzLnJlc3BvbnNlcyA9IFtdO1xuICAgICAgICB0aGlzLnBheWxvYWRzID0gcGF5bG9hZHM7XG4gICAgICAgIHRoaXMubGFzdFN5bmNUb2tlbiA9IGxhc3RTeW5jVG9rZW47XG4gICAgICAgIHRoaXMucGFnaW5hdGlvblRva2VuID0gcGFnaW5hdGlvblRva2VuO1xuICAgICAgICB0aGlzLmNoZWNrSW50ZWdyaXR5ID0gY2hlY2tJbnRlZ3JpdHk7XG4gICAgICAgIHRoaXMuYXBpU2VydmljZSA9IGFwaVNlcnZpY2U7XG4gICAgICAgIHRoaXMucmVjZWl2ZXIgPSByZWNlaXZlcjtcbiAgICAgICAgdGhpcy5wZW5kaW5nUGF5bG9hZHMgPSBwYXlsb2FkcztcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVhZCB0aGUgcGF5bG9hZHMgdGhhdCBoYXZlIGJlZW4gc2F2ZWQsIG9yIGFyZSBjdXJyZW50bHkgaW4gZmxpZ2h0LlxuICAgICAqL1xuICAgIGdldCBwYXlsb2Fkc1NhdmVkT3JTYXZpbmcoKSB7XG4gICAgICAgIHJldHVybiBhcnJheUJ5RGlmZmVyZW5jZSh0aGlzLnBheWxvYWRzLCB0aGlzLnBlbmRpbmdQYXlsb2Fkcyk7XG4gICAgfVxuICAgIHBvcFBheWxvYWRzKGNvdW50KSB7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gdGhpcy5wZW5kaW5nUGF5bG9hZHMuc2xpY2UoMCwgY291bnQpO1xuICAgICAgICBzdWJ0cmFjdEZyb21BcnJheSh0aGlzLnBlbmRpbmdQYXlsb2FkcywgcGF5bG9hZHMpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZHM7XG4gICAgfVxuICAgIGFzeW5jIHJ1bigpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSB0aGlzLnBvcFBheWxvYWRzKHRoaXMudXBMaW1pdCk7XG4gICAgICAgIGNvbnN0IHJhd1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5hcGlTZXJ2aWNlLnN5bmMocGF5bG9hZHMsIHRoaXMubGFzdFN5bmNUb2tlbiwgdGhpcy5wYWdpbmF0aW9uVG9rZW4sIHRoaXMuZG93bkxpbWl0LCB0aGlzLmNoZWNrSW50ZWdyaXR5LCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gbmV3IFN5bmNSZXNwb25zZShyYXdSZXNwb25zZSk7XG4gICAgICAgIHRoaXMucmVzcG9uc2VzLnB1c2gocmVzcG9uc2UpO1xuICAgICAgICB0aGlzLmxhc3RTeW5jVG9rZW4gPSByZXNwb25zZS5sYXN0U3luY1Rva2VuO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb25Ub2tlbiA9IHJlc3BvbnNlLnBhZ2luYXRpb25Ub2tlbjtcbiAgICAgICAgYXdhaXQgdGhpcy5yZWNlaXZlcihTeW5jU2lnbmFsLlJlc3BvbnNlLCByZXNwb25zZSk7XG4gICAgICAgIGlmICghdGhpcy5kb25lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ydW4oKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwZW5kaW5nVXBsb2FkQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdQYXlsb2Fkcy5sZW5ndGg7XG4gICAgfVxuICAgIHRvdGFsVXBsb2FkQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBheWxvYWRzLmxlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGRvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdQYXlsb2Fkcy5sZW5ndGggPT09IDAgJiYgIXRoaXMucGFnaW5hdGlvblRva2VuO1xuICAgIH1cbiAgICBnZXQgdXBMaW1pdCgpIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfVVBfRE9XTl9MSU1JVDtcbiAgICB9XG4gICAgZ2V0IGRvd25MaW1pdCgpIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfVVBfRE9XTl9MSU1JVDtcbiAgICB9XG4gICAgZ2V0IG51bWJlck9mSXRlbXNJbnZvbHZlZCgpIHtcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcbiAgICAgICAgZm9yIChjb25zdCByZXNwb25zZSBvZiB0aGlzLnJlc3BvbnNlcykge1xuICAgICAgICAgICAgdG90YWwgKz0gcmVzcG9uc2UubnVtYmVyT2ZJdGVtc0ludm9sdmVkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0b3RhbDtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFmQTtBQUFBO0FBQUE7QUFzQkE7QUFDQTtBQUNBO0FBQ0E7QUF6QkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBMkJBO0FBM0JBO0FBQUE7QUFDQTtBQURBO0FBNEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoQ0E7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1Q0E7QUFDQTtBQXhDQTtBQUFBO0FBQUE7QUEwQ0E7QUFDQTtBQTNDQTtBQUFBO0FBQUE7QUFtQkE7QUFDQTtBQXBCQTtBQUFBO0FBQUE7QUE2Q0E7QUFDQTtBQTlDQTtBQUFBO0FBQUE7QUFnREE7QUFDQTtBQWpEQTtBQUFBO0FBQUE7QUFtREE7QUFDQTtBQXBEQTtBQUFBO0FBQUE7QUFzREE7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFKQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFJQTtBQUNBO0FBM0RBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/account/operation.ts\n')},"./lib/services/sync/account/response_resolver.ts": /*!********************************************************!*\ !*** ./lib/services/sync/account/response_resolver.ts ***! \********************************************************/ /*! exports provided: SyncResponseResolver */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncResponseResolver", function() { return SyncResponseResolver; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_deltas_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/deltas/generator */ "./lib/protocol/payloads/deltas/generator.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Protocol_collection_collection_set__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Protocol/collection/collection_set */ "./lib/protocol/collection/collection_set.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n/**\n * Given a remote sync response, the resolver applies the incoming changes on top\n * of the current base state, and returns what the new global state should look like.\n * The response resolver is purely functional and does not modify global state, but instead\n * offers the \'recommended\' new global state given a sync response and a current base state.\n */\n\nvar SyncResponseResolver = /*#__PURE__*/function () {\n function SyncResponseResolver(response, decryptedResponsePayloads, baseCollection, payloadsSavedOrSaving) {\n _classCallCheck(this, SyncResponseResolver);\n\n this.response = response;\n this.baseCollection = baseCollection;\n this.relatedCollectionSet = new _Protocol_collection_collection_set__WEBPACK_IMPORTED_MODULE_4__["ImmutablePayloadCollectionSet"]([_Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(decryptedResponsePayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].DecryptedTransient), _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(payloadsSavedOrSaving, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].SavedOrSaving)]);\n }\n\n _createClass(SyncResponseResolver, [{\n key: "collectionsByProcessingResponse",\n value: function () {\n var _collectionsByProcessingResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var collections, collectionRetrieved, collectionSaved, collectionUuidConflicts, collectionDataConflicts;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n collections = [];\n _context.next = 3;\n return this.collectionByProcessingPayloads(this.response.retrievedPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved);\n\n case 3:\n collectionRetrieved = _context.sent;\n\n if (collectionRetrieved.all().length > 0) {\n collections.push(collectionRetrieved);\n }\n\n _context.next = 7;\n return this.collectionByProcessingPayloads(this.response.savedPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved);\n\n case 7:\n collectionSaved = _context.sent;\n\n if (collectionSaved.all().length > 0) {\n collections.push(collectionSaved);\n }\n\n if (!(this.response.uuidConflictPayloads.length > 0)) {\n _context.next = 14;\n break;\n }\n\n _context.next = 12;\n return this.collectionByProcessingPayloads(this.response.uuidConflictPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictUuid);\n\n case 12:\n collectionUuidConflicts = _context.sent;\n\n if (collectionUuidConflicts.all().length > 0) {\n collections.push(collectionUuidConflicts);\n }\n\n case 14:\n if (!(this.response.dataConflictPayloads.length > 0)) {\n _context.next = 19;\n break;\n }\n\n _context.next = 17;\n return this.collectionByProcessingPayloads(this.response.dataConflictPayloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictData);\n\n case 17:\n collectionDataConflicts = _context.sent;\n\n if (collectionDataConflicts.all().length > 0) {\n collections.push(collectionDataConflicts);\n }\n\n case 19:\n return _context.abrupt("return", collections);\n\n case 20:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function collectionsByProcessingResponse() {\n return _collectionsByProcessingResponse.apply(this, arguments);\n }\n\n return collectionsByProcessingResponse;\n }()\n }, {\n key: "collectionByProcessingPayloads",\n value: function () {\n var _collectionByProcessingPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(payloads, source) {\n var _this = this;\n\n var collection, deltaClass, delta, resultCollection, updatedDirtyPayloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n collection = _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(payloads, source);\n deltaClass = Object(_Payloads_deltas_generator__WEBPACK_IMPORTED_MODULE_1__["DeltaClassForSource"])(source); // eslint-disable-next-line new-cap\n\n delta = new deltaClass(this.baseCollection, collection, this.relatedCollectionSet);\n _context2.next = 5;\n return delta.resultingCollection();\n\n case 5:\n resultCollection = _context2.sent;\n updatedDirtyPayloads = resultCollection.all().map(function (payload) {\n var stillDirty = _this.finalDirtyStateForPayload(payload);\n\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_5__["CopyPayload"])(payload, {\n dirty: stillDirty,\n dirtiedDate: stillDirty ? new Date() : undefined\n });\n });\n return _context2.abrupt("return", _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_3__["ImmutablePayloadCollection"].WithPayloads(updatedDirtyPayloads, source));\n\n case 8:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function collectionByProcessingPayloads(_x, _x2) {\n return _collectionByProcessingPayloads.apply(this, arguments);\n }\n\n return collectionByProcessingPayloads;\n }()\n }, {\n key: "finalDirtyStateForPayload",\n value: function finalDirtyStateForPayload(payload) {\n var current = this.baseCollection.find(payload.uuid);\n /**\n * `current` can be null in the case of new\n * items that haven\'t yet been mapped\n */\n\n var stillDirty;\n\n if (current) {\n if (payload.dirtiedDate && payload.dirtiedDate > current.dirtiedDate) {\n /** The payload was dirtied as part of handling deltas, and not because it was\n * dirtied by a client. We keep the payload dirty state here. */\n stillDirty = payload.dirty;\n } else {\n /** Marking items dirty after lastSyncBegan will cause them to sync again. */\n stillDirty = current.dirtiedDate > current.lastSyncBegan;\n }\n } else {\n /** Forward whatever value any delta resolver may have set */\n stillDirty = payload.dirty;\n }\n\n return stillDirty;\n }\n }]);\n\n return SyncResponseResolver;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9hY2NvdW50L3Jlc3BvbnNlX3Jlc29sdmVyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N5bmMvYWNjb3VudC9yZXNwb25zZV9yZXNvbHZlci50cz8wNmFmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlbHRhQ2xhc3NGb3JTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvZGVsdGFzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24gfSBmcm9tIFwiQFByb3RvY29sL2NvbGxlY3Rpb24vcGF5bG9hZF9jb2xsZWN0aW9uXCI7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvblNldCB9IGZyb20gJ0BQcm90b2NvbC9jb2xsZWN0aW9uL2NvbGxlY3Rpb25fc2V0JztcbmltcG9ydCB7IENvcHlQYXlsb2FkIH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG4vKipcbiAqIEdpdmVuIGEgcmVtb3RlIHN5bmMgcmVzcG9uc2UsIHRoZSByZXNvbHZlciBhcHBsaWVzIHRoZSBpbmNvbWluZyBjaGFuZ2VzIG9uIHRvcFxuICogb2YgdGhlIGN1cnJlbnQgYmFzZSBzdGF0ZSwgYW5kIHJldHVybnMgd2hhdCB0aGUgbmV3IGdsb2JhbCBzdGF0ZSBzaG91bGQgbG9vayBsaWtlLlxuICogVGhlIHJlc3BvbnNlIHJlc29sdmVyIGlzIHB1cmVseSBmdW5jdGlvbmFsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZ2xvYmFsIHN0YXRlLCBidXQgaW5zdGVhZFxuICogb2ZmZXJzIHRoZSAncmVjb21tZW5kZWQnIG5ldyBnbG9iYWwgc3RhdGUgZ2l2ZW4gYSBzeW5jIHJlc3BvbnNlIGFuZCBhIGN1cnJlbnQgYmFzZSBzdGF0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN5bmNSZXNwb25zZVJlc29sdmVyIHtcbiAgICBjb25zdHJ1Y3RvcihyZXNwb25zZSwgZGVjcnlwdGVkUmVzcG9uc2VQYXlsb2FkcywgYmFzZUNvbGxlY3Rpb24sIHBheWxvYWRzU2F2ZWRPclNhdmluZykge1xuICAgICAgICB0aGlzLnJlc3BvbnNlID0gcmVzcG9uc2U7XG4gICAgICAgIHRoaXMuYmFzZUNvbGxlY3Rpb24gPSBiYXNlQ29sbGVjdGlvbjtcbiAgICAgICAgdGhpcy5yZWxhdGVkQ29sbGVjdGlvblNldCA9IG5ldyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvblNldChbXG4gICAgICAgICAgICBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHMoZGVjcnlwdGVkUmVzcG9uc2VQYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5EZWNyeXB0ZWRUcmFuc2llbnQpLFxuICAgICAgICAgICAgSW1tdXRhYmxlUGF5bG9hZENvbGxlY3Rpb24uV2l0aFBheWxvYWRzKHBheWxvYWRzU2F2ZWRPclNhdmluZywgUGF5bG9hZFNvdXJjZS5TYXZlZE9yU2F2aW5nKVxuICAgICAgICBdKTtcbiAgICB9XG4gICAgYXN5bmMgY29sbGVjdGlvbnNCeVByb2Nlc3NpbmdSZXNwb25zZSgpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvblJldHJpZXZlZCA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbkJ5UHJvY2Vzc2luZ1BheWxvYWRzKHRoaXMucmVzcG9uc2UucmV0cmlldmVkUGF5bG9hZHMsIFBheWxvYWRTb3VyY2UuUmVtb3RlUmV0cmlldmVkKTtcbiAgICAgICAgaWYgKGNvbGxlY3Rpb25SZXRyaWV2ZWQuYWxsKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29sbGVjdGlvbnMucHVzaChjb2xsZWN0aW9uUmV0cmlldmVkKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb2xsZWN0aW9uU2F2ZWQgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25CeVByb2Nlc3NpbmdQYXlsb2Fkcyh0aGlzLnJlc3BvbnNlLnNhdmVkUGF5bG9hZHMsIFBheWxvYWRTb3VyY2UuUmVtb3RlU2F2ZWQpO1xuICAgICAgICBpZiAoY29sbGVjdGlvblNhdmVkLmFsbCgpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb25zLnB1c2goY29sbGVjdGlvblNhdmVkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNwb25zZS51dWlkQ29uZmxpY3RQYXlsb2Fkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uVXVpZENvbmZsaWN0cyA9IGF3YWl0IHRoaXMuY29sbGVjdGlvbkJ5UHJvY2Vzc2luZ1BheWxvYWRzKHRoaXMucmVzcG9uc2UudXVpZENvbmZsaWN0UGF5bG9hZHMsIFBheWxvYWRTb3VyY2UuQ29uZmxpY3RVdWlkKTtcbiAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uVXVpZENvbmZsaWN0cy5hbGwoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbnMucHVzaChjb2xsZWN0aW9uVXVpZENvbmZsaWN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2UuZGF0YUNvbmZsaWN0UGF5bG9hZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbkRhdGFDb25mbGljdHMgPSBhd2FpdCB0aGlzLmNvbGxlY3Rpb25CeVByb2Nlc3NpbmdQYXlsb2Fkcyh0aGlzLnJlc3BvbnNlLmRhdGFDb25mbGljdFBheWxvYWRzLCBQYXlsb2FkU291cmNlLkNvbmZsaWN0RGF0YSk7XG4gICAgICAgICAgICBpZiAoY29sbGVjdGlvbkRhdGFDb25mbGljdHMuYWxsKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25zLnB1c2goY29sbGVjdGlvbkRhdGFDb25mbGljdHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb2xsZWN0aW9ucztcbiAgICB9XG4gICAgYXN5bmMgY29sbGVjdGlvbkJ5UHJvY2Vzc2luZ1BheWxvYWRzKHBheWxvYWRzLCBzb3VyY2UpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhwYXlsb2Fkcywgc291cmNlKTtcbiAgICAgICAgY29uc3QgZGVsdGFDbGFzcyA9IERlbHRhQ2xhc3NGb3JTb3VyY2Uoc291cmNlKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgICAgY29uc3QgZGVsdGEgPSBuZXcgZGVsdGFDbGFzcyh0aGlzLmJhc2VDb2xsZWN0aW9uLCBjb2xsZWN0aW9uLCB0aGlzLnJlbGF0ZWRDb2xsZWN0aW9uU2V0KTtcbiAgICAgICAgY29uc3QgcmVzdWx0Q29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZERpcnR5UGF5bG9hZHMgPSByZXN1bHRDb2xsZWN0aW9uLmFsbCgpLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RpbGxEaXJ0eSA9IHRoaXMuZmluYWxEaXJ0eVN0YXRlRm9yUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgICAgIHJldHVybiBDb3B5UGF5bG9hZChwYXlsb2FkLCB7XG4gICAgICAgICAgICAgICAgZGlydHk6IHN0aWxsRGlydHksXG4gICAgICAgICAgICAgICAgZGlydGllZERhdGU6IHN0aWxsRGlydHkgPyBuZXcgRGF0ZSgpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbi5XaXRoUGF5bG9hZHModXBkYXRlZERpcnR5UGF5bG9hZHMsIHNvdXJjZSk7XG4gICAgfVxuICAgIGZpbmFsRGlydHlTdGF0ZUZvclBheWxvYWQocGF5bG9hZCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5iYXNlQ29sbGVjdGlvbi5maW5kKHBheWxvYWQudXVpZCk7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBgY3VycmVudGAgY2FuIGJlIG51bGwgaW4gdGhlIGNhc2Ugb2YgbmV3XG4gICAgICAgICAqIGl0ZW1zIHRoYXQgaGF2ZW4ndCB5ZXQgYmVlbiBtYXBwZWRcbiAgICAgICAgICovXG4gICAgICAgIGxldCBzdGlsbERpcnR5O1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgaWYgKHBheWxvYWQuZGlydGllZERhdGUgJiYgcGF5bG9hZC5kaXJ0aWVkRGF0ZSA+IGN1cnJlbnQuZGlydGllZERhdGUpIHtcbiAgICAgICAgICAgICAgICAvKiogVGhlIHBheWxvYWQgd2FzIGRpcnRpZWQgYXMgcGFydCBvZiBoYW5kbGluZyBkZWx0YXMsIGFuZCBub3QgYmVjYXVzZSBpdCB3YXNcbiAgICAgICAgICAgICAgICAgKiBkaXJ0aWVkIGJ5IGEgY2xpZW50LiBXZSBrZWVwIHRoZSBwYXlsb2FkIGRpcnR5IHN0YXRlIGhlcmUuICovXG4gICAgICAgICAgICAgICAgc3RpbGxEaXJ0eSA9IHBheWxvYWQuZGlydHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKiogTWFya2luZyBpdGVtcyBkaXJ0eSBhZnRlciBsYXN0U3luY0JlZ2FuIHdpbGwgY2F1c2UgdGhlbSB0byBzeW5jIGFnYWluLiAqL1xuICAgICAgICAgICAgICAgIHN0aWxsRGlydHkgPSBjdXJyZW50LmRpcnRpZWREYXRlID4gY3VycmVudC5sYXN0U3luY0JlZ2FuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLyoqIEZvcndhcmQgd2hhdGV2ZXIgdmFsdWUgYW55IGRlbHRhIHJlc29sdmVyIG1heSBoYXZlIHNldCAqL1xuICAgICAgICAgICAgc3RpbGxEaXJ0eSA9IHBheWxvYWQuZGlydHk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0aWxsRGlydHk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFUQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFVQTtBQVZBO0FBQUE7QUFDQTtBQURBO0FBV0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBZkE7QUFBQTtBQUNBO0FBREE7QUFlQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFuQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBb0JBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXhCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQTBCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUE5QkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFrQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyQ0E7QUFBQTtBQUNBO0FBREE7QUFzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBN0NBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBaURBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUF2RUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/sync/account/response_resolver.ts\n')},"./lib/services/sync/events.ts": /*!*************************************!*\ !*** ./lib/services/sync/events.ts ***! \*************************************/ /*! exports provided: SyncEvent */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncEvent", function() { return SyncEvent; });\nvar SyncEvent;\n\n(function (SyncEvent) {\n /** A full sync can consist of many round-trips to the server */\n SyncEvent["FullSyncCompleted"] = "sync =full-completed";\n /** A single sync is just one round-trip to the server completion */\n\n SyncEvent["SingleSyncCompleted"] = "sync =single-completed";\n SyncEvent["SyncWillBegin"] = "sync =will-begin";\n SyncEvent["DownloadFirstSyncCompleted"] = "sync =download-first-completed";\n SyncEvent["SyncTakingTooLong"] = "sync =taking-too-long";\n SyncEvent["SyncError"] = "sync =error";\n SyncEvent["InvalidSession"] = "sync =invalid-session";\n SyncEvent["MajorDataChange"] = "major-data-change";\n SyncEvent["LocalDataIncrementalLoad"] = "local-data-incremental-load";\n SyncEvent["LocalDataLoaded"] = "local-data-loaded";\n SyncEvent["EnterOutOfSync"] = "enter-out-of-sync";\n SyncEvent["ExitOutOfSync"] = "exit-out-of-sync";\n SyncEvent["StatusChanged"] = "status-changed";\n SyncEvent["DatabaseWriteError"] = "database-write-error";\n SyncEvent["DatabaseReadError"] = "database-read-error";\n})(SyncEvent || (SyncEvent = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9ldmVudHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc3luYy9ldmVudHMudHM/ZDgxZCJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIFN5bmNFdmVudDtcbihmdW5jdGlvbiAoU3luY0V2ZW50KSB7XG4gICAgLyoqIEEgZnVsbCBzeW5jIGNhbiBjb25zaXN0IG9mIG1hbnkgcm91bmQtdHJpcHMgdG8gdGhlIHNlcnZlciAqL1xuICAgIFN5bmNFdmVudFtcIkZ1bGxTeW5jQ29tcGxldGVkXCJdID0gXCJzeW5jID1mdWxsLWNvbXBsZXRlZFwiO1xuICAgIC8qKiBBIHNpbmdsZSBzeW5jIGlzIGp1c3Qgb25lIHJvdW5kLXRyaXAgdG8gdGhlIHNlcnZlciBjb21wbGV0aW9uICovXG4gICAgU3luY0V2ZW50W1wiU2luZ2xlU3luY0NvbXBsZXRlZFwiXSA9IFwic3luYyA9c2luZ2xlLWNvbXBsZXRlZFwiO1xuICAgIFN5bmNFdmVudFtcIlN5bmNXaWxsQmVnaW5cIl0gPSBcInN5bmMgPXdpbGwtYmVnaW5cIjtcbiAgICBTeW5jRXZlbnRbXCJEb3dubG9hZEZpcnN0U3luY0NvbXBsZXRlZFwiXSA9IFwic3luYyA9ZG93bmxvYWQtZmlyc3QtY29tcGxldGVkXCI7XG4gICAgU3luY0V2ZW50W1wiU3luY1Rha2luZ1Rvb0xvbmdcIl0gPSBcInN5bmMgPXRha2luZy10b28tbG9uZ1wiO1xuICAgIFN5bmNFdmVudFtcIlN5bmNFcnJvclwiXSA9IFwic3luYyA9ZXJyb3JcIjtcbiAgICBTeW5jRXZlbnRbXCJJbnZhbGlkU2Vzc2lvblwiXSA9IFwic3luYyA9aW52YWxpZC1zZXNzaW9uXCI7XG4gICAgU3luY0V2ZW50W1wiTWFqb3JEYXRhQ2hhbmdlXCJdID0gXCJtYWpvci1kYXRhLWNoYW5nZVwiO1xuICAgIFN5bmNFdmVudFtcIkxvY2FsRGF0YUluY3JlbWVudGFsTG9hZFwiXSA9IFwibG9jYWwtZGF0YS1pbmNyZW1lbnRhbC1sb2FkXCI7XG4gICAgU3luY0V2ZW50W1wiTG9jYWxEYXRhTG9hZGVkXCJdID0gXCJsb2NhbC1kYXRhLWxvYWRlZFwiO1xuICAgIFN5bmNFdmVudFtcIkVudGVyT3V0T2ZTeW5jXCJdID0gXCJlbnRlci1vdXQtb2Ytc3luY1wiO1xuICAgIFN5bmNFdmVudFtcIkV4aXRPdXRPZlN5bmNcIl0gPSBcImV4aXQtb3V0LW9mLXN5bmNcIjtcbiAgICBTeW5jRXZlbnRbXCJTdGF0dXNDaGFuZ2VkXCJdID0gXCJzdGF0dXMtY2hhbmdlZFwiO1xuICAgIFN5bmNFdmVudFtcIkRhdGFiYXNlV3JpdGVFcnJvclwiXSA9IFwiZGF0YWJhc2Utd3JpdGUtZXJyb3JcIjtcbiAgICBTeW5jRXZlbnRbXCJEYXRhYmFzZVJlYWRFcnJvclwiXSA9IFwiZGF0YWJhc2UtcmVhZC1lcnJvclwiO1xufSkoU3luY0V2ZW50IHx8IChTeW5jRXZlbnQgPSB7fSkpO1xuO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/events.ts\n')},"./lib/services/sync/offline/operation.ts": /*!************************************************!*\ !*** ./lib/services/sync/offline/operation.ts ***! \************************************************/ /*! exports provided: OfflineSyncOperation */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OfflineSyncOperation", function() { return OfflineSyncOperation; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Services_sync_signals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Services/sync/signals */ "./lib/services/sync/signals.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Services_sync_response__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Services/sync/response */ "./lib/services/sync/response.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\nvar OfflineSyncOperation = /*#__PURE__*/function () {\n /**\n * @param payloads An array of payloads to sync offline\n * @param receiver A function that receives callback multiple times during the operation\n */\n function OfflineSyncOperation(payloads, receiver) {\n _classCallCheck(this, OfflineSyncOperation);\n\n this.payloads = payloads;\n this.receiver = receiver;\n }\n\n _createClass(OfflineSyncOperation, [{\n key: "run",\n value: function () {\n var _run = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n var responsePayloads, savedItems, response;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n responsePayloads = this.payloads.map(function (payload) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_1__["CreateSourcedPayloadFromObject"])(payload, _Payloads_sources__WEBPACK_IMPORTED_MODULE_3__["PayloadSource"].LocalSaved, {\n dirty: false,\n lastSyncEnd: new Date()\n });\n });\n /* Since we are simulating a server response, they should be pure JS objects */\n\n savedItems = Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_5__["Copy"])(responsePayloads);\n response = new _Services_sync_response__WEBPACK_IMPORTED_MODULE_4__["SyncResponse"]({\n saved_items: savedItems\n });\n _context.next = 5;\n return this.receiver(_Services_sync_signals__WEBPACK_IMPORTED_MODULE_2__["SyncSignal"].Response, response);\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function run() {\n return _run.apply(this, arguments);\n }\n\n return run;\n }()\n }]);\n\n return OfflineSyncOperation;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9vZmZsaW5lL29wZXJhdGlvbi50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL29mZmxpbmUvb3BlcmF0aW9uLnRzPzQxNzMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBTeW5jU2lnbmFsIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc2lnbmFscyc7XG5pbXBvcnQgeyBQYXlsb2FkU291cmNlIH0gZnJvbSAnQFBheWxvYWRzL3NvdXJjZXMnO1xuaW1wb3J0IHsgU3luY1Jlc3BvbnNlIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvcmVzcG9uc2UnO1xuaW1wb3J0IHsgQ29weSB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuZXhwb3J0IGNsYXNzIE9mZmxpbmVTeW5jT3BlcmF0aW9uIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcGF5bG9hZHMgIEFuIGFycmF5IG9mIHBheWxvYWRzIHRvIHN5bmMgb2ZmbGluZVxuICAgICAqIEBwYXJhbSByZWNlaXZlciAgQSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGNhbGxiYWNrIG11bHRpcGxlIHRpbWVzIGR1cmluZyB0aGUgb3BlcmF0aW9uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGF5bG9hZHMsIHJlY2VpdmVyKSB7XG4gICAgICAgIHRoaXMucGF5bG9hZHMgPSBwYXlsb2FkcztcbiAgICAgICAgdGhpcy5yZWNlaXZlciA9IHJlY2VpdmVyO1xuICAgIH1cbiAgICBhc3luYyBydW4oKSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlUGF5bG9hZHMgPSB0aGlzLnBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChwYXlsb2FkLCBQYXlsb2FkU291cmNlLkxvY2FsU2F2ZWQsIHtcbiAgICAgICAgICAgICAgICBkaXJ0eTogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGFzdFN5bmNFbmQ6IG5ldyBEYXRlKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLyogU2luY2Ugd2UgYXJlIHNpbXVsYXRpbmcgYSBzZXJ2ZXIgcmVzcG9uc2UsIHRoZXkgc2hvdWxkIGJlIHB1cmUgSlMgb2JqZWN0cyAqL1xuICAgICAgICBjb25zdCBzYXZlZEl0ZW1zID0gQ29weShyZXNwb25zZVBheWxvYWRzKTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgU3luY1Jlc3BvbnNlKHsgc2F2ZWRfaXRlbXM6IHNhdmVkSXRlbXMgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMucmVjZWl2ZXIoU3luY1NpZ25hbC5SZXNwb25zZSwgcmVzcG9uc2UpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVRBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQWxCQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/sync/offline/operation.ts\n')},"./lib/services/sync/response.ts": /*!***************************************!*\ !*** ./lib/services/sync/response.ts ***! \***************************************/ /*! exports provided: SyncResponse */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncResponse", function() { return SyncResponse; });\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Services_api_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/api/keys */ "./lib/services/api/keys.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\nvar ConflictType;\n\n(function (ConflictType) {\n ConflictType["ConflictingData"] = "sync_conflict";\n ConflictType["UuidConflict"] = "uuid_conflict";\n})(ConflictType || (ConflictType = {}));\n\nvar SyncResponse = /*#__PURE__*/function () {\n function SyncResponse(rawResponse) {\n _classCallCheck(this, SyncResponse);\n\n this.rawResponse = rawResponse;\n this.savedPayloads = this.filterRawItemArray(rawResponse.saved_items).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteSaved);\n });\n this.retrievedPayloads = this.filterRawItemArray(rawResponse.retrieved_items).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].RemoteRetrieved);\n });\n this.dataConflictPayloads = this.filterRawItemArray(this.rawDataConflictItems).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictData);\n });\n this.uuidConflictPayloads = this.filterRawItemArray(this.rawUuidConflictItems).map(function (rawItem) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_3__["CreateSourcedPayloadFromObject"])(rawItem, _Payloads_sources__WEBPACK_IMPORTED_MODULE_2__["PayloadSource"].ConflictUuid);\n });\n /**\n * Items may be deleted from a combination of sources, such as from RemoteSaved,\n * or if a conflict handler decides to delete a payload.\n */\n\n this.deletedPayloads = this.allProcessedPayloads.filter(function (payload) {\n return payload.discardable;\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["deepFreeze"])(this);\n }\n /**\n * Filter out and exclude any items that do not have a uuid. These are useless to us.\n */\n\n\n _createClass(SyncResponse, [{\n key: "filterRawItemArray",\n value: function filterRawItemArray() {\n var rawItems = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return rawItems.filter(function (rawItem) {\n if (!rawItem.uuid) {\n return false;\n } else {\n return true;\n }\n });\n }\n }, {\n key: "error",\n get: function get() {\n return this.rawResponse.error;\n }\n /**\n * Returns the HTTP status code for invalid requests\n */\n\n }, {\n key: "status",\n get: function get() {\n return this.rawResponse.status;\n }\n }, {\n key: "lastSyncToken",\n get: function get() {\n return this.rawResponse[_Services_api_keys__WEBPACK_IMPORTED_MODULE_1__["ApiEndpointParam"].LastSyncToken];\n }\n }, {\n key: "paginationToken",\n get: function get() {\n return this.rawResponse[_Services_api_keys__WEBPACK_IMPORTED_MODULE_1__["ApiEndpointParam"].PaginationToken];\n }\n }, {\n key: "integrityHash",\n get: function get() {\n return this.rawResponse[_Services_api_keys__WEBPACK_IMPORTED_MODULE_1__["ApiEndpointParam"].IntegrityResult];\n }\n }, {\n key: "checkIntegrity",\n get: function get() {\n return this.integrityHash && !this.paginationToken;\n }\n }, {\n key: "numberOfItemsInvolved",\n get: function get() {\n return this.allProcessedPayloads.length;\n }\n }, {\n key: "allProcessedPayloads",\n get: function get() {\n var allPayloads = this.savedPayloads.concat(this.retrievedPayloads).concat(this.dataConflictPayloads).concat(this.uuidConflictPayloads);\n return allPayloads;\n }\n }, {\n key: "rawUuidConflictItems",\n get: function get() {\n return this.rawConflictObjects.filter(function (conflict) {\n return conflict.type === ConflictType.UuidConflict;\n }).map(function (conflict) {\n return conflict.unsaved_item || conflict.item;\n });\n }\n }, {\n key: "rawDataConflictItems",\n get: function get() {\n return this.rawConflictObjects.filter(function (conflict) {\n return conflict.type === ConflictType.ConflictingData;\n }).map(function (conflict) {\n return conflict.server_item || conflict.item;\n });\n }\n }, {\n key: "rawConflictObjects",\n get: function get() {\n var conflicts = this.rawResponse.conflicts || [];\n var legacyConflicts = this.rawResponse.unsaved || [];\n return conflicts.concat(legacyConflicts);\n }\n }, {\n key: "hasError",\n get: function get() {\n return !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_0__["isNullOrUndefined"])(this.rawResponse.error);\n }\n }]);\n\n return SyncResponse;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9yZXNwb25zZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL3Jlc3BvbnNlLnRzPzcyYWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQsIGRlZXBGcmVlemUgfSBmcm9tICdATGliL3V0aWxzJztcbmltcG9ydCB7IEFwaUVuZHBvaW50UGFyYW0gfSBmcm9tICdAU2VydmljZXMvYXBpL2tleXMnO1xuaW1wb3J0IHsgUGF5bG9hZFNvdXJjZSB9IGZyb20gJ0BQYXlsb2Fkcy9zb3VyY2VzJztcbmltcG9ydCB7IENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdCB9IGZyb20gJ0BQYXlsb2Fkcy9nZW5lcmF0b3InO1xudmFyIENvbmZsaWN0VHlwZTtcbihmdW5jdGlvbiAoQ29uZmxpY3RUeXBlKSB7XG4gICAgQ29uZmxpY3RUeXBlW1wiQ29uZmxpY3RpbmdEYXRhXCJdID0gXCJzeW5jX2NvbmZsaWN0XCI7XG4gICAgQ29uZmxpY3RUeXBlW1wiVXVpZENvbmZsaWN0XCJdID0gXCJ1dWlkX2NvbmZsaWN0XCI7XG59KShDb25mbGljdFR5cGUgfHwgKENvbmZsaWN0VHlwZSA9IHt9KSk7XG5leHBvcnQgY2xhc3MgU3luY1Jlc3BvbnNlIHtcbiAgICBjb25zdHJ1Y3RvcihyYXdSZXNwb25zZSkge1xuICAgICAgICB0aGlzLnJhd1Jlc3BvbnNlID0gcmF3UmVzcG9uc2U7XG4gICAgICAgIHRoaXMuc2F2ZWRQYXlsb2FkcyA9IHRoaXMuXG4gICAgICAgICAgICBmaWx0ZXJSYXdJdGVtQXJyYXkocmF3UmVzcG9uc2Uuc2F2ZWRfaXRlbXMpLlxuICAgICAgICAgICAgbWFwKChyYXdJdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlU291cmNlZFBheWxvYWRGcm9tT2JqZWN0KHJhd0l0ZW0sIFBheWxvYWRTb3VyY2UuUmVtb3RlU2F2ZWQpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yZXRyaWV2ZWRQYXlsb2FkcyA9IHRoaXMuXG4gICAgICAgICAgICBmaWx0ZXJSYXdJdGVtQXJyYXkocmF3UmVzcG9uc2UucmV0cmlldmVkX2l0ZW1zKS5cbiAgICAgICAgICAgIG1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLlJlbW90ZVJldHJpZXZlZCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFDb25mbGljdFBheWxvYWRzID0gdGhpcy5cbiAgICAgICAgICAgIGZpbHRlclJhd0l0ZW1BcnJheSh0aGlzLnJhd0RhdGFDb25mbGljdEl0ZW1zKS5cbiAgICAgICAgICAgIG1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLkNvbmZsaWN0RGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnV1aWRDb25mbGljdFBheWxvYWRzID0gdGhpcy5cbiAgICAgICAgICAgIGZpbHRlclJhd0l0ZW1BcnJheSh0aGlzLnJhd1V1aWRDb25mbGljdEl0ZW1zKS5cbiAgICAgICAgICAgIG1hcCgocmF3SXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZVNvdXJjZWRQYXlsb2FkRnJvbU9iamVjdChyYXdJdGVtLCBQYXlsb2FkU291cmNlLkNvbmZsaWN0VXVpZCk7XG4gICAgICAgIH0pO1xuICAgICAgICAvKipcbiAgICAgICAgICogSXRlbXMgbWF5IGJlIGRlbGV0ZWQgZnJvbSBhIGNvbWJpbmF0aW9uIG9mIHNvdXJjZXMsIHN1Y2ggYXMgZnJvbSBSZW1vdGVTYXZlZCxcbiAgICAgICAgICogb3IgaWYgYSBjb25mbGljdCBoYW5kbGVyIGRlY2lkZXMgdG8gZGVsZXRlIGEgcGF5bG9hZC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuZGVsZXRlZFBheWxvYWRzID0gdGhpcy5hbGxQcm9jZXNzZWRQYXlsb2Fkcy5maWx0ZXIoKHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkLmRpc2NhcmRhYmxlO1xuICAgICAgICB9KTtcbiAgICAgICAgZGVlcEZyZWV6ZSh0aGlzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRmlsdGVyIG91dCBhbmQgZXhjbHVkZSBhbnkgaXRlbXMgdGhhdCBkbyBub3QgaGF2ZSBhIHV1aWQuIFRoZXNlIGFyZSB1c2VsZXNzIHRvIHVzLlxuICAgICAqL1xuICAgIGZpbHRlclJhd0l0ZW1BcnJheShyYXdJdGVtcyA9IFtdKSB7XG4gICAgICAgIHJldHVybiByYXdJdGVtcy5maWx0ZXIoKHJhd0l0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmICghcmF3SXRlbS51dWlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgZXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJhd1Jlc3BvbnNlLmVycm9yO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciBpbnZhbGlkIHJlcXVlc3RzXG4gICAgICovXG4gICAgZ2V0IHN0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2Uuc3RhdHVzO1xuICAgIH1cbiAgICBnZXQgbGFzdFN5bmNUb2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2VbQXBpRW5kcG9pbnRQYXJhbS5MYXN0U3luY1Rva2VuXTtcbiAgICB9XG4gICAgZ2V0IHBhZ2luYXRpb25Ub2tlbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2VbQXBpRW5kcG9pbnRQYXJhbS5QYWdpbmF0aW9uVG9rZW5dO1xuICAgIH1cbiAgICBnZXQgaW50ZWdyaXR5SGFzaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3UmVzcG9uc2VbQXBpRW5kcG9pbnRQYXJhbS5JbnRlZ3JpdHlSZXN1bHRdO1xuICAgIH1cbiAgICBnZXQgY2hlY2tJbnRlZ3JpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVncml0eUhhc2ggJiYgIXRoaXMucGFnaW5hdGlvblRva2VuO1xuICAgIH1cbiAgICBnZXQgbnVtYmVyT2ZJdGVtc0ludm9sdmVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxQcm9jZXNzZWRQYXlsb2Fkcy5sZW5ndGg7XG4gICAgfVxuICAgIGdldCBhbGxQcm9jZXNzZWRQYXlsb2FkcygpIHtcbiAgICAgICAgY29uc3QgYWxsUGF5bG9hZHMgPSB0aGlzLnNhdmVkUGF5bG9hZHNcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy5yZXRyaWV2ZWRQYXlsb2FkcylcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy5kYXRhQ29uZmxpY3RQYXlsb2FkcylcbiAgICAgICAgICAgIC5jb25jYXQodGhpcy51dWlkQ29uZmxpY3RQYXlsb2Fkcyk7XG4gICAgICAgIHJldHVybiBhbGxQYXlsb2FkcztcbiAgICB9XG4gICAgZ2V0IHJhd1V1aWRDb25mbGljdEl0ZW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yYXdDb25mbGljdE9iamVjdHMuZmlsdGVyKChjb25mbGljdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNvbmZsaWN0LnR5cGUgPT09IENvbmZsaWN0VHlwZS5VdWlkQ29uZmxpY3Q7XG4gICAgICAgIH0pLm1hcCgoY29uZmxpY3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb25mbGljdC51bnNhdmVkX2l0ZW0gfHwgY29uZmxpY3QuaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCByYXdEYXRhQ29uZmxpY3RJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmF3Q29uZmxpY3RPYmplY3RzLmZpbHRlcigoY29uZmxpY3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjb25mbGljdC50eXBlID09PSBDb25mbGljdFR5cGUuQ29uZmxpY3RpbmdEYXRhO1xuICAgICAgICB9KS5tYXAoKGNvbmZsaWN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29uZmxpY3Quc2VydmVyX2l0ZW0gfHwgY29uZmxpY3QuaXRlbTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCByYXdDb25mbGljdE9iamVjdHMoKSB7XG4gICAgICAgIGNvbnN0IGNvbmZsaWN0cyA9IHRoaXMucmF3UmVzcG9uc2UuY29uZmxpY3RzIHx8IFtdO1xuICAgICAgICBjb25zdCBsZWdhY3lDb25mbGljdHMgPSB0aGlzLnJhd1Jlc3BvbnNlLnVuc2F2ZWQgfHwgW107XG4gICAgICAgIHJldHVybiBjb25mbGljdHMuY29uY2F0KGxlZ2FjeUNvbmZsaWN0cyk7XG4gICAgfVxuICAgIGdldCBoYXNFcnJvcigpIHtcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh0aGlzLnJhd1Jlc3BvbnNlLmVycm9yKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQWhDQTtBQUFBO0FBQUE7QUFtQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBNUNBO0FBQUE7QUFBQTtBQThDQTtBQUNBO0FBQ0E7Ozs7QUFoREE7QUFBQTtBQUFBO0FBb0RBO0FBQ0E7QUFyREE7QUFBQTtBQUFBO0FBdURBO0FBQ0E7QUF4REE7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUEzREE7QUFBQTtBQUFBO0FBNkRBO0FBQ0E7QUE5REE7QUFBQTtBQUFBO0FBZ0VBO0FBQ0E7QUFqRUE7QUFBQTtBQUFBO0FBbUVBO0FBQ0E7QUFwRUE7QUFBQTtBQUFBO0FBc0VBO0FBSUE7QUFDQTtBQTNFQTtBQUFBO0FBQUE7QUE2RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBbEZBO0FBQUE7QUFBQTtBQW9GQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF6RkE7QUFBQTtBQUFBO0FBMkZBO0FBQ0E7QUFDQTtBQUNBO0FBOUZBO0FBQUE7QUFBQTtBQWdHQTtBQUNBO0FBakdBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/response.ts\n')},"./lib/services/sync/signals.ts": /*!**************************************!*\ !*** ./lib/services/sync/signals.ts ***! \**************************************/ /*! exports provided: SyncSignal */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncSignal", function() { return SyncSignal; });\nvar SyncSignal;\n\n(function (SyncSignal) {\n SyncSignal[SyncSignal["Response"] = 1] = "Response";\n SyncSignal[SyncSignal["StatusChanged"] = 2] = "StatusChanged";\n})(SyncSignal || (SyncSignal = {}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zaWduYWxzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N5bmMvc2lnbmFscy50cz9iY2E3Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgU3luY1NpZ25hbDtcbihmdW5jdGlvbiAoU3luY1NpZ25hbCkge1xuICAgIFN5bmNTaWduYWxbU3luY1NpZ25hbFtcIlJlc3BvbnNlXCJdID0gMV0gPSBcIlJlc3BvbnNlXCI7XG4gICAgU3luY1NpZ25hbFtTeW5jU2lnbmFsW1wiU3RhdHVzQ2hhbmdlZFwiXSA9IDJdID0gXCJTdGF0dXNDaGFuZ2VkXCI7XG59KShTeW5jU2lnbmFsIHx8IChTeW5jU2lnbmFsID0ge30pKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/signals.ts\n')},"./lib/services/sync/sync_op_status.ts": /*!*********************************************!*\ !*** ./lib/services/sync/sync_op_status.ts ***! \*********************************************/ /*! exports provided: SyncOpStatus */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncOpStatus", function() { return SyncOpStatus; });\n/* harmony import */ var _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @Lib/services/sync/events */ "./lib/services/sync/events.ts");\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar HEALTHY_SYNC_DURATION_THRESHOLD_S = 5;\nvar TIMING_MONITOR_POLL_FREQUENCY_MS = 500;\nvar SyncOpStatus = /*#__PURE__*/function () {\n function SyncOpStatus(interval, receiver) {\n _classCallCheck(this, SyncOpStatus);\n\n this.inProgress = false;\n this.completedUpload = 0;\n this.totalUpload = 0;\n this.downloaded = 0;\n this.databaseLoadCurrent = 0;\n this.databaseLoadTotal = 0;\n this.databaseLoadDone = false;\n this.syncing = false;\n this.interval = interval;\n this.receiver = receiver;\n }\n\n _createClass(SyncOpStatus, [{\n key: "deinit",\n value: function deinit() {\n this.stopTimingMonitor();\n }\n }, {\n key: "setSyncInProgress",\n value: function setSyncInProgress(inProgress) {\n this.inProgress = true;\n }\n }, {\n key: "setUploadStatus",\n value: function setUploadStatus(completed, total) {\n this.completedUpload = completed;\n this.totalUpload = total;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged);\n }\n }, {\n key: "setDownloadStatus",\n value: function setDownloadStatus(downloaded) {\n this.downloaded += downloaded;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged);\n }\n }, {\n key: "setDatabaseLoadStatus",\n value: function setDatabaseLoadStatus(current, total, done) {\n this.databaseLoadCurrent = current;\n this.databaseLoadTotal = total;\n this.databaseLoadDone = done;\n\n if (done) {\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataLoaded);\n } else {\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].LocalDataIncrementalLoad);\n }\n }\n }, {\n key: "getStats",\n value: function getStats() {\n return {\n uploadCompletionCount: this.completedUpload,\n uploadTotalCount: this.totalUpload,\n downloadCount: this.downloaded,\n localDataDone: this.databaseLoadDone,\n localDataCurrent: this.databaseLoadCurrent,\n localDataTotal: this.databaseLoadTotal\n };\n }\n }, {\n key: "setDidBegin",\n value: function setDidBegin() {\n this.syncing = true;\n this.syncStart = new Date();\n }\n }, {\n key: "setDidEnd",\n value: function setDidEnd() {\n this.syncing = false;\n this.syncEnd = new Date();\n }\n }, {\n key: "startTimingMonitor",\n\n /**\n * Notifies receiver if current sync request is taking too long to complete.\n */\n value: function startTimingMonitor() {\n var _this = this;\n\n if (this.timingMonitor) {\n this.stopTimingMonitor();\n }\n\n this.timingMonitor = this.interval(function () {\n if (_this.secondsSinceSyncStart > HEALTHY_SYNC_DURATION_THRESHOLD_S) {\n _this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].SyncTakingTooLong);\n\n _this.stopTimingMonitor();\n }\n }, TIMING_MONITOR_POLL_FREQUENCY_MS);\n }\n }, {\n key: "stopTimingMonitor",\n value: function stopTimingMonitor() {\n if (Object.prototype.hasOwnProperty.call(this.interval, \'cancel\')) {\n this.interval.cancel(this.timingMonitor);\n } else {\n clearInterval(this.timingMonitor);\n }\n\n this.timingMonitor = null;\n }\n }, {\n key: "hasError",\n value: function hasError() {\n return !!this.error;\n }\n }, {\n key: "setError",\n value: function setError(error) {\n this.error = error;\n }\n }, {\n key: "clearError",\n value: function clearError() {\n this.error = null;\n }\n }, {\n key: "reset",\n value: function reset() {\n this.downloaded = 0;\n this.completedUpload = 0;\n this.totalUpload = 0;\n this.inProgress = false;\n this.syncing = false;\n this.error = null;\n this.stopTimingMonitor();\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_0__["SyncEvent"].StatusChanged);\n }\n }, {\n key: "syncInProgress",\n get: function get() {\n return this.syncing === true;\n }\n }, {\n key: "secondsSinceSyncStart",\n get: function get() {\n return (new Date().getTime() - this.syncStart.getTime()) / 1000;\n }\n }]);\n\n return SyncOpStatus;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zeW5jX29wX3N0YXR1cy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL3N5bmNfb3Bfc3RhdHVzLnRzP2E5NDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3luY0V2ZW50IH0gZnJvbSAnQExpYi9zZXJ2aWNlcy9zeW5jL2V2ZW50cyc7XG5jb25zdCBIRUFMVEhZX1NZTkNfRFVSQVRJT05fVEhSRVNIT0xEX1MgPSA1O1xuY29uc3QgVElNSU5HX01PTklUT1JfUE9MTF9GUkVRVUVOQ1lfTVMgPSA1MDA7XG5leHBvcnQgY2xhc3MgU3luY09wU3RhdHVzIHtcbiAgICBjb25zdHJ1Y3RvcihpbnRlcnZhbCwgcmVjZWl2ZXIpIHtcbiAgICAgICAgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY29tcGxldGVkVXBsb2FkID0gMDtcbiAgICAgICAgdGhpcy50b3RhbFVwbG9hZCA9IDA7XG4gICAgICAgIHRoaXMuZG93bmxvYWRlZCA9IDA7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkQ3VycmVudCA9IDA7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkVG90YWwgPSAwO1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZERvbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zeW5jaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbDtcbiAgICAgICAgdGhpcy5yZWNlaXZlciA9IHJlY2VpdmVyO1xuICAgIH1cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuc3RvcFRpbWluZ01vbml0b3IoKTtcbiAgICB9XG4gICAgc2V0U3luY0luUHJvZ3Jlc3MoaW5Qcm9ncmVzcykge1xuICAgICAgICB0aGlzLmluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIH1cbiAgICBzZXRVcGxvYWRTdGF0dXMoY29tcGxldGVkLCB0b3RhbCkge1xuICAgICAgICB0aGlzLmNvbXBsZXRlZFVwbG9hZCA9IGNvbXBsZXRlZDtcbiAgICAgICAgdGhpcy50b3RhbFVwbG9hZCA9IHRvdGFsO1xuICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5TdGF0dXNDaGFuZ2VkKTtcbiAgICB9XG4gICAgc2V0RG93bmxvYWRTdGF0dXMoZG93bmxvYWRlZCkge1xuICAgICAgICB0aGlzLmRvd25sb2FkZWQgKz0gZG93bmxvYWRlZDtcbiAgICAgICAgdGhpcy5yZWNlaXZlcihTeW5jRXZlbnQuU3RhdHVzQ2hhbmdlZCk7XG4gICAgfVxuICAgIHNldERhdGFiYXNlTG9hZFN0YXR1cyhjdXJyZW50LCB0b3RhbCwgZG9uZSkge1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZEN1cnJlbnQgPSBjdXJyZW50O1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZFRvdGFsID0gdG90YWw7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkRG9uZSA9IGRvbmU7XG4gICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5Mb2NhbERhdGFMb2FkZWQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWNlaXZlcihTeW5jRXZlbnQuTG9jYWxEYXRhSW5jcmVtZW50YWxMb2FkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRTdGF0cygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVwbG9hZENvbXBsZXRpb25Db3VudDogdGhpcy5jb21wbGV0ZWRVcGxvYWQsXG4gICAgICAgICAgICB1cGxvYWRUb3RhbENvdW50OiB0aGlzLnRvdGFsVXBsb2FkLFxuICAgICAgICAgICAgZG93bmxvYWRDb3VudDogdGhpcy5kb3dubG9hZGVkLFxuICAgICAgICAgICAgbG9jYWxEYXRhRG9uZTogdGhpcy5kYXRhYmFzZUxvYWREb25lLFxuICAgICAgICAgICAgbG9jYWxEYXRhQ3VycmVudDogdGhpcy5kYXRhYmFzZUxvYWRDdXJyZW50LFxuICAgICAgICAgICAgbG9jYWxEYXRhVG90YWw6IHRoaXMuZGF0YWJhc2VMb2FkVG90YWxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgc2V0RGlkQmVnaW4oKSB7XG4gICAgICAgIHRoaXMuc3luY2luZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc3luY1N0YXJ0ID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgc2V0RGlkRW5kKCkge1xuICAgICAgICB0aGlzLnN5bmNpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zeW5jRW5kID0gbmV3IERhdGUoKTtcbiAgICB9XG4gICAgZ2V0IHN5bmNJblByb2dyZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jaW5nID09PSB0cnVlO1xuICAgIH1cbiAgICBnZXQgc2Vjb25kc1NpbmNlU3luY1N0YXJ0KCkge1xuICAgICAgICByZXR1cm4gKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGhpcy5zeW5jU3RhcnQuZ2V0VGltZSgpKSAvIDEwMDA7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIE5vdGlmaWVzIHJlY2VpdmVyIGlmIGN1cnJlbnQgc3luYyByZXF1ZXN0IGlzIHRha2luZyB0b28gbG9uZyB0byBjb21wbGV0ZS5cbiAgICAgKi9cbiAgICBzdGFydFRpbWluZ01vbml0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLnRpbWluZ01vbml0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcFRpbWluZ01vbml0b3IoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWluZ01vbml0b3IgPSB0aGlzLmludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlY29uZHNTaW5jZVN5bmNTdGFydCA+IEhFQUxUSFlfU1lOQ19EVVJBVElPTl9USFJFU0hPTERfUykge1xuICAgICAgICAgICAgICAgIHRoaXMucmVjZWl2ZXIoU3luY0V2ZW50LlN5bmNUYWtpbmdUb29Mb25nKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BUaW1pbmdNb25pdG9yKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFRJTUlOR19NT05JVE9SX1BPTExfRlJFUVVFTkNZX01TKTtcbiAgICB9XG4gICAgc3RvcFRpbWluZ01vbml0b3IoKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5pbnRlcnZhbCwgJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICB0aGlzLmludGVydmFsLmNhbmNlbCh0aGlzLnRpbWluZ01vbml0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWluZ01vbml0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltaW5nTW9uaXRvciA9IG51bGw7XG4gICAgfVxuICAgIGhhc0Vycm9yKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLmVycm9yO1xuICAgIH1cbiAgICBzZXRFcnJvcihlcnJvcikge1xuICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgfVxuICAgIGNsZWFyRXJyb3IoKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSBudWxsO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5kb3dubG9hZGVkID0gMDtcbiAgICAgICAgdGhpcy5jb21wbGV0ZWRVcGxvYWQgPSAwO1xuICAgICAgICB0aGlzLnRvdGFsVXBsb2FkID0gMDtcbiAgICAgICAgdGhpcy5pblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3luY2luZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmVycm9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdG9wVGltaW5nTW9uaXRvcigpO1xuICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5TdGF0dXNDaGFuZ2VkKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBYkE7QUFBQTtBQUFBO0FBY0E7QUFDQTtBQWZBO0FBQUE7QUFBQTtBQWlCQTtBQUNBO0FBbEJBO0FBQUE7QUFBQTtBQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQXZCQTtBQUFBO0FBQUE7QUF5QkE7QUFDQTtBQUNBO0FBM0JBO0FBQUE7QUFBQTtBQTZCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQXRDQTtBQUFBO0FBQUE7QUF3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBaERBO0FBQUE7QUFBQTtBQWtEQTtBQUNBO0FBQ0E7QUFwREE7QUFBQTtBQUFBO0FBc0RBO0FBQ0E7QUFDQTtBQXhEQTtBQUFBO0FBQ0E7QUE4REE7OztBQS9EQTtBQWtFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBNUVBO0FBQUE7QUFBQTtBQThFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBckZBO0FBQUE7QUFBQTtBQXVGQTtBQUNBO0FBeEZBO0FBQUE7QUFBQTtBQTBGQTtBQUNBO0FBM0ZBO0FBQUE7QUFBQTtBQTZGQTtBQUNBO0FBOUZBO0FBQUE7QUFBQTtBQWdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF4R0E7QUFBQTtBQUFBO0FBMERBO0FBQ0E7QUEzREE7QUFBQTtBQUFBO0FBNkRBO0FBQ0E7QUE5REE7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/services/sync/sync_op_status.ts\n')},"./lib/services/sync/sync_service.ts": /*!*******************************************!*\ !*** ./lib/services/sync/sync_service.ts ***! \*******************************************/ /*! exports provided: SyncQueueStrategy, SyncModes, SyncSources, SNSyncService */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncQueueStrategy", function() { return SyncQueueStrategy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncModes", function() { return SyncModes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncSources", function() { return SyncSources; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SNSyncService", function() { return SNSyncService; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Services_sync_events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Services/sync/events */ "./lib/services/sync/events.ts");\n/* harmony import */ var _Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @Lib/storage_keys */ "./lib/storage_keys.ts");\n/* harmony import */ var _Models_core_item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @Models/core/item */ "./lib/models/core/item.ts");\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n/* harmony import */ var _Services_pure_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @Services/pure_service */ "./lib/services/pure_service.ts");\n/* harmony import */ var _Services_sync_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @Services/sync/utils */ "./lib/services/sync/utils.ts");\n/* harmony import */ var _Services_sync_sync_op_status__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @Services/sync/sync_op_status */ "./lib/services/sync/sync_op_status.ts");\n/* harmony import */ var _Services_sync_sync_state__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @Services/sync/sync_state */ "./lib/services/sync/sync_state.ts");\n/* harmony import */ var _Services_sync_account_downloader__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @Services/sync/account/downloader */ "./lib/services/sync/account/downloader.ts");\n/* harmony import */ var _Services_sync_account_response_resolver__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @Services/sync/account/response_resolver */ "./lib/services/sync/account/response_resolver.ts");\n/* harmony import */ var _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @Services/sync/account/operation */ "./lib/services/sync/account/operation.ts");\n/* harmony import */ var _Services_sync_offline_operation__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @Services/sync/offline/operation */ "./lib/services/sync/offline/operation.ts");\n/* harmony import */ var _Payloads_deltas__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @Payloads/deltas */ "./lib/protocol/payloads/deltas/index.ts");\n/* harmony import */ var _Payloads_fields__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @Payloads/fields */ "./lib/protocol/payloads/fields.ts");\n/* harmony import */ var _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @Payloads/sources */ "./lib/protocol/payloads/sources.ts");\n/* harmony import */ var _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @Protocol/collection/payload_collection */ "./lib/protocol/collection/payload_collection.ts");\n/* harmony import */ var _Payloads_functions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @Payloads/functions */ "./lib/protocol/payloads/functions.ts");\n/* harmony import */ var _Payloads_generator__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @Payloads/generator */ "./lib/protocol/payloads/generator.ts");\n/* harmony import */ var _Protocol_intents__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @Protocol/intents */ "./lib/protocol/intents.ts");\n/* harmony import */ var _Models_content_types__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @Models/content_types */ "./lib/models/content_types.ts");\n/* harmony import */ var _Models_generator__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @Models/generator */ "./lib/models/generator.ts");\n/* harmony import */ var _Models_functions__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @Models/functions */ "./lib/models/functions.ts");\n/* harmony import */ var _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @Services/sync/signals */ "./lib/services/sync/signals.ts");\n\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called"); } return self; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DEFAULT_DATABASE_LOAD_BATCH_SIZE = 100;\nvar DEFAULT_MAX_DISCORDANCE = 5;\nvar DEFAULT_MAJOR_CHANGE_THRESHOLD = 15;\nvar INVALID_SESSION_RESPONSE_STATUS = 401;\nvar SyncQueueStrategy;\n\n(function (SyncQueueStrategy) {\n /**\n * Promise will be resolved on the next sync request after the current one completes.\n * If there is no scheduled sync request, one will be scheduled.\n */\n SyncQueueStrategy[SyncQueueStrategy["ResolveOnNext"] = 1] = "ResolveOnNext";\n /**\n * A new sync request is guarenteed to be generated for your request, no matter how long it takes.\n * Promise will be resolved whenever this sync request is processed in the serial queue.\n */\n\n SyncQueueStrategy[SyncQueueStrategy["ForceSpawnNew"] = 2] = "ForceSpawnNew";\n})(SyncQueueStrategy || (SyncQueueStrategy = {}));\n\nvar SyncModes;\n\n(function (SyncModes) {\n /**\n * Performs a standard sync, uploading any dirty items and retrieving items.\n */\n SyncModes[SyncModes["Default"] = 1] = "Default";\n /**\n * The first sync for an account, where we first want to download all remote items first\n * before uploading any dirty items. This allows a consumer, for example, to download\n * all data to see if user has an items key, and if not, only then create a new one.\n */\n\n SyncModes[SyncModes["DownloadFirst"] = 2] = "DownloadFirst";\n})(SyncModes || (SyncModes = {}));\n\n;\nvar SyncSources;\n\n(function (SyncSources) {\n SyncSources[SyncSources["External"] = 1] = "External";\n SyncSources[SyncSources["SpawnQueue"] = 2] = "SpawnQueue";\n SyncSources[SyncSources["ResolveQueue"] = 3] = "ResolveQueue";\n SyncSources[SyncSources["MoreDirtyItems"] = 4] = "MoreDirtyItems";\n SyncSources[SyncSources["AfterDownloadFirst"] = 5] = "AfterDownloadFirst";\n SyncSources[SyncSources["IntegrityCheck"] = 6] = "IntegrityCheck";\n SyncSources[SyncSources["ResolveOutOfSync"] = 7] = "ResolveOutOfSync";\n})(SyncSources || (SyncSources = {}));\n\n;\n/**\n * The sync service orchestrates with the model manager, api service, and storage service\n * to ensure consistent state between the three. When a change is made to an item, consumers\n * call the sync service\'s sync function to first persist pending changes to local storage.\n * Then, the items are uploaded to the server. The sync service handles server responses,\n * including mapping any retrieved items to application state via model manager mapping.\n * After each sync request, any changes made or retrieved are also persisted locally.\n * The sync service largely does not perform any task unless it is called upon.\n */\n\nvar SNSyncService = /*#__PURE__*/function (_PureService) {\n _inherits(SNSyncService, _PureService);\n\n function SNSyncService(itemManager, sessionManager, protocolService, storageService, modelManager, apiService, interval) {\n var _this;\n\n _classCallCheck(this, SNSyncService);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SNSyncService).call(this));\n _this.resolveQueue = [];\n _this.spawnQueue = [];\n /* A DownloadFirst sync must always be the first sync completed */\n\n _this.completedOnlineDownloadFirstSync = false;\n _this.majorChangeThreshold = DEFAULT_MAJOR_CHANGE_THRESHOLD;\n _this.maxDiscordance = DEFAULT_MAX_DISCORDANCE;\n _this.locked = false;\n _this.databaseLoaded = false;\n /** Content types appearing first are always mapped first */\n\n _this.localLoadPriorty = [_Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].ItemsKey, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].UserPrefs, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Privileges, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Component, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Theme];\n /**\n * Non-encrypted types are items whose values a server must be able to read.\n * These include server extensions (such as a note history endpoint), and\n * multi-factor authentication items, which include a secret value that the server\n * needs to be able to read in order to enforce.\n */\n\n _this.nonEncryptedTypes = [_Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].Mfa, _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].ServerExtension];\n _this.itemManager = itemManager;\n _this.sessionManager = sessionManager;\n _this.protocolService = protocolService;\n _this.modelManager = modelManager;\n _this.storageService = storageService;\n _this.apiService = apiService;\n _this.interval = interval;\n\n _this.initializeStatus();\n\n _this.initializeState();\n\n return _this;\n }\n /**\n * If the database has been newly created (because its new or was previously destroyed)\n * we want to reset any sync tokens we have.\n */\n\n\n _createClass(SNSyncService, [{\n key: "onNewDatabaseCreated",\n value: function () {\n var _onNewDatabaseCreated = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.getLastSyncToken();\n\n case 2:\n if (!_context.sent) {\n _context.next = 5;\n break;\n }\n\n _context.next = 5;\n return this.clearSyncPositionTokens();\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onNewDatabaseCreated() {\n return _onNewDatabaseCreated.apply(this, arguments);\n }\n\n return onNewDatabaseCreated;\n }()\n }, {\n key: "deinit",\n value: function deinit() {\n this.sessionManager = undefined;\n this.itemManager = undefined;\n this.protocolService = undefined;\n this.modelManager = undefined;\n this.storageService = undefined;\n this.apiService = undefined;\n this.interval = undefined;\n this.state.reset();\n this.opStatus.reset();\n this.state = undefined;\n this.opStatus = undefined;\n this.resolveQueue.length = 0;\n this.spawnQueue.length = 0;\n\n _get(_getPrototypeOf(SNSyncService.prototype), "deinit", this).call(this);\n }\n }, {\n key: "initializeStatus",\n value: function initializeStatus() {\n var _this2 = this;\n\n this.opStatus = new _Services_sync_sync_op_status__WEBPACK_IMPORTED_MODULE_7__["SyncOpStatus"](this.interval, function (event) {\n _this2.notifyEvent(event);\n });\n }\n }, {\n key: "initializeState",\n value: function initializeState() {\n var _this3 = this;\n\n this.state = new _Services_sync_sync_state__WEBPACK_IMPORTED_MODULE_8__["SyncState"](function (event) {\n if (event === _Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].EnterOutOfSync) {\n _this3.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].EnterOutOfSync);\n } else if (event === _Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].ExitOutOfSync) {\n _this3.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].ExitOutOfSync);\n }\n }, this.maxDiscordance);\n }\n }, {\n key: "lockSyncing",\n value: function lockSyncing() {\n this.locked = true;\n }\n }, {\n key: "unlockSyncing",\n value: function unlockSyncing() {\n this.locked = false;\n }\n }, {\n key: "isOutOfSync",\n value: function isOutOfSync() {\n return this.state.isOutOfSync();\n }\n }, {\n key: "getLastSyncDate",\n value: function getLastSyncDate() {\n return this.state.lastSyncDate;\n }\n }, {\n key: "getStatus",\n value: function getStatus() {\n return this.opStatus;\n }\n /**\n * Called by application when sign in or registration occurs.\n */\n\n }, {\n key: "resetSyncState",\n value: function resetSyncState() {\n this.state.reset();\n }\n }, {\n key: "isDatabaseLoaded",\n value: function isDatabaseLoaded() {\n return this.databaseLoaded;\n }\n /**\n * Used in tandem with `loadDatabasePayloads`\n */\n\n }, {\n key: "getDatabasePayloads",\n value: function () {\n var _getDatabasePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n var _this4 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt("return", this.storageService.getAllRawPayloads().catch(function (error) {\n _this4.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].DatabaseReadError, error);\n\n throw error;\n }));\n\n case 1:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getDatabasePayloads() {\n return _getDatabasePayloads.apply(this, arguments);\n }\n\n return getDatabasePayloads;\n }()\n /**\n * @param rawPayloads - use `getDatabasePayloads` to get these payloads.\n * They are fed as a parameter so that callers don\'t have to await the loading, but can\n * await getting the raw payloads from storage\n */\n\n }, {\n key: "loadDatabasePayloads",\n value: function () {\n var _loadDatabasePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(rawPayloads) {\n var unsortedPayloads, payloads, itemsKeysPayloads, decryptedItemsKeys, payloadCount, batchSize, numBatches, batchIndex, currentPosition, batch, decrypted;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!this.databaseLoaded) {\n _context3.next = 2;\n break;\n }\n\n throw \'Attempting to initialize already initialized local database.\';\n\n case 2:\n if (!(rawPayloads.length === 0)) {\n _context3.next = 6;\n break;\n }\n\n this.databaseLoaded = true;\n this.opStatus.setDatabaseLoadStatus(0, 0, true);\n return _context3.abrupt("return");\n\n case 6:\n unsortedPayloads = rawPayloads.map(function (rawPayload) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_18__["CreateMaxPayloadFromAnyObject"])(rawPayload);\n });\n payloads = Object(_Services_sync_utils__WEBPACK_IMPORTED_MODULE_6__["SortPayloadsByRecentAndContentPriority"])(unsortedPayloads, this.localLoadPriorty);\n /** Decrypt and map items keys first */\n\n itemsKeysPayloads = payloads.filter(function (payload) {\n return payload.content_type === _Models_content_types__WEBPACK_IMPORTED_MODULE_20__["ContentType"].ItemsKey;\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["subtractFromArray"])(payloads, itemsKeysPayloads);\n _context3.next = 12;\n return this.protocolService.payloadsByDecryptingPayloads(itemsKeysPayloads);\n\n case 12:\n decryptedItemsKeys = _context3.sent;\n _context3.next = 15;\n return this.modelManager.emitPayloads(decryptedItemsKeys, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalRetrieved);\n\n case 15:\n /** Map in batches to give interface a chance to update */\n payloadCount = payloads.length;\n batchSize = DEFAULT_DATABASE_LOAD_BATCH_SIZE;\n numBatches = Math.ceil(payloadCount / batchSize);\n batchIndex = 0;\n\n case 19:\n if (!(batchIndex < numBatches)) {\n _context3.next = 32;\n break;\n }\n\n currentPosition = batchIndex * batchSize;\n batch = payloads.slice(currentPosition, currentPosition + batchSize);\n _context3.next = 24;\n return this.protocolService.payloadsByDecryptingPayloads(batch);\n\n case 24:\n decrypted = _context3.sent;\n _context3.next = 27;\n return this.modelManager.emitPayloads(decrypted, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalRetrieved);\n\n case 27:\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].LocalDataIncrementalLoad);\n this.opStatus.setDatabaseLoadStatus(currentPosition, payloadCount, false);\n\n case 29:\n batchIndex++;\n _context3.next = 19;\n break;\n\n case 32:\n this.databaseLoaded = true;\n this.opStatus.setDatabaseLoadStatus(0, 0, true);\n\n case 34:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function loadDatabasePayloads(_x) {\n return _loadDatabasePayloads.apply(this, arguments);\n }\n\n return loadDatabasePayloads;\n }()\n }, {\n key: "setLastSyncToken",\n value: function () {\n var _setLastSyncToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(token) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this.syncToken = token;\n return _context4.abrupt("return", this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].LastSyncToken, token));\n\n case 2:\n case "end":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function setLastSyncToken(_x2) {\n return _setLastSyncToken.apply(this, arguments);\n }\n\n return setLastSyncToken;\n }()\n }, {\n key: "setPaginationToken",\n value: function () {\n var _setPaginationToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee5(token) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.cursorToken = token;\n\n if (!token) {\n _context5.next = 5;\n break;\n }\n\n return _context5.abrupt("return", this.storageService.setValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken, token));\n\n case 5:\n return _context5.abrupt("return", this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken));\n\n case 6:\n case "end":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function setPaginationToken(_x3) {\n return _setPaginationToken.apply(this, arguments);\n }\n\n return setPaginationToken;\n }()\n }, {\n key: "getLastSyncToken",\n value: function () {\n var _getLastSyncToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee6() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n if (this.syncToken) {\n _context6.next = 4;\n break;\n }\n\n _context6.next = 3;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].LastSyncToken);\n\n case 3:\n this.syncToken = _context6.sent;\n\n case 4:\n return _context6.abrupt("return", this.syncToken);\n\n case 5:\n case "end":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getLastSyncToken() {\n return _getLastSyncToken.apply(this, arguments);\n }\n\n return getLastSyncToken;\n }()\n }, {\n key: "getPaginationToken",\n value: function () {\n var _getPaginationToken = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee7() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (this.cursorToken) {\n _context7.next = 4;\n break;\n }\n\n _context7.next = 3;\n return this.storageService.getValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken);\n\n case 3:\n this.cursorToken = _context7.sent;\n\n case 4:\n return _context7.abrupt("return", this.cursorToken);\n\n case 5:\n case "end":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getPaginationToken() {\n return _getPaginationToken.apply(this, arguments);\n }\n\n return getPaginationToken;\n }()\n }, {\n key: "clearSyncPositionTokens",\n value: function () {\n var _clearSyncPositionTokens = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee8() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n this.syncToken = undefined;\n this.cursorToken = undefined;\n _context8.next = 4;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].LastSyncToken);\n\n case 4:\n _context8.next = 6;\n return this.storageService.removeValue(_Lib_storage_keys__WEBPACK_IMPORTED_MODULE_2__["StorageKey"].PaginationToken);\n\n case 6:\n case "end":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function clearSyncPositionTokens() {\n return _clearSyncPositionTokens.apply(this, arguments);\n }\n\n return clearSyncPositionTokens;\n }()\n }, {\n key: "itemsNeedingSync",\n value: function () {\n var _itemsNeedingSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee9() {\n var items;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n items = this.itemManager.getDirtyItems();\n return _context9.abrupt("return", items);\n\n case 2:\n case "end":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function itemsNeedingSync() {\n return _itemsNeedingSync.apply(this, arguments);\n }\n\n return itemsNeedingSync;\n }()\n }, {\n key: "alternateUuidForItem",\n value: function () {\n var _alternateUuidForItem = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee10(uuid) {\n var item, payload, results;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n item = this.itemManager.findItem(uuid);\n payload = Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_18__["CreateMaxPayloadFromAnyObject"])(item);\n _context10.next = 4;\n return Object(_Payloads_functions__WEBPACK_IMPORTED_MODULE_17__["PayloadsByAlternatingUuid"])(payload, this.modelManager.getMasterCollection());\n\n case 4:\n results = _context10.sent;\n _context10.next = 7;\n return this.modelManager.emitPayloads(results, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalChanged);\n\n case 7:\n _context10.next = 9;\n return this.persistPayloads(results);\n\n case 9:\n return _context10.abrupt("return", this.itemManager.findItem(results[0].uuid));\n\n case 10:\n case "end":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function alternateUuidForItem(_x4) {\n return _alternateUuidForItem.apply(this, arguments);\n }\n\n return alternateUuidForItem;\n }()\n /**\n * Mark all items as dirty and needing sync, then persist to storage.\n * @param alternateUuids\n * In the case of signing in and merging local data, we alternate UUIDs\n * to avoid overwriting data a user may retrieve that has the same UUID.\n * Alternating here forces us to to create duplicates of the items instead.\n */\n\n }, {\n key: "markAllItemsAsNeedingSync",\n value: function () {\n var _markAllItemsAsNeedingSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee11(alternateUuids) {\n var _items, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, items, payloads;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n this.log(\'Marking all items as needing sync\');\n\n if (!alternateUuids) {\n _context11.next = 29;\n break;\n }\n\n /** Make a copy of the array, as alternating uuid will affect array */\n _items = this.itemManager.items.filter(function (item) {\n return !item.errorDecrypting;\n }).slice();\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context11.prev = 6;\n _iterator = _items[Symbol.iterator]();\n\n case 8:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context11.next = 15;\n break;\n }\n\n item = _step.value;\n _context11.next = 12;\n return this.alternateUuidForItem(item.uuid);\n\n case 12:\n _iteratorNormalCompletion = true;\n _context11.next = 8;\n break;\n\n case 15:\n _context11.next = 21;\n break;\n\n case 17:\n _context11.prev = 17;\n _context11.t0 = _context11["catch"](6);\n _didIteratorError = true;\n _iteratorError = _context11.t0;\n\n case 21:\n _context11.prev = 21;\n _context11.prev = 22;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 24:\n _context11.prev = 24;\n\n if (!_didIteratorError) {\n _context11.next = 27;\n break;\n }\n\n throw _iteratorError;\n\n case 27:\n return _context11.finish(24);\n\n case 28:\n return _context11.finish(21);\n\n case 29:\n items = this.itemManager.items;\n payloads = items.map(function (item) {\n return Object(_Payloads_generator__WEBPACK_IMPORTED_MODULE_18__["CreateMaxPayloadFromAnyObject"])(item, {\n dirty: true,\n dirtiedDate: new Date()\n });\n });\n _context11.next = 33;\n return this.modelManager.emitPayloads(payloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalChanged);\n\n case 33:\n _context11.next = 35;\n return this.persistPayloads(payloads);\n\n case 35:\n case "end":\n return _context11.stop();\n }\n }\n }, _callee11, this, [[6, 17, 21, 29], [22,, 24, 28]]);\n }));\n\n function markAllItemsAsNeedingSync(_x5) {\n return _markAllItemsAsNeedingSync.apply(this, arguments);\n }\n\n return markAllItemsAsNeedingSync;\n }()\n /**\n * Return the payloads that need local persistence, before beginning a sync.\n * This way, if the application is closed before a sync request completes,\n * pending data will be saved to disk, and synced the next time the app opens.\n */\n\n }, {\n key: "popPayloadsNeedingPreSyncSave",\n value: function () {\n var _popPayloadsNeedingPreSyncSave = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee12(from) {\n var lastPreSyncSave, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n lastPreSyncSave = this.state.lastPreSyncSave;\n\n if (lastPreSyncSave) {\n _context12.next = 3;\n break;\n }\n\n return _context12.abrupt("return", from);\n\n case 3:\n /** dirtiedDate can be null if the payload was created as dirty */\n payloads = from.filter(function (candidate) {\n return !candidate.dirtiedDate || candidate.dirtiedDate > lastPreSyncSave;\n });\n this.state.lastPreSyncSave = new Date();\n return _context12.abrupt("return", payloads);\n\n case 6:\n case "end":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function popPayloadsNeedingPreSyncSave(_x6) {\n return _popPayloadsNeedingPreSyncSave.apply(this, arguments);\n }\n\n return popPayloadsNeedingPreSyncSave;\n }()\n }, {\n key: "queueStrategyResolveOnNext",\n value: function queueStrategyResolveOnNext() {\n var _this5 = this;\n\n return new Promise(function (resolve, reject) {\n _this5.resolveQueue.push({\n resolve: resolve,\n reject: reject\n });\n });\n }\n }, {\n key: "queueStrategyForceSpawnNew",\n value: function queueStrategyForceSpawnNew(options) {\n var _this6 = this;\n\n return new Promise(function (resolve, reject) {\n _this6.spawnQueue.push({\n resolve: resolve,\n reject: reject,\n options: options\n });\n });\n }\n /**\n * For timing strategy SyncQueueStrategy.ForceSpawnNew, we will execute a whole sync request\n * and pop it from the queue.\n */\n\n }, {\n key: "popSpawnQueue",\n value: function popSpawnQueue() {\n if (this.spawnQueue.length === 0) {\n return null;\n }\n\n var promise = this.spawnQueue[0];\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["removeFromIndex"])(this.spawnQueue, 0);\n this.log(\'Syncing again from spawn queue\');\n return this.sync(_objectSpread({\n queueStrategy: SyncQueueStrategy.ForceSpawnNew,\n source: SyncSources.SpawnQueue\n }, promise.options)).then(function () {\n promise.resolve();\n }).catch(function () {\n promise.reject();\n });\n }\n /**\n * Certain content types should not be encrypted when sending to server,\n * such as server extensions\n */\n\n }, {\n key: "payloadsByPreparingForServer",\n value: function () {\n var _payloadsByPreparingForServer = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee13(payloads) {\n var _this7 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n return _context13.abrupt("return", this.protocolService.payloadsByEncryptingPayloads(payloads, function (payload) {\n return _this7.nonEncryptedTypes.includes(payload.content_type) ? _Protocol_intents__WEBPACK_IMPORTED_MODULE_19__["EncryptionIntent"].SyncDecrypted : _Protocol_intents__WEBPACK_IMPORTED_MODULE_19__["EncryptionIntent"].Sync;\n }));\n\n case 1:\n case "end":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function payloadsByPreparingForServer(_x7) {\n return _payloadsByPreparingForServer.apply(this, arguments);\n }\n\n return payloadsByPreparingForServer;\n }()\n }, {\n key: "sync",\n value: function () {\n var _sync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee14() {\n var _this8 = this;\n\n var options,\n syncLocked,\n captureLock,\n releaseLock,\n syncInProgress,\n databaseLoaded,\n canExecuteSync,\n items,\n neverSyncedDeleted,\n decryptedPayloads,\n payloadsNeedingSave,\n inTimeResolveQueue,\n useStrategy,\n beginDate,\n online,\n useMode,\n uploadPayloads,\n operation,\n promise,\n _promise,\n _iteratorNormalCompletion2,\n _didIteratorError2,\n _iteratorError2,\n _iterator2,\n _step2,\n callback,\n _args14 = arguments;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n options = _args14.length > 0 && _args14[0] !== undefined ? _args14[0] : {};\n\n if (!this.locked) {\n _context14.next = 4;\n break;\n }\n\n this.log(\'Sync Locked\');\n return _context14.abrupt("return");\n\n case 4:\n /**\n * Allows us to lock this function from triggering duplicate network requests.\n * There are two types of locking checks:\n * 1. syncLocked(): If a call to sync() call has begun preparing to be sent to the server.\n * but not yet completed all the code below before reaching that point.\n * (before reaching opStatus.setDidBegin).\n * 2. syncOpInProgress: If a sync() call is in flight to the server.\n */\n syncLocked = function syncLocked() {\n return _this8.syncLock;\n };\n\n captureLock = function captureLock() {\n _this8.syncLock = true;\n };\n\n releaseLock = function releaseLock() {\n _this8.syncLock = false;\n };\n\n syncInProgress = this.opStatus.syncInProgress;\n databaseLoaded = this.databaseLoaded;\n canExecuteSync = !syncLocked();\n\n if (canExecuteSync && databaseLoaded && !syncInProgress) {\n captureLock();\n }\n\n if (!options.source) {\n options.source = SyncSources.External;\n }\n\n _context14.next = 14;\n return this.itemsNeedingSync();\n\n case 14:\n items = _context14.sent;\n\n /** Items that have never been synced and marked as deleted should not be\n * uploaded to server, and instead deleted directly after sync completion. */\n neverSyncedDeleted = items.filter(function (item) {\n return item.neverSynced && item.deleted;\n });\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["subtractFromArray"])(items, neverSyncedDeleted);\n decryptedPayloads = items.map(function (item) {\n return item.payloadRepresentation();\n });\n _context14.next = 20;\n return this.popPayloadsNeedingPreSyncSave(decryptedPayloads);\n\n case 20:\n payloadsNeedingSave = _context14.sent;\n _context14.next = 23;\n return this.persistPayloads(payloadsNeedingSave);\n\n case 23:\n /** The in time resolve queue refers to any sync requests that were made while we still\n * have not sent out the current request. So, anything in the in time resolve queue\n * will have made it in time to piggyback on the current request. Anything that comes\n * _after_ in-time will schedule a new sync request. */\n inTimeResolveQueue = this.resolveQueue.slice();\n useStrategy = !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(options.queueStrategy) ? options.queueStrategy : SyncQueueStrategy.ResolveOnNext;\n\n if (!(syncInProgress || !databaseLoaded || !canExecuteSync)) {\n _context14.next = 36;\n break;\n }\n\n this.log(!canExecuteSync ? \'Another function call has begun preparing for sync.\' : syncInProgress ? \'Attempting to sync while existing sync in progress.\' : \'Attempting to sync before local database has loaded.\');\n\n if (!(useStrategy === SyncQueueStrategy.ResolveOnNext)) {\n _context14.next = 31;\n break;\n }\n\n return _context14.abrupt("return", this.queueStrategyResolveOnNext());\n\n case 31:\n if (!(useStrategy === SyncQueueStrategy.ForceSpawnNew)) {\n _context14.next = 35;\n break;\n }\n\n return _context14.abrupt("return", this.queueStrategyForceSpawnNew({\n mode: options.mode,\n checkIntegrity: options.checkIntegrity,\n source: options.source\n }));\n\n case 35:\n throw "Unhandled timing strategy ".concat(useStrategy);\n\n case 36:\n /** Lock syncing immediately after checking in progress above */\n this.opStatus.setDidBegin();\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SyncWillBegin);\n /* Subtract from array as soon as we\'re sure they\'ll be called.\n resolves are triggered at the end of this function call */\n\n Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["subtractFromArray"])(this.resolveQueue, inTimeResolveQueue);\n /** lastSyncBegan must be set *after* any point we may have returned above.\n * Setting this value means the item was 100% sent to the server. */\n\n beginDate = new Date();\n\n if (!(items.length > 0)) {\n _context14.next = 43;\n break;\n }\n\n _context14.next = 43;\n return this.itemManager.changeItems(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_22__["Uuids"])(items), function (mutator) {\n mutator.lastSyncBegan = beginDate;\n }, _Models_core_item__WEBPACK_IMPORTED_MODULE_3__["MutationType"].NonDirtying, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].PreSyncSave);\n\n case 43:\n online = this.sessionManager.online();\n\n useMode = function (tryMode) {\n if (online && !_this8.completedOnlineDownloadFirstSync) {\n return SyncModes.DownloadFirst;\n } else if (!Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["isNullOrUndefined"])(tryMode)) {\n return tryMode;\n } else {\n return SyncModes.Default;\n }\n }(options.mode);\n\n uploadPayloads = [];\n\n if (!(useMode === SyncModes.Default)) {\n _context14.next = 58;\n break;\n }\n\n if (!(online && !this.completedOnlineDownloadFirstSync)) {\n _context14.next = 49;\n break;\n }\n\n throw Error(\'Attempting to default mode sync without having completed initial.\');\n\n case 49:\n if (!online) {\n _context14.next = 55;\n break;\n }\n\n _context14.next = 52;\n return this.payloadsByPreparingForServer(decryptedPayloads);\n\n case 52:\n uploadPayloads = _context14.sent;\n _context14.next = 56;\n break;\n\n case 55:\n uploadPayloads = decryptedPayloads;\n\n case 56:\n _context14.next = 59;\n break;\n\n case 58:\n if (useMode === SyncModes.DownloadFirst) {\n uploadPayloads = [];\n }\n\n case 59:\n if (!online) {\n _context14.next = 65;\n break;\n }\n\n _context14.next = 62;\n return this.syncOnlineOperation(uploadPayloads, options.checkIntegrity, options.source, useMode);\n\n case 62:\n operation = _context14.sent;\n _context14.next = 68;\n break;\n\n case 65:\n _context14.next = 67;\n return this.syncOfflineOperation(uploadPayloads, options.source, useMode);\n\n case 67:\n operation = _context14.sent;\n\n case 68:\n _context14.next = 70;\n return operation.run();\n\n case 70:\n this.opStatus.setDidEnd();\n releaseLock();\n\n if (!this.opStatus.hasError()) {\n _context14.next = 74;\n break;\n }\n\n return _context14.abrupt("return");\n\n case 74:\n this.opStatus.reset();\n this.state.lastSyncDate = new Date();\n\n if (operation instanceof _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__["AccountSyncOperation"] && operation.numberOfItemsInvolved >= this.majorChangeThreshold) {\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].MajorDataChange);\n }\n\n if (!(neverSyncedDeleted.length > 0)) {\n _context14.next = 80;\n break;\n }\n\n _context14.next = 80;\n return this.handleNeverSyncedDeleted(neverSyncedDeleted);\n\n case 80:\n if (!(useMode !== SyncModes.DownloadFirst)) {\n _context14.next = 83;\n break;\n }\n\n _context14.next = 83;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].FullSyncCompleted, {\n source: options.source\n });\n\n case 83:\n if (!(useMode === SyncModes.DownloadFirst)) {\n _context14.next = 91;\n break;\n }\n\n if (online) {\n this.completedOnlineDownloadFirstSync = true;\n }\n\n _context14.next = 87;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].DownloadFirstSyncCompleted);\n\n case 87:\n _context14.next = 89;\n return this.sync({\n source: SyncSources.AfterDownloadFirst,\n checkIntegrity: true,\n awaitAll: options.awaitAll\n });\n\n case 89:\n _context14.next = 117;\n break;\n\n case 91:\n if (!(!this.popSpawnQueue() && this.resolveQueue.length > 0)) {\n _context14.next = 99;\n break;\n }\n\n this.log(\'Syncing again from resolve queue\');\n /** No need to await. */\n\n promise = this.sync({\n source: SyncSources.ResolveQueue,\n checkIntegrity: options.checkIntegrity\n });\n\n if (!options.awaitAll) {\n _context14.next = 97;\n break;\n }\n\n _context14.next = 97;\n return promise;\n\n case 97:\n _context14.next = 117;\n break;\n\n case 99:\n _context14.next = 101;\n return this.itemsNeedingSync();\n\n case 101:\n _context14.t0 = _context14.sent.length;\n\n if (!(_context14.t0 > 0)) {\n _context14.next = 107;\n break;\n }\n\n _context14.next = 105;\n return this.sync({\n source: SyncSources.MoreDirtyItems,\n checkIntegrity: options.checkIntegrity,\n awaitAll: options.awaitAll\n });\n\n case 105:\n _context14.next = 117;\n break;\n\n case 107:\n if (!(operation instanceof _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__["AccountSyncOperation"] && operation.checkIntegrity)) {\n _context14.next = 116;\n break;\n }\n\n if (!(this.state.needsSync && operation.done)) {\n _context14.next = 114;\n break;\n }\n\n this.log(\'Syncing again from integrity check\');\n _promise = this.sync({\n checkIntegrity: true,\n queueStrategy: SyncQueueStrategy.ForceSpawnNew,\n source: SyncSources.IntegrityCheck,\n awaitAll: options.awaitAll\n });\n\n if (!options.awaitAll) {\n _context14.next = 114;\n break;\n }\n\n _context14.next = 114;\n return _promise;\n\n case 114:\n _context14.next = 117;\n break;\n\n case 116:\n this.state.clearIntegrityHashes();\n\n case 117:\n /**\n * For timing strategy SyncQueueStrategy.ResolveOnNext.\n * Execute any callbacks pulled before this sync request began.\n * Calling resolve on the callbacks should be the last thing we do in this function,\n * to simulate calling .sync as if it went through straight to the end without having\n * to be queued.\n */\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context14.prev = 120;\n\n for (_iterator2 = inTimeResolveQueue[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n callback = _step2.value;\n callback.resolve();\n }\n\n _context14.next = 128;\n break;\n\n case 124:\n _context14.prev = 124;\n _context14.t1 = _context14["catch"](120);\n _didIteratorError2 = true;\n _iteratorError2 = _context14.t1;\n\n case 128:\n _context14.prev = 128;\n _context14.prev = 129;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 131:\n _context14.prev = 131;\n\n if (!_didIteratorError2) {\n _context14.next = 134;\n break;\n }\n\n throw _iteratorError2;\n\n case 134:\n return _context14.finish(131);\n\n case 135:\n return _context14.finish(128);\n\n case 136:\n case "end":\n return _context14.stop();\n }\n }\n }, _callee14, this, [[120, 124, 128, 136], [129,, 131, 135]]);\n }));\n\n function sync() {\n return _sync.apply(this, arguments);\n }\n\n return sync;\n }()\n }, {\n key: "syncOnlineOperation",\n value: function () {\n var _syncOnlineOperation = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee16(payloads, checkIntegrity, source, mode) {\n var _this9 = this;\n\n var operation;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n this.log(\'Syncing online user\', \'source:\', source, "integrity check", checkIntegrity, \'mode:\', mode, \'payloads:\', payloads);\n _context16.t0 = _Services_sync_account_operation__WEBPACK_IMPORTED_MODULE_11__["AccountSyncOperation"];\n _context16.t1 = payloads;\n\n _context16.t2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee15(type, response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n if (!(type === _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__["SyncSignal"].Response)) {\n _context15.next = 10;\n break;\n }\n\n if (!response.hasError) {\n _context15.next = 6;\n break;\n }\n\n _context15.next = 4;\n return _this9.handleErrorServerResponse(response);\n\n case 4:\n _context15.next = 8;\n break;\n\n case 6:\n _context15.next = 8;\n return _this9.handleSuccessServerResponse(operation, response);\n\n case 8:\n _context15.next = 13;\n break;\n\n case 10:\n if (!(type === _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__["SyncSignal"].StatusChanged)) {\n _context15.next = 13;\n break;\n }\n\n _context15.next = 13;\n return _this9.handleStatusChange(operation);\n\n case 13:\n case "end":\n return _context15.stop();\n }\n }\n }, _callee15);\n }));\n\n return function (_x12, _x13) {\n return _ref.apply(this, arguments);\n };\n }();\n\n _context16.next = 6;\n return this.getLastSyncToken();\n\n case 6:\n _context16.t3 = _context16.sent;\n _context16.next = 9;\n return this.getPaginationToken();\n\n case 9:\n _context16.t4 = _context16.sent;\n _context16.t5 = checkIntegrity;\n _context16.t6 = this.apiService;\n operation = new _context16.t0(_context16.t1, _context16.t2, _context16.t3, _context16.t4, _context16.t5, _context16.t6);\n return _context16.abrupt("return", operation);\n\n case 14:\n case "end":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function syncOnlineOperation(_x8, _x9, _x10, _x11) {\n return _syncOnlineOperation.apply(this, arguments);\n }\n\n return syncOnlineOperation;\n }()\n }, {\n key: "syncOfflineOperation",\n value: function () {\n var _syncOfflineOperation = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee18(payloads, source, mode) {\n var _this10 = this;\n\n var operation;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n this.log(\'Syncing offline user\', \'source:\', source, \'mode:\', mode, \'payloads:\', payloads);\n operation = new _Services_sync_offline_operation__WEBPACK_IMPORTED_MODULE_12__["OfflineSyncOperation"](payloads, /*#__PURE__*/function () {\n var _ref2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee17(type, response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n if (!(type === _Services_sync_signals__WEBPACK_IMPORTED_MODULE_23__["SyncSignal"].Response)) {\n _context17.next = 3;\n break;\n }\n\n _context17.next = 3;\n return _this10.handleOfflineResponse(response);\n\n case 3:\n case "end":\n return _context17.stop();\n }\n }\n }, _callee17);\n }));\n\n return function (_x17, _x18) {\n return _ref2.apply(this, arguments);\n };\n }());\n return _context18.abrupt("return", operation);\n\n case 3:\n case "end":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function syncOfflineOperation(_x14, _x15, _x16) {\n return _syncOfflineOperation.apply(this, arguments);\n }\n\n return syncOfflineOperation;\n }()\n }, {\n key: "handleStatusChange",\n value: function () {\n var _handleStatusChange = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee19(operation) {\n var pendingUploadCount, totalUploadCount, completedUploadCount;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n pendingUploadCount = operation.pendingUploadCount();\n totalUploadCount = operation.totalUploadCount();\n completedUploadCount = totalUploadCount - pendingUploadCount;\n this.opStatus.setUploadStatus(completedUploadCount, totalUploadCount);\n\n case 4:\n case "end":\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function handleStatusChange(_x19) {\n return _handleStatusChange.apply(this, arguments);\n }\n\n return handleStatusChange;\n }()\n }, {\n key: "handleOfflineResponse",\n value: function () {\n var _handleOfflineResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee20(response) {\n var payloadsToEmit, payloadsToPersist, deletedPayloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n this.log(\'Offline Sync Response\', response.rawResponse);\n payloadsToEmit = response.savedPayloads;\n\n if (!(payloadsToEmit.length > 0)) {\n _context20.next = 8;\n break;\n }\n\n _context20.next = 5;\n return this.modelManager.emitPayloads(payloadsToEmit, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalSaved);\n\n case 5:\n payloadsToPersist = this.modelManager.find(Object(_Models_functions__WEBPACK_IMPORTED_MODULE_22__["Uuids"])(payloadsToEmit));\n _context20.next = 8;\n return this.persistPayloads(payloadsToPersist);\n\n case 8:\n deletedPayloads = response.deletedPayloads;\n\n if (!(deletedPayloads.length > 0)) {\n _context20.next = 12;\n break;\n }\n\n _context20.next = 12;\n return this.deletePayloads(deletedPayloads);\n\n case 12:\n this.opStatus.clearError();\n this.opStatus.setDownloadStatus(response.retrievedPayloads.length);\n _context20.next = 16;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SingleSyncCompleted, response);\n\n case 16:\n case "end":\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function handleOfflineResponse(_x20) {\n return _handleOfflineResponse.apply(this, arguments);\n }\n\n return handleOfflineResponse;\n }()\n }, {\n key: "handleErrorServerResponse",\n value: function () {\n var _handleErrorServerResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee21(response) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee21$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n this.log(\'Sync Error\', response);\n\n if (response.status === INVALID_SESSION_RESPONSE_STATUS) {\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].InvalidSession);\n }\n\n this.opStatus.setError(response.error);\n this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SyncError, response.error);\n\n case 4:\n case "end":\n return _context21.stop();\n }\n }\n }, _callee21, this);\n }));\n\n function handleErrorServerResponse(_x21) {\n return _handleErrorServerResponse.apply(this, arguments);\n }\n\n return handleErrorServerResponse;\n }()\n }, {\n key: "handleSuccessServerResponse",\n value: function () {\n var _handleSuccessServerResponse = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee22(operation, response) {\n var decryptedPayloads, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, payload, decrypted, masterCollection, resolver, collections, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, collection, payloadsToPersist, deletedPayloads, clientHash;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee22$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n if (!this._simulate_latency) {\n _context22.next = 3;\n break;\n }\n\n _context22.next = 3;\n return Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_4__["sleep"])(this._simulate_latency.latency);\n\n case 3:\n this.log(\'Online Sync Response\', response.rawResponse);\n this.setLastSyncToken(response.lastSyncToken);\n this.setPaginationToken(response.paginationToken);\n this.opStatus.clearError();\n this.opStatus.setDownloadStatus(response.retrievedPayloads.length);\n decryptedPayloads = [];\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context22.prev = 12;\n _iterator3 = response.allProcessedPayloads[Symbol.iterator]();\n\n case 14:\n if (_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done) {\n _context22.next = 25;\n break;\n }\n\n payload = _step3.value;\n\n if (!(payload.deleted || !payload.fields.includes(_Payloads_fields__WEBPACK_IMPORTED_MODULE_14__["PayloadField"].Content))) {\n _context22.next = 18;\n break;\n }\n\n return _context22.abrupt("continue", 22);\n\n case 18:\n _context22.next = 20;\n return this.protocolService.payloadByDecryptingPayload(payload);\n\n case 20:\n decrypted = _context22.sent;\n decryptedPayloads.push(decrypted);\n\n case 22:\n _iteratorNormalCompletion3 = true;\n _context22.next = 14;\n break;\n\n case 25:\n _context22.next = 31;\n break;\n\n case 27:\n _context22.prev = 27;\n _context22.t0 = _context22["catch"](12);\n _didIteratorError3 = true;\n _iteratorError3 = _context22.t0;\n\n case 31:\n _context22.prev = 31;\n _context22.prev = 32;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 34:\n _context22.prev = 34;\n\n if (!_didIteratorError3) {\n _context22.next = 37;\n break;\n }\n\n throw _iteratorError3;\n\n case 37:\n return _context22.finish(34);\n\n case 38:\n return _context22.finish(31);\n\n case 39:\n masterCollection = this.modelManager.getMasterCollection();\n resolver = new _Services_sync_account_response_resolver__WEBPACK_IMPORTED_MODULE_10__["SyncResponseResolver"](response, decryptedPayloads, masterCollection, operation.payloadsSavedOrSaving);\n _context22.next = 43;\n return resolver.collectionsByProcessingResponse();\n\n case 43:\n collections = _context22.sent;\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context22.prev = 47;\n _iterator4 = collections[Symbol.iterator]();\n\n case 49:\n if (_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done) {\n _context22.next = 59;\n break;\n }\n\n collection = _step4.value;\n _context22.next = 53;\n return this.modelManager.emitCollection(collection);\n\n case 53:\n payloadsToPersist = this.modelManager.find(collection.uuids());\n _context22.next = 56;\n return this.persistPayloads(payloadsToPersist);\n\n case 56:\n _iteratorNormalCompletion4 = true;\n _context22.next = 49;\n break;\n\n case 59:\n _context22.next = 65;\n break;\n\n case 61:\n _context22.prev = 61;\n _context22.t1 = _context22["catch"](47);\n _didIteratorError4 = true;\n _iteratorError4 = _context22.t1;\n\n case 65:\n _context22.prev = 65;\n _context22.prev = 66;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 68:\n _context22.prev = 68;\n\n if (!_didIteratorError4) {\n _context22.next = 71;\n break;\n }\n\n throw _iteratorError4;\n\n case 71:\n return _context22.finish(68);\n\n case 72:\n return _context22.finish(65);\n\n case 73:\n deletedPayloads = response.deletedPayloads;\n\n if (!(deletedPayloads.length > 0)) {\n _context22.next = 77;\n break;\n }\n\n _context22.next = 77;\n return this.deletePayloads(deletedPayloads);\n\n case 77:\n _context22.next = 79;\n return this.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].SingleSyncCompleted, response);\n\n case 79:\n if (!response.checkIntegrity) {\n _context22.next = 85;\n break;\n }\n\n _context22.next = 82;\n return this.computeDataIntegrityHash();\n\n case 82:\n clientHash = _context22.sent;\n _context22.next = 85;\n return this.state.setIntegrityHashes(clientHash, response.integrityHash);\n\n case 85:\n case "end":\n return _context22.stop();\n }\n }\n }, _callee22, this, [[12, 27, 31, 39], [32,, 34, 38], [47, 61, 65, 73], [66,, 68, 72]]);\n }));\n\n function handleSuccessServerResponse(_x22, _x23) {\n return _handleSuccessServerResponse.apply(this, arguments);\n }\n\n return handleSuccessServerResponse;\n }()\n /**\n * Items that have never been synced and marked as deleted should be cleared\n * as dirty, mapped, then removed from storage.\n */\n\n }, {\n key: "handleNeverSyncedDeleted",\n value: function () {\n var _handleNeverSyncedDeleted = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee23(items) {\n var payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee23$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n payloads = items.map(function (item) {\n return item.payloadRepresentation({\n dirty: false\n });\n });\n _context23.next = 3;\n return this.modelManager.emitPayloads(payloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].LocalChanged);\n\n case 3:\n _context23.next = 5;\n return this.persistPayloads(payloads);\n\n case 5:\n case "end":\n return _context23.stop();\n }\n }\n }, _callee23, this);\n }));\n\n function handleNeverSyncedDeleted(_x24) {\n return _handleNeverSyncedDeleted.apply(this, arguments);\n }\n\n return handleNeverSyncedDeleted;\n }()\n /**\n * @param payloads The decrypted payloads to persist\n */\n\n }, {\n key: "persistPayloads",\n value: function () {\n var _persistPayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee24(payloads) {\n var _this11 = this;\n\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee24$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n if (!(payloads.length === 0)) {\n _context24.next = 2;\n break;\n }\n\n return _context24.abrupt("return");\n\n case 2:\n return _context24.abrupt("return", this.storageService.savePayloads(payloads).catch(function (error) {\n _this11.notifyEvent(_Services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].DatabaseWriteError, error);\n\n throw error;\n }));\n\n case 3:\n case "end":\n return _context24.stop();\n }\n }\n }, _callee24, this);\n }));\n\n function persistPayloads(_x25) {\n return _persistPayloads.apply(this, arguments);\n }\n\n return persistPayloads;\n }()\n }, {\n key: "deletePayloads",\n value: function () {\n var _deletePayloads = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee25(payloads) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee25$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n return _context25.abrupt("return", this.persistPayloads(payloads));\n\n case 1:\n case "end":\n return _context25.stop();\n }\n }\n }, _callee25, this);\n }));\n\n function deletePayloads(_x26) {\n return _deletePayloads.apply(this, arguments);\n }\n\n return deletePayloads;\n }()\n /**\n * Computes a hash of all items updated_at strings joined with a comma.\n * The server will also do the same, to determine whether the client values match server values.\n * @returns A SHA256 digest string (hex).\n */\n\n }, {\n key: "computeDataIntegrityHash",\n value: function () {\n var _computeDataIntegrityHash = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee26() {\n var items, dates, string;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee26$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n _context26.prev = 0;\n items = this.itemManager.nonDeletedItems.sort(function (a, b) {\n return b.updated_at.getTime() - a.updated_at.getTime();\n });\n dates = items.map(function (item) {\n return item.updatedAtTimestamp();\n });\n string = dates.join(\',\');\n return _context26.abrupt("return", this.protocolService.crypto.sha256(string));\n\n case 7:\n _context26.prev = 7;\n _context26.t0 = _context26["catch"](0);\n console.error(\'Error computing data integrity hash\', _context26.t0);\n return _context26.abrupt("return", undefined);\n\n case 11:\n case "end":\n return _context26.stop();\n }\n }\n }, _callee26, this, [[0, 7]]);\n }));\n\n function computeDataIntegrityHash() {\n return _computeDataIntegrityHash.apply(this, arguments);\n }\n\n return computeDataIntegrityHash;\n }()\n /**\n * Downloads all items and maps to lcoal items to attempt resolve out-of-sync state\n */\n\n }, {\n key: "resolveOutOfSync",\n value: function () {\n var _resolveOutOfSync = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee27() {\n var downloader, payloads, delta, collection;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee27$(_context27) {\n while (1) {\n switch (_context27.prev = _context27.next) {\n case 0:\n downloader = new _Services_sync_account_downloader__WEBPACK_IMPORTED_MODULE_9__["AccountDownloader"](this.apiService, this.protocolService, undefined, \'resolve-out-of-sync\');\n _context27.next = 3;\n return downloader.run();\n\n case 3:\n payloads = _context27.sent;\n delta = new _Payloads_deltas__WEBPACK_IMPORTED_MODULE_13__["DeltaOutOfSync"](this.modelManager.getMasterCollection(), _Protocol_collection_payload_collection__WEBPACK_IMPORTED_MODULE_16__["ImmutablePayloadCollection"].WithPayloads(payloads, _Payloads_sources__WEBPACK_IMPORTED_MODULE_15__["PayloadSource"].RemoteRetrieved));\n _context27.next = 7;\n return delta.resultingCollection();\n\n case 7:\n collection = _context27.sent;\n _context27.next = 10;\n return this.modelManager.emitCollection(collection);\n\n case 10:\n _context27.next = 12;\n return this.persistPayloads(collection.payloads);\n\n case 12:\n return _context27.abrupt("return", this.sync({\n checkIntegrity: true,\n source: SyncSources.ResolveOutOfSync\n }));\n\n case 13:\n case "end":\n return _context27.stop();\n }\n }\n }, _callee27, this);\n }));\n\n function resolveOutOfSync() {\n return _resolveOutOfSync.apply(this, arguments);\n }\n\n return resolveOutOfSync;\n }()\n }, {\n key: "statelessDownloadAllItems",\n value: function () {\n var _statelessDownloadAllItems = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee28(contentType, customEvent) {\n var downloader, payloads;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee28$(_context28) {\n while (1) {\n switch (_context28.prev = _context28.next) {\n case 0:\n downloader = new _Services_sync_account_downloader__WEBPACK_IMPORTED_MODULE_9__["AccountDownloader"](this.apiService, this.protocolService, contentType, customEvent);\n _context28.next = 3;\n return downloader.run();\n\n case 3:\n payloads = _context28.sent;\n return _context28.abrupt("return", payloads.map(function (payload) {\n return Object(_Models_generator__WEBPACK_IMPORTED_MODULE_21__["CreateItemFromPayload"])(payload);\n }));\n\n case 5:\n case "end":\n return _context28.stop();\n }\n }\n }, _callee28, this);\n }));\n\n function statelessDownloadAllItems(_x27, _x28) {\n return _statelessDownloadAllItems.apply(this, arguments);\n }\n\n return statelessDownloadAllItems;\n }()\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_setDatabaseLoaded",\n value: function ut_setDatabaseLoaded(loaded) {\n this.databaseLoaded = loaded;\n }\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_clearLastSyncDate",\n value: function ut_clearLastSyncDate() {\n this.state.lastSyncDate = undefined;\n }\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_beginLatencySimulator",\n value: function ut_beginLatencySimulator(latency) {\n this._simulate_latency = {\n latency: latency || 1000,\n enabled: true\n };\n }\n /** @unit_testing */\n // eslint-disable-next-line camelcase\n\n }, {\n key: "ut_endLatencySimulator",\n value: function ut_endLatencySimulator() {\n this._simulate_latency = null;\n }\n }]);\n\n return SNSyncService;\n}(_Services_pure_service__WEBPACK_IMPORTED_MODULE_5__["PureService"]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zeW5jX3NlcnZpY2UudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvc2VydmljZXMvc3luYy9zeW5jX3NlcnZpY2UudHM/NGJhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTeW5jRXZlbnQgfSBmcm9tICdAU2VydmljZXMvc3luYy9ldmVudHMnO1xuaW1wb3J0IHsgU3RvcmFnZUtleSB9IGZyb20gJ0BMaWIvc3RvcmFnZV9rZXlzJztcbmltcG9ydCB7IE11dGF0aW9uVHlwZSB9IGZyb20gJ0BNb2RlbHMvY29yZS9pdGVtJztcbmltcG9ydCB7IHJlbW92ZUZyb21JbmRleCwgc2xlZXAsIHN1YnRyYWN0RnJvbUFycmF5LCBpc051bGxPclVuZGVmaW5lZCB9IGZyb20gJ0BMaWIvdXRpbHMnO1xuaW1wb3J0IHsgUHVyZVNlcnZpY2UgfSBmcm9tICdAU2VydmljZXMvcHVyZV9zZXJ2aWNlJztcbmltcG9ydCB7IFNvcnRQYXlsb2Fkc0J5UmVjZW50QW5kQ29udGVudFByaW9yaXR5IH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvdXRpbHMnO1xuaW1wb3J0IHsgU3luY09wU3RhdHVzIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc3luY19vcF9zdGF0dXMnO1xuaW1wb3J0IHsgU3luY1N0YXRlIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc3luY19zdGF0ZSc7XG5pbXBvcnQgeyBBY2NvdW50RG93bmxvYWRlciB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2FjY291bnQvZG93bmxvYWRlcic7XG5pbXBvcnQgeyBTeW5jUmVzcG9uc2VSZXNvbHZlciB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL2FjY291bnQvcmVzcG9uc2VfcmVzb2x2ZXInO1xuaW1wb3J0IHsgQWNjb3VudFN5bmNPcGVyYXRpb24gfSBmcm9tICdAU2VydmljZXMvc3luYy9hY2NvdW50L29wZXJhdGlvbic7XG5pbXBvcnQgeyBPZmZsaW5lU3luY09wZXJhdGlvbiB9IGZyb20gJ0BTZXJ2aWNlcy9zeW5jL29mZmxpbmUvb3BlcmF0aW9uJztcbmltcG9ydCB7IERlbHRhT3V0T2ZTeW5jIH0gZnJvbSAnQFBheWxvYWRzL2RlbHRhcyc7XG5pbXBvcnQgeyBQYXlsb2FkRmllbGQgfSBmcm9tICdAUGF5bG9hZHMvZmllbGRzJztcbmltcG9ydCB7IFBheWxvYWRTb3VyY2UgfSBmcm9tICdAUGF5bG9hZHMvc291cmNlcyc7XG5pbXBvcnQgeyBJbW11dGFibGVQYXlsb2FkQ29sbGVjdGlvbiB9IGZyb20gXCJAUHJvdG9jb2wvY29sbGVjdGlvbi9wYXlsb2FkX2NvbGxlY3Rpb25cIjtcbmltcG9ydCB7IFBheWxvYWRzQnlBbHRlcm5hdGluZ1V1aWQgfSBmcm9tICdAUGF5bG9hZHMvZnVuY3Rpb25zJztcbmltcG9ydCB7IENyZWF0ZU1heFBheWxvYWRGcm9tQW55T2JqZWN0IH0gZnJvbSAnQFBheWxvYWRzL2dlbmVyYXRvcic7XG5pbXBvcnQgeyBFbmNyeXB0aW9uSW50ZW50IH0gZnJvbSAnQFByb3RvY29sL2ludGVudHMnO1xuaW1wb3J0IHsgQ29udGVudFR5cGUgfSBmcm9tICdATW9kZWxzL2NvbnRlbnRfdHlwZXMnO1xuaW1wb3J0IHsgQ3JlYXRlSXRlbUZyb21QYXlsb2FkIH0gZnJvbSAnQE1vZGVscy9nZW5lcmF0b3InO1xuaW1wb3J0IHsgVXVpZHMgfSBmcm9tICdATW9kZWxzL2Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBTeW5jU2lnbmFsIH0gZnJvbSAnQFNlcnZpY2VzL3N5bmMvc2lnbmFscyc7XG5jb25zdCBERUZBVUxUX0RBVEFCQVNFX0xPQURfQkFUQ0hfU0laRSA9IDEwMDtcbmNvbnN0IERFRkFVTFRfTUFYX0RJU0NPUkRBTkNFID0gNTtcbmNvbnN0IERFRkFVTFRfTUFKT1JfQ0hBTkdFX1RIUkVTSE9MRCA9IDE1O1xuY29uc3QgSU5WQUxJRF9TRVNTSU9OX1JFU1BPTlNFX1NUQVRVUyA9IDQwMTtcbmV4cG9ydCB2YXIgU3luY1F1ZXVlU3RyYXRlZ3k7XG4oZnVuY3Rpb24gKFN5bmNRdWV1ZVN0cmF0ZWd5KSB7XG4gICAgLyoqXG4gICAgICogUHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIG9uIHRoZSBuZXh0IHN5bmMgcmVxdWVzdCBhZnRlciB0aGUgY3VycmVudCBvbmUgY29tcGxldGVzLlxuICAgICAqIElmIHRoZXJlIGlzIG5vIHNjaGVkdWxlZCBzeW5jIHJlcXVlc3QsIG9uZSB3aWxsIGJlIHNjaGVkdWxlZC5cbiAgICAgKi9cbiAgICBTeW5jUXVldWVTdHJhdGVneVtTeW5jUXVldWVTdHJhdGVneVtcIlJlc29sdmVPbk5leHRcIl0gPSAxXSA9IFwiUmVzb2x2ZU9uTmV4dFwiO1xuICAgIC8qKlxuICAgICAqIEEgbmV3IHN5bmMgcmVxdWVzdCBpcyBndWFyZW50ZWVkIHRvIGJlIGdlbmVyYXRlZCBmb3IgeW91ciByZXF1ZXN0LCBubyBtYXR0ZXIgaG93IGxvbmcgaXQgdGFrZXMuXG4gICAgICogUHJvbWlzZSB3aWxsIGJlIHJlc29sdmVkIHdoZW5ldmVyIHRoaXMgc3luYyByZXF1ZXN0IGlzIHByb2Nlc3NlZCBpbiB0aGUgc2VyaWFsIHF1ZXVlLlxuICAgICAqL1xuICAgIFN5bmNRdWV1ZVN0cmF0ZWd5W1N5bmNRdWV1ZVN0cmF0ZWd5W1wiRm9yY2VTcGF3bk5ld1wiXSA9IDJdID0gXCJGb3JjZVNwYXduTmV3XCI7XG59KShTeW5jUXVldWVTdHJhdGVneSB8fCAoU3luY1F1ZXVlU3RyYXRlZ3kgPSB7fSkpO1xuZXhwb3J0IHZhciBTeW5jTW9kZXM7XG4oZnVuY3Rpb24gKFN5bmNNb2Rlcykge1xuICAgIC8qKlxuICAgICAqIFBlcmZvcm1zIGEgc3RhbmRhcmQgc3luYywgdXBsb2FkaW5nIGFueSBkaXJ0eSBpdGVtcyBhbmQgcmV0cmlldmluZyBpdGVtcy5cbiAgICAgKi9cbiAgICBTeW5jTW9kZXNbU3luY01vZGVzW1wiRGVmYXVsdFwiXSA9IDFdID0gXCJEZWZhdWx0XCI7XG4gICAgLyoqXG4gICAgICogVGhlIGZpcnN0IHN5bmMgZm9yIGFuIGFjY291bnQsIHdoZXJlIHdlIGZpcnN0IHdhbnQgdG8gZG93bmxvYWQgYWxsIHJlbW90ZSBpdGVtcyBmaXJzdFxuICAgICAqIGJlZm9yZSB1cGxvYWRpbmcgYW55IGRpcnR5IGl0ZW1zLiBUaGlzIGFsbG93cyBhIGNvbnN1bWVyLCBmb3IgZXhhbXBsZSwgdG8gZG93bmxvYWRcbiAgICAgKiBhbGwgZGF0YSB0byBzZWUgaWYgdXNlciBoYXMgYW4gaXRlbXMga2V5LCBhbmQgaWYgbm90LCBvbmx5IHRoZW4gY3JlYXRlIGEgbmV3IG9uZS5cbiAgICAgKi9cbiAgICBTeW5jTW9kZXNbU3luY01vZGVzW1wiRG93bmxvYWRGaXJzdFwiXSA9IDJdID0gXCJEb3dubG9hZEZpcnN0XCI7XG59KShTeW5jTW9kZXMgfHwgKFN5bmNNb2RlcyA9IHt9KSk7XG47XG5leHBvcnQgdmFyIFN5bmNTb3VyY2VzO1xuKGZ1bmN0aW9uIChTeW5jU291cmNlcykge1xuICAgIFN5bmNTb3VyY2VzW1N5bmNTb3VyY2VzW1wiRXh0ZXJuYWxcIl0gPSAxXSA9IFwiRXh0ZXJuYWxcIjtcbiAgICBTeW5jU291cmNlc1tTeW5jU291cmNlc1tcIlNwYXduUXVldWVcIl0gPSAyXSA9IFwiU3Bhd25RdWV1ZVwiO1xuICAgIFN5bmNTb3VyY2VzW1N5bmNTb3VyY2VzW1wiUmVzb2x2ZVF1ZXVlXCJdID0gM10gPSBcIlJlc29sdmVRdWV1ZVwiO1xuICAgIFN5bmNTb3VyY2VzW1N5bmNTb3VyY2VzW1wiTW9yZURpcnR5SXRlbXNcIl0gPSA0XSA9IFwiTW9yZURpcnR5SXRlbXNcIjtcbiAgICBTeW5jU291cmNlc1tTeW5jU291cmNlc1tcIkFmdGVyRG93bmxvYWRGaXJzdFwiXSA9IDVdID0gXCJBZnRlckRvd25sb2FkRmlyc3RcIjtcbiAgICBTeW5jU291cmNlc1tTeW5jU291cmNlc1tcIkludGVncml0eUNoZWNrXCJdID0gNl0gPSBcIkludGVncml0eUNoZWNrXCI7XG4gICAgU3luY1NvdXJjZXNbU3luY1NvdXJjZXNbXCJSZXNvbHZlT3V0T2ZTeW5jXCJdID0gN10gPSBcIlJlc29sdmVPdXRPZlN5bmNcIjtcbn0pKFN5bmNTb3VyY2VzIHx8IChTeW5jU291cmNlcyA9IHt9KSk7XG47XG4vKipcbiAqIFRoZSBzeW5jIHNlcnZpY2Ugb3JjaGVzdHJhdGVzIHdpdGggdGhlIG1vZGVsIG1hbmFnZXIsIGFwaSBzZXJ2aWNlLCBhbmQgc3RvcmFnZSBzZXJ2aWNlXG4gKiB0byBlbnN1cmUgY29uc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIHRoZSB0aHJlZS4gV2hlbiBhIGNoYW5nZSBpcyBtYWRlIHRvIGFuIGl0ZW0sIGNvbnN1bWVyc1xuICogY2FsbCB0aGUgc3luYyBzZXJ2aWNlJ3Mgc3luYyBmdW5jdGlvbiB0byBmaXJzdCBwZXJzaXN0IHBlbmRpbmcgY2hhbmdlcyB0byBsb2NhbCBzdG9yYWdlLlxuICogVGhlbiwgdGhlIGl0ZW1zIGFyZSB1cGxvYWRlZCB0byB0aGUgc2VydmVyLiBUaGUgc3luYyBzZXJ2aWNlIGhhbmRsZXMgc2VydmVyIHJlc3BvbnNlcyxcbiAqIGluY2x1ZGluZyBtYXBwaW5nIGFueSByZXRyaWV2ZWQgaXRlbXMgdG8gYXBwbGljYXRpb24gc3RhdGUgdmlhIG1vZGVsIG1hbmFnZXIgbWFwcGluZy5cbiAqIEFmdGVyIGVhY2ggc3luYyByZXF1ZXN0LCBhbnkgY2hhbmdlcyBtYWRlIG9yIHJldHJpZXZlZCBhcmUgYWxzbyBwZXJzaXN0ZWQgbG9jYWxseS5cbiAqIFRoZSBzeW5jIHNlcnZpY2UgbGFyZ2VseSBkb2VzIG5vdCBwZXJmb3JtIGFueSB0YXNrIHVubGVzcyBpdCBpcyBjYWxsZWQgdXBvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFNOU3luY1NlcnZpY2UgZXh0ZW5kcyBQdXJlU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoaXRlbU1hbmFnZXIsIHNlc3Npb25NYW5hZ2VyLCBwcm90b2NvbFNlcnZpY2UsIHN0b3JhZ2VTZXJ2aWNlLCBtb2RlbE1hbmFnZXIsIGFwaVNlcnZpY2UsIGludGVydmFsKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMucmVzb2x2ZVF1ZXVlID0gW107XG4gICAgICAgIHRoaXMuc3Bhd25RdWV1ZSA9IFtdO1xuICAgICAgICAvKiBBIERvd25sb2FkRmlyc3Qgc3luYyBtdXN0IGFsd2F5cyBiZSB0aGUgZmlyc3Qgc3luYyBjb21wbGV0ZWQgKi9cbiAgICAgICAgdGhpcy5jb21wbGV0ZWRPbmxpbmVEb3dubG9hZEZpcnN0U3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLm1ham9yQ2hhbmdlVGhyZXNob2xkID0gREVGQVVMVF9NQUpPUl9DSEFOR0VfVEhSRVNIT0xEO1xuICAgICAgICB0aGlzLm1heERpc2NvcmRhbmNlID0gREVGQVVMVF9NQVhfRElTQ09SREFOQ0U7XG4gICAgICAgIHRoaXMubG9ja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGF0YWJhc2VMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgLyoqIENvbnRlbnQgdHlwZXMgYXBwZWFyaW5nIGZpcnN0IGFyZSBhbHdheXMgbWFwcGVkIGZpcnN0ICovXG4gICAgICAgIHRoaXMubG9jYWxMb2FkUHJpb3J0eSA9IFtcbiAgICAgICAgICAgIENvbnRlbnRUeXBlLkl0ZW1zS2V5LFxuICAgICAgICAgICAgQ29udGVudFR5cGUuVXNlclByZWZzLFxuICAgICAgICAgICAgQ29udGVudFR5cGUuUHJpdmlsZWdlcyxcbiAgICAgICAgICAgIENvbnRlbnRUeXBlLkNvbXBvbmVudCxcbiAgICAgICAgICAgIENvbnRlbnRUeXBlLlRoZW1lXG4gICAgICAgIF07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb24tZW5jcnlwdGVkIHR5cGVzIGFyZSBpdGVtcyB3aG9zZSB2YWx1ZXMgYSBzZXJ2ZXIgbXVzdCBiZSBhYmxlIHRvIHJlYWQuXG4gICAgICAgICAqIFRoZXNlIGluY2x1ZGUgc2VydmVyIGV4dGVuc2lvbnMgKHN1Y2ggYXMgYSBub3RlIGhpc3RvcnkgZW5kcG9pbnQpLCBhbmRcbiAgICAgICAgICogbXVsdGktZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGl0ZW1zLCB3aGljaCBpbmNsdWRlIGEgc2VjcmV0IHZhbHVlIHRoYXQgdGhlIHNlcnZlclxuICAgICAgICAgKiBuZWVkcyB0byBiZSBhYmxlIHRvIHJlYWQgaW4gb3JkZXIgdG8gZW5mb3JjZS5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubm9uRW5jcnlwdGVkVHlwZXMgPSBbXG4gICAgICAgICAgICBDb250ZW50VHlwZS5NZmEsXG4gICAgICAgICAgICBDb250ZW50VHlwZS5TZXJ2ZXJFeHRlbnNpb25cbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5pdGVtTWFuYWdlciA9IGl0ZW1NYW5hZ2VyO1xuICAgICAgICB0aGlzLnNlc3Npb25NYW5hZ2VyID0gc2Vzc2lvbk1hbmFnZXI7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gcHJvdG9jb2xTZXJ2aWNlO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IG1vZGVsTWFuYWdlcjtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHN0b3JhZ2VTZXJ2aWNlO1xuICAgICAgICB0aGlzLmFwaVNlcnZpY2UgPSBhcGlTZXJ2aWNlO1xuICAgICAgICB0aGlzLmludGVydmFsID0gaW50ZXJ2YWw7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0YXR1cygpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVTdGF0ZSgpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gbmV3bHkgY3JlYXRlZCAoYmVjYXVzZSBpdHMgbmV3IG9yIHdhcyBwcmV2aW91c2x5IGRlc3Ryb3llZClcbiAgICAgKiB3ZSB3YW50IHRvIHJlc2V0IGFueSBzeW5jIHRva2VucyB3ZSBoYXZlLlxuICAgICAqL1xuICAgIGFzeW5jIG9uTmV3RGF0YWJhc2VDcmVhdGVkKCkge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5nZXRMYXN0U3luY1Rva2VuKCkpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xlYXJTeW5jUG9zaXRpb25Ub2tlbnMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBkZWluaXQoKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuaXRlbU1hbmFnZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMucHJvdG9jb2xTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm1vZGVsTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5hcGlTZXJ2aWNlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmludGVydmFsID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLnN0YXRlLnJlc2V0KCk7XG4gICAgICAgIHRoaXMub3BTdGF0dXMucmVzZXQoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5vcFN0YXR1cyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zcGF3blF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgICAgIHN1cGVyLmRlaW5pdCgpO1xuICAgIH1cbiAgICBpbml0aWFsaXplU3RhdHVzKCkge1xuICAgICAgICB0aGlzLm9wU3RhdHVzID0gbmV3IFN5bmNPcFN0YXR1cyh0aGlzLmludGVydmFsLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW5pdGlhbGl6ZVN0YXRlKCkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3IFN5bmNTdGF0ZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudCA9PT0gU3luY0V2ZW50LkVudGVyT3V0T2ZTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuRW50ZXJPdXRPZlN5bmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT09IFN5bmNFdmVudC5FeGl0T3V0T2ZTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuRXhpdE91dE9mU3luYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIHRoaXMubWF4RGlzY29yZGFuY2UpO1xuICAgIH1cbiAgICBsb2NrU3luY2luZygpIHtcbiAgICAgICAgdGhpcy5sb2NrZWQgPSB0cnVlO1xuICAgIH1cbiAgICB1bmxvY2tTeW5jaW5nKCkge1xuICAgICAgICB0aGlzLmxvY2tlZCA9IGZhbHNlO1xuICAgIH1cbiAgICBpc091dE9mU3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuaXNPdXRPZlN5bmMoKTtcbiAgICB9XG4gICAgZ2V0TGFzdFN5bmNEYXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5sYXN0U3luY0RhdGU7XG4gICAgfVxuICAgIGdldFN0YXR1cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BTdGF0dXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENhbGxlZCBieSBhcHBsaWNhdGlvbiB3aGVuIHNpZ24gaW4gb3IgcmVnaXN0cmF0aW9uIG9jY3Vycy5cbiAgICAgKi9cbiAgICByZXNldFN5bmNTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5yZXNldCgpO1xuICAgIH1cbiAgICBpc0RhdGFiYXNlTG9hZGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhYmFzZUxvYWRlZDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVXNlZCBpbiB0YW5kZW0gd2l0aCBgbG9hZERhdGFiYXNlUGF5bG9hZHNgXG4gICAgICovXG4gICAgYXN5bmMgZ2V0RGF0YWJhc2VQYXlsb2FkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0QWxsUmF3UGF5bG9hZHMoKS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50LkRhdGFiYXNlUmVhZEVycm9yLCBlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByYXdQYXlsb2FkcyAtIHVzZSBgZ2V0RGF0YWJhc2VQYXlsb2Fkc2AgdG8gZ2V0IHRoZXNlIHBheWxvYWRzLlxuICAgICAqIFRoZXkgYXJlIGZlZCBhcyBhIHBhcmFtZXRlciBzbyB0aGF0IGNhbGxlcnMgZG9uJ3QgaGF2ZSB0byBhd2FpdCB0aGUgbG9hZGluZywgYnV0IGNhblxuICAgICAqIGF3YWl0IGdldHRpbmcgdGhlIHJhdyBwYXlsb2FkcyBmcm9tIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBhc3luYyBsb2FkRGF0YWJhc2VQYXlsb2FkcyhyYXdQYXlsb2Fkcykge1xuICAgICAgICBpZiAodGhpcy5kYXRhYmFzZUxvYWRlZCkge1xuICAgICAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gaW5pdGlhbGl6ZSBhbHJlYWR5IGluaXRpYWxpemVkIGxvY2FsIGRhdGFiYXNlLic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJhd1BheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZUxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLm9wU3RhdHVzLnNldERhdGFiYXNlTG9hZFN0YXR1cygwLCAwLCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1bnNvcnRlZFBheWxvYWRzID0gcmF3UGF5bG9hZHMubWFwKChyYXdQYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QocmF3UGF5bG9hZCk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwYXlsb2FkcyA9IFNvcnRQYXlsb2Fkc0J5UmVjZW50QW5kQ29udGVudFByaW9yaXR5KHVuc29ydGVkUGF5bG9hZHMsIHRoaXMubG9jYWxMb2FkUHJpb3J0eSk7XG4gICAgICAgIC8qKiBEZWNyeXB0IGFuZCBtYXAgaXRlbXMga2V5cyBmaXJzdCAqL1xuICAgICAgICBjb25zdCBpdGVtc0tleXNQYXlsb2FkcyA9IHBheWxvYWRzLmZpbHRlcigocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQuY29udGVudF90eXBlID09PSBDb250ZW50VHlwZS5JdGVtc0tleTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN1YnRyYWN0RnJvbUFycmF5KHBheWxvYWRzLCBpdGVtc0tleXNQYXlsb2Fkcyk7XG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZEl0ZW1zS2V5cyA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlXG4gICAgICAgICAgICAucGF5bG9hZHNCeURlY3J5cHRpbmdQYXlsb2FkcyhpdGVtc0tleXNQYXlsb2Fkcyk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhkZWNyeXB0ZWRJdGVtc0tleXMsIFBheWxvYWRTb3VyY2UuTG9jYWxSZXRyaWV2ZWQpO1xuICAgICAgICAvKiogTWFwIGluIGJhdGNoZXMgdG8gZ2l2ZSBpbnRlcmZhY2UgYSBjaGFuY2UgdG8gdXBkYXRlICovXG4gICAgICAgIGNvbnN0IHBheWxvYWRDb3VudCA9IHBheWxvYWRzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYmF0Y2hTaXplID0gREVGQVVMVF9EQVRBQkFTRV9MT0FEX0JBVENIX1NJWkU7XG4gICAgICAgIGNvbnN0IG51bUJhdGNoZXMgPSBNYXRoLmNlaWwocGF5bG9hZENvdW50IC8gYmF0Y2hTaXplKTtcbiAgICAgICAgZm9yIChsZXQgYmF0Y2hJbmRleCA9IDA7IGJhdGNoSW5kZXggPCBudW1CYXRjaGVzOyBiYXRjaEluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQb3NpdGlvbiA9IGJhdGNoSW5kZXggKiBiYXRjaFNpemU7XG4gICAgICAgICAgICBjb25zdCBiYXRjaCA9IHBheWxvYWRzLnNsaWNlKGN1cnJlbnRQb3NpdGlvbiwgY3VycmVudFBvc2l0aW9uICsgYmF0Y2hTaXplKTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnBheWxvYWRzQnlEZWNyeXB0aW5nUGF5bG9hZHMoYmF0Y2gpO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKGRlY3J5cHRlZCwgUGF5bG9hZFNvdXJjZS5Mb2NhbFJldHJpZXZlZCk7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5Mb2NhbERhdGFJbmNyZW1lbnRhbExvYWQpO1xuICAgICAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREYXRhYmFzZUxvYWRTdGF0dXMoY3VycmVudFBvc2l0aW9uLCBwYXlsb2FkQ291bnQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREYXRhYmFzZUxvYWRTdGF0dXMoMCwgMCwgdHJ1ZSk7XG4gICAgfVxuICAgIGFzeW5jIHNldExhc3RTeW5jVG9rZW4odG9rZW4pIHtcbiAgICAgICAgdGhpcy5zeW5jVG9rZW4gPSB0b2tlbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5MYXN0U3luY1Rva2VuLCB0b2tlbik7XG4gICAgfVxuICAgIGFzeW5jIHNldFBhZ2luYXRpb25Ub2tlbih0b2tlbikge1xuICAgICAgICB0aGlzLmN1cnNvclRva2VuID0gdG9rZW47XG4gICAgICAgIGlmICh0b2tlbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0VmFsdWUoU3RvcmFnZUtleS5QYWdpbmF0aW9uVG9rZW4sIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuUGFnaW5hdGlvblRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBnZXRMYXN0U3luY1Rva2VuKCkge1xuICAgICAgICBpZiAoIXRoaXMuc3luY1Rva2VuKSB7XG4gICAgICAgICAgICB0aGlzLnN5bmNUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0VmFsdWUoU3RvcmFnZUtleS5MYXN0U3luY1Rva2VuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zeW5jVG9rZW47XG4gICAgfVxuICAgIGFzeW5jIGdldFBhZ2luYXRpb25Ub2tlbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnNvclRva2VuKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnNvclRva2VuID0gYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5nZXRWYWx1ZShTdG9yYWdlS2V5LlBhZ2luYXRpb25Ub2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3Vyc29yVG9rZW47XG4gICAgfVxuICAgIGFzeW5jIGNsZWFyU3luY1Bvc2l0aW9uVG9rZW5zKCkge1xuICAgICAgICB0aGlzLnN5bmNUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jdXJzb3JUb2tlbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVWYWx1ZShTdG9yYWdlS2V5Lkxhc3RTeW5jVG9rZW4pO1xuICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVZhbHVlKFN0b3JhZ2VLZXkuUGFnaW5hdGlvblRva2VuKTtcbiAgICB9XG4gICAgYXN5bmMgaXRlbXNOZWVkaW5nU3luYygpIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1NYW5hZ2VyLmdldERpcnR5SXRlbXMoKTtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICBhc3luYyBhbHRlcm5hdGVVdWlkRm9ySXRlbSh1dWlkKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1NYW5hZ2VyLmZpbmRJdGVtKHV1aWQpO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QoaXRlbSk7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQYXlsb2Fkc0J5QWx0ZXJuYXRpbmdVdWlkKHBheWxvYWQsIHRoaXMubW9kZWxNYW5hZ2VyLmdldE1hc3RlckNvbGxlY3Rpb24oKSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhyZXN1bHRzLCBQYXlsb2FkU291cmNlLkxvY2FsQ2hhbmdlZCk7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdFBheWxvYWRzKHJlc3VsdHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtTWFuYWdlci5maW5kSXRlbShyZXN1bHRzWzBdLnV1aWQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBNYXJrIGFsbCBpdGVtcyBhcyBkaXJ0eSBhbmQgbmVlZGluZyBzeW5jLCB0aGVuIHBlcnNpc3QgdG8gc3RvcmFnZS5cbiAgICAgKiBAcGFyYW0gYWx0ZXJuYXRlVXVpZHNcbiAgICAgKiBJbiB0aGUgY2FzZSBvZiBzaWduaW5nIGluIGFuZCBtZXJnaW5nIGxvY2FsIGRhdGEsIHdlIGFsdGVybmF0ZSBVVUlEc1xuICAgICAqIHRvIGF2b2lkIG92ZXJ3cml0aW5nIGRhdGEgYSB1c2VyIG1heSByZXRyaWV2ZSB0aGF0IGhhcyB0aGUgc2FtZSBVVUlELlxuICAgICAqIEFsdGVybmF0aW5nIGhlcmUgZm9yY2VzIHVzIHRvIHRvIGNyZWF0ZSBkdXBsaWNhdGVzIG9mIHRoZSBpdGVtcyBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGFzeW5jIG1hcmtBbGxJdGVtc0FzTmVlZGluZ1N5bmMoYWx0ZXJuYXRlVXVpZHMpIHtcbiAgICAgICAgdGhpcy5sb2coJ01hcmtpbmcgYWxsIGl0ZW1zIGFzIG5lZWRpbmcgc3luYycpO1xuICAgICAgICBpZiAoYWx0ZXJuYXRlVXVpZHMpIHtcbiAgICAgICAgICAgIC8qKiBNYWtlIGEgY29weSBvZiB0aGUgYXJyYXksIGFzIGFsdGVybmF0aW5nIHV1aWQgd2lsbCBhZmZlY3QgYXJyYXkgKi9cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5pdGVtcy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIWl0ZW0uZXJyb3JEZWNyeXB0aW5nO1xuICAgICAgICAgICAgfSkuc2xpY2UoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYWx0ZXJuYXRlVXVpZEZvckl0ZW0oaXRlbS51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbU1hbmFnZXIuaXRlbXM7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gQ3JlYXRlTWF4UGF5bG9hZEZyb21BbnlPYmplY3QoaXRlbSwge1xuICAgICAgICAgICAgICAgIGRpcnR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGRpcnRpZWREYXRlOiBuZXcgRGF0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiB0aGUgcGF5bG9hZHMgdGhhdCBuZWVkIGxvY2FsIHBlcnNpc3RlbmNlLCBiZWZvcmUgYmVnaW5uaW5nIGEgc3luYy5cbiAgICAgKiBUaGlzIHdheSwgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGNsb3NlZCBiZWZvcmUgYSBzeW5jIHJlcXVlc3QgY29tcGxldGVzLFxuICAgICAqIHBlbmRpbmcgZGF0YSB3aWxsIGJlIHNhdmVkIHRvIGRpc2ssIGFuZCBzeW5jZWQgdGhlIG5leHQgdGltZSB0aGUgYXBwIG9wZW5zLlxuICAgICAqL1xuICAgIGFzeW5jIHBvcFBheWxvYWRzTmVlZGluZ1ByZVN5bmNTYXZlKGZyb20pIHtcbiAgICAgICAgY29uc3QgbGFzdFByZVN5bmNTYXZlID0gdGhpcy5zdGF0ZS5sYXN0UHJlU3luY1NhdmU7XG4gICAgICAgIGlmICghbGFzdFByZVN5bmNTYXZlKSB7XG4gICAgICAgICAgICByZXR1cm4gZnJvbTtcbiAgICAgICAgfVxuICAgICAgICAvKiogZGlydGllZERhdGUgY2FuIGJlIG51bGwgaWYgdGhlIHBheWxvYWQgd2FzIGNyZWF0ZWQgYXMgZGlydHkgKi9cbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBmcm9tLmZpbHRlcigoY2FuZGlkYXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIWNhbmRpZGF0ZS5kaXJ0aWVkRGF0ZSB8fCBjYW5kaWRhdGUuZGlydGllZERhdGUgPiBsYXN0UHJlU3luY1NhdmU7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN0YXRlLmxhc3RQcmVTeW5jU2F2ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkcztcbiAgICB9XG4gICAgcXVldWVTdHJhdGVneVJlc29sdmVPbk5leHQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmVRdWV1ZS5wdXNoKHsgcmVzb2x2ZSwgcmVqZWN0IH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcXVldWVTdHJhdGVneUZvcmNlU3Bhd25OZXcob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zcGF3blF1ZXVlLnB1c2goeyByZXNvbHZlLCByZWplY3QsIG9wdGlvbnMgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBGb3IgdGltaW5nIHN0cmF0ZWd5IFN5bmNRdWV1ZVN0cmF0ZWd5LkZvcmNlU3Bhd25OZXcsIHdlIHdpbGwgZXhlY3V0ZSBhIHdob2xlIHN5bmMgcmVxdWVzdFxuICAgICAqIGFuZCBwb3AgaXQgZnJvbSB0aGUgcXVldWUuXG4gICAgICovXG4gICAgcG9wU3Bhd25RdWV1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3Bhd25RdWV1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnNwYXduUXVldWVbMF07XG4gICAgICAgIHJlbW92ZUZyb21JbmRleCh0aGlzLnNwYXduUXVldWUsIDApO1xuICAgICAgICB0aGlzLmxvZygnU3luY2luZyBhZ2FpbiBmcm9tIHNwYXduIHF1ZXVlJyk7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoe1xuICAgICAgICAgICAgcXVldWVTdHJhdGVneTogU3luY1F1ZXVlU3RyYXRlZ3kuRm9yY2VTcGF3bk5ldyxcbiAgICAgICAgICAgIHNvdXJjZTogU3luY1NvdXJjZXMuU3Bhd25RdWV1ZSxcbiAgICAgICAgICAgIC4uLnByb21pc2Uub3B0aW9uc1xuICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2VydGFpbiBjb250ZW50IHR5cGVzIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkIHdoZW4gc2VuZGluZyB0byBzZXJ2ZXIsXG4gICAgICogc3VjaCBhcyBzZXJ2ZXIgZXh0ZW5zaW9uc1xuICAgICAqL1xuICAgIGFzeW5jIHBheWxvYWRzQnlQcmVwYXJpbmdGb3JTZXJ2ZXIocGF5bG9hZHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRzQnlFbmNyeXB0aW5nUGF5bG9hZHMocGF5bG9hZHMsIChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gKHRoaXMubm9uRW5jcnlwdGVkVHlwZXMuaW5jbHVkZXMocGF5bG9hZC5jb250ZW50X3R5cGUpXG4gICAgICAgICAgICAgICAgPyBFbmNyeXB0aW9uSW50ZW50LlN5bmNEZWNyeXB0ZWRcbiAgICAgICAgICAgICAgICA6IEVuY3J5cHRpb25JbnRlbnQuU3luYyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzeW5jKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAvKiogSGFyZCBsb2NraW5nLCBkb2VzIG5vdCBhcHBseSB0byBsb2NraW5nIG1vZGVzIGJlbG93ICovXG4gICAgICAgIGlmICh0aGlzLmxvY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ1N5bmMgTG9ja2VkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFsbG93cyB1cyB0byBsb2NrIHRoaXMgZnVuY3Rpb24gZnJvbSB0cmlnZ2VyaW5nIGR1cGxpY2F0ZSBuZXR3b3JrIHJlcXVlc3RzLlxuICAgICAgICAgKiBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGxvY2tpbmcgY2hlY2tzOlxuICAgICAgICAgKiAxLiBzeW5jTG9ja2VkKCk6IElmIGEgY2FsbCB0byBzeW5jKCkgY2FsbCBoYXMgYmVndW4gcHJlcGFyaW5nIHRvIGJlIHNlbnQgdG8gdGhlIHNlcnZlci5cbiAgICAgICAgICogICAgICAgICAgICAgICAgICBidXQgbm90IHlldCBjb21wbGV0ZWQgYWxsIHRoZSBjb2RlIGJlbG93IGJlZm9yZSByZWFjaGluZyB0aGF0IHBvaW50LlxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgIChiZWZvcmUgcmVhY2hpbmcgb3BTdGF0dXMuc2V0RGlkQmVnaW4pLlxuICAgICAgICAgKiAyLiBzeW5jT3BJblByb2dyZXNzOiBJZiBhIHN5bmMoKSBjYWxsIGlzIGluIGZsaWdodCB0byB0aGUgc2VydmVyLlxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3Qgc3luY0xvY2tlZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN5bmNMb2NrO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjYXB0dXJlTG9jayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY0xvY2sgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZWxlYXNlTG9jayA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3luY0xvY2sgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgc3luY0luUHJvZ3Jlc3MgPSB0aGlzLm9wU3RhdHVzLnN5bmNJblByb2dyZXNzO1xuICAgICAgICBjb25zdCBkYXRhYmFzZUxvYWRlZCA9IHRoaXMuZGF0YWJhc2VMb2FkZWQ7XG4gICAgICAgIGNvbnN0IGNhbkV4ZWN1dGVTeW5jID0gIXN5bmNMb2NrZWQoKTtcbiAgICAgICAgaWYgKGNhbkV4ZWN1dGVTeW5jICYmIGRhdGFiYXNlTG9hZGVkICYmICFzeW5jSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgY2FwdHVyZUxvY2soKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMuc291cmNlKSB7XG4gICAgICAgICAgICBvcHRpb25zLnNvdXJjZSA9IFN5bmNTb3VyY2VzLkV4dGVybmFsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gYXdhaXQgdGhpcy5pdGVtc05lZWRpbmdTeW5jKCk7XG4gICAgICAgIC8qKiBJdGVtcyB0aGF0IGhhdmUgbmV2ZXIgYmVlbiBzeW5jZWQgYW5kIG1hcmtlZCBhcyBkZWxldGVkIHNob3VsZCBub3QgYmVcbiAgICAgICAgICogdXBsb2FkZWQgdG8gc2VydmVyLCBhbmQgaW5zdGVhZCBkZWxldGVkIGRpcmVjdGx5IGFmdGVyIHN5bmMgY29tcGxldGlvbi4gKi9cbiAgICAgICAgY29uc3QgbmV2ZXJTeW5jZWREZWxldGVkID0gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5uZXZlclN5bmNlZCAmJiBpdGVtLmRlbGV0ZWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBzdWJ0cmFjdEZyb21BcnJheShpdGVtcywgbmV2ZXJTeW5jZWREZWxldGVkKTtcbiAgICAgICAgY29uc3QgZGVjcnlwdGVkUGF5bG9hZHMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgcGF5bG9hZHNOZWVkaW5nU2F2ZSA9IGF3YWl0IHRoaXMucG9wUGF5bG9hZHNOZWVkaW5nUHJlU3luY1NhdmUoZGVjcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkc05lZWRpbmdTYXZlKTtcbiAgICAgICAgLyoqIFRoZSBpbiB0aW1lIHJlc29sdmUgcXVldWUgcmVmZXJzIHRvIGFueSBzeW5jIHJlcXVlc3RzIHRoYXQgd2VyZSBtYWRlIHdoaWxlIHdlIHN0aWxsXG4gICAgICAgICAqIGhhdmUgbm90IHNlbnQgb3V0IHRoZSBjdXJyZW50IHJlcXVlc3QuIFNvLCBhbnl0aGluZyBpbiB0aGUgaW4gdGltZSByZXNvbHZlIHF1ZXVlXG4gICAgICAgICAqIHdpbGwgaGF2ZSBtYWRlIGl0IGluIHRpbWUgdG8gcGlnZ3liYWNrIG9uIHRoZSBjdXJyZW50IHJlcXVlc3QuIEFueXRoaW5nIHRoYXQgY29tZXNcbiAgICAgICAgICogX2FmdGVyXyBpbi10aW1lIHdpbGwgc2NoZWR1bGUgYSBuZXcgc3luYyByZXF1ZXN0LiAqL1xuICAgICAgICBjb25zdCBpblRpbWVSZXNvbHZlUXVldWUgPSB0aGlzLnJlc29sdmVRdWV1ZS5zbGljZSgpO1xuICAgICAgICBjb25zdCB1c2VTdHJhdGVneSA9ICghaXNOdWxsT3JVbmRlZmluZWQob3B0aW9ucy5xdWV1ZVN0cmF0ZWd5KVxuICAgICAgICAgICAgPyBvcHRpb25zLnF1ZXVlU3RyYXRlZ3lcbiAgICAgICAgICAgIDogU3luY1F1ZXVlU3RyYXRlZ3kuUmVzb2x2ZU9uTmV4dCk7XG4gICAgICAgIGlmIChzeW5jSW5Qcm9ncmVzcyB8fCAhZGF0YWJhc2VMb2FkZWQgfHwgIWNhbkV4ZWN1dGVTeW5jKSB7XG4gICAgICAgICAgICB0aGlzLmxvZyghY2FuRXhlY3V0ZVN5bmMgPyAnQW5vdGhlciBmdW5jdGlvbiBjYWxsIGhhcyBiZWd1biBwcmVwYXJpbmcgZm9yIHN5bmMuJyA6XG4gICAgICAgICAgICAgICAgc3luY0luUHJvZ3Jlc3MgP1xuICAgICAgICAgICAgICAgICAgICAnQXR0ZW1wdGluZyB0byBzeW5jIHdoaWxlIGV4aXN0aW5nIHN5bmMgaW4gcHJvZ3Jlc3MuJyA6XG4gICAgICAgICAgICAgICAgICAgICdBdHRlbXB0aW5nIHRvIHN5bmMgYmVmb3JlIGxvY2FsIGRhdGFiYXNlIGhhcyBsb2FkZWQuJyk7XG4gICAgICAgICAgICBpZiAodXNlU3RyYXRlZ3kgPT09IFN5bmNRdWV1ZVN0cmF0ZWd5LlJlc29sdmVPbk5leHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZVN0cmF0ZWd5UmVzb2x2ZU9uTmV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodXNlU3RyYXRlZ3kgPT09IFN5bmNRdWV1ZVN0cmF0ZWd5LkZvcmNlU3Bhd25OZXcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZVN0cmF0ZWd5Rm9yY2VTcGF3bk5ldyh7XG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IG9wdGlvbnMubW9kZSxcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tJbnRlZ3JpdHk6IG9wdGlvbnMuY2hlY2tJbnRlZ3JpdHksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogb3B0aW9ucy5zb3VyY2VcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGBVbmhhbmRsZWQgdGltaW5nIHN0cmF0ZWd5ICR7dXNlU3RyYXRlZ3l9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvKiogTG9jayBzeW5jaW5nIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIGluIHByb2dyZXNzIGFib3ZlICovXG4gICAgICAgIHRoaXMub3BTdGF0dXMuc2V0RGlkQmVnaW4oKTtcbiAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuU3luY1dpbGxCZWdpbik7XG4gICAgICAgIC8qIFN1YnRyYWN0IGZyb20gYXJyYXkgYXMgc29vbiBhcyB3ZSdyZSBzdXJlIHRoZXknbGwgYmUgY2FsbGVkLlxuICAgICAgICByZXNvbHZlcyBhcmUgdHJpZ2dlcmVkIGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiBjYWxsICovXG4gICAgICAgIHN1YnRyYWN0RnJvbUFycmF5KHRoaXMucmVzb2x2ZVF1ZXVlLCBpblRpbWVSZXNvbHZlUXVldWUpO1xuICAgICAgICAvKiogbGFzdFN5bmNCZWdhbiBtdXN0IGJlIHNldCAqYWZ0ZXIqIGFueSBwb2ludCB3ZSBtYXkgaGF2ZSByZXR1cm5lZCBhYm92ZS5cbiAgICAgICAgICogU2V0dGluZyB0aGlzIHZhbHVlIG1lYW5zIHRoZSBpdGVtIHdhcyAxMDAlIHNlbnQgdG8gdGhlIHNlcnZlci4gKi9cbiAgICAgICAgY29uc3QgYmVnaW5EYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaXRlbU1hbmFnZXIuY2hhbmdlSXRlbXMoVXVpZHMoaXRlbXMpLCAobXV0YXRvcikgPT4ge1xuICAgICAgICAgICAgICAgIG11dGF0b3IubGFzdFN5bmNCZWdhbiA9IGJlZ2luRGF0ZTtcbiAgICAgICAgICAgIH0sIE11dGF0aW9uVHlwZS5Ob25EaXJ0eWluZywgUGF5bG9hZFNvdXJjZS5QcmVTeW5jU2F2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb25saW5lID0gdGhpcy5zZXNzaW9uTWFuYWdlci5vbmxpbmUoKTtcbiAgICAgICAgY29uc3QgdXNlTW9kZSA9ICgodHJ5TW9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9ubGluZSAmJiAhdGhpcy5jb21wbGV0ZWRPbmxpbmVEb3dubG9hZEZpcnN0U3luYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBTeW5jTW9kZXMuRG93bmxvYWRGaXJzdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc051bGxPclVuZGVmaW5lZCh0cnlNb2RlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnlNb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFN5bmNNb2Rlcy5EZWZhdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KShvcHRpb25zLm1vZGUpO1xuICAgICAgICBsZXQgdXBsb2FkUGF5bG9hZHMgPSBbXTtcbiAgICAgICAgaWYgKHVzZU1vZGUgPT09IFN5bmNNb2Rlcy5EZWZhdWx0KSB7XG4gICAgICAgICAgICBpZiAob25saW5lICYmICF0aGlzLmNvbXBsZXRlZE9ubGluZURvd25sb2FkRmlyc3RTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gZGVmYXVsdCBtb2RlIHN5bmMgd2l0aG91dCBoYXZpbmcgY29tcGxldGVkIGluaXRpYWwuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob25saW5lKSB7XG4gICAgICAgICAgICAgICAgdXBsb2FkUGF5bG9hZHMgPSBhd2FpdCB0aGlzLnBheWxvYWRzQnlQcmVwYXJpbmdGb3JTZXJ2ZXIoZGVjcnlwdGVkUGF5bG9hZHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXBsb2FkUGF5bG9hZHMgPSBkZWNyeXB0ZWRQYXlsb2FkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1c2VNb2RlID09PSBTeW5jTW9kZXMuRG93bmxvYWRGaXJzdCkge1xuICAgICAgICAgICAgdXBsb2FkUGF5bG9hZHMgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgb3BlcmF0aW9uO1xuICAgICAgICBpZiAob25saW5lKSB7XG4gICAgICAgICAgICBvcGVyYXRpb24gPSBhd2FpdCB0aGlzLnN5bmNPbmxpbmVPcGVyYXRpb24odXBsb2FkUGF5bG9hZHMsIG9wdGlvbnMuY2hlY2tJbnRlZ3JpdHksIG9wdGlvbnMuc291cmNlLCB1c2VNb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbiA9IGF3YWl0IHRoaXMuc3luY09mZmxpbmVPcGVyYXRpb24odXBsb2FkUGF5bG9hZHMsIG9wdGlvbnMuc291cmNlLCB1c2VNb2RlKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBvcGVyYXRpb24ucnVuKCk7XG4gICAgICAgIHRoaXMub3BTdGF0dXMuc2V0RGlkRW5kKCk7XG4gICAgICAgIHJlbGVhc2VMb2NrKCk7XG4gICAgICAgIGlmICh0aGlzLm9wU3RhdHVzLmhhc0Vycm9yKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wU3RhdHVzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuc3RhdGUubGFzdFN5bmNEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgaWYgKG9wZXJhdGlvbiBpbnN0YW5jZW9mIEFjY291bnRTeW5jT3BlcmF0aW9uICYmXG4gICAgICAgICAgICBvcGVyYXRpb24ubnVtYmVyT2ZJdGVtc0ludm9sdmVkID49IHRoaXMubWFqb3JDaGFuZ2VUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50Lk1ham9yRGF0YUNoYW5nZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5ldmVyU3luY2VkRGVsZXRlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZU5ldmVyU3luY2VkRGVsZXRlZChuZXZlclN5bmNlZERlbGV0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VNb2RlICE9PSBTeW5jTW9kZXMuRG93bmxvYWRGaXJzdCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuRnVsbFN5bmNDb21wbGV0ZWQsIHsgc291cmNlOiBvcHRpb25zLnNvdXJjZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlTW9kZSA9PT0gU3luY01vZGVzLkRvd25sb2FkRmlyc3QpIHtcbiAgICAgICAgICAgIGlmIChvbmxpbmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlZE9ubGluZURvd25sb2FkRmlyc3RTeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50LkRvd25sb2FkRmlyc3RTeW5jQ29tcGxldGVkKTtcbiAgICAgICAgICAgIC8qKiBQZXJmb3JtIHJlZ3VsYXIgc3luYyBub3cgdGhhdCB3ZSd2ZSBmaW5pc2hlZCBkb3dubG9hZCBmaXJzdCBzeW5jICovXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN5bmMoe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogU3luY1NvdXJjZXMuQWZ0ZXJEb3dubG9hZEZpcnN0LFxuICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgIGF3YWl0QWxsOiBvcHRpb25zLmF3YWl0QWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdGhpcy5wb3BTcGF3blF1ZXVlKCkgJiYgdGhpcy5yZXNvbHZlUXVldWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5sb2coJ1N5bmNpbmcgYWdhaW4gZnJvbSByZXNvbHZlIHF1ZXVlJyk7XG4gICAgICAgICAgICAvKiogTm8gbmVlZCB0byBhd2FpdC4gKi9cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLnN5bmMoe1xuICAgICAgICAgICAgICAgIHNvdXJjZTogU3luY1NvdXJjZXMuUmVzb2x2ZVF1ZXVlLFxuICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiBvcHRpb25zLmNoZWNrSW50ZWdyaXR5XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmF3YWl0QWxsKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICgoYXdhaXQgdGhpcy5pdGVtc05lZWRpbmdTeW5jKCkpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQXMgcGFydCBvZiB0aGUganVzdCBjb25jbHVkZWQgc3luYyBvcGVyYXRpb24sIG1vcmUgaXRlbXMgbWF5IGhhdmVcbiAgICAgICAgICAgICAqIGJlZW4gZGlydGllZCAobGlrZSBjb25mbGljdHMpLCBhbmQgdGhlIGNhbGxlciBtYXkgd2FudCB0byBhd2FpdCB0aGVcbiAgICAgICAgICAgICAqIGZ1bGwgcmVzb2x1dGlvbiBvZiB0aGVzZSBpdGVtcy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5zeW5jKHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IFN5bmNTb3VyY2VzLk1vcmVEaXJ0eUl0ZW1zLFxuICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiBvcHRpb25zLmNoZWNrSW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgIGF3YWl0QWxsOiBvcHRpb25zLmF3YWl0QWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcGVyYXRpb24gaW5zdGFuY2VvZiBBY2NvdW50U3luY09wZXJhdGlvbiAmJiBvcGVyYXRpb24uY2hlY2tJbnRlZ3JpdHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLm5lZWRzU3luYyAmJiBvcGVyYXRpb24uZG9uZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nKCdTeW5jaW5nIGFnYWluIGZyb20gaW50ZWdyaXR5IGNoZWNrJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBxdWV1ZVN0cmF0ZWd5OiBTeW5jUXVldWVTdHJhdGVneS5Gb3JjZVNwYXduTmV3LFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IFN5bmNTb3VyY2VzLkludGVncml0eUNoZWNrLFxuICAgICAgICAgICAgICAgICAgICBhd2FpdEFsbDogb3B0aW9ucy5hd2FpdEFsbFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmF3YWl0QWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHByb21pc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZS5jbGVhckludGVncml0eUhhc2hlcygpO1xuICAgICAgICB9XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3IgdGltaW5nIHN0cmF0ZWd5IFN5bmNRdWV1ZVN0cmF0ZWd5LlJlc29sdmVPbk5leHQuXG4gICAgICAgICAqIEV4ZWN1dGUgYW55IGNhbGxiYWNrcyBwdWxsZWQgYmVmb3JlIHRoaXMgc3luYyByZXF1ZXN0IGJlZ2FuLlxuICAgICAgICAgKiBDYWxsaW5nIHJlc29sdmUgb24gdGhlIGNhbGxiYWNrcyBzaG91bGQgYmUgdGhlIGxhc3QgdGhpbmcgd2UgZG8gaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgICAgICogdG8gc2ltdWxhdGUgY2FsbGluZyAuc3luYyBhcyBpZiBpdCB3ZW50IHRocm91Z2ggc3RyYWlnaHQgdG8gdGhlIGVuZCB3aXRob3V0IGhhdmluZ1xuICAgICAgICAgKiB0byBiZSBxdWV1ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIGluVGltZVJlc29sdmVRdWV1ZSkge1xuICAgICAgICAgICAgY2FsbGJhY2sucmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHN5bmNPbmxpbmVPcGVyYXRpb24ocGF5bG9hZHMsIGNoZWNrSW50ZWdyaXR5LCBzb3VyY2UsIG1vZGUpIHtcbiAgICAgICAgdGhpcy5sb2coJ1N5bmNpbmcgb25saW5lIHVzZXInLCAnc291cmNlOicsIHNvdXJjZSwgXCJpbnRlZ3JpdHkgY2hlY2tcIiwgY2hlY2tJbnRlZ3JpdHksICdtb2RlOicsIG1vZGUsICdwYXlsb2FkczonLCBwYXlsb2Fkcyk7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IG5ldyBBY2NvdW50U3luY09wZXJhdGlvbihwYXlsb2FkcywgYXN5bmMgKHR5cGUsIHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gU3luY1NpZ25hbC5SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5oYXNFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZUVycm9yU2VydmVyUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdWNjZXNzU2VydmVyUmVzcG9uc2Uob3BlcmF0aW9uLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PT0gU3luY1NpZ25hbC5TdGF0dXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTdGF0dXNDaGFuZ2Uob3BlcmF0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgYXdhaXQgdGhpcy5nZXRMYXN0U3luY1Rva2VuKCksIGF3YWl0IHRoaXMuZ2V0UGFnaW5hdGlvblRva2VuKCksIGNoZWNrSW50ZWdyaXR5LCB0aGlzLmFwaVNlcnZpY2UpO1xuICAgICAgICByZXR1cm4gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBhc3luYyBzeW5jT2ZmbGluZU9wZXJhdGlvbihwYXlsb2Fkcywgc291cmNlLCBtb2RlKSB7XG4gICAgICAgIHRoaXMubG9nKCdTeW5jaW5nIG9mZmxpbmUgdXNlcicsICdzb3VyY2U6Jywgc291cmNlLCAnbW9kZTonLCBtb2RlLCAncGF5bG9hZHM6JywgcGF5bG9hZHMpO1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBuZXcgT2ZmbGluZVN5bmNPcGVyYXRpb24ocGF5bG9hZHMsIGFzeW5jICh0eXBlLCByZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09IFN5bmNTaWduYWwuUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZU9mZmxpbmVSZXNwb25zZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb3BlcmF0aW9uO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVTdGF0dXNDaGFuZ2Uob3BlcmF0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBlbmRpbmdVcGxvYWRDb3VudCA9IG9wZXJhdGlvbi5wZW5kaW5nVXBsb2FkQ291bnQoKTtcbiAgICAgICAgY29uc3QgdG90YWxVcGxvYWRDb3VudCA9IG9wZXJhdGlvbi50b3RhbFVwbG9hZENvdW50KCk7XG4gICAgICAgIGNvbnN0IGNvbXBsZXRlZFVwbG9hZENvdW50ID0gdG90YWxVcGxvYWRDb3VudCAtIHBlbmRpbmdVcGxvYWRDb3VudDtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXRVcGxvYWRTdGF0dXMoY29tcGxldGVkVXBsb2FkQ291bnQsIHRvdGFsVXBsb2FkQ291bnQpO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVPZmZsaW5lUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5sb2coJ09mZmxpbmUgU3luYyBSZXNwb25zZScsIHJlc3BvbnNlLnJhd1Jlc3BvbnNlKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZHNUb0VtaXQgPSByZXNwb25zZS5zYXZlZFBheWxvYWRzO1xuICAgICAgICBpZiAocGF5bG9hZHNUb0VtaXQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdFBheWxvYWRzKHBheWxvYWRzVG9FbWl0LCBQYXlsb2FkU291cmNlLkxvY2FsU2F2ZWQpO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZHNUb1BlcnNpc3QgPSB0aGlzLm1vZGVsTWFuYWdlci5maW5kKFV1aWRzKHBheWxvYWRzVG9FbWl0KSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkc1RvUGVyc2lzdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVsZXRlZFBheWxvYWRzID0gcmVzcG9uc2UuZGVsZXRlZFBheWxvYWRzO1xuICAgICAgICBpZiAoZGVsZXRlZFBheWxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlUGF5bG9hZHMoZGVsZXRlZFBheWxvYWRzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wU3RhdHVzLmNsZWFyRXJyb3IoKTtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREb3dubG9hZFN0YXR1cyhyZXNwb25zZS5yZXRyaWV2ZWRQYXlsb2Fkcy5sZW5ndGgpO1xuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5TaW5nbGVTeW5jQ29tcGxldGVkLCByZXNwb25zZSk7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZUVycm9yU2VydmVyUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICAgICAgdGhpcy5sb2coJ1N5bmMgRXJyb3InLCByZXNwb25zZSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IElOVkFMSURfU0VTU0lPTl9SRVNQT05TRV9TVEFUVVMpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RXZlbnQoU3luY0V2ZW50LkludmFsaWRTZXNzaW9uKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wU3RhdHVzLnNldEVycm9yKHJlc3BvbnNlLmVycm9yKTtcbiAgICAgICAgdGhpcy5ub3RpZnlFdmVudChTeW5jRXZlbnQuU3luY0Vycm9yLCByZXNwb25zZS5lcnJvcik7XG4gICAgfVxuICAgIGFzeW5jIGhhbmRsZVN1Y2Nlc3NTZXJ2ZXJSZXNwb25zZShvcGVyYXRpb24sIHJlc3BvbnNlKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaW11bGF0ZV9sYXRlbmN5KSB7XG4gICAgICAgICAgICBhd2FpdCBzbGVlcCh0aGlzLl9zaW11bGF0ZV9sYXRlbmN5LmxhdGVuY3kpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nKCdPbmxpbmUgU3luYyBSZXNwb25zZScsIHJlc3BvbnNlLnJhd1Jlc3BvbnNlKTtcbiAgICAgICAgdGhpcy5zZXRMYXN0U3luY1Rva2VuKHJlc3BvbnNlLmxhc3RTeW5jVG9rZW4pO1xuICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25Ub2tlbihyZXNwb25zZS5wYWdpbmF0aW9uVG9rZW4pO1xuICAgICAgICB0aGlzLm9wU3RhdHVzLmNsZWFyRXJyb3IoKTtcbiAgICAgICAgdGhpcy5vcFN0YXR1cy5zZXREb3dubG9hZFN0YXR1cyhyZXNwb25zZS5yZXRyaWV2ZWRQYXlsb2Fkcy5sZW5ndGgpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRQYXlsb2FkcyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHBheWxvYWQgb2YgcmVzcG9uc2UuYWxsUHJvY2Vzc2VkUGF5bG9hZHMpIHtcbiAgICAgICAgICAgIGlmIChwYXlsb2FkLmRlbGV0ZWQgfHwgIXBheWxvYWQuZmllbGRzLmluY2x1ZGVzKFBheWxvYWRGaWVsZC5Db250ZW50KSkge1xuICAgICAgICAgICAgICAgIC8qIERlbGV0ZWQgcGF5bG9hZHMsIGFuZCBzb21lIHBheWxvYWQgdHlwZXNcbiAgICAgICAgICAgICAgICAgIGRvIG5vdCBjb250aWFpbiBjb250ZW50IChsaWtlIHJlbW90ZSBzYXZlZCkgKi9cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IGF3YWl0IHRoaXMucHJvdG9jb2xTZXJ2aWNlLnBheWxvYWRCeURlY3J5cHRpbmdQYXlsb2FkKHBheWxvYWQpO1xuICAgICAgICAgICAgZGVjcnlwdGVkUGF5bG9hZHMucHVzaChkZWNyeXB0ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hc3RlckNvbGxlY3Rpb24gPSB0aGlzLm1vZGVsTWFuYWdlci5nZXRNYXN0ZXJDb2xsZWN0aW9uKCk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVyID0gbmV3IFN5bmNSZXNwb25zZVJlc29sdmVyKHJlc3BvbnNlLCBkZWNyeXB0ZWRQYXlsb2FkcywgbWFzdGVyQ29sbGVjdGlvbiwgb3BlcmF0aW9uLnBheWxvYWRzU2F2ZWRPclNhdmluZyk7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gYXdhaXQgcmVzb2x2ZXIuY29sbGVjdGlvbnNCeVByb2Nlc3NpbmdSZXNwb25zZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRDb2xsZWN0aW9uKGNvbGxlY3Rpb24pO1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZHNUb1BlcnNpc3QgPSB0aGlzLm1vZGVsTWFuYWdlci5maW5kKGNvbGxlY3Rpb24udXVpZHMoKSk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkc1RvUGVyc2lzdCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVsZXRlZFBheWxvYWRzID0gcmVzcG9uc2UuZGVsZXRlZFBheWxvYWRzO1xuICAgICAgICBpZiAoZGVsZXRlZFBheWxvYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlUGF5bG9hZHMoZGVsZXRlZFBheWxvYWRzKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5TaW5nbGVTeW5jQ29tcGxldGVkLCByZXNwb25zZSk7XG4gICAgICAgIGlmIChyZXNwb25zZS5jaGVja0ludGVncml0eSkge1xuICAgICAgICAgICAgY29uc3QgY2xpZW50SGFzaCA9IGF3YWl0IHRoaXMuY29tcHV0ZURhdGFJbnRlZ3JpdHlIYXNoKCk7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXRlLnNldEludGVncml0eUhhc2hlcyhjbGllbnRIYXNoLCByZXNwb25zZS5pbnRlZ3JpdHlIYXNoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBJdGVtcyB0aGF0IGhhdmUgbmV2ZXIgYmVlbiBzeW5jZWQgYW5kIG1hcmtlZCBhcyBkZWxldGVkIHNob3VsZCBiZSBjbGVhcmVkXG4gICAgICogYXMgZGlydHksIG1hcHBlZCwgdGhlbiByZW1vdmVkIGZyb20gc3RvcmFnZS5cbiAgICAgKi9cbiAgICBhc3luYyBoYW5kbGVOZXZlclN5bmNlZERlbGV0ZWQoaXRlbXMpIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLnBheWxvYWRSZXByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICAgICAgZGlydHk6IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRoaXMubW9kZWxNYW5hZ2VyLmVtaXRQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5Mb2NhbENoYW5nZWQpO1xuICAgICAgICBhd2FpdCB0aGlzLnBlcnNpc3RQYXlsb2FkcyhwYXlsb2Fkcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBwYXlsb2FkcyBUaGUgZGVjcnlwdGVkIHBheWxvYWRzIHRvIHBlcnNpc3RcbiAgICAgKi9cbiAgICBhc3luYyBwZXJzaXN0UGF5bG9hZHMocGF5bG9hZHMpIHtcbiAgICAgICAgaWYgKHBheWxvYWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmVQYXlsb2FkcyhwYXlsb2FkcykuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeUV2ZW50KFN5bmNFdmVudC5EYXRhYmFzZVdyaXRlRXJyb3IsIGVycm9yKTtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgZGVsZXRlUGF5bG9hZHMocGF5bG9hZHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGVyc2lzdFBheWxvYWRzKHBheWxvYWRzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ29tcHV0ZXMgYSBoYXNoIG9mIGFsbCBpdGVtcyB1cGRhdGVkX2F0IHN0cmluZ3Mgam9pbmVkIHdpdGggYSBjb21tYS5cbiAgICAgKiBUaGUgc2VydmVyIHdpbGwgYWxzbyBkbyB0aGUgc2FtZSwgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNsaWVudCB2YWx1ZXMgbWF0Y2ggc2VydmVyIHZhbHVlcy5cbiAgICAgKiBAcmV0dXJucyBBIFNIQTI1NiBkaWdlc3Qgc3RyaW5nIChoZXgpLlxuICAgICAqL1xuICAgIGFzeW5jIGNvbXB1dGVEYXRhSW50ZWdyaXR5SGFzaCgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtTWFuYWdlci5ub25EZWxldGVkSXRlbXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBiLnVwZGF0ZWRfYXQuZ2V0VGltZSgpIC0gYS51cGRhdGVkX2F0LmdldFRpbWUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZGF0ZXMgPSBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0udXBkYXRlZEF0VGltZXN0YW1wKCkpO1xuICAgICAgICAgICAgY29uc3Qgc3RyaW5nID0gZGF0ZXMuam9pbignLCcpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2xTZXJ2aWNlLmNyeXB0by5zaGEyNTYoc3RyaW5nKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29tcHV0aW5nIGRhdGEgaW50ZWdyaXR5IGhhc2gnLCBlKTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRG93bmxvYWRzIGFsbCBpdGVtcyBhbmQgbWFwcyB0byBsY29hbCBpdGVtcyB0byBhdHRlbXB0IHJlc29sdmUgb3V0LW9mLXN5bmMgc3RhdGVcbiAgICAgKi9cbiAgICBhc3luYyByZXNvbHZlT3V0T2ZTeW5jKCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVyID0gbmV3IEFjY291bnREb3dubG9hZGVyKHRoaXMuYXBpU2VydmljZSwgdGhpcy5wcm90b2NvbFNlcnZpY2UsIHVuZGVmaW5lZCwgJ3Jlc29sdmUtb3V0LW9mLXN5bmMnKTtcbiAgICAgICAgY29uc3QgcGF5bG9hZHMgPSBhd2FpdCBkb3dubG9hZGVyLnJ1bigpO1xuICAgICAgICBjb25zdCBkZWx0YSA9IG5ldyBEZWx0YU91dE9mU3luYyh0aGlzLm1vZGVsTWFuYWdlci5nZXRNYXN0ZXJDb2xsZWN0aW9uKCksIEltbXV0YWJsZVBheWxvYWRDb2xsZWN0aW9uLldpdGhQYXlsb2FkcyhwYXlsb2FkcywgUGF5bG9hZFNvdXJjZS5SZW1vdGVSZXRyaWV2ZWQpKTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IGF3YWl0IGRlbHRhLnJlc3VsdGluZ0NvbGxlY3Rpb24oKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tb2RlbE1hbmFnZXIuZW1pdENvbGxlY3Rpb24oY29sbGVjdGlvbik7XG4gICAgICAgIGF3YWl0IHRoaXMucGVyc2lzdFBheWxvYWRzKGNvbGxlY3Rpb24ucGF5bG9hZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jKHtcbiAgICAgICAgICAgIGNoZWNrSW50ZWdyaXR5OiB0cnVlLFxuICAgICAgICAgICAgc291cmNlOiBTeW5jU291cmNlcy5SZXNvbHZlT3V0T2ZTeW5jXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhc3luYyBzdGF0ZWxlc3NEb3dubG9hZEFsbEl0ZW1zKGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCkge1xuICAgICAgICBjb25zdCBkb3dubG9hZGVyID0gbmV3IEFjY291bnREb3dubG9hZGVyKHRoaXMuYXBpU2VydmljZSwgdGhpcy5wcm90b2NvbFNlcnZpY2UsIGNvbnRlbnRUeXBlLCBjdXN0b21FdmVudCk7XG4gICAgICAgIGNvbnN0IHBheWxvYWRzID0gYXdhaXQgZG93bmxvYWRlci5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWRzLm1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIENyZWF0ZUl0ZW1Gcm9tUGF5bG9hZChwYXlsb2FkKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKiBAdW5pdF90ZXN0aW5nICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgIHV0X3NldERhdGFiYXNlTG9hZGVkKGxvYWRlZCkge1xuICAgICAgICB0aGlzLmRhdGFiYXNlTG9hZGVkID0gbG9hZGVkO1xuICAgIH1cbiAgICAvKiogQHVuaXRfdGVzdGluZyAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjYW1lbGNhc2VcbiAgICB1dF9jbGVhckxhc3RTeW5jRGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zdGF0ZS5sYXN0U3luY0RhdGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKiBAdW5pdF90ZXN0aW5nICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgIHV0X2JlZ2luTGF0ZW5jeVNpbXVsYXRvcihsYXRlbmN5KSB7XG4gICAgICAgIHRoaXMuX3NpbXVsYXRlX2xhdGVuY3kgPSB7XG4gICAgICAgICAgICBsYXRlbmN5OiBsYXRlbmN5IHx8IDEwMDAsXG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuICAgIC8qKiBAdW5pdF90ZXN0aW5nICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuICAgIHV0X2VuZExhdGVuY3lTaW11bGF0b3IoKSB7XG4gICAgICAgIHRoaXMuX3NpbXVsYXRlX2xhdGVuY3kgPSBudWxsO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7O0FBSUE7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBT0E7Ozs7Ozs7QUFNQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQXJDQTtBQXFDQTtBQUNBOzs7Ozs7QUF2Q0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUEvREE7QUFBQTtBQUFBO0FBZ0VBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQXBFQTtBQUFBO0FBQUE7QUFxRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUE5RUE7QUFBQTtBQUFBO0FBZ0ZBO0FBQ0E7QUFqRkE7QUFBQTtBQUFBO0FBbUZBO0FBQ0E7QUFwRkE7QUFBQTtBQUFBO0FBc0ZBO0FBQ0E7QUF2RkE7QUFBQTtBQUFBO0FBeUZBO0FBQ0E7QUExRkE7QUFBQTtBQUFBO0FBNEZBO0FBQ0E7QUFDQTs7OztBQTlGQTtBQUFBO0FBQUE7QUFrR0E7QUFDQTtBQW5HQTtBQUFBO0FBQUE7QUFxR0E7QUFDQTtBQUNBOzs7O0FBdkdBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE0R0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQS9HQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBZ0hBOzs7Ozs7QUFoSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF5SEE7QUFDQTtBQTNIQTtBQUNBO0FBREE7QUE4SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUF0SUE7QUFBQTtBQUNBO0FBREE7QUF1SUE7QUF2SUE7QUFBQTtBQUNBO0FBREE7QUEwSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL0lBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQThJQTtBQUNBO0FBaEpBO0FBQUE7QUFDQTtBQURBO0FBaUpBO0FBakpBO0FBQUE7QUFDQTtBQURBO0FBb0pBO0FBQ0E7QUFDQTtBQXRKQTtBQThJQTtBQTlJQTtBQUFBO0FBQ0E7QUFEQTtBQXVKQTtBQUNBO0FBQ0E7QUF6SkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEySkE7QUEzSkE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0pBO0FBQ0E7QUFoS0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQXlLQTtBQUNBO0FBMUtBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBK0tBO0FBQ0E7QUFoTEE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFvTEE7QUFDQTtBQXJMQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUEwTEE7QUExTEE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUE4TEE7QUFDQTtBQS9MQTtBQUFBO0FBQ0E7QUFEQTtBQWdNQTtBQWhNQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFxTUE7Ozs7Ozs7O0FBck1BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNk1BO0FBQ0E7QUE5TUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQThNQTtBQUNBO0FBQ0E7QUFDQTtBQWxOQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFrTkE7QUFuTkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUF1TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUE3TkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBaU9BOzs7Ozs7QUFqT0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBdU9BO0FBQ0E7QUF4T0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQTJPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBL09BO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa1BBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQXRQQTtBQUFBO0FBQUE7QUF1UEE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUE1UEE7QUFBQTtBQUFBO0FBaVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBalJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUF1UkE7QUFHQTtBQUNBO0FBM1JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBNFJBO0FBQ0E7QUE3UkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQThSQTtBQS9SQTtBQUNBO0FBREE7QUFrU0E7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBNVRBO0FBQUE7QUFDQTtBQURBO0FBNFRBO0FBQ0E7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXJVQTtBQUFBO0FBQ0E7QUFEQTtBQXNVQTtBQXRVQTtBQUFBO0FBQ0E7QUFEQTtBQXdVQTs7OztBQUlBO0FBQ0E7QUFDQTtBQTlVQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBZ1ZBO0FBQ0E7QUFsVkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQTBWQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBMVZBO0FBQUE7QUFDQTtBQURBO0FBbVdBO0FBQ0E7QUFDQTtBQUNBOzs7QUFFQTtBQUNBOzs7QUFFQTtBQUNBO0FBNVdBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBOFdBO0FBQ0E7QUFDQTtBQWhYQTtBQWlYQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBOVhBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBbVlBO0FBbllBO0FBQUE7QUFDQTtBQURBO0FBc1lBO0FBQ0E7QUF2WUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQXlZQTtBQUNBO0FBQ0E7QUFDQTtBQTVZQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQThZQTtBQTlZQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBaVpBO0FBQ0E7QUFsWkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQW9aQTtBQUNBO0FBQ0E7QUF0WkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQXlaQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQS9aQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1hQTtBQUFBO0FBQ0E7QUFwYUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBcWFBO0FBQ0E7QUFDQTtBQUNBO0FBemFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQTRhQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBNWFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBaWJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBQ0E7QUFyYkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQW1jQTtBQUNBO0FBQ0E7QUFIQTtBQUNBO0FBbmNBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXljQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQUNBO0FBNWNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBdWRBO0FBQ0E7QUF4ZEE7QUF5ZEE7Ozs7Ozs7QUF6ZEE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQStkQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBbmVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcWVBO0FBcmVBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzZUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUF2ZUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQXNlQTtBQXRlQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFzZkE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBdmZBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFuZ0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxZ0JBO0FBQ0E7QUFDQTtBQXZnQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBeWdCQTtBQXpnQkE7QUFBQTtBQUNBO0FBREE7QUE0Z0JBO0FBQ0E7QUE3Z0JBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQWdoQkE7QUFDQTtBQWpoQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxaEJBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQTNoQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBZ2lCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFyaUJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQXFpQkE7QUFDQTtBQXZpQkE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBNGlCQTtBQUNBO0FBQ0E7QUE5aUJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBK2lCQTtBQUNBO0FBaGpCQTtBQUFBO0FBQ0E7QUFEQTtBQWlqQkE7QUFqakJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQWlqQkE7QUFsakJBO0FBQUE7QUFDQTtBQURBO0FBb2pCQTtBQXBqQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUNBO0FBREE7QUF1akJBO0FBQ0E7QUF4akJBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBNmpCQTtBQTdqQkE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWlrQkE7Ozs7O0FBamtCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFza0JBO0FBQ0E7QUFDQTtBQURBO0FBR0E7QUExa0JBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQThrQkE7Ozs7QUE5a0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFEQTtBQUFBO0FBc2xCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBemxCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBNmxCQTs7Ozs7O0FBN2xCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9tQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUF4bUJBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUE0bUJBO0FBNW1CQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQWduQkE7Ozs7QUFobkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW9uQkE7QUFwbkJBO0FBQUE7QUFDQTtBQURBO0FBcW5CQTtBQUNBO0FBdG5CQTtBQUFBO0FBQ0E7QUFEQTtBQXVuQkE7QUF2bkJBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQTJuQkE7QUFDQTtBQUZBO0FBQ0E7QUEzbkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnb0JBO0FBaG9CQTtBQUFBO0FBQ0E7QUFEQTtBQWlvQkE7QUFqb0JBO0FBbW9CQTtBQUNBO0FBQ0E7QUFyb0JBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFzb0JBO0FBQ0E7QUFDQTtBQXhvQkE7QUFBQTtBQUFBO0FBeW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBN29CQTtBQUFBO0FBQUE7QUE4b0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFscEJBO0FBQUE7QUFBQTtBQW1wQkE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQTFwQkE7QUFBQTtBQUFBO0FBMnBCQTtBQUNBO0FBNXBCQTtBQUNBO0FBREE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/sync_service.ts\n')},"./lib/services/sync/sync_state.ts": /*!*****************************************!*\ !*** ./lib/services/sync/sync_state.ts ***! \*****************************************/ /*! exports provided: SyncState */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SyncState", function() { return SyncState; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/services/sync/events */ "./lib/services/sync/events.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\nvar SyncState = /*#__PURE__*/function () {\n function SyncState(receiver, maxDiscordance) {\n _classCallCheck(this, SyncState);\n\n this.discordance = 0;\n this.outOfSync = false;\n this.receiver = receiver;\n this.maxDiscordance = maxDiscordance;\n this.reset();\n }\n\n _createClass(SyncState, [{\n key: "isOutOfSync",\n value: function isOutOfSync() {\n return this.outOfSync;\n }\n }, {\n key: "reset",\n value: function reset() {\n this.lastPreSyncSave = undefined;\n this.lastSyncDate = undefined;\n this.discordance = 0;\n this.outOfSync = false;\n }\n }, {\n key: "getLastClientIntegrityHash",\n value: function getLastClientIntegrityHash() {\n return this.lastClientHash;\n }\n }, {\n key: "clearIntegrityHashes",\n value: function clearIntegrityHashes() {\n this.lastClientHash = undefined;\n this.lastServerHash = undefined;\n }\n }, {\n key: "setIntegrityHashes",\n value: function () {\n var _setIntegrityHashes = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(clientHash, serverHash) {\n var isInSync;\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.lastClientHash = clientHash;\n this.lastServerHash = serverHash;\n isInSync = !serverHash || serverHash.length === 0 || !clientHash || clientHash === serverHash;\n\n if (isInSync) {\n if (this.outOfSync) {\n this.outOfSync = false;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].ExitOutOfSync);\n }\n\n this.discordance = 0;\n } else {\n this.discordance++;\n\n if (this.discordance >= this.maxDiscordance && !this.outOfSync) {\n this.outOfSync = true;\n this.receiver(_Lib_services_sync_events__WEBPACK_IMPORTED_MODULE_1__["SyncEvent"].EnterOutOfSync);\n }\n }\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setIntegrityHashes(_x, _x2) {\n return _setIntegrityHashes.apply(this, arguments);\n }\n\n return setIntegrityHashes;\n }()\n }, {\n key: "needsSync",\n get: function get() {\n return this.discordance > 0 && this.discordance < this.maxDiscordance;\n }\n }]);\n\n return SyncState;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy9zeW5jX3N0YXRlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3NlcnZpY2VzL3N5bmMvc3luY19zdGF0ZS50cz8zZjA3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN5bmNFdmVudCB9IGZyb20gJ0BMaWIvc2VydmljZXMvc3luYy9ldmVudHMnO1xuZXhwb3J0IGNsYXNzIFN5bmNTdGF0ZSB7XG4gICAgY29uc3RydWN0b3IocmVjZWl2ZXIsIG1heERpc2NvcmRhbmNlKSB7XG4gICAgICAgIHRoaXMuZGlzY29yZGFuY2UgPSAwO1xuICAgICAgICB0aGlzLm91dE9mU3luYyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlY2VpdmVyID0gcmVjZWl2ZXI7XG4gICAgICAgIHRoaXMubWF4RGlzY29yZGFuY2UgPSBtYXhEaXNjb3JkYW5jZTtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgIH1cbiAgICBpc091dE9mU3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3V0T2ZTeW5jO1xuICAgIH1cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5sYXN0UHJlU3luY1NhdmUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubGFzdFN5bmNEYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmRpc2NvcmRhbmNlID0gMDtcbiAgICAgICAgdGhpcy5vdXRPZlN5bmMgPSBmYWxzZTtcbiAgICB9XG4gICAgZ2V0IG5lZWRzU3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzY29yZGFuY2UgPiAwXG4gICAgICAgICAgICAmJiB0aGlzLmRpc2NvcmRhbmNlIDwgdGhpcy5tYXhEaXNjb3JkYW5jZTtcbiAgICB9XG4gICAgZ2V0TGFzdENsaWVudEludGVncml0eUhhc2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhc3RDbGllbnRIYXNoO1xuICAgIH1cbiAgICBjbGVhckludGVncml0eUhhc2hlcygpIHtcbiAgICAgICAgdGhpcy5sYXN0Q2xpZW50SGFzaCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5sYXN0U2VydmVySGFzaCA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgYXN5bmMgc2V0SW50ZWdyaXR5SGFzaGVzKGNsaWVudEhhc2gsIHNlcnZlckhhc2gpIHtcbiAgICAgICAgdGhpcy5sYXN0Q2xpZW50SGFzaCA9IGNsaWVudEhhc2g7XG4gICAgICAgIHRoaXMubGFzdFNlcnZlckhhc2ggPSBzZXJ2ZXJIYXNoO1xuICAgICAgICBjb25zdCBpc0luU3luYyA9ICgoIXNlcnZlckhhc2ggfHwgc2VydmVySGFzaC5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAhY2xpZW50SGFzaCB8fFxuICAgICAgICAgICAgY2xpZW50SGFzaCA9PT0gc2VydmVySGFzaCk7XG4gICAgICAgIGlmIChpc0luU3luYykge1xuICAgICAgICAgICAgaWYgKHRoaXMub3V0T2ZTeW5jKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vdXRPZlN5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlY2VpdmVyKFN5bmNFdmVudC5FeGl0T3V0T2ZTeW5jKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGlzY29yZGFuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNjb3JkYW5jZSsrO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlzY29yZGFuY2UgPj0gdGhpcy5tYXhEaXNjb3JkYW5jZSAmJiAhdGhpcy5vdXRPZlN5bmMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm91dE9mU3luYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlaXZlcihTeW5jRXZlbnQuRW50ZXJPdXRPZlN5bmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQVNBO0FBQ0E7QUFWQTtBQUFBO0FBQUE7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBaEJBO0FBQUE7QUFBQTtBQXNCQTtBQUNBO0FBdkJBO0FBQUE7QUFBQTtBQXlCQTtBQUNBO0FBQ0E7QUEzQkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBNkJBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFoREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWtCQTtBQUVBO0FBcEJBO0FBQ0E7QUFEQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./lib/services/sync/sync_state.ts\n')},"./lib/services/sync/utils.ts": /*!************************************!*\ !*** ./lib/services/sync/utils.ts ***! \************************************/ /*! exports provided: SortPayloadsByRecentAndContentPriority */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortPayloadsByRecentAndContentPriority", function() { return SortPayloadsByRecentAndContentPriority; });\n/**\n * Sorts payloads according by most recently modified first, according to the priority,\n * whereby the earlier a content_type appears in the priorityList,\n * the earlier it will appear in the resulting sorted array.\n */\nfunction SortPayloadsByRecentAndContentPriority(payloads, priorityList) {\n return payloads.sort(function (a, b) {\n var dateResult = new Date(b.updated_at).getTime() - new Date(a.updated_at).getTime();\n var aPriority = 0;\n var bPriority = 0;\n\n if (priorityList) {\n aPriority = priorityList.indexOf(a.content_type);\n bPriority = priorityList.indexOf(b.content_type);\n\n if (aPriority === -1) {\n /** Not found in list, not prioritized. Set it to max value */\n aPriority = priorityList.length;\n }\n\n if (bPriority === -1) {\n /** Not found in list, not prioritized. Set it to max value */\n bPriority = priorityList.length;\n }\n }\n\n if (aPriority === bPriority) {\n return dateResult;\n }\n\n if (aPriority < bPriority) {\n return -1;\n } else {\n return 1;\n }\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc2VydmljZXMvc3luYy91dGlscy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi9zZXJ2aWNlcy9zeW5jL3V0aWxzLnRzPzEwNjQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gICogU29ydHMgcGF5bG9hZHMgYWNjb3JkaW5nIGJ5IG1vc3QgcmVjZW50bHkgbW9kaWZpZWQgZmlyc3QsIGFjY29yZGluZyB0byB0aGUgcHJpb3JpdHksXG4gICogd2hlcmVieSB0aGUgZWFybGllciBhIGNvbnRlbnRfdHlwZSBhcHBlYXJzIGluIHRoZSBwcmlvcml0eUxpc3QsXG4gICogdGhlIGVhcmxpZXIgaXQgd2lsbCBhcHBlYXIgaW4gdGhlIHJlc3VsdGluZyBzb3J0ZWQgYXJyYXkuXG4gICovXG5leHBvcnQgZnVuY3Rpb24gU29ydFBheWxvYWRzQnlSZWNlbnRBbmRDb250ZW50UHJpb3JpdHkocGF5bG9hZHMsIHByaW9yaXR5TGlzdCkge1xuICAgIHJldHVybiBwYXlsb2Fkcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGVSZXN1bHQgPSBuZXcgRGF0ZShiLnVwZGF0ZWRfYXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEudXBkYXRlZF9hdCkuZ2V0VGltZSgpO1xuICAgICAgICBsZXQgYVByaW9yaXR5ID0gMDtcbiAgICAgICAgbGV0IGJQcmlvcml0eSA9IDA7XG4gICAgICAgIGlmIChwcmlvcml0eUxpc3QpIHtcbiAgICAgICAgICAgIGFQcmlvcml0eSA9IHByaW9yaXR5TGlzdC5pbmRleE9mKGEuY29udGVudF90eXBlKTtcbiAgICAgICAgICAgIGJQcmlvcml0eSA9IHByaW9yaXR5TGlzdC5pbmRleE9mKGIuY29udGVudF90eXBlKTtcbiAgICAgICAgICAgIGlmIChhUHJpb3JpdHkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLyoqIE5vdCBmb3VuZCBpbiBsaXN0LCBub3QgcHJpb3JpdGl6ZWQuIFNldCBpdCB0byBtYXggdmFsdWUgKi9cbiAgICAgICAgICAgICAgICBhUHJpb3JpdHkgPSBwcmlvcml0eUxpc3QubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJQcmlvcml0eSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvKiogTm90IGZvdW5kIGluIGxpc3QsIG5vdCBwcmlvcml0aXplZC4gU2V0IGl0IHRvIG1heCB2YWx1ZSAqL1xuICAgICAgICAgICAgICAgIGJQcmlvcml0eSA9IHByaW9yaXR5TGlzdC5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFQcmlvcml0eSA9PT0gYlByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZVJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYVByaW9yaXR5IDwgYlByaW9yaXR5KSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./lib/services/sync/utils.ts\n')},"./lib/stages.ts": /*!***********************!*\ !*** ./lib/stages.ts ***! \***********************/ /*! exports provided: ApplicationStage */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ApplicationStage", function() { return ApplicationStage; });\nvar ApplicationStage;\n\n(function (ApplicationStage) {\n ApplicationStage[ApplicationStage["PreparingForLaunch_0"] = 0] = "PreparingForLaunch_0";\n ApplicationStage[ApplicationStage["ReadyForLaunch_05"] = 0.5] = "ReadyForLaunch_05";\n ApplicationStage[ApplicationStage["StorageDecrypted_09"] = 0.9] = "StorageDecrypted_09";\n ApplicationStage[ApplicationStage["Launched_10"] = 1] = "Launched_10";\n ApplicationStage[ApplicationStage["LoadingDatabase_11"] = 1.1] = "LoadingDatabase_11";\n ApplicationStage[ApplicationStage["LoadedDatabase_12"] = 1.2] = "LoadedDatabase_12";\n ApplicationStage[ApplicationStage["FullSyncCompleted_13"] = 1.3] = "FullSyncCompleted_13";\n ApplicationStage[ApplicationStage["SignedIn_30"] = 3] = "SignedIn_30";\n})(ApplicationStage || (ApplicationStage = {}));\n\n;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc3RhZ2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3N0YWdlcy50cz85YWQ0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgQXBwbGljYXRpb25TdGFnZTtcbihmdW5jdGlvbiAoQXBwbGljYXRpb25TdGFnZSkge1xuICAgIEFwcGxpY2F0aW9uU3RhZ2VbQXBwbGljYXRpb25TdGFnZVtcIlByZXBhcmluZ0ZvckxhdW5jaF8wXCJdID0gMF0gPSBcIlByZXBhcmluZ0ZvckxhdW5jaF8wXCI7XG4gICAgQXBwbGljYXRpb25TdGFnZVtBcHBsaWNhdGlvblN0YWdlW1wiUmVhZHlGb3JMYXVuY2hfMDVcIl0gPSAwLjVdID0gXCJSZWFkeUZvckxhdW5jaF8wNVwiO1xuICAgIEFwcGxpY2F0aW9uU3RhZ2VbQXBwbGljYXRpb25TdGFnZVtcIlN0b3JhZ2VEZWNyeXB0ZWRfMDlcIl0gPSAwLjldID0gXCJTdG9yYWdlRGVjcnlwdGVkXzA5XCI7XG4gICAgQXBwbGljYXRpb25TdGFnZVtBcHBsaWNhdGlvblN0YWdlW1wiTGF1bmNoZWRfMTBcIl0gPSAxXSA9IFwiTGF1bmNoZWRfMTBcIjtcbiAgICBBcHBsaWNhdGlvblN0YWdlW0FwcGxpY2F0aW9uU3RhZ2VbXCJMb2FkaW5nRGF0YWJhc2VfMTFcIl0gPSAxLjFdID0gXCJMb2FkaW5nRGF0YWJhc2VfMTFcIjtcbiAgICBBcHBsaWNhdGlvblN0YWdlW0FwcGxpY2F0aW9uU3RhZ2VbXCJMb2FkZWREYXRhYmFzZV8xMlwiXSA9IDEuMl0gPSBcIkxvYWRlZERhdGFiYXNlXzEyXCI7XG4gICAgQXBwbGljYXRpb25TdGFnZVtBcHBsaWNhdGlvblN0YWdlW1wiRnVsbFN5bmNDb21wbGV0ZWRfMTNcIl0gPSAxLjNdID0gXCJGdWxsU3luY0NvbXBsZXRlZF8xM1wiO1xuICAgIEFwcGxpY2F0aW9uU3RhZ2VbQXBwbGljYXRpb25TdGFnZVtcIlNpZ25lZEluXzMwXCJdID0gM10gPSBcIlNpZ25lZEluXzMwXCI7XG59KShBcHBsaWNhdGlvblN0YWdlIHx8IChBcHBsaWNhdGlvblN0YWdlID0ge30pKTtcbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/stages.ts\n')},"./lib/storage_keys.ts": /*!*****************************!*\ !*** ./lib/storage_keys.ts ***! \*****************************/ /*! exports provided: RawStorageKey, StorageKey, namespacedKey */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RawStorageKey", function() { return RawStorageKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageKey", function() { return StorageKey; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "namespacedKey", function() { return namespacedKey; });\n/**\n * Unmanaged keys stored in root storage\n */\nvar RawStorageKey;\n\n(function (RawStorageKey) {\n RawStorageKey["StorageObject"] = "storage";\n /** Raw storage keys exist outside of StorageManager domain */\n\n RawStorageKey["LastMigrationTimestamp"] = "last_migration_timestamp";\n})(RawStorageKey || (RawStorageKey = {}));\n\n;\n/**\n * Keys used for retrieving and saving simple key/value pairs.\n * These keys are managed and are embedded inside RawStorageKey.StorageObject\n */\n\nvar StorageKey;\n\n(function (StorageKey) {\n StorageKey["RootKeyParams"] = "ROOT_KEY_PARAMS";\n StorageKey["WrappedRootKey"] = "WRAPPED_ROOT_KEY";\n StorageKey["RootKeyWrapperKeyParams"] = "ROOT_KEY_WRAPPER_KEY_PARAMS";\n StorageKey["Session"] = "session";\n StorageKey["User"] = "user";\n StorageKey["ServerHost"] = "server";\n StorageKey["LegacyUuid"] = "uuid";\n StorageKey["LastSyncToken"] = "syncToken";\n StorageKey["PaginationToken"] = "cursorToken";\n StorageKey["BiometricPrefs"] = "biometrics_prefs";\n StorageKey["MobilePasscodeTiming"] = "passcode_timing";\n StorageKey["PrivilegesExpirey"] = "SessionExpiresAtKey";\n StorageKey["PrivilegesSessionLength"] = "SessionLengthKey";\n StorageKey["SessionHistoryPersistable"] = "sessionHistory_persist";\n StorageKey["SessionHistoryRevisions"] = "sessionHistory_revisions";\n StorageKey["SessionHistoryOptimize"] = "sessionHistory_autoOptimize";\n})(StorageKey || (StorageKey = {}));\n\n;\nfunction namespacedKey(namespace, key) {\n if (namespace) {\n return "".concat(namespace, "-").concat(key);\n } else {\n return key;\n }\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvc3RvcmFnZV9rZXlzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbGliL3N0b3JhZ2Vfa2V5cy50cz9iYzI3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5tYW5hZ2VkIGtleXMgc3RvcmVkIGluIHJvb3Qgc3RvcmFnZVxuICovXG5leHBvcnQgdmFyIFJhd1N0b3JhZ2VLZXk7XG4oZnVuY3Rpb24gKFJhd1N0b3JhZ2VLZXkpIHtcbiAgICBSYXdTdG9yYWdlS2V5W1wiU3RvcmFnZU9iamVjdFwiXSA9IFwic3RvcmFnZVwiO1xuICAgIC8qKiBSYXcgc3RvcmFnZSBrZXlzIGV4aXN0IG91dHNpZGUgb2YgU3RvcmFnZU1hbmFnZXIgZG9tYWluICovXG4gICAgUmF3U3RvcmFnZUtleVtcIkxhc3RNaWdyYXRpb25UaW1lc3RhbXBcIl0gPSBcImxhc3RfbWlncmF0aW9uX3RpbWVzdGFtcFwiO1xufSkoUmF3U3RvcmFnZUtleSB8fCAoUmF3U3RvcmFnZUtleSA9IHt9KSk7XG47XG4vKipcbiAqIEtleXMgdXNlZCBmb3IgcmV0cmlldmluZyBhbmQgc2F2aW5nIHNpbXBsZSBrZXkvdmFsdWUgcGFpcnMuXG4gKiBUaGVzZSBrZXlzIGFyZSBtYW5hZ2VkIGFuZCBhcmUgZW1iZWRkZWQgaW5zaWRlIFJhd1N0b3JhZ2VLZXkuU3RvcmFnZU9iamVjdFxuICovXG5leHBvcnQgdmFyIFN0b3JhZ2VLZXk7XG4oZnVuY3Rpb24gKFN0b3JhZ2VLZXkpIHtcbiAgICBTdG9yYWdlS2V5W1wiUm9vdEtleVBhcmFtc1wiXSA9IFwiUk9PVF9LRVlfUEFSQU1TXCI7XG4gICAgU3RvcmFnZUtleVtcIldyYXBwZWRSb290S2V5XCJdID0gXCJXUkFQUEVEX1JPT1RfS0VZXCI7XG4gICAgU3RvcmFnZUtleVtcIlJvb3RLZXlXcmFwcGVyS2V5UGFyYW1zXCJdID0gXCJST09UX0tFWV9XUkFQUEVSX0tFWV9QQVJBTVNcIjtcbiAgICBTdG9yYWdlS2V5W1wiU2Vzc2lvblwiXSA9IFwic2Vzc2lvblwiO1xuICAgIFN0b3JhZ2VLZXlbXCJVc2VyXCJdID0gXCJ1c2VyXCI7XG4gICAgU3RvcmFnZUtleVtcIlNlcnZlckhvc3RcIl0gPSBcInNlcnZlclwiO1xuICAgIFN0b3JhZ2VLZXlbXCJMZWdhY3lVdWlkXCJdID0gXCJ1dWlkXCI7XG4gICAgU3RvcmFnZUtleVtcIkxhc3RTeW5jVG9rZW5cIl0gPSBcInN5bmNUb2tlblwiO1xuICAgIFN0b3JhZ2VLZXlbXCJQYWdpbmF0aW9uVG9rZW5cIl0gPSBcImN1cnNvclRva2VuXCI7XG4gICAgU3RvcmFnZUtleVtcIkJpb21ldHJpY1ByZWZzXCJdID0gXCJiaW9tZXRyaWNzX3ByZWZzXCI7XG4gICAgU3RvcmFnZUtleVtcIk1vYmlsZVBhc3Njb2RlVGltaW5nXCJdID0gXCJwYXNzY29kZV90aW1pbmdcIjtcbiAgICBTdG9yYWdlS2V5W1wiUHJpdmlsZWdlc0V4cGlyZXlcIl0gPSBcIlNlc3Npb25FeHBpcmVzQXRLZXlcIjtcbiAgICBTdG9yYWdlS2V5W1wiUHJpdmlsZWdlc1Nlc3Npb25MZW5ndGhcIl0gPSBcIlNlc3Npb25MZW5ndGhLZXlcIjtcbiAgICBTdG9yYWdlS2V5W1wiU2Vzc2lvbkhpc3RvcnlQZXJzaXN0YWJsZVwiXSA9IFwic2Vzc2lvbkhpc3RvcnlfcGVyc2lzdFwiO1xuICAgIFN0b3JhZ2VLZXlbXCJTZXNzaW9uSGlzdG9yeVJldmlzaW9uc1wiXSA9IFwic2Vzc2lvbkhpc3RvcnlfcmV2aXNpb25zXCI7XG4gICAgU3RvcmFnZUtleVtcIlNlc3Npb25IaXN0b3J5T3B0aW1pemVcIl0gPSBcInNlc3Npb25IaXN0b3J5X2F1dG9PcHRpbWl6ZVwiO1xufSkoU3RvcmFnZUtleSB8fCAoU3RvcmFnZUtleSA9IHt9KSk7XG47XG5leHBvcnQgZnVuY3Rpb24gbmFtZXNwYWNlZEtleShuYW1lc3BhY2UsIGtleSkge1xuICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgcmV0dXJuIGAke25hbWVzcGFjZX0tJHtrZXl9YDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/storage_keys.ts\n')},"./lib/utils.ts": /*!**********************!*\ !*** ./lib/utils.ts ***! \**********************/ /*! exports provided: getGlobalScope, dictToArray, isWebEnvironment, isWebCryptoAvailable, isReactNativeEnvironment, findInArray, searchArray, concatArrays, isObject, isFunction, isNullOrUndefined, isString, greaterOfTwoDates, uniqCombineObjArrays, uniqueArray, lastElement, extendArray, subtractFromArray, removeFromArray, addIfUnique, filterFromArray, arrayByDifference, compareValues, removeFromIndex, addAtIndex, arrayByRemovingFromIndex, objectToValueArray, sortedCopy, topLevelCompare, jsonParseEmbeddedKeys, omitInPlace, omitByCopy, joinPaths, Copy, deepMerge, pickByCopy, deepFreeze, hasGetter, truncateHexString, sleep, unreachable */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getGlobalScope", function() { return getGlobalScope; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dictToArray", function() { return dictToArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWebEnvironment", function() { return isWebEnvironment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWebCryptoAvailable", function() { return isWebCryptoAvailable; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isReactNativeEnvironment", function() { return isReactNativeEnvironment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findInArray", function() { return findInArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "searchArray", function() { return searchArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatArrays", function() { return concatArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNullOrUndefined", function() { return isNullOrUndefined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "greaterOfTwoDates", function() { return greaterOfTwoDates; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "uniqCombineObjArrays", function() { return uniqCombineObjArrays; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "uniqueArray", function() { return uniqueArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lastElement", function() { return lastElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extendArray", function() { return extendArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subtractFromArray", function() { return subtractFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromArray", function() { return removeFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addIfUnique", function() { return addIfUnique; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filterFromArray", function() { return filterFromArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayByDifference", function() { return arrayByDifference; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareValues", function() { return compareValues; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromIndex", function() { return removeFromIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addAtIndex", function() { return addAtIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayByRemovingFromIndex", function() { return arrayByRemovingFromIndex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "objectToValueArray", function() { return objectToValueArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortedCopy", function() { return sortedCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "topLevelCompare", function() { return topLevelCompare; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsonParseEmbeddedKeys", function() { return jsonParseEmbeddedKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "omitInPlace", function() { return omitInPlace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "omitByCopy", function() { return omitByCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "joinPaths", function() { return joinPaths; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Copy", function() { return Copy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepMerge", function() { return deepMerge; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pickByCopy", function() { return pickByCopy; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepFreeze", function() { return deepFreeze; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasGetter", function() { return hasGetter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "truncateHexString", function() { return truncateHexString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sleep", function() { return sleep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unreachable", function() { return unreachable; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lodash/remove */ "./node_modules/lodash/remove.js");\n/* harmony import */ var lodash_remove__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_remove__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js");\n/* harmony import */ var lodash_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_find__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var lodash_isArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash/isArray */ "./node_modules/lodash/isArray.js");\n/* harmony import */ var lodash_isArray__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(lodash_isArray__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/mergeWith */ "./node_modules/lodash/mergeWith.js");\n/* harmony import */ var lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/uniqWith */ "./node_modules/lodash/uniqWith.js");\n/* harmony import */ var lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/uniq */ "./node_modules/lodash/uniq.js");\n/* harmony import */ var lodash_uniq__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_uniq__WEBPACK_IMPORTED_MODULE_6__);\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\nfunction getGlobalScope() {\n return typeof window !== \'undefined\' ? window : typeof global !== \'undefined\' ? global : null;\n}\nfunction dictToArray(dict) {\n return Object.keys(dict).map(function (key) {\n return dict[key];\n });\n}\n/**\n * Whether we are in a web browser\n */\n\nfunction isWebEnvironment() {\n return getGlobalScope() !== null;\n}\n/**\n * Returns true if WebCrypto is available\n * @access public\n */\n\nfunction isWebCryptoAvailable() {\n // @ts-ignore documentMode does not exit in definitions but might exist on IE\n return isWebEnvironment() && !(document && document.documentMode) || /Edge/.test(navigator.userAgent) && window.crypto && !!window.crypto.subtle;\n}\n/**\n * Whether we are in React Native app\n */\n\nfunction isReactNativeEnvironment() {\n return typeof navigator !== \'undefined\' && navigator.product === \'ReactNative\';\n}\n/**\n * Searches array of objects for first object where object[key] === value\n * @returns Matching object or null if not found\n */\n\nfunction findInArray(array, key, value) {\n return array.find(function (item) {\n return item[key] === value;\n });\n}\n/**\n * Searches array of objects for first object where object[key] === value\n * @returns Matching object or null if not found\n */\n\nfunction searchArray(array, predicate) {\n return lodash_find__WEBPACK_IMPORTED_MODULE_2___default()(array, predicate);\n}\n/**\n * Searches array of objects for first object where object[key] === value\n * @returns Matching object or null if not found\n */\n\nfunction concatArrays() {\n var result = [];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n for (var _i = 0, _args = args; _i < _args.length; _i++) {\n var array = _args[_i];\n result = result.concat(array);\n }\n\n return result;\n}\n/**\n * @returns Whether the value is a function or object\n */\n\nfunction isObject(value) {\n if (value === null) {\n return false;\n }\n\n return typeof value === \'function\' || _typeof(value) === \'object\';\n}\n/**\n * @returns Whether the value is a function\n */\n\nfunction isFunction(value) {\n if (value === null) {\n return false;\n }\n\n return typeof value === \'function\';\n}\n/**\n * @returns True if the object is null or undefined, otherwise false\n */\n\nfunction isNullOrUndefined(value) {\n return value === null || value === undefined;\n}\n/**\n * @returns Whether the value is a string\n */\n\nfunction isString(value) {\n return typeof value === \'string\' || value instanceof String;\n}\n/**\n * @returns The greater of the two dates\n */\n\nfunction greaterOfTwoDates(dateA, dateB) {\n if (dateA > dateB) {\n return dateA;\n } else {\n return dateB;\n }\n}\n/**\n * Returns a new array containing only unique values by combining the two input arrays.\n * Elements are unique based on the values of `equalityKeys`.\n * @param equalityKeys - Keys to determine element equality\n * @returns Array containing unique values\n */\n\nfunction uniqCombineObjArrays(arrayA, arrayB, equalityKeys) {\n return lodash_uniqWith__WEBPACK_IMPORTED_MODULE_5___default()(arrayA.concat(arrayB), function (a, b) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = equalityKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (a[key] !== b[key]) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return true;\n });\n}\n/**\n * Returns a new array containing only unique values\n * @returns Array containing unique values\n */\n\nfunction uniqueArray(array) {\n return lodash_uniq__WEBPACK_IMPORTED_MODULE_6___default()(array);\n}\n/**\n * Returns the last element in the array.\n * @returns The last element in the array\n */\n\nfunction lastElement(array) {\n return array[array.length - 1];\n}\n/**\n * Adds all items from otherArray into inArray, in-place.\n * Does not return a value.\n */\n\nfunction extendArray(inArray, otherArray) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = otherArray[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var value = _step2.value;\n inArray.push(value);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n/**\n * Removes all items appearing in toSubtract from inArray, in-place\n * @param toSubtract - The list of items to remove from inArray\n */\n\nfunction subtractFromArray(inArray, toSubtract) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = toSubtract[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var value = _step3.value;\n removeFromArray(inArray, value);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n/**\n * Removes the first matching element of an array by strict equality.\n * If no matchin element is found, the array is left unchanged.\n */\n\nfunction removeFromArray(array, value) {\n var valueIndex = array.indexOf(value);\n\n if (valueIndex === -1) {\n return;\n }\n\n array.splice(valueIndex, 1);\n}\n/**\n * Adds the element to the array if the array does not already include the value.\n * The array is searched via array.indexOf\n */\n\nfunction addIfUnique(array, value) {\n if (!array.includes(value)) {\n array.push(value);\n }\n}\n/**\n * Removes an object from the array in-place by searching for an object where all the\n * key/values in predicate match with the candidate element.\n */\n\nfunction filterFromArray(array, predicate) {\n lodash_remove__WEBPACK_IMPORTED_MODULE_1___default()(array, predicate);\n}\n/**\n * Returns a new array by removing all elements in subtract from array\n */\n\nfunction arrayByDifference(array, subtract) {\n return array.filter(function (x) {\n return !subtract.includes(x);\n }).concat(subtract.filter(function (x) {\n return !array.includes(x);\n }));\n}\nfunction compareValues(left, right) {\n if (left && !right || !left && right) {\n return false;\n }\n\n if (left instanceof Date && right instanceof Date) {\n return left.getTime() === right.getTime();\n } else if (left instanceof String && right instanceof String) {\n return left === right;\n } else {\n return topLevelCompare(left, right);\n }\n}\n/**\n * Removes the value from the array at the given index, in-place.\n */\n\nfunction removeFromIndex(array, index) {\n array.splice(index, 1);\n}\n/**\n * Adds the value from the array at the given index, in-place.\n */\n\nfunction addAtIndex(array, element, index) {\n array.splice(index, 0, element);\n}\n/**\n * Returns a new array by removeing the value from the array at the given index\n */\n\nfunction arrayByRemovingFromIndex(array, index) {\n var copy = array.slice();\n removeFromIndex(copy, index);\n return copy;\n}\n/**\n * Returns an array where each element is the value of a top-level\n * object key.\n * Example: objectToValueArray({a: 1, b: 2}) returns [1, 2]\n */\n\nfunction objectToValueArray(object) {\n var values = [];\n\n for (var _i2 = 0, _Object$keys = Object.keys(object); _i2 < _Object$keys.length; _i2++) {\n var key = _Object$keys[_i2];\n values.push(object[key]);\n }\n\n return values;\n}\n/**\n * Returns a key-sorted copy of the object.\n * For example, sortedCopy({b: \'1\', a: \'2\'}) returns {a: \'2\', b: \'1\'}\n */\n\nfunction sortedCopy(object) {\n var keys = Object.keys(object).sort();\n var result = {};\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = keys[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var key = _step4.value;\n result[key] = object[key];\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return Copy(result);\n}\n/** Compares for equality by comparing top-level keys value equality (===) */\n\nfunction topLevelCompare(left, right) {\n if (!left && !right) {\n return true;\n }\n\n if (!left || !right) {\n return false;\n }\n\n var leftKeys = Object.keys(left);\n var rightKeys = Object.keys(right);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n for (var _i3 = 0, _leftKeys = leftKeys; _i3 < _leftKeys.length; _i3++) {\n var key = _leftKeys[_i3];\n\n if (left[key] !== right[key]) {\n return false;\n }\n }\n\n return true;\n}\n/**\n * Returns a new object by attempting to JSON.parse any top-level object keys.\n */\n\nfunction jsonParseEmbeddedKeys(object) {\n var result = {};\n\n for (var _i4 = 0, _Object$keys2 = Object.keys(object); _i4 < _Object$keys2.length; _i4++) {\n var key = _Object$keys2[_i4];\n var value = void 0;\n\n try {\n value = JSON.parse(object[key]);\n ;\n } catch (error) {\n value = object[key];\n }\n\n result[key] = value;\n }\n\n return result;\n}\n/**\n * Deletes keys of the input object.\n */\n\nfunction omitInPlace(object, keys) {\n if (!object) {\n return;\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = keys[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var key = _step5.value;\n delete object[key];\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n}\n/**\n * Creates a new object by omitting `keys` from `object`\n */\n\nfunction omitByCopy(object, keys) {\n var newObject = Object.assign({}, object);\n /**\n * Lodash\'s omit, which was previously used, seems to cause unexpected behavior\n * when payload is an ES6 item class. So we instead manually omit each key.\n */\n\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = keys[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var key = _step6.value;\n delete newObject[key];\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return != null) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n return newObject;\n}\n/**\n * Similiar to Node\'s path.join, this function combines an array of paths into\n * one resolved path.\n */\n\nfunction joinPaths() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args.map(function (part, i) {\n if (i === 0) {\n return part.trim().replace(/[\\/]*$/g, \'\');\n } else {\n return part.trim().replace(/(^[\\/]*|[\\/]*$)/g, \'\');\n }\n }).filter(function (x) {\n return x.length;\n }).join(\'/\');\n}\n/**\n * Creates a copy of the input object by JSON stringifying the object then JSON parsing\n * the string (if the input is an object). If input is date, a Date copy will be created,\n * and if input is a primitive value, it will be returned as-is.\n */\n\nfunction Copy(object) {\n if (object instanceof Date) {\n return new Date(object);\n } else if (isObject(object)) {\n return JSON.parse(JSON.stringify(object));\n } else {\n return object;\n }\n}\n/**\n * Merges the second object parameter into the first object, in-place.\n * @returns The now modified first object parameter passed into the function.\n */\n\nfunction deepMerge(a, b) {\n /**\n * lodash.merge will not merge a full array with an empty one.\n * deepMerge will replace arrays wholesale\n */\n if (!a || !b) {\n throw \'Attempting to deepMerge with null values\';\n }\n\n var customizer = function customizer(aValue, bValue) {\n if (lodash_isArray__WEBPACK_IMPORTED_MODULE_3___default()(aValue)) {\n return bValue;\n }\n };\n\n lodash_mergeWith__WEBPACK_IMPORTED_MODULE_4___default()(a, b, customizer);\n return a;\n}\n/**\n * Returns a new object by selecting certain keys from input object.\n */\n\nfunction pickByCopy(object, keys) {\n var result = {};\n var _iteratorNormalCompletion7 = true;\n var _didIteratorError7 = false;\n var _iteratorError7 = undefined;\n\n try {\n for (var _iterator7 = keys[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {\n var key = _step7.value;\n result[key] = object[key];\n }\n } catch (err) {\n _didIteratorError7 = true;\n _iteratorError7 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion7 && _iterator7.return != null) {\n _iterator7.return();\n }\n } finally {\n if (_didIteratorError7) {\n throw _iteratorError7;\n }\n }\n }\n\n return Copy(result);\n}\n/**\n * Recursively makes an object immutable via Object.freeze\n */\n\nfunction deepFreeze(object) {\n var propNames = Object.getOwnPropertyNames(object);\n var _iteratorNormalCompletion8 = true;\n var _didIteratorError8 = false;\n var _iteratorError8 = undefined;\n\n try {\n for (var _iterator8 = propNames[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {\n var name = _step8.value;\n var value = object[name];\n\n if (value && _typeof(value) === \'object\' && !Object.isFrozen(value)) {\n object[name] = deepFreeze(value);\n } else {\n object[name] = value;\n }\n }\n } catch (err) {\n _didIteratorError8 = true;\n _iteratorError8 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion8 && _iterator8.return != null) {\n _iterator8.return();\n }\n } finally {\n if (_didIteratorError8) {\n throw _iteratorError8;\n }\n }\n }\n\n return Object.freeze(object);\n}\n/**\n * Determines if an object has a getter defined for a given property\n */\n\nfunction hasGetter(object, property) {\n var descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(object), property);\n return descriptor && !isNullOrUndefined(descriptor.get);\n}\n/**\n * Truncates a hex string into a desired number of bits\n * @returns A hexadecimal string truncated to the number of desired bits\n */\n\nfunction truncateHexString(string, desiredBits) {\n var BITS_PER_HEX_CHAR = 4;\n var desiredCharLength = desiredBits / BITS_PER_HEX_CHAR;\n return string.substring(0, desiredCharLength);\n}\n/**\n * When awaited, this function allows code execution to pause for a set time.\n * Should be used primarily for testing.\n */\n\nfunction sleep(_x) {\n return _sleep.apply(this, arguments);\n}\n\nfunction _sleep() {\n _sleep = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(milliseconds) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.warn(\'Sleeping for\', milliseconds);\n return _context.abrupt("return", new Promise(function (resolve, reject) {\n setTimeout(function () {\n resolve();\n }, milliseconds);\n }));\n\n case 2:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _sleep.apply(this, arguments);\n}\n\nfunction unreachable(message) {\n throw Error(message);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvdXRpbHMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9saWIvdXRpbHMudHM/YTA4MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVtb3ZlIGZyb20gJ2xvZGFzaC9yZW1vdmUnO1xuaW1wb3J0IGZpbmQgZnJvbSAnbG9kYXNoL2ZpbmQnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnbG9kYXNoL2lzQXJyYXknO1xuaW1wb3J0IG1lcmdlV2l0aCBmcm9tICdsb2Rhc2gvbWVyZ2VXaXRoJztcbmltcG9ydCB1bmlxV2l0aCBmcm9tICdsb2Rhc2gvdW5pcVdpdGgnO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoL3VuaXEnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JhbFNjb3BlKCkge1xuICAgIHJldHVybiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IHdpbmRvd1xuICAgICAgICA6ICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IG51bGwpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGRpY3RUb0FycmF5KGRpY3QpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZGljdCkubWFwKChrZXkpID0+IGRpY3Rba2V5XSk7XG59XG4vKipcbiAqIFdoZXRoZXIgd2UgYXJlIGluIGEgd2ViIGJyb3dzZXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2ViRW52aXJvbm1lbnQoKSB7XG4gICAgcmV0dXJuIGdldEdsb2JhbFNjb3BlKCkgIT09IG51bGw7XG59XG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiBXZWJDcnlwdG8gaXMgYXZhaWxhYmxlXG4gKiBAYWNjZXNzIHB1YmxpY1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXZWJDcnlwdG9BdmFpbGFibGUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZSBkb2N1bWVudE1vZGUgZG9lcyBub3QgZXhpdCBpbiBkZWZpbml0aW9ucyBidXQgbWlnaHQgZXhpc3Qgb24gSUVcbiAgICByZXR1cm4gaXNXZWJFbnZpcm9ubWVudCgpICYmICEoZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSB8fCAvRWRnZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiB3aW5kb3cuY3J5cHRvICYmICEhd2luZG93LmNyeXB0by5zdWJ0bGU7XG59XG4vKipcbiAqIFdoZXRoZXIgd2UgYXJlIGluIFJlYWN0IE5hdGl2ZSBhcHBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVhY3ROYXRpdmVFbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZSc7XG59XG4vKipcbiAqIFNlYXJjaGVzIGFycmF5IG9mIG9iamVjdHMgZm9yIGZpcnN0IG9iamVjdCB3aGVyZSBvYmplY3Rba2V5XSA9PT0gdmFsdWVcbiAqIEByZXR1cm5zIE1hdGNoaW5nIG9iamVjdCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEluQXJyYXkoYXJyYXksIGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gYXJyYXkuZmluZCgoaXRlbSkgPT4gaXRlbVtrZXldID09PSB2YWx1ZSk7XG59XG4vKipcbiAqIFNlYXJjaGVzIGFycmF5IG9mIG9iamVjdHMgZm9yIGZpcnN0IG9iamVjdCB3aGVyZSBvYmplY3Rba2V5XSA9PT0gdmFsdWVcbiAqIEByZXR1cm5zIE1hdGNoaW5nIG9iamVjdCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoQXJyYXkoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHJldHVybiBmaW5kKGFycmF5LCBwcmVkaWNhdGUpO1xufVxuLyoqXG4gKiBTZWFyY2hlcyBhcnJheSBvZiBvYmplY3RzIGZvciBmaXJzdCBvYmplY3Qgd2hlcmUgb2JqZWN0W2tleV0gPT09IHZhbHVlXG4gKiBAcmV0dXJucyBNYXRjaGluZyBvYmplY3Qgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdEFycmF5cyguLi5hcmdzKSB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAoY29uc3QgYXJyYXkgb2YgYXJncykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGFycmF5KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogQHJldHVybnMgV2hldGhlciB0aGUgdmFsdWUgaXMgYSBmdW5jdGlvbiBvciBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnO1xufVxuLyoqXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbi8qKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIG51bGwgb3IgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG4vKipcbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIHZhbHVlIGlzIGEgc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nO1xufVxuLyoqXG4gKiBAcmV0dXJucyBUaGUgZ3JlYXRlciBvZiB0aGUgdHdvIGRhdGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBncmVhdGVyT2ZUd29EYXRlcyhkYXRlQSwgZGF0ZUIpIHtcbiAgICBpZiAoZGF0ZUEgPiBkYXRlQikge1xuICAgICAgICByZXR1cm4gZGF0ZUE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZGF0ZUI7XG4gICAgfVxufVxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgb25seSB1bmlxdWUgdmFsdWVzIGJ5IGNvbWJpbmluZyB0aGUgdHdvIGlucHV0IGFycmF5cy5cbiAqIEVsZW1lbnRzIGFyZSB1bmlxdWUgYmFzZWQgb24gdGhlIHZhbHVlcyBvZiBgZXF1YWxpdHlLZXlzYC5cbiAqIEBwYXJhbSBlcXVhbGl0eUtleXMgLSBLZXlzIHRvIGRldGVybWluZSBlbGVtZW50IGVxdWFsaXR5XG4gKiBAcmV0dXJucyBBcnJheSBjb250YWluaW5nIHVuaXF1ZSB2YWx1ZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaXFDb21iaW5lT2JqQXJyYXlzKGFycmF5QSwgYXJyYXlCLCBlcXVhbGl0eUtleXMpIHtcbiAgICByZXR1cm4gdW5pcVdpdGgoYXJyYXlBLmNvbmNhdChhcnJheUIpLCAoYSwgYikgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBlcXVhbGl0eUtleXMpIHtcbiAgICAgICAgICAgIGlmIChhW2tleV0gIT09IGJba2V5XSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbn1cbi8qKlxuICogUmV0dXJucyBhIG5ldyBhcnJheSBjb250YWluaW5nIG9ubHkgdW5pcXVlIHZhbHVlc1xuICogQHJldHVybnMgQXJyYXkgY29udGFpbmluZyB1bmlxdWUgdmFsdWVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmlxdWVBcnJheShhcnJheSkge1xuICAgIHJldHVybiB1bmlxKGFycmF5KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBhcnJheS5cbiAqIEByZXR1cm5zIFRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXN0RWxlbWVudChhcnJheSkge1xuICAgIHJldHVybiBhcnJheVthcnJheS5sZW5ndGggLSAxXTtcbn1cbi8qKlxuICogQWRkcyBhbGwgaXRlbXMgZnJvbSBvdGhlckFycmF5IGludG8gaW5BcnJheSwgaW4tcGxhY2UuXG4gKiBEb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuZEFycmF5KGluQXJyYXksIG90aGVyQXJyYXkpIHtcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIG90aGVyQXJyYXkpIHtcbiAgICAgICAgaW5BcnJheS5wdXNoKHZhbHVlKTtcbiAgICB9XG59XG4vKipcbiAqIFJlbW92ZXMgYWxsIGl0ZW1zIGFwcGVhcmluZyBpbiB0b1N1YnRyYWN0IGZyb20gaW5BcnJheSwgaW4tcGxhY2VcbiAqIEBwYXJhbSB0b1N1YnRyYWN0IC0gVGhlIGxpc3Qgb2YgaXRlbXMgdG8gcmVtb3ZlIGZyb20gaW5BcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3VidHJhY3RGcm9tQXJyYXkoaW5BcnJheSwgdG9TdWJ0cmFjdCkge1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdG9TdWJ0cmFjdCkge1xuICAgICAgICByZW1vdmVGcm9tQXJyYXkoaW5BcnJheSwgdmFsdWUpO1xuICAgIH1cbn1cbi8qKlxuICogUmVtb3ZlcyB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBvZiBhbiBhcnJheSBieSBzdHJpY3QgZXF1YWxpdHkuXG4gKiBJZiBubyBtYXRjaGluIGVsZW1lbnQgaXMgZm91bmQsIHRoZSBhcnJheSBpcyBsZWZ0IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZyb21BcnJheShhcnJheSwgdmFsdWUpIHtcbiAgICBjb25zdCB2YWx1ZUluZGV4ID0gYXJyYXkuaW5kZXhPZih2YWx1ZSk7XG4gICAgaWYgKHZhbHVlSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXJyYXkuc3BsaWNlKHZhbHVlSW5kZXgsIDEpO1xufVxuLyoqXG4gKiBBZGRzIHRoZSBlbGVtZW50IHRvIHRoZSBhcnJheSBpZiB0aGUgYXJyYXkgZG9lcyBub3QgYWxyZWFkeSBpbmNsdWRlIHRoZSB2YWx1ZS5cbiAqIFRoZSBhcnJheSBpcyBzZWFyY2hlZCB2aWEgYXJyYXkuaW5kZXhPZlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSWZVbmlxdWUoYXJyYXksIHZhbHVlKSB7XG4gICAgaWYgKCFhcnJheS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSk7XG4gICAgfVxufVxuLyoqXG4gKiBSZW1vdmVzIGFuIG9iamVjdCBmcm9tIHRoZSBhcnJheSBpbi1wbGFjZSBieSBzZWFyY2hpbmcgZm9yIGFuIG9iamVjdCB3aGVyZSBhbGwgdGhlXG4gKiBrZXkvdmFsdWVzIGluIHByZWRpY2F0ZSBtYXRjaCB3aXRoIHRoZSBjYW5kaWRhdGUgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckZyb21BcnJheShhcnJheSwgcHJlZGljYXRlKSB7XG4gICAgcmVtb3ZlKGFycmF5LCBwcmVkaWNhdGUpO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEgbmV3IGFycmF5IGJ5IHJlbW92aW5nIGFsbCBlbGVtZW50cyBpbiBzdWJ0cmFjdCBmcm9tIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUJ5RGlmZmVyZW5jZShhcnJheSwgc3VidHJhY3QpIHtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgICAgLmZpbHRlcih4ID0+ICFzdWJ0cmFjdC5pbmNsdWRlcyh4KSlcbiAgICAgICAgLmNvbmNhdChzdWJ0cmFjdC5maWx0ZXIoeCA9PiAhYXJyYXkuaW5jbHVkZXMoeCkpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb21wYXJlVmFsdWVzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKChsZWZ0ICYmICFyaWdodCkgfHwgKCFsZWZ0ICYmIHJpZ2h0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgRGF0ZSAmJiByaWdodCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIGxlZnQuZ2V0VGltZSgpID09PSByaWdodC5nZXRUaW1lKCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGxlZnQgaW5zdGFuY2VvZiBTdHJpbmcgJiYgcmlnaHQgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRvcExldmVsQ29tcGFyZShsZWZ0LCByaWdodCk7XG4gICAgfVxufVxuLyoqXG4gKiBSZW1vdmVzIHRoZSB2YWx1ZSBmcm9tIHRoZSBhcnJheSBhdCB0aGUgZ2l2ZW4gaW5kZXgsIGluLXBsYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlRnJvbUluZGV4KGFycmF5LCBpbmRleCkge1xuICAgIGFycmF5LnNwbGljZShpbmRleCwgMSk7XG59XG4vKipcbiAqIEFkZHMgdGhlIHZhbHVlIGZyb20gdGhlIGFycmF5IGF0IHRoZSBnaXZlbiBpbmRleCwgaW4tcGxhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRBdEluZGV4KGFycmF5LCBlbGVtZW50LCBpbmRleCkge1xuICAgIGFycmF5LnNwbGljZShpbmRleCwgMCwgZWxlbWVudCk7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgYXJyYXkgYnkgcmVtb3ZlaW5nIHRoZSB2YWx1ZSBmcm9tIHRoZSBhcnJheSBhdCB0aGUgZ2l2ZW4gaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5QnlSZW1vdmluZ0Zyb21JbmRleChhcnJheSwgaW5kZXgpIHtcbiAgICBjb25zdCBjb3B5ID0gYXJyYXkuc2xpY2UoKTtcbiAgICByZW1vdmVGcm9tSW5kZXgoY29weSwgaW5kZXgpO1xuICAgIHJldHVybiBjb3B5O1xufVxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IHdoZXJlIGVhY2ggZWxlbWVudCBpcyB0aGUgdmFsdWUgb2YgYSB0b3AtbGV2ZWxcbiAqIG9iamVjdCBrZXkuXG4gKiBFeGFtcGxlOiBvYmplY3RUb1ZhbHVlQXJyYXkoe2E6IDEsIGI6IDJ9KSByZXR1cm5zIFsxLCAyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0VG9WYWx1ZUFycmF5KG9iamVjdCkge1xuICAgIGNvbnN0IHZhbHVlcyA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcbiAgICAgICAgdmFsdWVzLnB1c2gob2JqZWN0W2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xufVxuLyoqXG4gKiBSZXR1cm5zIGEga2V5LXNvcnRlZCBjb3B5IG9mIHRoZSBvYmplY3QuXG4gKiBGb3IgZXhhbXBsZSwgc29ydGVkQ29weSh7YjogJzEnLCBhOiAnMid9KSByZXR1cm5zIHthOiAnMicsIGI6ICcxJ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvcnRlZENvcHkob2JqZWN0KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCkuc29ydCgpO1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgcmVzdWx0W2tleV0gPSBvYmplY3Rba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIENvcHkocmVzdWx0KTtcbn1cbi8qKiBDb21wYXJlcyBmb3IgZXF1YWxpdHkgYnkgY29tcGFyaW5nIHRvcC1sZXZlbCBrZXlzIHZhbHVlIGVxdWFsaXR5ICg9PT0pICovXG5leHBvcnQgZnVuY3Rpb24gdG9wTGV2ZWxDb21wYXJlKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKCFsZWZ0ICYmICFyaWdodCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCFsZWZ0IHx8ICFyaWdodCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxlZnRLZXlzID0gT2JqZWN0LmtleXMobGVmdCk7XG4gICAgY29uc3QgcmlnaHRLZXlzID0gT2JqZWN0LmtleXMocmlnaHQpO1xuICAgIGlmIChsZWZ0S2V5cy5sZW5ndGggIT09IHJpZ2h0S2V5cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBsZWZ0S2V5cykge1xuICAgICAgICBpZiAobGVmdFtrZXldICE9PSByaWdodFtrZXldKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIFJldHVybnMgYSBuZXcgb2JqZWN0IGJ5IGF0dGVtcHRpbmcgdG8gSlNPTi5wYXJzZSBhbnkgdG9wLWxldmVsIG9iamVjdCBrZXlzLlxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvblBhcnNlRW1iZWRkZWRLZXlzKG9iamVjdCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFsdWUgPSBKU09OLnBhcnNlKG9iamVjdFtrZXldKTtcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogRGVsZXRlcyBrZXlzIG9mIHRoZSBpbnB1dCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvbWl0SW5QbGFjZShvYmplY3QsIGtleXMpIHtcbiAgICBpZiAoIW9iamVjdCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgZGVsZXRlIG9iamVjdFtrZXldO1xuICAgIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBvYmplY3QgYnkgb21pdHRpbmcgYGtleXNgIGZyb20gYG9iamVjdGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9taXRCeUNvcHkob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3QgbmV3T2JqZWN0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqZWN0KTtcbiAgICAvKipcbiAgICAgKiBMb2Rhc2gncyBvbWl0LCB3aGljaCB3YXMgcHJldmlvdXNseSB1c2VkLCBzZWVtcyB0byBjYXVzZSB1bmV4cGVjdGVkIGJlaGF2aW9yXG4gICAgICogd2hlbiBwYXlsb2FkIGlzIGFuIEVTNiBpdGVtIGNsYXNzLiBTbyB3ZSBpbnN0ZWFkIG1hbnVhbGx5IG9taXQgZWFjaCBrZXkuXG4gICAgICovXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBkZWxldGUgbmV3T2JqZWN0W2tleV07XG4gICAgfVxuICAgIHJldHVybiBuZXdPYmplY3Q7XG59XG4vKipcbiAqIFNpbWlsaWFyIHRvIE5vZGUncyBwYXRoLmpvaW4sIHRoaXMgZnVuY3Rpb24gY29tYmluZXMgYW4gYXJyYXkgb2YgcGF0aHMgaW50b1xuICogb25lIHJlc29sdmVkIHBhdGguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqb2luUGF0aHMoLi4uYXJncykge1xuICAgIHJldHVybiBhcmdzLm1hcCgocGFydCwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnQudHJpbSgpLnJlcGxhY2UoL1tcXC9dKiQvZywgJycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnQudHJpbSgpLnJlcGxhY2UoLyheW1xcL10qfFtcXC9dKiQpL2csICcnKTtcbiAgICAgICAgfVxuICAgIH0pLmZpbHRlcih4ID0+IHgubGVuZ3RoKS5qb2luKCcvJyk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBpbnB1dCBvYmplY3QgYnkgSlNPTiBzdHJpbmdpZnlpbmcgdGhlIG9iamVjdCB0aGVuIEpTT04gcGFyc2luZ1xuICogdGhlIHN0cmluZyAoaWYgdGhlIGlucHV0IGlzIGFuIG9iamVjdCkuIElmIGlucHV0IGlzIGRhdGUsIGEgRGF0ZSBjb3B5IHdpbGwgYmUgY3JlYXRlZCxcbiAqIGFuZCBpZiBpbnB1dCBpcyBhIHByaW1pdGl2ZSB2YWx1ZSwgaXQgd2lsbCBiZSByZXR1cm5lZCBhcy1pcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvcHkob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKG9iamVjdCk7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob2JqZWN0KSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbn1cbi8qKlxuICogTWVyZ2VzIHRoZSBzZWNvbmQgb2JqZWN0IHBhcmFtZXRlciBpbnRvIHRoZSBmaXJzdCBvYmplY3QsIGluLXBsYWNlLlxuICogQHJldHVybnMgVGhlIG5vdyBtb2RpZmllZCBmaXJzdCBvYmplY3QgcGFyYW1ldGVyIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZShhLCBiKSB7XG4gICAgLyoqXG4gICAgICogbG9kYXNoLm1lcmdlIHdpbGwgbm90IG1lcmdlIGEgZnVsbCBhcnJheSB3aXRoIGFuIGVtcHR5IG9uZS5cbiAgICAgKiBkZWVwTWVyZ2Ugd2lsbCByZXBsYWNlIGFycmF5cyB3aG9sZXNhbGVcbiAgICAgKi9cbiAgICBpZiAoIWEgfHwgIWIpIHtcbiAgICAgICAgdGhyb3cgJ0F0dGVtcHRpbmcgdG8gZGVlcE1lcmdlIHdpdGggbnVsbCB2YWx1ZXMnO1xuICAgIH1cbiAgICBjb25zdCBjdXN0b21pemVyID0gKGFWYWx1ZSwgYlZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChpc0FycmF5KGFWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBiVmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIG1lcmdlV2l0aChhLCBiLCBjdXN0b21pemVyKTtcbiAgICByZXR1cm4gYTtcbn1cbi8qKlxuICogUmV0dXJucyBhIG5ldyBvYmplY3QgYnkgc2VsZWN0aW5nIGNlcnRhaW4ga2V5cyBmcm9tIGlucHV0IG9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2tCeUNvcHkob2JqZWN0LCBrZXlzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICByZXN1bHRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgICByZXR1cm4gQ29weShyZXN1bHQpO1xufVxuLyoqXG4gKiBSZWN1cnNpdmVseSBtYWtlcyBhbiBvYmplY3QgaW1tdXRhYmxlIHZpYSBPYmplY3QuZnJlZXplXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRnJlZXplKG9iamVjdCkge1xuICAgIGNvbnN0IHByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIHByb3BOYW1lcykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG9iamVjdFtuYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIU9iamVjdC5pc0Zyb3plbih2YWx1ZSkpIHtcbiAgICAgICAgICAgIG9iamVjdFtuYW1lXSA9IGRlZXBGcmVlemUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb2JqZWN0W25hbWVdID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUob2JqZWN0KTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3QgaGFzIGEgZ2V0dGVyIGRlZmluZWQgZm9yIGEgZ2l2ZW4gcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc0dldHRlcihvYmplY3QsIHByb3BlcnR5KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCksIHByb3BlcnR5KTtcbiAgICByZXR1cm4gZGVzY3JpcHRvciAmJiAhaXNOdWxsT3JVbmRlZmluZWQoZGVzY3JpcHRvci5nZXQpO1xufVxuLyoqXG4gICogVHJ1bmNhdGVzIGEgaGV4IHN0cmluZyBpbnRvIGEgZGVzaXJlZCBudW1iZXIgb2YgYml0c1xuICAqIEByZXR1cm5zIEEgaGV4YWRlY2ltYWwgc3RyaW5nIHRydW5jYXRlZCB0byB0aGUgbnVtYmVyIG9mIGRlc2lyZWQgYml0c1xuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRydW5jYXRlSGV4U3RyaW5nKHN0cmluZywgZGVzaXJlZEJpdHMpIHtcbiAgICBjb25zdCBCSVRTX1BFUl9IRVhfQ0hBUiA9IDQ7XG4gICAgY29uc3QgZGVzaXJlZENoYXJMZW5ndGggPSBkZXNpcmVkQml0cyAvIEJJVFNfUEVSX0hFWF9DSEFSO1xuICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDAsIGRlc2lyZWRDaGFyTGVuZ3RoKTtcbn1cbi8qKlxuICogV2hlbiBhd2FpdGVkLCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBjb2RlIGV4ZWN1dGlvbiB0byBwYXVzZSBmb3IgYSBzZXQgdGltZS5cbiAqIFNob3VsZCBiZSB1c2VkIHByaW1hcmlseSBmb3IgdGVzdGluZy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNsZWVwKG1pbGxpc2Vjb25kcykge1xuICAgIGNvbnNvbGUud2FybignU2xlZXBpbmcgZm9yJywgbWlsbGlzZWNvbmRzKTtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSwgbWlsbGlzZWNvbmRzKTtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1bnJlYWNoYWJsZShtZXNzYWdlKSB7XG4gICAgdGhyb3cgRXJyb3IobWVzc2FnZSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUZBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUFNQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUhBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQUtBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBRkE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUdBO0FBQUE7QUFDQTtBQUNBO0FBTEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQU5BO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFPQTtBQUNBOzs7O0FBR0E7QUFDQTtBQUNBOzs7OztBQUZBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFNQTtBQUFBO0FBQ0E7QUFDQTtBQVJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVFBO0FBQ0E7QUFDQTs7Ozs7QUFJQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTs7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFHQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBSkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBOzs7O0FBR0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQVZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQVVBO0FBQ0E7QUFDQTs7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQUlBO0FBQUE7QUFBQTtBQUNBOztBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7O0FBUUE7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/utils.ts\n')},"./lib/uuid.ts": /*!*********************!*\ !*** ./lib/uuid.ts ***! \*********************/ /*! exports provided: Uuid */function(module,__webpack_exports__,__webpack_require__){"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Uuid", function() { return Uuid; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @Lib/utils */ "./lib/utils.ts");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n/**\n * An abstract class with no instance methods. Used globally to generate uuids by any\n * consumer. Application must call SetGenerators before use.\n */\n\nvar Uuid = /*#__PURE__*/function () {\n function Uuid() {\n _classCallCheck(this, Uuid);\n }\n\n _createClass(Uuid, null, [{\n key: "SetGenerators",\n\n /**\n * Dynamically feed both a syncronous and asyncronous implementation of a UUID generator function.\n * Feeding it this way allows platforms to implement their own uuid generation schemes, without\n * this class having to import any global functions.\n * @param {function} asyncImpl - An asyncronous function that returns a UUID.\n * @param {function} syncImpl - A syncronous function that returns a UUID.\n */\n value: function SetGenerators(asyncImpl, syncImpl) {\n this.syncUuidFunc = syncImpl;\n this.asyncUuidFunc = asyncImpl;\n }\n /**\n * Whether there is a syncronous UUID generation function available.\n */\n\n }, {\n key: "canGenSync",\n value: function canGenSync() {\n return !Object(_Lib_utils__WEBPACK_IMPORTED_MODULE_1__["isNullOrUndefined"])(this.syncUuidFunc);\n }\n /**\n * Generates a UUID string asyncronously.\n */\n\n }, {\n key: "GenerateUuid",\n value: function () {\n var _GenerateUuid = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.syncUuidFunc) {\n _context.next = 4;\n break;\n }\n\n return _context.abrupt("return", this.syncUuidFunc());\n\n case 4:\n return _context.abrupt("return", this.asyncUuidFunc());\n\n case 5:\n case "end":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function GenerateUuid() {\n return _GenerateUuid.apply(this, arguments);\n }\n\n return GenerateUuid;\n }()\n /**\n * Generates a UUID string syncronously.\n */\n\n }, {\n key: "GenerateUuidSynchronously",\n value: function GenerateUuidSynchronously() {\n return this.syncUuidFunc();\n }\n }]);\n\n return Uuid;\n}();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWIvdXVpZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL2xpYi91dWlkLnRzP2NlNWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICdATGliL3V0aWxzJztcbi8qKlxuICogQW4gYWJzdHJhY3QgY2xhc3Mgd2l0aCBubyBpbnN0YW5jZSBtZXRob2RzLiBVc2VkIGdsb2JhbGx5IHRvIGdlbmVyYXRlIHV1aWRzIGJ5IGFueVxuICogY29uc3VtZXIuIEFwcGxpY2F0aW9uIG11c3QgY2FsbCBTZXRHZW5lcmF0b3JzIGJlZm9yZSB1c2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBVdWlkIHtcbiAgICAvKipcbiAgICAgKiBEeW5hbWljYWxseSBmZWVkIGJvdGggYSBzeW5jcm9ub3VzIGFuZCBhc3luY3Jvbm91cyBpbXBsZW1lbnRhdGlvbiBvZiBhIFVVSUQgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuICAgICAqIEZlZWRpbmcgaXQgdGhpcyB3YXkgYWxsb3dzIHBsYXRmb3JtcyB0byBpbXBsZW1lbnQgdGhlaXIgb3duIHV1aWQgZ2VuZXJhdGlvbiBzY2hlbWVzLCB3aXRob3V0XG4gICAgICogdGhpcyBjbGFzcyBoYXZpbmcgdG8gaW1wb3J0IGFueSBnbG9iYWwgZnVuY3Rpb25zLlxuICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGFzeW5jSW1wbCAtIEFuIGFzeW5jcm9ub3VzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFVVSUQuXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbn0gc3luY0ltcGwgLSBBIHN5bmNyb25vdXMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgVVVJRC5cbiAgICAgKi9cbiAgICBzdGF0aWMgU2V0R2VuZXJhdG9ycyhhc3luY0ltcGwsIHN5bmNJbXBsKSB7XG4gICAgICAgIHRoaXMuc3luY1V1aWRGdW5jID0gc3luY0ltcGw7XG4gICAgICAgIHRoaXMuYXN5bmNVdWlkRnVuYyA9IGFzeW5jSW1wbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGVyZSBpcyBhIHN5bmNyb25vdXMgVVVJRCBnZW5lcmF0aW9uIGZ1bmN0aW9uIGF2YWlsYWJsZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgY2FuR2VuU3luYygpIHtcbiAgICAgICAgcmV0dXJuICFpc051bGxPclVuZGVmaW5lZCh0aGlzLnN5bmNVdWlkRnVuYyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdlbmVyYXRlcyBhIFVVSUQgc3RyaW5nIGFzeW5jcm9ub3VzbHkuXG4gICAgICovXG4gICAgc3RhdGljIGFzeW5jIEdlbmVyYXRlVXVpZCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc3luY1V1aWRGdW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zeW5jVXVpZEZ1bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFzeW5jVXVpZEZ1bmMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBVVUlEIHN0cmluZyBzeW5jcm9ub3VzbHkuXG4gICAgICovXG4gICAgc3RhdGljIEdlbmVyYXRlVXVpZFN5bmNocm9ub3VzbHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmNVdWlkRnVuYygpO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOzs7OztBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFBQTs7Ozs7OztBQURBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUFaQTtBQUFBO0FBQUE7QUFnQkE7QUFDQTtBQUNBOzs7O0FBbEJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBREE7QUFDQTtBQURBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFDQTtBQURBO0FBQUE7QUE2QkE7Ozs7QUE3QkE7QUFBQTtBQUFBO0FBaUNBO0FBQ0E7QUFsQ0E7QUFDQTtBQURBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./lib/uuid.ts\n')},"./node_modules/@babel/runtime/regenerator/index.js": /*!**********************************************************!*\ !*** ./node_modules/@babel/runtime/regenerator/index.js ***! \**********************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nmodule.exports = __webpack_require__(/*! regenerator-runtime */ "./node_modules/regenerator-runtime/runtime.js");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanM/YTM0YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/@babel/runtime/regenerator/index.js\n')},"./node_modules/lodash/_DataView.js": /*!******************************************!*\ !*** ./node_modules/lodash/_DataView.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar DataView = getNative(root, \'DataView\');\nmodule.exports = DataView;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19EYXRhVmlldy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzP2I1YTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgRGF0YVZpZXcgPSBnZXROYXRpdmUocm9vdCwgJ0RhdGFWaWV3Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_DataView.js\n')},"./node_modules/lodash/_Hash.js": /*!**************************************!*\ !*** ./node_modules/lodash/_Hash.js ***! \**************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"),\n hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"),\n hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"),\n hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"),\n hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js");\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype[\'delete\'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\nmodule.exports = Hash;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19IYXNoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcz9lMjRiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLCBoYXNoRGVsZXRlID0gcmVxdWlyZSgnLi9faGFzaERlbGV0ZScpLCBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLCBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLCBoYXNoU2V0ID0gcmVxdWlyZSgnLi9faGFzaFNldCcpO1xuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbn1cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Hash.js\n')},"./node_modules/lodash/_ListCache.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_ListCache.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"),\n listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"),\n listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"),\n listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"),\n listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js");\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype[\'delete\'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\nmodule.exports = ListCache;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19MaXN0Q2FjaGUuanM/NWUyZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLCBsaXN0Q2FjaGVHZXQgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVHZXQnKSwgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICAgIH1cbn1cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5tb2R1bGUuZXhwb3J0cyA9IExpc3RDYWNoZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_ListCache.js\n')},"./node_modules/lodash/_Map.js": /*!*************************************!*\ !*** ./node_modules/lodash/_Map.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar Map = getNative(root, \'Map\');\nmodule.exports = Map;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanM/NzliYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSwgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xubW9kdWxlLmV4cG9ydHMgPSBNYXA7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Map.js\n')},"./node_modules/lodash/_MapCache.js": /*!******************************************!*\ !*** ./node_modules/lodash/_MapCache.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"),\n mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"),\n mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"),\n mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"),\n mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js");\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype[\'delete\'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\nmodule.exports = MapCache;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzPzdiODMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgbWFwQ2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX21hcENhY2hlQ2xlYXInKSwgbWFwQ2FjaGVEZWxldGUgPSByZXF1aXJlKCcuL19tYXBDYWNoZURlbGV0ZScpLCBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksIG1hcENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVIYXMnKSwgbWFwQ2FjaGVTZXQgPSByZXF1aXJlKCcuL19tYXBDYWNoZVNldCcpO1xuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuICAgIHRoaXMuY2xlYXIoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICAgICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgICB9XG59XG4vLyBBZGQgbWV0aG9kcyB0byBgTWFwQ2FjaGVgLlxuTWFwQ2FjaGUucHJvdG90eXBlLmNsZWFyID0gbWFwQ2FjaGVDbGVhcjtcbk1hcENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBtYXBDYWNoZURlbGV0ZTtcbk1hcENhY2hlLnByb3RvdHlwZS5nZXQgPSBtYXBDYWNoZUdldDtcbk1hcENhY2hlLnByb3RvdHlwZS5oYXMgPSBtYXBDYWNoZUhhcztcbk1hcENhY2hlLnByb3RvdHlwZS5zZXQgPSBtYXBDYWNoZVNldDtcbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_MapCache.js\n')},"./node_modules/lodash/_Promise.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_Promise.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar Promise = getNative(root, \'Promise\');\nmodule.exports = Promise;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19Qcm9taXNlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcz8xY2VjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLCByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Promise.js\n')},"./node_modules/lodash/_Set.js": /*!*************************************!*\ !*** ./node_modules/lodash/_Set.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar Set = getNative(root, \'Set\');\nmodule.exports = Set;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXQuanM/Yzg2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSwgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xubW9kdWxlLmV4cG9ydHMgPSBTZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Set.js\n')},"./node_modules/lodash/_SetCache.js": /*!******************************************!*\ !*** ./node_modules/lodash/_SetCache.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"),\n setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"),\n setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js");\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\n }\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nmodule.exports = SetCache;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TZXRDYWNoZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzP2Q2MTIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpLCBzZXRDYWNoZUFkZCA9IHJlcXVpcmUoJy4vX3NldENhY2hlQWRkJyksIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcbi8qKlxuICpcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIHVuaXF1ZSB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW3ZhbHVlc10gVGhlIHZhbHVlcyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU2V0Q2FjaGUodmFsdWVzKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHZhbHVlcyA9PSBudWxsID8gMCA6IHZhbHVlcy5sZW5ndGg7XG4gICAgdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZCh2YWx1ZXNbaW5kZXhdKTtcbiAgICB9XG59XG4vLyBBZGQgbWV0aG9kcyB0byBgU2V0Q2FjaGVgLlxuU2V0Q2FjaGUucHJvdG90eXBlLmFkZCA9IFNldENhY2hlLnByb3RvdHlwZS5wdXNoID0gc2V0Q2FjaGVBZGQ7XG5TZXRDYWNoZS5wcm90b3R5cGUuaGFzID0gc2V0Q2FjaGVIYXM7XG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_SetCache.js\n')},"./node_modules/lodash/_Stack.js": /*!***************************************!*\ !*** ./node_modules/lodash/_Stack.js ***! \***************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),\n stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"),\n stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"),\n stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"),\n stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"),\n stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js");\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\n\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype[\'delete\'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nmodule.exports = Stack;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TdGFjay5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N0YWNrLmpzPzdlNjQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSwgc3RhY2tHZXQgPSByZXF1aXJlKCcuL19zdGFja0dldCcpLCBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcbi8qKlxuICogQ3JlYXRlcyBhIHN0YWNrIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIFN0YWNrKGVudHJpZXMpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICAgIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xubW9kdWxlLmV4cG9ydHMgPSBTdGFjaztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Stack.js\n')},"./node_modules/lodash/_Symbol.js": /*!****************************************!*\ !*** ./node_modules/lodash/_Symbol.js ***! \****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/** Built-in value references. */\n\n\nvar _Symbol = root.Symbol;\nmodule.exports = _Symbol;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanM/OWU2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Symbol.js\n')},"./node_modules/lodash/_Uint8Array.js": /*!********************************************!*\ !*** ./node_modules/lodash/_Uint8Array.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/** Built-in value references. */\n\n\nvar Uint8Array = root.Uint8Array;\nmodule.exports = Uint8Array;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcz8yNDc0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_Uint8Array.js\n')},"./node_modules/lodash/_WeakMap.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_WeakMap.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"),\n root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/* Built-in method references that are verified to be native. */\n\n\nvar WeakMap = getNative(root, \'WeakMap\');\nmodule.exports = WeakMap;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19XZWFrTWFwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcz8zOWZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLCByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFdlYWtNYXAgPSBnZXROYXRpdmUocm9vdCwgJ1dlYWtNYXAnKTtcbm1vZHVsZS5leHBvcnRzID0gV2Vha01hcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_WeakMap.js\n')},"./node_modules/lodash/_apply.js": /*!***************************************!*\ !*** ./node_modules/lodash/_apply.js ***! \***************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0:\n return func.call(thisArg);\n\n case 1:\n return func.call(thisArg, args[0]);\n\n case 2:\n return func.call(thisArg, args[0], args[1]);\n\n case 3:\n return func.call(thisArg, args[0], args[1], args[2]);\n }\n\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcHBseS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzPzg1ZTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgICAgIGNhc2UgMTogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcHBseTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUpBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_apply.js\n")},"./node_modules/lodash/_arrayFilter.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_arrayFilter.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\n}\n\nmodule.exports = arrayFilter;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUZpbHRlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5RmlsdGVyLmpzPzJkN2MiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCwgcmVzSW5kZXggPSAwLCByZXN1bHQgPSBbXTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayFilter.js\n")},"./node_modules/lodash/_arrayIncludes.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_arrayIncludes.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js");\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\n\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlcy5qcz84ZGIzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluY2x1ZGVzYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIHNwZWNpZnlpbmcgYW4gaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzKGFycmF5LCB2YWx1ZSkge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICByZXR1cm4gISFsZW5ndGggJiYgYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCAwKSA+IC0xO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayIncludes.js\n')},"./node_modules/lodash/_arrayIncludesWith.js": /*!***************************************************!*\ !*** ./node_modules/lodash/_arrayIncludesWith.js ***! \***************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = arrayIncludesWith;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzV2l0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5SW5jbHVkZXNXaXRoLmpzPzVlZGYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXJyYXlJbmNsdWRlc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBhIGNvbXBhcmF0b3IuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHRhcmdldCBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdGFyZ2V0YCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheUluY2x1ZGVzV2l0aChhcnJheSwgdmFsdWUsIGNvbXBhcmF0b3IpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgaWYgKGNvbXBhcmF0b3IodmFsdWUsIGFycmF5W2luZGV4XSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayIncludesWith.js\n")},"./node_modules/lodash/_arrayLikeKeys.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_arrayLikeKeys.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseTimes = __webpack_require__(/*! ./_baseTimes */ \"./node_modules/lodash/_baseTimes.js\"),\n isArguments = __webpack_require__(/*! ./isArguments */ \"./node_modules/lodash/isArguments.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ \"./node_modules/lodash/isBuffer.js\"),\n isIndex = __webpack_require__(/*! ./_isIndex */ \"./node_modules/lodash/_isIndex.js\"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ \"./node_modules/lodash/isTypedArray.js\");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = arrayLikeKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlMaWtlS2V5cy5qcz82ZmNkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VUaW1lcyA9IHJlcXVpcmUoJy4vX2Jhc2VUaW1lcycpLCBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSwgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLCBpc0J1ZmZlciA9IHJlcXVpcmUoJy4vaXNCdWZmZXInKSwgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSwgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gICAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSwgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLCBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLCBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAgICAgIShza2lwSW5kZXhlcyAmJiAoXG4gICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgICAgICAoaXNCdWZmICYmIChrZXkgPT0gJ29mZnNldCcgfHwga2V5ID09ICdwYXJlbnQnKSkgfHxcbiAgICAgICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgICAgICAgLy8gU2tpcCBpbmRleCBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpKSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayLikeKeys.js\n")},"./node_modules/lodash/_arrayMap.js": /*!******************************************!*\ !*** ./node_modules/lodash/_arrayMap.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n\n return result;\n}\n\nmodule.exports = arrayMap;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheU1hcC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TWFwLmpzPzc5NDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLCByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TWFwO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayMap.js\n")},"./node_modules/lodash/_arrayPush.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_arrayPush.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n\n return array;\n}\n\nmodule.exports = arrayPush;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanM/MDg3ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQXBwZW5kcyB0aGUgZWxlbWVudHMgb2YgYHZhbHVlc2AgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFwcGVuZC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheVB1c2goYXJyYXksIHZhbHVlcykge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLCBvZmZzZXQgPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVB1c2g7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arrayPush.js\n")},"./node_modules/lodash/_arraySome.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_arraySome.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n\n return false;\n}\n\nmodule.exports = arraySome;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVNvbWUuanM/NDI4NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLnNvbWVgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW55IGVsZW1lbnQgcGFzc2VzIHRoZSBwcmVkaWNhdGUgY2hlY2ssXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBhcnJheVNvbWUoYXJyYXksIHByZWRpY2F0ZSkge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_arraySome.js\n")},"./node_modules/lodash/_assignMergeValue.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_assignMergeValue.js ***! \**************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),\n eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n/**\n * This function is like `assignValue` except that it doesn\'t assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\nfunction assignMergeValue(object, key, value) {\n if (value !== undefined && !eq(object[key], value) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25NZXJnZVZhbHVlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduTWVyZ2VWYWx1ZS5qcz9iNzYwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLCBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlIGBhc3NpZ25WYWx1ZWAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhc3NpZ25cbiAqIGB1bmRlZmluZWRgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgIGlmICgodmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZXEob2JqZWN0W2tleV0sIHZhbHVlKSkgfHxcbiAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25NZXJnZVZhbHVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assignMergeValue.js\n')},"./node_modules/lodash/_assignValue.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_assignValue.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"),\n eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || value === undefined && !(key in object)) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnblZhbHVlLmpzPzMyYjMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gICAgaWYgKCEoaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkgJiYgZXEob2JqVmFsdWUsIHZhbHVlKSkgfHxcbiAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSk7XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBhc3NpZ25WYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assignValue.js\n')},"./node_modules/lodash/_assocIndexOf.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_assocIndexOf.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js");\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n\nmodule.exports = assocIndexOf;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NvY0luZGV4T2YuanM/Y2I1YSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBlcSA9IHJlcXVpcmUoJy4vZXEnKTtcbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxubW9kdWxlLmV4cG9ydHMgPSBhc3NvY0luZGV4T2Y7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_assocIndexOf.js\n')},"./node_modules/lodash/_baseAssignValue.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseAssignValue.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\");\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n\n\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanM/ODcyYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFKQTtBQU1BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseAssignValue.js\n")},"./node_modules/lodash/_baseCreate.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseCreate.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n/** Built-in value references. */\n\n\nvar objectCreate = Object.create;\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n\nvar baseCreate = function () {\n function object() {}\n\n return function (proto) {\n if (!isObject(proto)) {\n return {};\n }\n\n if (objectCreate) {\n return objectCreate(proto);\n }\n\n object.prototype = proto;\n var result = new object();\n object.prototype = undefined;\n return result;\n };\n}();\n\nmodule.exports = baseCreate;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUNyZWF0ZS5qcz83NTMwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY3JlYXRlYCB3aXRob3V0IHN1cHBvcnQgZm9yIGFzc2lnbmluZ1xuICogcHJvcGVydGllcyB0byB0aGUgY3JlYXRlZCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm90byBUaGUgb2JqZWN0IHRvIGluaGVyaXQgZnJvbS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG5ldyBvYmplY3QuXG4gKi9cbnZhciBiYXNlQ3JlYXRlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBvYmplY3QoKSB7IH1cbiAgICByZXR1cm4gZnVuY3Rpb24gKHByb3RvKSB7XG4gICAgICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgICAgIH1cbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHByb3RvO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICAgICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufSgpKTtcbm1vZHVsZS5leHBvcnRzID0gYmFzZUNyZWF0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseCreate.js\n')},"./node_modules/lodash/_baseFindIndex.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_baseFindIndex.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while (fromRight ? index-- : ++index < length) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n\n return -1;\n}\n\nmodule.exports = baseFindIndex;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmluZEluZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcz8yYjAzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIC0xO1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFindIndex.js\n")},"./node_modules/lodash/_baseFor.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_baseFor.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js");\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n\n\nvar baseFor = createBaseFor();\nmodule.exports = baseFor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcz83MmFmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGb3I7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseFor.js\n')},"./node_modules/lodash/_baseGet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_baseGet.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\nfunction baseGet(object, path) {\n path = castPath(path, object);\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n\n return index && index == length ? object : undefined;\n}\n\nmodule.exports = baseGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldC5qcz82NTZiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSwgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5nZXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVmYXVsdCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXQob2JqZWN0LCBwYXRoKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgdmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gcGF0aC5sZW5ndGg7XG4gICAgd2hpbGUgKG9iamVjdCAhPSBudWxsICYmIGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gICAgfVxuICAgIHJldHVybiAoaW5kZXggJiYgaW5kZXggPT0gbGVuZ3RoKSA/IG9iamVjdCA6IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGet.js\n')},"./node_modules/lodash/_baseGetAllKeys.js": /*!************************************************!*\ !*** ./node_modules/lodash/_baseGetAllKeys.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js");\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0QWxsS2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VHZXRBbGxLZXlzLmpzPzdkMWYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgICB2YXIgcmVzdWx0ID0ga2V5c0Z1bmMob2JqZWN0KTtcbiAgICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRBbGxLZXlzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGetAllKeys.js\n')},"./node_modules/lodash/_baseGetTag.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseGetTag.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"),\n getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"),\n objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js");\n/** `Object#toString` result references. */\n\n\nvar nullTag = \'[object Null]\',\n undefinedTag = \'[object Undefined]\';\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\n\nmodule.exports = baseGetTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcz8zNzI5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLCBnZXRSYXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSwgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgICB9XG4gICAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgICAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICAgICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseGetTag.js\n')},"./node_modules/lodash/_baseHasIn.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseHasIn.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzSW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSGFzSW4uanM/MjZlOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgIT0gbnVsbCAmJiBrZXkgaW4gT2JqZWN0KG9iamVjdCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXNJbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseHasIn.js\n")},"./node_modules/lodash/_baseIndexOf.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIndexOf.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"),\n baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"),\n strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js");\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\n\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSW5kZXhPZi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mLmpzPzQ3ZjUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSwgYmFzZUlzTmFOID0gcmVxdWlyZSgnLi9fYmFzZUlzTmFOJyksIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmluZGV4T2ZgIHdpdGhvdXQgYGZyb21JbmRleGAgYm91bmRzIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlSW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICAgICAgPyBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KVxuICAgICAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBR0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIndexOf.js\n')},"./node_modules/lodash/_baseIsArguments.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseIsArguments.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/** `Object#toString` result references. */\n\n\nvar argsTag = \'[object Arguments]\';\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanM/MjUzYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJztcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYXJnc1RhZztcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsArguments.js\n')},"./node_modules/lodash/_baseIsEqual.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIsEqual.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc0VxdWFsLmpzP2MwNWYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUlzRXF1YWxEZWVwID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWxEZWVwJyksIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gICAgaWYgKHZhbHVlID09PSBvdGhlcikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgb3RoZXIgPT0gbnVsbCB8fCAoIWlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgIWlzT2JqZWN0TGlrZShvdGhlcikpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzRXF1YWw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsEqual.js\n')},"./node_modules/lodash/_baseIsEqualDeep.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseIsEqualDeep.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"),\n equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"),\n equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"),\n getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** `Object#toString` result references. */\n\nvar argsTag = \'[object Arguments]\',\n arrayTag = \'[object Array]\',\n objectTag = \'[object Object]\';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, \'__wrapped__\'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, \'__wrapped__\');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanM/N2I5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksIGVxdWFsQXJyYXlzID0gcmVxdWlyZSgnLi9fZXF1YWxBcnJheXMnKSwgZXF1YWxCeVRhZyA9IHJlcXVpcmUoJy4vX2VxdWFsQnlUYWcnKSwgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksIGdldFRhZyA9IHJlcXVpcmUoJy4vX2dldFRhZycpLCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLCBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJywgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLCBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VJc0VxdWFsYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIGNvbXBhcmlzb25zIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIGNvbXBhcmVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy4gU2VlIGBiYXNlSXNFcXVhbGAgZm9yIG1vcmUgZGV0YWlscy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGVxdWFsRnVuYyBUaGUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnRzIG9mIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbERlZXAob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgIHZhciBvYmpJc0FyciA9IGlzQXJyYXkob2JqZWN0KSwgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSwgb2JqVGFnID0gb2JqSXNBcnIgPyBhcnJheVRhZyA6IGdldFRhZyhvYmplY3QpLCBvdGhUYWcgPSBvdGhJc0FyciA/IGFycmF5VGFnIDogZ2V0VGFnKG90aGVyKTtcbiAgICBvYmpUYWcgPSBvYmpUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG9ialRhZztcbiAgICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcbiAgICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLCBvdGhJc09iaiA9IG90aFRhZyA9PSBvYmplY3RUYWcsIGlzU2FtZVRhZyA9IG9ialRhZyA9PSBvdGhUYWc7XG4gICAgaWYgKGlzU2FtZVRhZyAmJiBpc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIGlmICghaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgb2JqSXNBcnIgPSB0cnVlO1xuICAgICAgICBvYmpJc09iaiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgICByZXR1cm4gKG9iaklzQXJyIHx8IGlzVHlwZWRBcnJheShvYmplY3QpKVxuICAgICAgICAgICAgPyBlcXVhbEFycmF5cyhvYmplY3QsIG90aGVyLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKVxuICAgICAgICAgICAgOiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIG9ialRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG4gICAgfVxuICAgIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICAgICAgdmFyIG9iaklzV3JhcHBlZCA9IG9iaklzT2JqICYmIGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCAnX193cmFwcGVkX18nKSwgb3RoSXNXcmFwcGVkID0gb3RoSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwgJ19fd3JhcHBlZF9fJyk7XG4gICAgICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICAgICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsIG90aFVud3JhcHBlZCA9IG90aElzV3JhcHBlZCA/IG90aGVyLnZhbHVlKCkgOiBvdGhlcjtcbiAgICAgICAgICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgICAgICAgICByZXR1cm4gZXF1YWxGdW5jKG9ialVud3JhcHBlZCwgb3RoVW53cmFwcGVkLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFpc1NhbWVUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgIHJldHVybiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjayk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsEqualDeep.js\n')},"./node_modules/lodash/_baseIsMatch.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIsMatch.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),\n baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n\n object = Object(object);\n\n while (index--) {\n var data = matchData[index];\n\n if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {\n return false;\n }\n }\n\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack();\n\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n\n if (!(result === undefined ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) : result)) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nmodule.exports = baseIsMatch;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc01hdGNoLmpzPzk2NmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLCBiYXNlSXNFcXVhbCA9IHJlcXVpcmUoJy4vX2Jhc2VJc0VxdWFsJyk7XG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc01hdGNoYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IG9mIHByb3BlcnR5IHZhbHVlcyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7QXJyYXl9IG1hdGNoRGF0YSBUaGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3MgdG8gbWF0Y2guXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb21wYXJpc29ucy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgb2JqZWN0YCBpcyBhIG1hdGNoLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hdGNoKG9iamVjdCwgc291cmNlLCBtYXRjaERhdGEsIGN1c3RvbWl6ZXIpIHtcbiAgICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLCBsZW5ndGggPSBpbmRleCwgbm9DdXN0b21pemVyID0gIWN1c3RvbWl6ZXI7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAhbGVuZ3RoO1xuICAgIH1cbiAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICB3aGlsZSAoaW5kZXgtLSkge1xuICAgICAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgICAgIGlmICgobm9DdXN0b21pemVyICYmIGRhdGFbMl0pXG4gICAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgICAgOiAhKGRhdGFbMF0gaW4gb2JqZWN0KSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIGRhdGEgPSBtYXRjaERhdGFbaW5kZXhdO1xuICAgICAgICB2YXIga2V5ID0gZGF0YVswXSwgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSwgc3JjVmFsdWUgPSBkYXRhWzFdO1xuICAgICAgICBpZiAobm9DdXN0b21pemVyICYmIGRhdGFbMl0pIHtcbiAgICAgICAgICAgIGlmIChvYmpWYWx1ZSA9PT0gdW5kZWZpbmVkICYmICEoa2V5IGluIG9iamVjdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgc3RhY2sgPSBuZXcgU3RhY2s7XG4gICAgICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICA/IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHLCBjdXN0b21pemVyLCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IHJlc3VsdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc01hdGNoO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsMatch.js\n')},"./node_modules/lodash/_baseIsNaN.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseIsNaN.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYU4uanM/ZDlhOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTmFOO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsNaN.js\n")},"./node_modules/lodash/_baseIsNative.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseIsNative.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isMasked = __webpack_require__(/*! ./_isMasked */ \"./node_modules/lodash/_isMasked.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNOYXRpdmUuanM/MzRhYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksIGlzTWFza2VkID0gcmVxdWlyZSgnLi9faXNNYXNrZWQnKSwgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcbi8qKlxuICogVXNlZCB0byBtYXRjaCBgUmVnRXhwYFxuICogW3N5bnRheCBjaGFyYWN0ZXJzXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wYXR0ZXJucykuXG4gKi9cbnZhciByZVJlZ0V4cENoYXIgPSAvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2c7XG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqIFVzZWQgdG8gZGV0ZWN0IGlmIGEgbWV0aG9kIGlzIG5hdGl2ZS4gKi9cbnZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArXG4gICAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICAgICAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgaXNNYXNrZWQodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gICAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsNative.js\n")},"./node_modules/lodash/_baseIsTypedArray.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_baseIsTypedArray.js ***! \**************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n/** `Object#toString` result references. */\n\n\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNUeXBlZEFycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcz83NDNmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJywgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLCBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLCBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLCBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLCBtYXBUYWcgPSAnW29iamVjdCBNYXBdJywgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLCByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJywgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLCB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJywgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLCBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJywgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLCBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJywgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLCB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLCB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLCB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbiAgICB0eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG4gICAgICAgIHR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG4gICAgICAgICAgICB0eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG4gICAgICAgICAgICAgICAgdHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG4gICAgdHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxuICAgICAgICB0eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG4gICAgICAgICAgICB0eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG4gICAgICAgICAgICAgICAgdHlwZWRBcnJheVRhZ3NbbWFwVGFnXSA9IHR5cGVkQXJyYXlUYWdzW251bWJlclRhZ10gPVxuICAgICAgICAgICAgICAgICAgICB0eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRBcnJheVRhZ3Nbd2Vha01hcFRhZ10gPSBmYWxzZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJlxuICAgICAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFLQTtBQVFBOzs7Ozs7OztBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIsTypedArray.js\n")},"./node_modules/lodash/_baseIteratee.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseIteratee.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"),\n baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"),\n identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js");\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n\n\nfunction baseIteratee(value) {\n // Don\'t store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == \'function\') {\n return value;\n }\n\n if (value == null) {\n return identity;\n }\n\n if (_typeof(value) == \'object\') {\n return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);\n }\n\n return property(value);\n}\n\nmodule.exports = baseIteratee;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanM/YmFkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlTWF0Y2hlcyA9IHJlcXVpcmUoJy4vX2Jhc2VNYXRjaGVzJyksIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pdGVyYXRlZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gW3ZhbHVlPV8uaWRlbnRpdHldIFRoZSB2YWx1ZSB0byBjb252ZXJ0IHRvIGFuIGl0ZXJhdGVlLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBpdGVyYXRlZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUl0ZXJhdGVlKHZhbHVlKSB7XG4gICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjAzNCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpZGVudGl0eTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICAgICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3BlcnR5KHZhbHVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZUl0ZXJhdGVlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseIteratee.js\n')},"./node_modules/lodash/_baseKeys.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseKeys.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),\n nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keys` which doesn\'t treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != \'constructor\') {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzLmpzPzAzZGQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLCBuYXRpdmVLZXlzID0gcmVxdWlyZSgnLi9fbmF0aXZlS2V5cycpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gICAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseKeys.js\n')},"./node_modules/lodash/_baseKeysIn.js": /*!********************************************!*\ !*** ./node_modules/lodash/_baseKeysIn.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"),\n nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * The base implementation of `_.keysIn` which doesn\'t treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == \'constructor\' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseKeysIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUtleXNJbi5qcz80MWMzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICAgIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gICAgfVxuICAgIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSwgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseKeysIn.js\n')},"./node_modules/lodash/_baseMatches.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_baseMatches.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"),\n getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js");\n/**\n * The base implementation of `_.matches` which doesn\'t clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n\n\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n\n return function (object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VNYXRjaGVzLmpzPzY0MmEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLCBnZXRNYXRjaERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXRjaERhdGEnKSwgbWF0Y2hlc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZScpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gICAgdmFyIG1hdGNoRGF0YSA9IGdldE1hdGNoRGF0YShzb3VyY2UpO1xuICAgIGlmIChtYXRjaERhdGEubGVuZ3RoID09IDEgJiYgbWF0Y2hEYXRhWzBdWzJdKSB7XG4gICAgICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZShtYXRjaERhdGFbMF1bMF0sIG1hdGNoRGF0YVswXVsxXSk7XG4gICAgfVxuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT09IHNvdXJjZSB8fCBiYXNlSXNNYXRjaChvYmplY3QsIHNvdXJjZSwgbWF0Y2hEYXRhKTtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMatches.js\n')},"./node_modules/lodash/_baseMatchesProperty.js": /*!*****************************************************!*\ !*** ./node_modules/lodash/_baseMatchesProperty.js ***! \*****************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"),\n get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"),\n hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"),\n isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),\n isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"),\n matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * The base implementation of `_.matchesProperty` which doesn\'t clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n\n return function (object) {\n var objValue = get(object, path);\n return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXNQcm9wZXJ0eS5qcz8xODM4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKSwgZ2V0ID0gcmVxdWlyZSgnLi9nZXQnKSwgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksIGlzS2V5ID0gcmVxdWlyZSgnLi9faXNLZXknKSwgaXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9faXNTdHJpY3RDb21wYXJhYmxlJyksIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSwgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLCBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWF0Y2hlc1Byb3BlcnR5YCB3aGljaCBkb2Vzbid0IGNsb25lIGBzcmNWYWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VNYXRjaGVzUHJvcGVydHkocGF0aCwgc3JjVmFsdWUpIHtcbiAgICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUodG9LZXkocGF0aCksIHNyY1ZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgICAgdmFyIG9ialZhbHVlID0gZ2V0KG9iamVjdCwgcGF0aCk7XG4gICAgICAgIHJldHVybiAob2JqVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBvYmpWYWx1ZSA9PT0gc3JjVmFsdWUpXG4gICAgICAgICAgICA/IGhhc0luKG9iamVjdCwgcGF0aClcbiAgICAgICAgICAgIDogYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcpO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXRjaGVzUHJvcGVydHk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMatchesProperty.js\n')},"./node_modules/lodash/_baseMerge.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseMerge.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"),\n assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"),\n baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"),\n baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"),\n isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"),\n safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js");\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n\n baseFor(source, function (srcValue, key) {\n stack || (stack = new Stack());\n\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n } else {\n var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + \'\', object, source, stack) : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2UuanM/ZjkwOSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksIGJhc2VNZXJnZURlZXAgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2VEZWVwJyksIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLCBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgICBpZiAob2JqZWN0ID09PSBzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24gKHNyY1ZhbHVlLCBrZXkpIHtcbiAgICAgICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICAgICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICAgICAgPyBjdXN0b21pemVyKHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSwgKGtleSArICcnKSwgb2JqZWN0LCBzb3VyY2UsIHN0YWNrKVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfSwga2V5c0luKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMerge.js\n')},"./node_modules/lodash/_baseMergeDeep.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_baseMergeDeep.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"),\n cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"),\n cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"),\n copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"),\n initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"),\n isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"),\n isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"),\n isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"),\n isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"),\n isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"),\n isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"),\n safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"),\n toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js");\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n\n\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n\n var newValue = customizer ? customizer(objValue, srcValue, key + \'\', object, source, stack) : undefined;\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n newValue = srcValue;\n\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n } else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n } else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n } else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n } else {\n newValue = [];\n }\n } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n } else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n } else {\n isCommon = false;\n }\n }\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack[\'delete\'](srcValue);\n }\n\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2VEZWVwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcz80ZjUwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSwgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLCBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSwgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSwgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0JyksIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLCBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5JyksIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0JyksIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlTWVyZ2VgIGZvciBhcnJheXMgYW5kIG9iamVjdHMgd2hpY2ggcGVyZm9ybXNcbiAqIGRlZXAgbWVyZ2VzIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMgZW5hYmxpbmcgb2JqZWN0cyB3aXRoIGNpcmN1bGFyXG4gKiByZWZlcmVuY2VzIHRvIGJlIG1lcmdlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gbWVyZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3JjSW5kZXggVGhlIGluZGV4IG9mIGBzb3VyY2VgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWVyZ2VGdW5jIFRoZSBmdW5jdGlvbiB0byBtZXJnZSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgbWVyZ2VGdW5jLCBjdXN0b21pemVyLCBzdGFjaykge1xuICAgIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLCBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLCBzdGFja2VkID0gc3RhY2suZ2V0KHNyY1ZhbHVlKTtcbiAgICBpZiAoc3RhY2tlZCkge1xuICAgICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICBpZiAoaXNDb21tb24pIHtcbiAgICAgICAgdmFyIGlzQXJyID0gaXNBcnJheShzcmNWYWx1ZSksIGlzQnVmZiA9ICFpc0FyciAmJiBpc0J1ZmZlcihzcmNWYWx1ZSksIGlzVHlwZWQgPSAhaXNBcnIgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkoc3JjVmFsdWUpO1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgICBpZiAoaXNBcnIgfHwgaXNCdWZmIHx8IGlzVHlwZWQpIHtcbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9ialZhbHVlKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICAgICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBjbG9uZVR5cGVkQXJyYXkoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICAgICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSB0b1BsYWluT2JqZWN0KG9ialZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFpc09iamVjdChvYmpWYWx1ZSkgfHwgaXNGdW5jdGlvbihvYmpWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChpc0NvbW1vbikge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgICAgIG1lcmdlRnVuYyhuZXdWYWx1ZSwgc3JjVmFsdWUsIHNyY0luZGV4LCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gICAgfVxuICAgIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1lcmdlRGVlcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQWVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseMergeDeep.js\n')},"./node_modules/lodash/_baseProperty.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseProperty.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\nfunction baseProperty(key) {\n return function (object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHkuanM/ZWY1ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseProperty.js\n")},"./node_modules/lodash/_basePropertyDeep.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_basePropertyDeep.js ***! \**************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js");\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n\n\nfunction basePropertyDeep(path) {\n return function (object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHJvcGVydHlEZWVwLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcz9lM2Y4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0Jyk7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHJldHVybiBiYXNlR2V0KG9iamVjdCwgcGF0aCk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVByb3BlcnR5RGVlcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePropertyDeep.js\n')},"./node_modules/lodash/_basePullAt.js": /*!********************************************!*\ !*** ./node_modules/lodash/_basePullAt.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseUnset = __webpack_require__(/*! ./_baseUnset */ "./node_modules/lodash/_baseUnset.js"),\n isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js");\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype;\n/** Built-in value references. */\n\nvar splice = arrayProto.splice;\n/**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n\nfunction basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n\n if (length == lastIndex || index !== previous) {\n var previous = index;\n\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n\n return array;\n}\n\nmodule.exports = basePullAt;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUHVsbEF0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVB1bGxBdC5qcz83ZjljIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VVbnNldCA9IHJlcXVpcmUoJy4vX2Jhc2VVbnNldCcpLCBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzcGxpY2UgPSBhcnJheVByb3RvLnNwbGljZTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHVsbEF0YCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIGluZGV4ZXMgb3IgY2FwdHVyaW5nIHRoZSByZW1vdmVkIGVsZW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtudW1iZXJbXX0gaW5kZXhlcyBUaGUgaW5kZXhlcyBvZiBlbGVtZW50cyB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVB1bGxBdChhcnJheSwgaW5kZXhlcykge1xuICAgIHZhciBsZW5ndGggPSBhcnJheSA/IGluZGV4ZXMubGVuZ3RoIDogMCwgbGFzdEluZGV4ID0gbGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGluZGV4ID0gaW5kZXhlc1tsZW5ndGhdO1xuICAgICAgICBpZiAobGVuZ3RoID09IGxhc3RJbmRleCB8fCBpbmRleCAhPT0gcHJldmlvdXMpIHtcbiAgICAgICAgICAgIHZhciBwcmV2aW91cyA9IGluZGV4O1xuICAgICAgICAgICAgaWYgKGlzSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgc3BsaWNlLmNhbGwoYXJyYXksIGluZGV4LCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJhc2VVbnNldChhcnJheSwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVB1bGxBdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_basePullAt.js\n')},"./node_modules/lodash/_baseRest.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseRest.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"),\n overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"),\n setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js");\n/**\n * The base implementation of `_.rest` which doesn\'t validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n\n\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + \'\');\n}\n\nmodule.exports = baseRest;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZXN0LmpzPzEwMGUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSwgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlc3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseRest.js\n')},"./node_modules/lodash/_baseSetToString.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_baseSetToString.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar constant = __webpack_require__(/*! ./constant */ \"./node_modules/lodash/constant.js\"),\n defineProperty = __webpack_require__(/*! ./_defineProperty */ \"./node_modules/lodash/_defineProperty.js\"),\n identity = __webpack_require__(/*! ./identity */ \"./node_modules/lodash/identity.js\");\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\nvar baseSetToString = !defineProperty ? identity : function (func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\nmodule.exports = baseSetToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanM/YTQ1NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjb25zdGFudCA9IHJlcXVpcmUoJy4vY29uc3RhbnQnKSwgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpLCBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYHNldFRvU3RyaW5nYCB3aXRob3V0IHN1cHBvcnQgZm9yIGhvdCBsb29wIHNob3J0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdHJpbmcgVGhlIGB0b1N0cmluZ2AgcmVzdWx0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGBmdW5jYC5cbiAqL1xudmFyIGJhc2VTZXRUb1N0cmluZyA9ICFkZWZpbmVQcm9wZXJ0eSA/IGlkZW50aXR5IDogZnVuY3Rpb24gKGZ1bmMsIHN0cmluZykge1xuICAgIHJldHVybiBkZWZpbmVQcm9wZXJ0eShmdW5jLCAndG9TdHJpbmcnLCB7XG4gICAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICAgICAndmFsdWUnOiBjb25zdGFudChzdHJpbmcpLFxuICAgICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0VG9TdHJpbmc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSetToString.js\n")},"./node_modules/lodash/_baseSlice.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseSlice.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : length + start;\n }\n\n end = end > length ? length : end;\n\n if (end < 0) {\n end += length;\n }\n\n length = start > end ? 0 : end - start >>> 0;\n start >>>= 0;\n var result = Array(length);\n\n while (++index < length) {\n result[index] = array[index + start];\n }\n\n return result;\n}\n\nmodule.exports = baseSlice;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2xpY2UuanM/MmIxMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uc2xpY2VgIHdpdGhvdXQgYW4gaXRlcmF0ZWUgY2FsbCBndWFyZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHNsaWNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD0wXSBUaGUgc3RhcnQgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHNsaWNlIG9mIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICAgIHZhciBpbmRleCA9IC0xLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICAgIH1cbiAgICBlbmQgPSBlbmQgPiBsZW5ndGggPyBsZW5ndGggOiBlbmQ7XG4gICAgaWYgKGVuZCA8IDApIHtcbiAgICAgICAgZW5kICs9IGxlbmd0aDtcbiAgICB9XG4gICAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICAgIHN0YXJ0ID4+Pj0gMDtcbiAgICB2YXIgcmVzdWx0ID0gQXJyYXkobGVuZ3RoKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICByZXN1bHRbaW5kZXhdID0gYXJyYXlbaW5kZXggKyBzdGFydF07XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VTbGljZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseSlice.js\n")},"./node_modules/lodash/_baseTimes.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseTimes.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\n\nmodule.exports = baseTimes;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVGltZXMuanM/NTBkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgcmVzdWx0ID0gQXJyYXkobik7XG4gICAgd2hpbGUgKCsraW5kZXggPCBuKSB7XG4gICAgICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUaW1lcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseTimes.js\n")},"./node_modules/lodash/_baseToString.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_baseToString.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n arrayMap = __webpack_require__(/*! ./_arrayMap */ \"./node_modules/lodash/_arrayMap.js\"),\n isArray = __webpack_require__(/*! ./isArray */ \"./node_modules/lodash/isArray.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = baseToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVG9TdHJpbmcuanM/Y2U4NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSwgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLCBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCwgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgY29udmVydCB2YWx1ZXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gICAgfVxuICAgIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFRvU3RyaW5nID8gc3ltYm9sVG9TdHJpbmcuY2FsbCh2YWx1ZSkgOiAnJztcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUb1N0cmluZztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseToString.js\n")},"./node_modules/lodash/_baseUnary.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseUnary.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5hcnkuanM/YjA0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5hcnlgIHdpdGhvdXQgc3VwcG9ydCBmb3Igc3RvcmluZyBtZXRhZGF0YS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2FwIGFyZ3VtZW50cyBmb3IuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjYXBwZWQgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VVbmFyeShmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUnary.js\n")},"./node_modules/lodash/_baseUniq.js": /*!******************************************!*\ !*** ./node_modules/lodash/_baseUniq.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"),\n arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"),\n arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"),\n createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"),\n setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");\n/** Used as the size to enable large array optimizations. */\n\n\nvar LARGE_ARRAY_SIZE = 200;\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n } else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n\n if (set) {\n return setToArray(set);\n }\n\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache();\n } else {\n seen = iteratee ? [] : result;\n }\n\n outer: while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n value = comparator || value !== 0 ? value : 0;\n\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n\n if (iteratee) {\n seen.push(computed);\n }\n\n result.push(value);\n } else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n\n result.push(value);\n }\n }\n\n return result;\n}\n\nmodule.exports = baseUniq;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5pcS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmlxLmpzPzJjNjYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLCBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLCBhcnJheUluY2x1ZGVzV2l0aCA9IHJlcXVpcmUoJy4vX2FycmF5SW5jbHVkZXNXaXRoJyksIGNhY2hlSGFzID0gcmVxdWlyZSgnLi9fY2FjaGVIYXMnKSwgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlcywgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCBpc0NvbW1vbiA9IHRydWUsIHJlc3VsdCA9IFtdLCBzZWVuID0gcmVzdWx0O1xuICAgIGlmIChjb21wYXJhdG9yKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gYXJyYXlJbmNsdWRlc1dpdGg7XG4gICAgfVxuICAgIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgICAgIHZhciBzZXQgPSBpdGVyYXRlZSA/IG51bGwgOiBjcmVhdGVTZXQoYXJyYXkpO1xuICAgICAgICBpZiAoc2V0KSB7XG4gICAgICAgICAgICByZXR1cm4gc2V0VG9BcnJheShzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIGluY2x1ZGVzID0gY2FjaGVIYXM7XG4gICAgICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzZWVuID0gaXRlcmF0ZWUgPyBbXSA6IHJlc3VsdDtcbiAgICB9XG4gICAgb3V0ZXI6IHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSwgY29tcHV0ZWQgPSBpdGVyYXRlZSA/IGl0ZXJhdGVlKHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICAgICAgaWYgKGlzQ29tbW9uICYmIGNvbXB1dGVkID09PSBjb21wdXRlZCkge1xuICAgICAgICAgICAgdmFyIHNlZW5JbmRleCA9IHNlZW4ubGVuZ3RoO1xuICAgICAgICAgICAgd2hpbGUgKHNlZW5JbmRleC0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWUgb3V0ZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghaW5jbHVkZXMoc2VlbiwgY29tcHV0ZWQsIGNvbXBhcmF0b3IpKSB7XG4gICAgICAgICAgICBpZiAoc2VlbiAhPT0gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUniq.js\n')},"./node_modules/lodash/_baseUnset.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_baseUnset.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),\n last = __webpack_require__(/*! ./last */ "./node_modules/lodash/last.js"),\n parent = __webpack_require__(/*! ./_parent */ "./node_modules/lodash/_parent.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n\n\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVW5zZXQuanM/NGJiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksIGxhc3QgPSByZXF1aXJlKCcuL2xhc3QnKSwgcGFyZW50ID0gcmVxdWlyZSgnLi9fcGFyZW50JyksIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udW5zZXRgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHByb3BlcnR5IHBhdGggdG8gdW5zZXQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHByb3BlcnR5IGlzIGRlbGV0ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuc2V0KG9iamVjdCwgcGF0aCkge1xuICAgIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuICAgIG9iamVjdCA9IHBhcmVudChvYmplY3QsIHBhdGgpO1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCB8fCBkZWxldGUgb2JqZWN0W3RvS2V5KGxhc3QocGF0aCkpXTtcbn1cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuc2V0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_baseUnset.js\n')},"./node_modules/lodash/_cacheHas.js": /*!******************************************!*\ !*** ./node_modules/lodash/_cacheHas.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYWNoZUhhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzP2M1ODQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBhIGBjYWNoZWAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGNhY2hlIFRoZSBjYWNoZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBjYWNoZUhhcyhjYWNoZSwga2V5KSB7XG4gICAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBjYWNoZUhhcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cacheHas.js\n")},"./node_modules/lodash/_castPath.js": /*!******************************************!*\ !*** ./node_modules/lodash/_castPath.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"),\n stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"),\n toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js");\n/**\n * Casts `value` to a path array if it\'s not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n\n\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jYXN0UGF0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nhc3RQYXRoLmpzP2UyZTQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLCBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLCB0b1N0cmluZyA9IHJlcXVpcmUoJy4vdG9TdHJpbmcnKTtcbi8qKlxuICogQ2FzdHMgYHZhbHVlYCB0byBhIHBhdGggYXJyYXkgaWYgaXQncyBub3Qgb25lLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY2FzdCBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICovXG5mdW5jdGlvbiBjYXN0UGF0aCh2YWx1ZSwgb2JqZWN0KSB7XG4gICAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBjYXN0UGF0aDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_castPath.js\n')},"./node_modules/lodash/_cloneArrayBuffer.js": /*!**************************************************!*\ !*** ./node_modules/lodash/_cloneArrayBuffer.js ***! \**************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js");\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n\n\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVBcnJheUJ1ZmZlci5qcz9mOGFmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICBuZXcgVWludDhBcnJheShyZXN1bHQpLnNldChuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcikpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lQXJyYXlCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneArrayBuffer.js\n')},"./node_modules/lodash/_cloneBuffer.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_cloneBuffer.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js");\n/** Detect free variable `exports`. */\n\n\nvar freeExports = ( false ? undefined : _typeof(exports)) == \'object\' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && ( false ? undefined : _typeof(module)) == \'object\' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUJ1ZmZlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQnVmZmVyLmpzP2U1MzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLCBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mICBgYnVmZmVyYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtCdWZmZXJ9IGJ1ZmZlciBUaGUgYnVmZmVyIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQnVmZmVyKGJ1ZmZlciwgaXNEZWVwKSB7XG4gICAgaWYgKGlzRGVlcCkge1xuICAgICAgICByZXR1cm4gYnVmZmVyLnNsaWNlKCk7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLCByZXN1bHQgPSBhbGxvY1Vuc2FmZSA/IGFsbG9jVW5zYWZlKGxlbmd0aCkgOiBuZXcgYnVmZmVyLmNvbnN0cnVjdG9yKGxlbmd0aCk7XG4gICAgYnVmZmVyLmNvcHkocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUJ1ZmZlcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneBuffer.js\n')},"./node_modules/lodash/_cloneTypedArray.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_cloneTypedArray.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js");\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n\n\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanM/YzhmZSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjbG9uZUFycmF5QnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVBcnJheUJ1ZmZlcicpO1xuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYHR5cGVkQXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gdHlwZWRBcnJheSBUaGUgdHlwZWQgYXJyYXkgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIHR5cGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBjbG9uZVR5cGVkQXJyYXkodHlwZWRBcnJheSwgaXNEZWVwKSB7XG4gICAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gICAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lVHlwZWRBcnJheTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_cloneTypedArray.js\n')},"./node_modules/lodash/_copyArray.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_copyArray.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n array || (array = Array(length));\n\n while (++index < length) {\n array[index] = source[index];\n }\n\n return array;\n}\n\nmodule.exports = copyArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanM/NDM1OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgICB2YXIgaW5kZXggPSAtMSwgbGVuZ3RoID0gc291cmNlLmxlbmd0aDtcbiAgICBhcnJheSB8fCAoYXJyYXkgPSBBcnJheShsZW5ndGgpKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBhcnJheVtpbmRleF0gPSBzb3VyY2VbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copyArray.js\n")},"./node_modules/lodash/_copyObject.js": /*!********************************************!*\ !*** ./node_modules/lodash/_copyObject.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"),\n baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js");\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n\n\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n var newValue = customizer ? customizer(object[key], source[key], key, object, source) : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n\n return object;\n}\n\nmodule.exports = copyObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weU9iamVjdC5qcz84ZWViIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSwgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICAgIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gICAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc05ldykge1xuICAgICAgICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_copyObject.js\n')},"./node_modules/lodash/_coreJsData.js": /*!********************************************!*\ !*** ./node_modules/lodash/_coreJsData.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar root = __webpack_require__(/*! ./_root */ \"./node_modules/lodash/_root.js\");\n/** Used to detect overreaching core-js shims. */\n\n\nvar coreJsData = root['__core-js_shared__'];\nmodule.exports = coreJsData;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3JlSnNEYXRhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcz9kYTAzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_coreJsData.js\n")},"./node_modules/lodash/_createAssigner.js": /*!************************************************!*\ !*** ./node_modules/lodash/_createAssigner.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"),\n isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js");\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n\n\nfunction createAssigner(assigner) {\n return baseRest(function (object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n customizer = assigner.length > 3 && typeof customizer == \'function\' ? (length--, customizer) : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n\n object = Object(object);\n\n while (++index < length) {\n var source = sources[index];\n\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n\n return object;\n });\n}\n\nmodule.exports = createAssigner;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzPzJlYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZVJlc3QgPSByZXF1aXJlKCcuL19iYXNlUmVzdCcpLCBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gICAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uIChvYmplY3QsIHNvdXJjZXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHNvdXJjZXMubGVuZ3RoLCBjdXN0b21pemVyID0gbGVuZ3RoID4gMSA/IHNvdXJjZXNbbGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQsIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG4gICAgICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgICAgICAgbGVuZ3RoID0gMTtcbiAgICAgICAgfVxuICAgICAgICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICBhc3NpZ25lcihvYmplY3QsIHNvdXJjZSwgaW5kZXgsIGN1c3RvbWl6ZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createAssigner.js\n')},"./node_modules/lodash/_createBaseFor.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_createBaseFor.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n\nfunction createBaseFor(fromRight) {\n return function (object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n\n return object;\n };\n}\n\nmodule.exports = createBaseFor;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUZvci5qcz85OWNkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDcmVhdGVzIGEgYmFzZSBmdW5jdGlvbiBmb3IgbWV0aG9kcyBsaWtlIGBfLmZvckluYCBhbmQgYF8uZm9yT3duYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBiYXNlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjcmVhdGVCYXNlRm9yKGZyb21SaWdodCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqZWN0LCBpdGVyYXRlZSwga2V5c0Z1bmMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gLTEsIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSwgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBwcm9wc1tmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XTtcbiAgICAgICAgICAgIGlmIChpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUJhc2VGb3I7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createBaseFor.js\n")},"./node_modules/lodash/_createFind.js": /*!********************************************!*\ !*** ./node_modules/lodash/_createFind.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),\n keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n/**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n\n\nfunction createFind(findIndexFunc) {\n return function (collection, predicate, fromIndex) {\n var iterable = Object(collection);\n\n if (!isArrayLike(collection)) {\n var iteratee = baseIteratee(predicate, 3);\n collection = keys(collection);\n\n predicate = function predicate(key) {\n return iteratee(iterable[key], key, iterable);\n };\n }\n\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n}\n\nmodule.exports = createFind;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVGaW5kLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcz81Y2EwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLCBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSwga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgICAgICB2YXIgaXRlcmFibGUgPSBPYmplY3QoY29sbGVjdGlvbik7XG4gICAgICAgIGlmICghaXNBcnJheUxpa2UoY29sbGVjdGlvbikpIHtcbiAgICAgICAgICAgIHZhciBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpO1xuICAgICAgICAgICAgY29sbGVjdGlvbiA9IGtleXMoY29sbGVjdGlvbik7XG4gICAgICAgICAgICBwcmVkaWNhdGUgPSBmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5kZXggPSBmaW5kSW5kZXhGdW5jKGNvbGxlY3Rpb24sIHByZWRpY2F0ZSwgZnJvbUluZGV4KTtcbiAgICAgICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZpbmQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createFind.js\n')},"./node_modules/lodash/_createSet.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_createSet.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"),\n noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"),\n setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n\nvar createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function (values) {\n return new Set(values);\n};\nmodule.exports = createSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVTZXQuanM/NzUwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSwgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLCBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssIC0wXSkpWzFdKSA9PSBJTkZJTklUWSkgPyBub29wIDogZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHJldHVybiBuZXcgU2V0KHZhbHVlcyk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVTZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_createSet.js\n')},"./node_modules/lodash/_defineProperty.js": /*!************************************************!*\ !*** ./node_modules/lodash/_defineProperty.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n\nvar defineProperty = function () {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}();\n\nmodule.exports = defineProperty;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2RlZmluZVByb3BlcnR5LmpzPzNiNGEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBmdW5jID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2RlZmluZVByb3BlcnR5Jyk7XG4gICAgICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jO1xuICAgIH1cbiAgICBjYXRjaCAoZSkgeyB9XG59KCkpO1xubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_defineProperty.js\n")},"./node_modules/lodash/_equalArrays.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_equalArrays.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"),\n arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"),\n cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack[\'delete\'](array);\n stack[\'delete\'](other);\n return result;\n}\n\nmodule.exports = equalArrays;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQXJyYXlzLmpzP2EyYmUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU2V0Q2FjaGUgPSByZXF1aXJlKCcuL19TZXRDYWNoZScpLCBhcnJheVNvbWUgPSByZXF1aXJlKCcuL19hcnJheVNvbWUnKSwgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLCBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLCBhcnJMZW5ndGggPSBhcnJheS5sZW5ndGgsIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcbiAgICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgICBpZiAoc3RhY2tlZCAmJiBzdGFjay5nZXQob3RoZXIpKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAtMSwgcmVzdWx0ID0gdHJ1ZSwgc2VlbiA9IChiaXRtYXNrICYgQ09NUEFSRV9VTk9SREVSRURfRkxBRykgPyBuZXcgU2V0Q2FjaGUgOiB1bmRlZmluZWQ7XG4gICAgc3RhY2suc2V0KGFycmF5LCBvdGhlcik7XG4gICAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG4gICAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICAgIHdoaWxlICgrK2luZGV4IDwgYXJyTGVuZ3RoKSB7XG4gICAgICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSwgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG4gICAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgICAgICAgICA/IGN1c3RvbWl6ZXIob3RoVmFsdWUsIGFyclZhbHVlLCBpbmRleCwgb3RoZXIsIGFycmF5LCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbXBhcmVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChjb21wYXJlZCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgaWYgKCFhcnJheVNvbWUob3RoZXIsIGZ1bmN0aW9uIChvdGhWYWx1ZSwgb3RoSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgICAgICAoYXJyVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhhcnJWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlZW4ucHVzaChvdGhJbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghKGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdGFja1snZGVsZXRlJ10oYXJyYXkpO1xuICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FBYUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalArrays.js\n')},"./node_modules/lodash/_equalByTag.js": /*!********************************************!*\ !*** ./node_modules/lodash/_equalByTag.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ \"./node_modules/lodash/_Symbol.js\"),\n Uint8Array = __webpack_require__(/*! ./_Uint8Array */ \"./node_modules/lodash/_Uint8Array.js\"),\n eq = __webpack_require__(/*! ./eq */ \"./node_modules/lodash/eq.js\"),\n equalArrays = __webpack_require__(/*! ./_equalArrays */ \"./node_modules/lodash/_equalArrays.js\"),\n mapToArray = __webpack_require__(/*! ./_mapToArray */ \"./node_modules/lodash/_mapToArray.js\"),\n setToArray = __webpack_require__(/*! ./_setToArray */ \"./node_modules/lodash/_setToArray.js\");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** `Object#toString` result references. */\n\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = _Symbol ? _Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == other + '';\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n\n }\n\n return false;\n}\n\nmodule.exports = equalByTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEJ5VGFnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZXF1YWxCeVRhZy5qcz8xYzNjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLCBVaW50OEFycmF5ID0gcmVxdWlyZSgnLi9fVWludDhBcnJheScpLCBlcSA9IHJlcXVpcmUoJy4vZXEnKSwgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLCBtYXBUb0FycmF5ID0gcmVxdWlyZSgnLi9fbWFwVG9BcnJheScpLCBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLCBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLCBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLCBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLCBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJywgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLCBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJywgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLCBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XSc7XG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3IgY29tcGFyaW5nIG9iamVjdHMgb2ZcbiAqIHRoZSBzYW1lIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjb21wYXJpbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBOdW1iZXJgLCBgUmVnRXhwYCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdHMgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEJ5VGFnKG9iamVjdCwgb3RoZXIsIHRhZywgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgIHN3aXRjaCAodGFnKSB7XG4gICAgICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICAgICAgICBpZiAoKG9iamVjdC5ieXRlTGVuZ3RoICE9IG90aGVyLmJ5dGVMZW5ndGgpIHx8XG4gICAgICAgICAgICAgICAgKG9iamVjdC5ieXRlT2Zmc2V0ICE9IG90aGVyLmJ5dGVPZmZzZXQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgICAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuICAgICAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgICAgICAgaWYgKChvYmplY3QuYnl0ZUxlbmd0aCAhPSBvdGhlci5ieXRlTGVuZ3RoKSB8fFxuICAgICAgICAgICAgICAgICFlcXVhbEZ1bmMobmV3IFVpbnQ4QXJyYXkob2JqZWN0KSwgbmV3IFVpbnQ4QXJyYXkob3RoZXIpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBjYXNlIGJvb2xUYWc6XG4gICAgICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgICAgY2FzZSBudW1iZXJUYWc6XG4gICAgICAgICAgICAvLyBDb2VyY2UgYm9vbGVhbnMgdG8gYDFgIG9yIGAwYCBhbmQgZGF0ZXMgdG8gbWlsbGlzZWNvbmRzLlxuICAgICAgICAgICAgLy8gSW52YWxpZCBkYXRlcyBhcmUgY29lcmNlZCB0byBgTmFOYC5cbiAgICAgICAgICAgIHJldHVybiBlcSgrb2JqZWN0LCArb3RoZXIpO1xuICAgICAgICBjYXNlIGVycm9yVGFnOlxuICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5uYW1lID09IG90aGVyLm5hbWUgJiYgb2JqZWN0Lm1lc3NhZ2UgPT0gb3RoZXIubWVzc2FnZTtcbiAgICAgICAgY2FzZSByZWdleHBUYWc6XG4gICAgICAgIGNhc2Ugc3RyaW5nVGFnOlxuICAgICAgICAgICAgLy8gQ29lcmNlIHJlZ2V4ZXMgdG8gc3RyaW5ncyBhbmQgdHJlYXQgc3RyaW5ncywgcHJpbWl0aXZlcyBhbmQgb2JqZWN0cyxcbiAgICAgICAgICAgIC8vIGFzIGVxdWFsLiBTZWUgaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbiAgICAgICAgICAgIC8vIGZvciBtb3JlIGRldGFpbHMuXG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0ID09IChvdGhlciArICcnKTtcbiAgICAgICAgY2FzZSBtYXBUYWc6XG4gICAgICAgICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG4gICAgICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgICAgICAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRztcbiAgICAgICAgICAgIGNvbnZlcnQgfHwgKGNvbnZlcnQgPSBzZXRUb0FycmF5KTtcbiAgICAgICAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBBc3N1bWUgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gICAgICAgICAgICB2YXIgc3RhY2tlZCA9IHN0YWNrLmdldChvYmplY3QpO1xuICAgICAgICAgICAgaWYgKHN0YWNrZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJpdG1hc2sgfD0gQ09NUEFSRV9VTk9SREVSRURfRkxBRztcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgICAgICAgICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGVxdWFsQXJyYXlzKGNvbnZlcnQob2JqZWN0KSwgY29udmVydChvdGhlciksIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICAgICAgICAgICAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICBjYXNlIHN5bWJvbFRhZzpcbiAgICAgICAgICAgIGlmIChzeW1ib2xWYWx1ZU9mKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxCeVRhZztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQW5EQTtBQUNBO0FBbURBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalByTag.js\n")},"./node_modules/lodash/_equalObjects.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_equalObjects.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getAllKeys = __webpack_require__(/*! ./_getAllKeys */ \"./node_modules/lodash/_getAllKeys.js\");\n/** Used to compose bitmasks for value comparisons. */\n\n\nvar COMPARE_PARTIAL_FLAG = 1;\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanM/YjFlNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5cycpO1xuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUcsIG9ialByb3BzID0gZ2V0QWxsS2V5cyhvYmplY3QpLCBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsIG90aFByb3BzID0gZ2V0QWxsS2V5cyhvdGhlciksIG90aExlbmd0aCA9IG90aFByb3BzLmxlbmd0aDtcbiAgICBpZiAob2JqTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhaXNQYXJ0aWFsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICAgIHdoaWxlIChpbmRleC0tKSB7XG4gICAgICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgICAgIGlmICghKGlzUGFydGlhbCA/IGtleSBpbiBvdGhlciA6IGhhc093blByb3BlcnR5LmNhbGwob3RoZXIsIGtleSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KG9iamVjdCk7XG4gICAgaWYgKHN0YWNrZWQgJiYgc3RhY2suZ2V0KG90aGVyKSkge1xuICAgICAgICByZXR1cm4gc3RhY2tlZCA9PSBvdGhlcjtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHRydWU7XG4gICAgc3RhY2suc2V0KG9iamVjdCwgb3RoZXIpO1xuICAgIHN0YWNrLnNldChvdGhlciwgb2JqZWN0KTtcbiAgICB2YXIgc2tpcEN0b3IgPSBpc1BhcnRpYWw7XG4gICAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICAgICAga2V5ID0gb2JqUHJvcHNbaW5kZXhdO1xuICAgICAgICB2YXIgb2JqVmFsdWUgPSBvYmplY3Rba2V5XSwgb3RoVmFsdWUgPSBvdGhlcltrZXldO1xuICAgICAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgICAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgICAgICAgICA6IGN1c3RvbWl6ZXIob2JqVmFsdWUsIG90aFZhbHVlLCBrZXksIG9iamVjdCwgb3RoZXIsIHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgICAgaWYgKCEoY29tcGFyZWQgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyAob2JqVmFsdWUgPT09IG90aFZhbHVlIHx8IGVxdWFsRnVuYyhvYmpWYWx1ZSwgb3RoVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSlcbiAgICAgICAgICAgIDogY29tcGFyZWQpKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHNraXBDdG9yIHx8IChza2lwQ3RvciA9IGtleSA9PSAnY29uc3RydWN0b3InKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAmJiAhc2tpcEN0b3IpIHtcbiAgICAgICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcbiAgICAgICAgLy8gTm9uIGBPYmplY3RgIG9iamVjdCBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgY29uc3RydWN0b3JzIGFyZSBub3QgZXF1YWwuXG4gICAgICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgICAgICgnY29uc3RydWN0b3InIGluIG9iamVjdCAmJiAnY29uc3RydWN0b3InIGluIG90aGVyKSAmJlxuICAgICAgICAgICAgISh0eXBlb2Ygb2JqQ3RvciA9PSAnZnVuY3Rpb24nICYmIG9iakN0b3IgaW5zdGFuY2VvZiBvYmpDdG9yICYmXG4gICAgICAgICAgICAgICAgdHlwZW9mIG90aEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvdGhDdG9yIGluc3RhbmNlb2Ygb3RoQ3RvcikpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_equalObjects.js\n")},"./node_modules/lodash/_freeGlobal.js": /*!********************************************!*\ !*** ./node_modules/lodash/_freeGlobal.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global) {\n/** Detect free variable `global` from Node.js. */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == \'object\' && global && global.Object === Object && global;\nmodule.exports = freeGlobal;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZnJlZUdsb2JhbC5qcz81ODVhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_freeGlobal.js\n')},"./node_modules/lodash/_getAllKeys.js": /*!********************************************!*\ !*** ./node_modules/lodash/_getAllKeys.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"),\n getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"),\n keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n\n\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5cy5qcz9hOTk0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXRBbGxLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUdldEFsbEtleXMnKSwgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSwga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICAgIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRBbGxLZXlzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getAllKeys.js\n')},"./node_modules/lodash/_getMapData.js": /*!********************************************!*\ !*** ./node_modules/lodash/_getMapData.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isKeyable = __webpack_require__(/*! ./_isKeyable */ \"./node_modules/lodash/_isKeyable.js\");\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n\nmodule.exports = getMapData;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcz80MjQ1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuLyoqXG4gKiBHZXRzIHRoZSBkYXRhIGZvciBgbWFwYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG1hcCBUaGUgbWFwIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUgcmVmZXJlbmNlIGtleS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXAgZGF0YS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFwRGF0YShtYXAsIGtleSkge1xuICAgIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICAgIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgICAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgICAgICA6IGRhdGEubWFwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXBEYXRhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getMapData.js\n")},"./node_modules/lodash/_getMatchData.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_getMatchData.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"),\n keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js");\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n\n\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n result[length] = [key, value, isStrictComparable(value)];\n }\n\n return result;\n}\n\nmodule.exports = getMatchData;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXRjaERhdGEuanM/M2JiNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSwga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBtYXRjaCBkYXRhIG9mIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBnZXRNYXRjaERhdGEob2JqZWN0KSB7XG4gICAgdmFyIHJlc3VsdCA9IGtleXMob2JqZWN0KSwgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcbiAgICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICAgICAgdmFyIGtleSA9IHJlc3VsdFtsZW5ndGhdLCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuICAgICAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWF0Y2hEYXRhO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getMatchData.js\n')},"./node_modules/lodash/_getNative.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_getNative.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"),\n getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js");\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it\'s native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanM/MGIwNyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSwgZ2V0VmFsdWUgPSByZXF1aXJlKCcuL19nZXRWYWx1ZScpO1xuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gICAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICAgIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGdldE5hdGl2ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getNative.js\n')},"./node_modules/lodash/_getPrototype.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_getPrototype.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");\n/** Built-in value references. */\n\n\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\nmodule.exports = getPrototype;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRQcm90b3R5cGUuanM/MmRjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBvdmVyQXJnID0gcmVxdWlyZSgnLi9fb3ZlckFyZycpO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getPrototype.js\n')},"./node_modules/lodash/_getRawTag.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_getRawTag.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar _Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/** Built-in value references. */\n\nvar symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\n}\n\nmodule.exports = getRawTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRSYXdUYWcuanM/MDBmZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gICAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLCB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgdHJ5IHtcbiAgICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgICAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCAoZSkgeyB9XG4gICAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIGlmICh1bm1hc2tlZCkge1xuICAgICAgICBpZiAoaXNPd24pIHtcbiAgICAgICAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getRawTag.js\n')},"./node_modules/lodash/_getSymbols.js": /*!********************************************!*\ !*** ./node_modules/lodash/_getSymbols.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"),\n stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\nmodule.exports = getSymbols;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0U3ltYm9scy5qcz8zMmY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSwgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgcmV0dXJuIGFycmF5RmlsdGVyKG5hdGl2ZUdldFN5bWJvbHMob2JqZWN0KSwgZnVuY3Rpb24gKHN5bWJvbCkge1xuICAgICAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gICAgfSk7XG59O1xubW9kdWxlLmV4cG9ydHMgPSBnZXRTeW1ib2xzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getSymbols.js\n')},"./node_modules/lodash/_getTag.js": /*!****************************************!*\ !*** ./node_modules/lodash/_getTag.js ***! \****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar DataView = __webpack_require__(/*! ./_DataView */ \"./node_modules/lodash/_DataView.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\"),\n Promise = __webpack_require__(/*! ./_Promise */ \"./node_modules/lodash/_Promise.js\"),\n Set = __webpack_require__(/*! ./_Set */ \"./node_modules/lodash/_Set.js\"),\n WeakMap = __webpack_require__(/*! ./_WeakMap */ \"./node_modules/lodash/_WeakMap.js\"),\n baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n toSource = __webpack_require__(/*! ./_toSource */ \"./node_modules/lodash/_toSource.js\");\n/** `Object#toString` result references. */\n\n\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\nvar dataViewTag = '[object DataView]';\n/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\n };\n}\n\nmodule.exports = getTag;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanM/NDJhMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLCBQcm9taXNlID0gcmVxdWlyZSgnLi9fUHJvbWlzZScpLCBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSwgV2Vha01hcCA9IHJlcXVpcmUoJy4vX1dlYWtNYXAnKSwgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSwgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLCBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJywgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJywgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsIHdlYWtNYXBUYWcgPSAnW29iamVjdCBXZWFrTWFwXSc7XG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksIG1hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShNYXApLCBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLCBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSwgd2Vha01hcEN0b3JTdHJpbmcgPSB0b1NvdXJjZShXZWFrTWFwKTtcbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgICBnZXRUYWcgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGJhc2VHZXRUYWcodmFsdWUpLCBDdG9yID0gcmVzdWx0ID09IG9iamVjdFRhZyA/IHZhbHVlLmNvbnN0cnVjdG9yIDogdW5kZWZpbmVkLCBjdG9yU3RyaW5nID0gQ3RvciA/IHRvU291cmNlKEN0b3IpIDogJyc7XG4gICAgICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICAgICAgICAgIGNhc2UgbWFwQ3RvclN0cmluZzogcmV0dXJuIG1hcFRhZztcbiAgICAgICAgICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgICAgICAgICAgY2FzZSB3ZWFrTWFwQ3RvclN0cmluZzogcmV0dXJuIHdlYWtNYXBUYWc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRUYWc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBTEE7QUFPQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getTag.js\n")},"./node_modules/lodash/_getValue.js": /*!******************************************!*\ !*** ./node_modules/lodash/_getValue.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFZhbHVlLmpzPzM2OTgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBnZXRWYWx1ZShvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxubW9kdWxlLmV4cG9ydHMgPSBnZXRWYWx1ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_getValue.js\n")},"./node_modules/lodash/_hasPath.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hasPath.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"),\n isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"),\n isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),\n isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"),\n toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js");\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n\n\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n\n object = object[key];\n }\n\n if (result || ++index != length) {\n return result;\n }\n\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNQYXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzUGF0aC5qcz9lMmMwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSwgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSwgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSwgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gICAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG4gICAgdmFyIGluZGV4ID0gLTEsIGxlbmd0aCA9IHBhdGgubGVuZ3RoLCByZXN1bHQgPSBmYWxzZTtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0gdG9LZXkocGF0aFtpbmRleF0pO1xuICAgICAgICBpZiAoIShyZXN1bHQgPSBvYmplY3QgIT0gbnVsbCAmJiBoYXNGdW5jKG9iamVjdCwga2V5KSkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG9iamVjdCA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgICBpZiAocmVzdWx0IHx8ICsraW5kZXggIT0gbGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGxlbmd0aCA9IG9iamVjdCA9PSBudWxsID8gMCA6IG9iamVjdC5sZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAgICAgKGlzQXJyYXkob2JqZWN0KSB8fCBpc0FyZ3VtZW50cyhvYmplY3QpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzUGF0aDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hasPath.js\n')},"./node_modules/lodash/_hashClear.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_hashClear.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanM/NDlmNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gICAgdGhpcy5zaXplID0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashClear.js\n')},"./node_modules/lodash/_hashDelete.js": /*!********************************************!*\ !*** ./node_modules/lodash/_hashDelete.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcz8xZWZjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gICAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzaERlbGV0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashDelete.js\n")},"./node_modules/lodash/_hashGet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hashGet.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoR2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcz9iYmMwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIEdldHMgdGhlIGhhc2ggdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gaGFzaEdldChrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gICAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgICAgICByZXR1cm4gcmVzdWx0ID09PSBIQVNIX1VOREVGSU5FRCA/IHVuZGVmaW5lZCA6IHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashGet.js\n")},"./node_modules/lodash/_hashHas.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hashHas.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEhhcy5qcz83YTQ4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBoYXNoSGFzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashHas.js\n')},"./node_modules/lodash/_hashSet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_hashSet.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar nativeCreate = __webpack_require__(/*! ./_nativeCreate */ \"./node_modules/lodash/_nativeCreate.js\");\n/** Used to stand-in for `undefined` hash values. */\n\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcz8yNTI0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICAgIHRoaXMuc2l6ZSArPSB0aGlzLmhhcyhrZXkpID8gMCA6IDE7XG4gICAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_hashSet.js\n")},"./node_modules/lodash/_initCloneObject.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_initCloneObject.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"),\n isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js");\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n\n\nfunction initCloneObject(object) {\n return typeof object.constructor == \'function\' && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\n\nmodule.exports = initCloneObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanM/ZmEyMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLCBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSwgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gICAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICAgICAgOiB7fTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFHQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_initCloneObject.js\n')},"./node_modules/lodash/_isIndex.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_isIndex.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n/** Used as references for various `Number` constants. */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n\nfunction isIndex(value, length) {\n var type = _typeof(value);\n\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (type == \'number\' || type != \'symbol\' && reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0luZGV4LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcz9jMDk4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG4gICAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAgICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNJbmRleDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isIndex.js\n')},"./node_modules/lodash/_isIterateeCall.js": /*!************************************************!*\ !*** ./node_modules/lodash/_isIterateeCall.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),\n isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"),\n isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n\n\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n\n var type = _typeof(index);\n\n if (type == \'number\' ? isArrayLike(object) && isIndex(index, object.length) : type == \'string\' && index in object) {\n return eq(object[index], value);\n }\n\n return false;\n}\n\nmodule.exports = isIterateeCall;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0l0ZXJhdGVlQ2FsbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzPzlhZmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZXEgPSByZXF1aXJlKCcuL2VxJyksIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLCBpc0luZGV4ID0gcmVxdWlyZSgnLi9faXNJbmRleCcpLCBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gICAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gICAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpKSB7XG4gICAgICAgIHJldHVybiBlcShvYmplY3RbaW5kZXhdLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNJdGVyYXRlZUNhbGw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isIterateeCall.js\n')},"./node_modules/lodash/_isKey.js": /*!***************************************!*\ !*** ./node_modules/lodash/_isKey.js ***! \***************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js");\n/** Used to match property names within property paths. */\n\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|(["\'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n\n var type = _typeof(value);\n\n if (type == \'number\' || type == \'symbol\' || type == \'boolean\' || value == null || isSymbol(value)) {\n return true;\n }\n\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n\nmodule.exports = isKey;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzS2V5LmpzP2Y2MDgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLCBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLCByZUlzUGxhaW5Qcm9wID0gL15cXHcqJC87XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSBhbmQgbm90IGEgcHJvcGVydHkgcGF0aC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeSBrZXlzIG9uLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm9wZXJ0eSBuYW1lLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzS2V5KHZhbHVlLCBvYmplY3QpIHtcbiAgICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgIHZhbHVlID09IG51bGwgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgICAgIChvYmplY3QgIT0gbnVsbCAmJiB2YWx1ZSBpbiBPYmplY3Qob2JqZWN0KSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGlzS2V5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isKey.js\n')},"./node_modules/lodash/_isKeyable.js": /*!*******************************************!*\ !*** ./node_modules/lodash/_isKeyable.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction isKeyable(value) {\n var type = _typeof(value);\n\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n\nmodule.exports = isKeyable;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanM/MTI5MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgICAgICA/ICh2YWx1ZSAhPT0gJ19fcHJvdG9fXycpXG4gICAgICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNLZXlhYmxlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isKeyable.js\n")},"./node_modules/lodash/_isMasked.js": /*!******************************************!*\ !*** ./node_modules/lodash/_isMasked.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar coreJsData = __webpack_require__(/*! ./_coreJsData */ \"./node_modules/lodash/_coreJsData.js\");\n/** Used to detect methods masquerading as native. */\n\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n\nmodule.exports = isMasked;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzTWFza2VkLmpzPzEzNjgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcbi8qKiBVc2VkIHRvIGRldGVjdCBtZXRob2RzIG1hc3F1ZXJhZGluZyBhcyBuYXRpdmUuICovXG52YXIgbWFza1NyY0tleSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHVpZCA9IC9bXi5dKyQvLmV4ZWMoY29yZUpzRGF0YSAmJiBjb3JlSnNEYXRhLmtleXMgJiYgY29yZUpzRGF0YS5rZXlzLklFX1BST1RPIHx8ICcnKTtcbiAgICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuLyoqXG4gKiBDaGVja3MgaWYgYGZ1bmNgIGhhcyBpdHMgc291cmNlIG1hc2tlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGZ1bmNgIGlzIG1hc2tlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc01hc2tlZChmdW5jKSB7XG4gICAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNNYXNrZWQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isMasked.js\n")},"./node_modules/lodash/_isPrototype.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_isPrototype.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\n}\n\nmodule.exports = isPrototype;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1Byb3RvdHlwZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzP2VhYzUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYSBwcm90b3R5cGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvdG90eXBlLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzUHJvdG90eXBlKHZhbHVlKSB7XG4gICAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciwgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG4gICAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNQcm90b3R5cGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isPrototype.js\n")},"./node_modules/lodash/_isStrictComparable.js": /*!****************************************************!*\ !*** ./node_modules/lodash/_isStrictComparable.js ***! \****************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js");\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n\n\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc1N0cmljdENvbXBhcmFibGUuanM/MDhjYyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpZiBzdWl0YWJsZSBmb3Igc3RyaWN0XG4gKiAgZXF1YWxpdHkgY29tcGFyaXNvbnMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNTdHJpY3RDb21wYXJhYmxlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc1N0cmljdENvbXBhcmFibGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_isStrictComparable.js\n')},"./node_modules/lodash/_listCacheClear.js": /*!************************************************!*\ !*** ./node_modules/lodash/_listCacheClear.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVDbGVhci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2xpc3RDYWNoZUNsZWFyLmpzPzI4YzkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICAgIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgICB0aGlzLnNpemUgPSAwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheClear.js\n")},"./node_modules/lodash/_listCacheDelete.js": /*!*************************************************!*\ !*** ./node_modules/lodash/_listCacheDelete.js ***! \*************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype;\n/** Built-in value references. */\n\nvar splice = arrayProto.splice;\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanM/NjlkNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3BsaWNlID0gYXJyYXlQcm90by5zcGxpY2U7XG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gICAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLCBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICAgIGlmIChpbmRleCA9PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgZGF0YS5wb3AoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHNwbGljZS5jYWxsKGRhdGEsIGluZGV4LCAxKTtcbiAgICB9XG4gICAgLS10aGlzLnNpemU7XG4gICAgcmV0dXJuIHRydWU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheDelete.js\n')},"./node_modules/lodash/_listCacheGet.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheGet.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanM/YjRjMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKlxuICogR2V0cyB0aGUgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUdldChrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG4gICAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheGet.js\n')},"./node_modules/lodash/_listCacheHas.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheHas.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanM/ZmJhNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gICAgcmV0dXJuIGFzc29jSW5kZXhPZih0aGlzLl9fZGF0YV9fLCBrZXkpID4gLTE7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheHas.js\n')},"./node_modules/lodash/_listCacheSet.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheSet.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js");\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n}\n\nmodule.exports = listCacheSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanM/NjdjYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcbi8qKlxuICogU2V0cyB0aGUgbGlzdCBjYWNoZSBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbGlzdCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG4gICAgaWYgKGluZGV4IDwgMCkge1xuICAgICAgICArK3RoaXMuc2l6ZTtcbiAgICAgICAgZGF0YS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbn1cbm1vZHVsZS5leHBvcnRzID0gbGlzdENhY2hlU2V0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_listCacheSet.js\n')},"./node_modules/lodash/_mapCacheClear.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_mapCacheClear.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar Hash = __webpack_require__(/*! ./_Hash */ \"./node_modules/lodash/_Hash.js\"),\n ListCache = __webpack_require__(/*! ./_ListCache */ \"./node_modules/lodash/_ListCache.js\"),\n Map = __webpack_require__(/*! ./_Map */ \"./node_modules/lodash/_Map.js\");\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\n\nmodule.exports = mapCacheClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVDbGVhci5qcz83YzY0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIEhhc2ggPSByZXF1aXJlKCcuL19IYXNoJyksIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLCBNYXAgPSByZXF1aXJlKCcuL19NYXAnKTtcbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gICAgdGhpcy5zaXplID0gMDtcbiAgICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICAgICAnaGFzaCc6IG5ldyBIYXNoLFxuICAgICAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAgICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheClear.js\n")},"./node_modules/lodash/_mapCacheDelete.js": /*!************************************************!*\ !*** ./node_modules/lodash/_mapCacheDelete.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ \"./node_modules/lodash/_getMapData.js\");\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZURlbGV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlRGVsZXRlLmpzPzkzZWQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICAgIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheDelete.js\n")},"./node_modules/lodash/_mapCacheGet.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheGet.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlR2V0LmpzPzI0NzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmdldChrZXkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheGet.js\n')},"./node_modules/lodash/_mapCacheHas.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheHas.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUhhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzP2E1MjQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogQ2hlY2tzIGlmIGEgbWFwIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVIYXMoa2V5KSB7XG4gICAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVIYXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7OztBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheHas.js\n')},"./node_modules/lodash/_mapCacheSet.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheSet.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js");\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZVNldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlU2V0LmpzPzFmYzgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLCBzaXplID0gZGF0YS5zaXplO1xuICAgIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICAgIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICAgIHJldHVybiB0aGlzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapCacheSet.js\n')},"./node_modules/lodash/_mapToArray.js": /*!********************************************!*\ !*** ./node_modules/lodash/_mapToArray.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwVG9BcnJheS5qcz9lZGZhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb252ZXJ0cyBgbWFwYCB0byBpdHMga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUga2V5LXZhbHVlIHBhaXJzLlxuICovXG5mdW5jdGlvbiBtYXBUb0FycmF5KG1hcCkge1xuICAgIHZhciBpbmRleCA9IC0xLCByZXN1bHQgPSBBcnJheShtYXAuc2l6ZSk7XG4gICAgbWFwLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgcmVzdWx0WysraW5kZXhdID0gW2tleSwgdmFsdWVdO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_mapToArray.js\n")},"./node_modules/lodash/_matchesStrictComparable.js": /*!*********************************************************!*\ !*** ./node_modules/lodash/_matchesStrictComparable.js ***! \*********************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n\nfunction matchesStrictComparable(key, srcValue) {\n return function (object) {\n if (object == null) {\n return false;\n }\n\n return object[key] === srcValue && (srcValue !== undefined || key in Object(object));\n };\n}\n\nmodule.exports = matchesStrictComparable;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXRjaGVzU3RyaWN0Q29tcGFyYWJsZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hdGNoZXNTdHJpY3RDb21wYXJhYmxlLmpzPzIwZWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAgICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_matchesStrictComparable.js\n")},"./node_modules/lodash/_memoizeCapped.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_memoizeCapped.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js");\n/** Used as the maximum memoize cache size. */\n\n\nvar MAX_MEMOIZE_SIZE = 500;\n/**\n * A specialized version of `_.memoize` which clears the memoized function\'s\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n\nfunction memoizeCapped(func) {\n var result = memoize(func, function (key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n\n return key;\n });\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWVtb2l6ZUNhcHBlZC5qcz8yMzRkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG1lbW9pemUgPSByZXF1aXJlKCcuL21lbW9pemUnKTtcbi8qKiBVc2VkIGFzIHRoZSBtYXhpbXVtIG1lbW9pemUgY2FjaGUgc2l6ZS4gKi9cbnZhciBNQVhfTUVNT0laRV9TSVpFID0gNTAwO1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gICAgdmFyIHJlc3VsdCA9IG1lbW9pemUoZnVuYywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoY2FjaGUuc2l6ZSA9PT0gTUFYX01FTU9JWkVfU0laRSkge1xuICAgICAgICAgICAgY2FjaGUuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ga2V5O1xuICAgIH0pO1xuICAgIHZhciBjYWNoZSA9IHJlc3VsdC5jYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplQ2FwcGVkO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_memoizeCapped.js\n')},"./node_modules/lodash/_nativeCreate.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_nativeCreate.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar getNative = __webpack_require__(/*! ./_getNative */ \"./node_modules/lodash/_getNative.js\");\n/* Built-in method references that are verified to be native. */\n\n\nvar nativeCreate = getNative(Object, 'create');\nmodule.exports = nativeCreate;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanM/NjA0NCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeCreate.js\n")},"./node_modules/lodash/_nativeKeys.js": /*!********************************************!*\ !*** ./node_modules/lodash/_nativeKeys.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js");\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeKeys = overArg(Object.keys, Object);\nmodule.exports = nativeKeys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcz81N2E1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlS2V5cyA9IG92ZXJBcmcoT2JqZWN0LmtleXMsIE9iamVjdCk7XG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeKeys.js\n')},"./node_modules/lodash/_nativeKeysIn.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_nativeKeysIn.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n\nfunction nativeKeysIn(object) {\n var result = [];\n\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n\n return result;\n}\n\nmodule.exports = nativeKeysIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanM/ZWM4YyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhpcyBmdW5jdGlvbiBpcyBsaWtlXG4gKiBbYE9iamVjdC5rZXlzYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBleGNlcHQgdGhhdCBpdCBpbmNsdWRlcyBpbmhlcml0ZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBuYXRpdmVLZXlzSW4ob2JqZWN0KSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gbmF0aXZlS2V5c0luO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nativeKeysIn.js\n")},"./node_modules/lodash/_nodeUtil.js": /*!******************************************!*\ !*** ./node_modules/lodash/_nodeUtil.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js");\n/** Detect free variable `exports`. */\n\n\nvar freeExports = ( false ? undefined : _typeof(exports)) == \'object\' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && ( false ? undefined : _typeof(module)) == \'object\' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require(\'util\').types;\n\n if (types) {\n return types;\n } // Legacy `process.binding(\'util\')` for Node.js < 10.\n\n\n return freeProcess && freeProcess.binding && freeProcess.binding(\'util\');\n } catch (e) {}\n}();\n\nmodule.exports = nodeUtil;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19ub2RlVXRpbC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzPzk5ZDMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzICYmIGZyZWVHbG9iYWwucHJvY2Vzcztcbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICAgICAgdmFyIHR5cGVzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlKCd1dGlsJykudHlwZXM7XG4gICAgICAgIGlmICh0eXBlcykge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVzO1xuICAgICAgICB9XG4gICAgICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgICAgIHJldHVybiBmcmVlUHJvY2VzcyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHsgfVxufSgpKTtcbm1vZHVsZS5leHBvcnRzID0gbm9kZVV0aWw7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_nodeUtil.js\n')},"./node_modules/lodash/_objectToString.js": /*!************************************************!*\ !*** ./node_modules/lodash/_objectToString.js ***! \************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar nativeObjectToString = objectProto.toString;\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzPzI5ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7QUFLQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_objectToString.js\n")},"./node_modules/lodash/_overArg.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_overArg.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlckFyZy5qcz85MWU5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7OztBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_overArg.js\n")},"./node_modules/lodash/_overRest.js": /*!******************************************!*\ !*** ./node_modules/lodash/_overRest.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js");\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeMax = Math.max;\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? func.length - 1 : start, 0);\n return function () {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n\n index = -1;\n var otherArgs = Array(start + 1);\n\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyUmVzdC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX292ZXJSZXN0LmpzPzIyODYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpO1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gICAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLCBpbmRleCA9IC0xLCBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgICAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICAgICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gICAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_overRest.js\n')},"./node_modules/lodash/_parent.js": /*!****************************************!*\ !*** ./node_modules/lodash/_parent.js ***! \****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"),\n baseSlice = __webpack_require__(/*! ./_baseSlice */ "./node_modules/lodash/_baseSlice.js");\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n\n\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19wYXJlbnQuanM/ODI5NiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLCBiYXNlU2xpY2UgPSByZXF1aXJlKCcuL19iYXNlU2xpY2UnKTtcbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IHZhbHVlIGF0IGBwYXRoYCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcGF0aCBUaGUgcGF0aCB0byBnZXQgdGhlIHBhcmVudCB2YWx1ZSBvZi5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwYXJlbnQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHBhcmVudChvYmplY3QsIHBhdGgpIHtcbiAgICByZXR1cm4gcGF0aC5sZW5ndGggPCAyID8gb2JqZWN0IDogYmFzZUdldChvYmplY3QsIGJhc2VTbGljZShwYXRoLCAwLCAtMSkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_parent.js\n')},"./node_modules/lodash/_root.js": /*!**************************************!*\ !*** ./node_modules/lodash/_root.js ***! \**************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js");\n/** Detect free variable `self`. */\n\n\nvar freeSelf = (typeof self === "undefined" ? "undefined" : _typeof(self)) == \'object\' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function(\'return this\')();\nmodule.exports = root;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fcm9vdC5qcz8yYjNlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGZyZWVHbG9iYWwgPSByZXF1aXJlKCcuL19mcmVlR2xvYmFsJyk7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xubW9kdWxlLmV4cG9ydHMgPSByb290O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_root.js\n')},"./node_modules/lodash/_safeGet.js": /*!*****************************************!*\ !*** ./node_modules/lodash/_safeGet.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcz84YWRiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBga2V5YCwgdW5sZXNzIGBrZXlgIGlzIFwiX19wcm90b19fXCIgb3IgXCJjb25zdHJ1Y3RvclwiLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBwcm9wZXJ0eSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2FmZUdldChvYmplY3QsIGtleSkge1xuICAgIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Rba2V5XTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc2FmZUdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_safeGet.js\n")},"./node_modules/lodash/_setCacheAdd.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_setCacheAdd.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\n}\n\nmodule.exports = setCacheAdd;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUFkZC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzPzdlZDIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgICB0aGlzLl9fZGF0YV9fLnNldCh2YWx1ZSwgSEFTSF9VTkRFRklORUQpO1xuICAgIHJldHVybiB0aGlzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRDYWNoZUFkZDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setCacheAdd.js\n")},"./node_modules/lodash/_setCacheHas.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_setCacheHas.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRDYWNoZUhhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlSGFzLmpzP2RjMGYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHZhbHVlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setCacheHas.js\n")},"./node_modules/lodash/_setToArray.js": /*!********************************************!*\ !*** ./node_modules/lodash/_setToArray.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9BcnJheS5qcz9hYzQxIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb252ZXJ0cyBgc2V0YCB0byBhbiBhcnJheSBvZiBpdHMgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc2V0IFRoZSBzZXQgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBzZXRUb0FycmF5KHNldCkge1xuICAgIHZhciBpbmRleCA9IC0xLCByZXN1bHQgPSBBcnJheShzZXQuc2l6ZSk7XG4gICAgc2V0LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJlc3VsdFsrK2luZGV4XSA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setToArray.js\n")},"./node_modules/lodash/_setToString.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_setToString.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"),\n shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js");\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n\n\nvar setToString = shortOut(baseSetToString);\nmodule.exports = setToString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb1N0cmluZy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldFRvU3RyaW5nLmpzP2MxYzkiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksIHNob3J0T3V0ID0gcmVxdWlyZSgnLi9fc2hvcnRPdXQnKTtcbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBUUE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_setToString.js\n')},"./node_modules/lodash/_shortOut.js": /*!******************************************!*\ !*** ./node_modules/lodash/_shortOut.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\n\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeNow = Date.now;\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n return function () {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n lastCalled = stamp;\n\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Nob3J0T3V0LmpzP2YzYzEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLCBIT1RfU1BBTiA9IDE2O1xuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU5vdyA9IERhdGUubm93O1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICAgIHZhciBjb3VudCA9IDAsIGxhc3RDYWxsZWQgPSAwO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLCByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuICAgICAgICBsYXN0Q2FsbGVkID0gc3RhbXA7XG4gICAgICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICAgICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY291bnQgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHVuZGVmaW5lZCwgYXJndW1lbnRzKTtcbiAgICB9O1xufVxubW9kdWxlLmV4cG9ydHMgPSBzaG9ydE91dDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_shortOut.js\n")},"./node_modules/lodash/_stackClear.js": /*!********************************************!*\ !*** ./node_modules/lodash/_stackClear.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js");\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\n}\n\nmodule.exports = stackClear;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0NsZWFyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcz9lZmI2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBTdGFja1xuICovXG5mdW5jdGlvbiBzdGFja0NsZWFyKCkge1xuICAgIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICAgIHRoaXMuc2l6ZSA9IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackClear.js\n')},"./node_modules/lodash/_stackDelete.js": /*!*********************************************!*\ !*** ./node_modules/lodash/_stackDelete.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzPzJmY2MiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sIHJlc3VsdCA9IGRhdGFbJ2RlbGV0ZSddKGtleSk7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrRGVsZXRlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackDelete.js\n")},"./node_modules/lodash/_stackGet.js": /*!******************************************!*\ !*** ./node_modules/lodash/_stackGet.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0dldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzPzgwMmEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackGet.js\n")},"./node_modules/lodash/_stackHas.js": /*!******************************************!*\ !*** ./node_modules/lodash/_stackHas.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrSGFzLmpzPzU1YTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackHas.js\n")},"./node_modules/lodash/_stackSet.js": /*!******************************************!*\ !*** ./node_modules/lodash/_stackSet.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"),\n Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"),\n MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js");\n/** Used as the size to enable large array optimizations. */\n\n\nvar LARGE_ARRAY_SIZE = 200;\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n\nfunction stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzP2QwMmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLCBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIExpc3RDYWNoZSkge1xuICAgICAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgICAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICAgICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICAgICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgICB9XG4gICAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICAgIHJldHVybiB0aGlzO1xufVxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stackSet.js\n')},"./node_modules/lodash/_strictIndexOf.js": /*!***********************************************!*\ !*** ./node_modules/lodash/_strictIndexOf.js ***! \***********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n\n return -1;\n}\n\nmodule.exports = strictIndexOf;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpY3RJbmRleE9mLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaWN0SW5kZXhPZi5qcz8wOTlhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5kZXhPZmAgd2hpY2ggcGVyZm9ybXMgc3RyaWN0IGVxdWFsaXR5XG4gKiBjb21wYXJpc29ucyBvZiB2YWx1ZXMsIGkuZS4gYD09PWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleCkge1xuICAgIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_strictIndexOf.js\n")},"./node_modules/lodash/_stringToPath.js": /*!**********************************************!*\ !*** ./node_modules/lodash/_stringToPath.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ \"./node_modules/lodash/_memoizeCapped.js\");\n/** Used to match property names within property paths. */\n\n\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n/** Used to match backslashes in property paths. */\n\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\nvar stringToPath = memoizeCapped(function (string) {\n var result = [];\n\n if (string.charCodeAt(0) === 46\n /* . */\n ) {\n result.push('');\n }\n\n string.replace(rePropName, function (match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\nmodule.exports = stringToPath;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdUb1BhdGguanM/MThkOCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuLyoqIFVzZWQgdG8gbWF0Y2ggcHJvcGVydHkgbmFtZXMgd2l0aGluIHByb3BlcnR5IHBhdGhzLiAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14uW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JCkpL2c7XG4vKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZztcbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24gKHN0cmluZykge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBpZiAoc3RyaW5nLmNoYXJDb2RlQXQoMCkgPT09IDQ2IC8qIC4gKi8pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJycpO1xuICAgIH1cbiAgICBzdHJpbmcucmVwbGFjZShyZVByb3BOYW1lLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuICAgICAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn0pO1xubW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdUb1BhdGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_stringToPath.js\n")},"./node_modules/lodash/_toKey.js": /*!***************************************!*\ !*** ./node_modules/lodash/_toKey.js ***! \***************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0;\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n\nmodule.exports = toKey;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b0tleS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvS2V5LmpzP2Y0ZDYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIGtleSBpZiBpdCdzIG5vdCBhIHN0cmluZyBvciBzeW1ib2wuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7c3RyaW5nfHN5bWJvbH0gUmV0dXJucyB0aGUga2V5LlxuICovXG5mdW5jdGlvbiB0b0tleSh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgICByZXR1cm4gKHJlc3VsdCA9PSAnMCcgJiYgKDEgLyB2YWx1ZSkgPT0gLUlORklOSVRZKSA/ICctMCcgOiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvS2V5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBOzs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_toKey.js\n")},"./node_modules/lodash/_toSource.js": /*!******************************************!*\ !*** ./node_modules/lodash/_toSource.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n\nmodule.exports = toSource;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzP2RjNTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gICAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkgeyB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Tb3VyY2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/_toSource.js\n")},"./node_modules/lodash/constant.js": /*!*****************************************!*\ !*** ./node_modules/lodash/constant.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n\nfunction constant(value) {\n return function () {\n return value;\n };\n}\n\nmodule.exports = constant;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbnN0YW50LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcz83MmYwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/constant.js\n")},"./node_modules/lodash/eq.js": /*!***********************************!*\ !*** ./node_modules/lodash/eq.js ***! \***********************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n\nmodule.exports = eq;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9lcS5qcz85NjM4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBQZXJmb3JtcyBhXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogY29tcGFyaXNvbiBiZXR3ZWVuIHR3byB2YWx1ZXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIGVxdWl2YWxlbnQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogMSB9O1xuICpcbiAqIF8uZXEob2JqZWN0LCBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoJ2EnLCAnYScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uZXEoJ2EnLCBPYmplY3QoJ2EnKSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uZXEoTmFOLCBOYU4pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBlcSh2YWx1ZSwgb3RoZXIpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXE7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/eq.js\n")},"./node_modules/lodash/find.js": /*!*************************************!*\ !*** ./node_modules/lodash/find.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar createFind = __webpack_require__(/*! ./_createFind */ \"./node_modules/lodash/_createFind.js\"),\n findIndex = __webpack_require__(/*! ./findIndex */ \"./node_modules/lodash/findIndex.js\");\n/**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n\n\nvar find = createFind(findIndex);\nmodule.exports = find;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanM/Mjc2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLCBmaW5kSW5kZXggPSByZXF1aXJlKCcuL2ZpbmRJbmRleCcpO1xuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIHRoZSBmaXJzdCBlbGVtZW50XG4gKiBgcHJlZGljYXRlYCByZXR1cm5zIHRydXRoeSBmb3IuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZCB3aXRoIHRocmVlXG4gKiBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtwcmVkaWNhdGU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZnJvbUluZGV4PTBdIFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtYXRjaGVkIGVsZW1lbnQsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9LFxuICogICB7ICd1c2VyJzogJ2ZyZWQnLCAgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9LFxuICogICB7ICd1c2VyJzogJ3BlYmJsZXMnLCAnYWdlJzogMSwgICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiBvLmFnZSA8IDQwOyB9KTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ2Jhcm5leSdcbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCB7ICdhZ2UnOiAxLCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdCBmb3IgJ3BlYmJsZXMnXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCBbJ2FjdGl2ZScsIGZhbHNlXSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdmcmVkJ1xuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKi9cbnZhciBmaW5kID0gY3JlYXRlRmluZChmaW5kSW5kZXgpO1xubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9DQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/find.js\n")},"./node_modules/lodash/findIndex.js": /*!******************************************!*\ !*** ./node_modules/lodash/findIndex.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ \"./node_modules/lodash/_baseFindIndex.js\"),\n baseIteratee = __webpack_require__(/*! ./_baseIteratee */ \"./node_modules/lodash/_baseIteratee.js\"),\n toInteger = __webpack_require__(/*! ./toInteger */ \"./node_modules/lodash/toInteger.js\");\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\n\nvar nativeMax = Math.max;\n/**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n\nfunction findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n\n if (!length) {\n return -1;\n }\n\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n\n return baseFindIndex(array, baseIteratee(predicate, 3), index);\n}\n\nmodule.exports = findIndex;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmRJbmRleC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmluZEluZGV4LmpzPzUxZjUiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUZpbmRJbmRleCA9IHJlcXVpcmUoJy4vX2Jhc2VGaW5kSW5kZXgnKSwgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vdG9JbnRlZ2VyJyk7XG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gKiAvLyA9PiAxXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiAyXG4gKi9cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJdGVyYXRlZShwcmVkaWNhdGUsIDMpLCBpbmRleCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRJbmRleDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/findIndex.js\n")},"./node_modules/lodash/get.js": /*!************************************!*\ !*** ./node_modules/lodash/get.js ***! \************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGet = __webpack_require__(/*! ./_baseGet */ \"./node_modules/lodash/_baseGet.js\");\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZ2V0LmpzPzliMDIiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcbi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGBvYmplY3RgLiBJZiB0aGUgcmVzb2x2ZWQgdmFsdWUgaXNcbiAqIGB1bmRlZmluZWRgLCB0aGUgYGRlZmF1bHRWYWx1ZWAgaXMgcmV0dXJuZWQgaW4gaXRzIHBsYWNlLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy43LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IFtkZWZhdWx0VmFsdWVdIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgYHVuZGVmaW5lZGAgcmVzb2x2ZWQgdmFsdWVzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc29sdmVkIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IFt7ICdiJzogeyAnYyc6IDMgfSB9XSB9O1xuICpcbiAqIF8uZ2V0KG9iamVjdCwgJ2FbMF0uYi5jJyk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCBbJ2EnLCAnMCcsICdiJywgJ2MnXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5nZXQob2JqZWN0LCAnYS5iLmMnLCAnZGVmYXVsdCcpO1xuICogLy8gPT4gJ2RlZmF1bHQnXG4gKi9cbmZ1bmN0aW9uIGdldChvYmplY3QsIHBhdGgsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyBkZWZhdWx0VmFsdWUgOiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/get.js\n")},"./node_modules/lodash/hasIn.js": /*!**************************************!*\ !*** ./node_modules/lodash/hasIn.js ***! \**************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseHasIn = __webpack_require__(/*! ./_baseHasIn */ \"./node_modules/lodash/_baseHasIn.js\"),\n hasPath = __webpack_require__(/*! ./_hasPath */ \"./node_modules/lodash/_hasPath.js\");\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n\n\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2hhc0luLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcz84NjA0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VIYXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VIYXNJbicpLCBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuLyoqXG4gKiBDaGVja3MgaWYgYHBhdGhgIGlzIGEgZGlyZWN0IG9yIGluaGVyaXRlZCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSBfLmNyZWF0ZSh7ICdhJzogXy5jcmVhdGUoeyAnYic6IDIgfSkgfSk7XG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5oYXNJbihvYmplY3QsICdiJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBoYXNJbihvYmplY3QsIHBhdGgpIHtcbiAgICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGhhc0luO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/hasIn.js\n")},"./node_modules/lodash/identity.js": /*!*****************************************!*\ !*** ./node_modules/lodash/identity.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lkZW50aXR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcz9jZDlkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpZGVudGl0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/identity.js\n")},"./node_modules/lodash/isArguments.js": /*!********************************************!*\ !*** ./node_modules/lodash/isArguments.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ \"./node_modules/lodash/_baseIsArguments.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n/** Used for built-in method references. */\n\n\nvar objectProto = Object.prototype;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Built-in value references. */\n\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n};\nmodule.exports = isArguments;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FyZ3VtZW50cy5qcz9kMzcwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBsaWtlbHkgYW4gYGFyZ3VtZW50c2Agb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoZnVuY3Rpb24oKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FyZ3VtZW50cyhbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJndW1lbnRzID0gYmFzZUlzQXJndW1lbnRzKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICAgICAhcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gaXNBcmd1bWVudHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArguments.js\n")},"./node_modules/lodash/isArray.js": /*!****************************************!*\ !*** ./node_modules/lodash/isArray.js ***! \****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\nvar isArray = Array.isArray;\nmodule.exports = isArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXkuanM/Njc0NyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArray.js\n")},"./node_modules/lodash/isArrayLike.js": /*!********************************************!*\ !*** ./node_modules/lodash/isArrayLike.js ***! \********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isFunction = __webpack_require__(/*! ./isFunction */ \"./node_modules/lodash/isFunction.js\"),\n isLength = __webpack_require__(/*! ./isLength */ \"./node_modules/lodash/isLength.js\");\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcz8zMGM5Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSwgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArrayLike.js\n")},"./node_modules/lodash/isArrayLikeObject.js": /*!**************************************************!*\ !*** ./node_modules/lodash/isArrayLikeObject.js ***! \**************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject(\'abc\');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n\n\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZU9iamVjdC5qcz9kY2JlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLCBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmlzQXJyYXlMaWtlYCBleGNlcHQgdGhhdCBpdCBhbHNvIGNoZWNrcyBpZiBgdmFsdWVgXG4gKiBpcyBhbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXktbGlrZSBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlT2JqZWN0KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2VPYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBpc0FycmF5TGlrZSh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlT2JqZWN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isArrayLikeObject.js\n')},"./node_modules/lodash/isBuffer.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isBuffer.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"),\n stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js");\n/** Detect free variable `exports`. */\n\n\nvar freeExports = ( false ? undefined : _typeof(exports)) == \'object\' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && ( false ? undefined : _typeof(module)) == \'object\' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Built-in value references. */\n\nvar Buffer = moduleExports ? root.Buffer : undefined;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n\nvar isBuffer = nativeIsBuffer || stubFalse;\nmodule.exports = isBuffer;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0J1ZmZlci5qcz8wZDI0Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290JyksIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVJc0J1ZmZlciA9IEJ1ZmZlciA/IEJ1ZmZlci5pc0J1ZmZlciA6IHVuZGVmaW5lZDtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcbm1vZHVsZS5leHBvcnRzID0gaXNCdWZmZXI7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7OztBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFDQTtBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isBuffer.js\n')},"./node_modules/lodash/isFunction.js": /*!*******************************************!*\ !*** ./node_modules/lodash/isFunction.js ***! \*******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\");\n/** `Object#toString` result references. */\n\n\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n } // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzRnVuY3Rpb24uanM/OTUyMCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLCBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhc3luY1RhZyA9ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJywgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsIHByb3h5VGFnID0gJ1tvYmplY3QgUHJveHldJztcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNGdW5jdGlvbjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isFunction.js\n")},"./node_modules/lodash/isLength.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isLength.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzTGVuZ3RoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcz9iMjE4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cbm1vZHVsZS5leHBvcnRzID0gaXNMZW5ndGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQTtBQUNBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isLength.js\n")},"./node_modules/lodash/isObject.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isObject.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String(\'\')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return value != null && (type == \'object\' || type == \'function\');\n}\n\nmodule.exports = isObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcz8xYThjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isObject.js\n')},"./node_modules/lodash/isObjectLike.js": /*!*********************************************!*\ !*** ./node_modules/lodash/isObjectLike.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n/**\n * Checks if `value` is object-like. A value is object-like if it\'s not `null`\n * and has a `typeof` result of "object".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nfunction isObjectLike(value) {\n return value != null && _typeof(value) == \'object\';\n}\n\nmodule.exports = isObjectLike;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3RMaWtlLmpzPzEzMTAiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isObjectLike.js\n')},"./node_modules/lodash/isPlainObject.js": /*!**********************************************!*\ !*** ./node_modules/lodash/isPlainObject.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ \"./node_modules/lodash/_baseGetTag.js\"),\n getPrototype = __webpack_require__(/*! ./_getPrototype */ \"./node_modules/lodash/_getPrototype.js\"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ \"./node_modules/lodash/isObjectLike.js\");\n/** `Object#toString` result references. */\n\n\nvar objectTag = '[object Object]';\n/** Used for built-in method references. */\n\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to infer the `Object` constructor. */\n\nvar objectCtorString = funcToString.call(Object);\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n\n var proto = getPrototype(value);\n\n if (proto === null) {\n return true;\n }\n\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanM/NjBlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLCBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSwgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0ZWQgYnkgdGhlXG4gKiBgT2JqZWN0YCBjb25zdHJ1Y3RvciBvciBvbmUgd2l0aCBhIGBbW1Byb3RvdHlwZV1dYCBvZiBgbnVsbGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjguMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogfVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAwIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChPYmplY3QuY3JlYXRlKG51bGwpKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICAgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgICAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc1BsYWluT2JqZWN0O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/isPlainObject.js\n")},"./node_modules/lodash/isSymbol.js": /*!*****************************************!*\ !*** ./node_modules/lodash/isSymbol.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"),\n isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js");\n/** `Object#toString` result references. */\n\n\nvar symbolTag = \'[object Symbol]\';\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol(\'abc\');\n * // => false\n */\n\nfunction isSymbol(value) {\n return _typeof(value) == \'symbol\' || isObjectLike(value) && baseGetTag(value) == symbolTag;\n}\n\nmodule.exports = isSymbol;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N5bWJvbC5qcz9mZmQ2Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgICAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7O0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQTtBQUNBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/isSymbol.js\n')},"./node_modules/lodash/isTypedArray.js": /*!*********************************************!*\ !*** ./node_modules/lodash/isTypedArray.js ***! \*********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"),\n baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"),\n nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js");\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\nmodule.exports = isTypedArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNUeXBlZEFycmF5LmpzPzczYWMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vX2Jhc2VJc1R5cGVkQXJyYXknKSwgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcbi8qIE5vZGUuanMgaGVscGVyIHJlZmVyZW5jZXMuICovXG52YXIgbm9kZUlzVHlwZWRBcnJheSA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzVHlwZWRBcnJheTtcbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcbm1vZHVsZS5leHBvcnRzID0gaXNUeXBlZEFycmF5O1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUJBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/isTypedArray.js\n')},"./node_modules/lodash/keys.js": /*!*************************************!*\ !*** ./node_modules/lodash/keys.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n baseKeys = __webpack_require__(/*! ./_baseKeys */ \"./node_modules/lodash/_baseKeys.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanM/ZWM2OSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBhcnJheUxpa2VLZXlzID0gcmVxdWlyZSgnLi9fYXJyYXlMaWtlS2V5cycpLCBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0ga2V5cztcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE0QkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/keys.js\n")},"./node_modules/lodash/keysIn.js": /*!***************************************!*\ !*** ./node_modules/lodash/keysIn.js ***! \***************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ \"./node_modules/lodash/_arrayLikeKeys.js\"),\n baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ \"./node_modules/lodash/_baseKeysIn.js\"),\n isArrayLike = __webpack_require__(/*! ./isArrayLike */ \"./node_modules/lodash/isArrayLike.js\");\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n\n\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gva2V5c0luLmpzPzk5MzQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSwgYmFzZUtleXNJbiA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzSW4nKSwgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICAgIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QsIHRydWUpIDogYmFzZUtleXNJbihvYmplY3QpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/keysIn.js\n")},"./node_modules/lodash/last.js": /*!*************************************!*\ !*** ./node_modules/lodash/last.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2xhc3QuanM/NDQxNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogR2V0cyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbGFzdCBlbGVtZW50IG9mIGBhcnJheWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubGFzdChbMSwgMiwgM10pO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiBsYXN0KGFycmF5KSB7XG4gICAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICAgIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cbm1vZHVsZS5leHBvcnRzID0gbGFzdDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/last.js\n")},"./node_modules/lodash/memoize.js": /*!****************************************!*\ !*** ./node_modules/lodash/memoize.js ***! \****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar MapCache = __webpack_require__(/*! ./_MapCache */ \"./node_modules/lodash/_MapCache.js\");\n/** Error message constants. */\n\n\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver != null && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n} // Expose `MapCache`.\n\n\nmemoize.Cache = MapCache;\nmodule.exports = memoize;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lbW9pemUuanM/ZTM4MCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyk7XG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBtZW1vaXplcyB0aGUgcmVzdWx0IG9mIGBmdW5jYC4gSWYgYHJlc29sdmVyYCBpc1xuICogcHJvdmlkZWQsIGl0IGRldGVybWluZXMgdGhlIGNhY2hlIGtleSBmb3Igc3RvcmluZyB0aGUgcmVzdWx0IGJhc2VkIG9uIHRoZVxuICogYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbi4gQnkgZGVmYXVsdCwgdGhlIGZpcnN0IGFyZ3VtZW50XG4gKiBwcm92aWRlZCB0byB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUgbWFwIGNhY2hlIGtleS4gVGhlIGBmdW5jYFxuICogaXMgaW52b2tlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKlxuICogKipOb3RlOioqIFRoZSBjYWNoZSBpcyBleHBvc2VkIGFzIHRoZSBgY2FjaGVgIHByb3BlcnR5IG9uIHRoZSBtZW1vaXplZFxuICogZnVuY3Rpb24uIEl0cyBjcmVhdGlvbiBtYXkgYmUgY3VzdG9taXplZCBieSByZXBsYWNpbmcgdGhlIGBfLm1lbW9pemUuQ2FjaGVgXG4gKiBjb25zdHJ1Y3RvciB3aXRoIG9uZSB3aG9zZSBpbnN0YW5jZXMgaW1wbGVtZW50IHRoZVxuICogW2BNYXBgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1wcm9wZXJ0aWVzLW9mLXRoZS1tYXAtcHJvdG90eXBlLW9iamVjdClcbiAqIG1ldGhvZCBpbnRlcmZhY2Ugb2YgYGNsZWFyYCwgYGRlbGV0ZWAsIGBnZXRgLCBgaGFzYCwgYW5kIGBzZXRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaGF2ZSBpdHMgb3V0cHV0IG1lbW9pemVkLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3Jlc29sdmVyXSBUaGUgZnVuY3Rpb24gdG8gcmVzb2x2ZSB0aGUgY2FjaGUga2V5LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgbWVtb2l6ZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSwgJ2InOiAyIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdjJzogMywgJ2QnOiA0IH07XG4gKlxuICogdmFyIHZhbHVlcyA9IF8ubWVtb2l6ZShfLnZhbHVlcyk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIHZhbHVlcyhvdGhlcik7XG4gKiAvLyA9PiBbMywgNF1cbiAqXG4gKiBvYmplY3QuYSA9IDI7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsxLCAyXVxuICpcbiAqIC8vIE1vZGlmeSB0aGUgcmVzdWx0IGNhY2hlLlxuICogdmFsdWVzLmNhY2hlLnNldChvYmplY3QsIFsnYScsICdiJ10pO1xuICogdmFsdWVzKG9iamVjdCk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddXG4gKlxuICogLy8gUmVwbGFjZSBgXy5tZW1vaXplLkNhY2hlYC5cbiAqIF8ubWVtb2l6ZS5DYWNoZSA9IFdlYWtNYXA7XG4gKi9cbmZ1bmN0aW9uIG1lbW9pemUoZnVuYywgcmVzb2x2ZXIpIHtcbiAgICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICAgIH1cbiAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLCBrZXkgPSByZXNvbHZlciA/IHJlc29sdmVyLmFwcGx5KHRoaXMsIGFyZ3MpIDogYXJnc1swXSwgY2FjaGUgPSBtZW1vaXplZC5jYWNoZTtcbiAgICAgICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIG1lbW9pemVkLmNhY2hlID0gbmV3IChtZW1vaXplLkNhY2hlIHx8IE1hcENhY2hlKTtcbiAgICByZXR1cm4gbWVtb2l6ZWQ7XG59XG4vLyBFeHBvc2UgYE1hcENhY2hlYC5cbm1lbW9pemUuQ2FjaGUgPSBNYXBDYWNoZTtcbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/memoize.js\n")},"./node_modules/lodash/merge.js": /*!**************************************!*\ !*** ./node_modules/lodash/merge.js ***! \**************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n\n\nvar merge = createAssigner(function (object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\nmodule.exports = merge;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tZXJnZS5qcz80MjQ1Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLCBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uYXNzaWduYCBleGNlcHQgdGhhdCBpdCByZWN1cnNpdmVseSBtZXJnZXMgb3duIGFuZFxuICogaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlIG9iamVjdHMgaW50byB0aGVcbiAqIGRlc3RpbmF0aW9uIG9iamVjdC4gU291cmNlIHByb3BlcnRpZXMgdGhhdCByZXNvbHZlIHRvIGB1bmRlZmluZWRgIGFyZVxuICogc2tpcHBlZCBpZiBhIGRlc3RpbmF0aW9uIHZhbHVlIGV4aXN0cy4gQXJyYXkgYW5kIHBsYWluIG9iamVjdCBwcm9wZXJ0aWVzXG4gKiBhcmUgbWVyZ2VkIHJlY3Vyc2l2ZWx5LiBPdGhlciBvYmplY3RzIGFuZCB2YWx1ZSB0eXBlcyBhcmUgb3ZlcnJpZGRlbiBieVxuICogYXNzaWdubWVudC4gU291cmNlIG9iamVjdHMgYXJlIGFwcGxpZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBTdWJzZXF1ZW50XG4gKiBzb3VyY2VzIG92ZXJ3cml0ZSBwcm9wZXJ0eSBhc3NpZ25tZW50cyBvZiBwcmV2aW91cyBzb3VyY2VzLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC41LjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHtcbiAqICAgJ2EnOiBbeyAnYic6IDIgfSwgeyAnZCc6IDQgfV1cbiAqIH07XG4gKlxuICogdmFyIG90aGVyID0ge1xuICogICAnYSc6IFt7ICdjJzogMyB9LCB7ICdlJzogNSB9XVxuICogfTtcbiAqXG4gKiBfLm1lcmdlKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4geyAnYSc6IFt7ICdiJzogMiwgJ2MnOiAzIH0sIHsgJ2QnOiA0LCAnZSc6IDUgfV0gfVxuICovXG52YXIgbWVyZ2UgPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbiAob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gICAgYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCk7XG59KTtcbm1vZHVsZS5leHBvcnRzID0gbWVyZ2U7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/merge.js\n")},"./node_modules/lodash/mergeWith.js": /*!******************************************!*\ !*** ./node_modules/lodash/mergeWith.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n\n\nvar mergeWith = createAssigner(function (object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\nmodule.exports = mergeWith;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL21lcmdlV2l0aC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2VXaXRoLmpzPzI0MTEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZU1lcmdlID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlJyksIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5tZXJnZWAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgY3VzdG9taXplcmAgd2hpY2hcbiAqIGlzIGludm9rZWQgdG8gcHJvZHVjZSB0aGUgbWVyZ2VkIHZhbHVlcyBvZiB0aGUgZGVzdGluYXRpb24gYW5kIHNvdXJjZVxuICogcHJvcGVydGllcy4gSWYgYGN1c3RvbWl6ZXJgIHJldHVybnMgYHVuZGVmaW5lZGAsIG1lcmdpbmcgaXMgaGFuZGxlZCBieSB0aGVcbiAqIG1ldGhvZCBpbnN0ZWFkLiBUaGUgYGN1c3RvbWl6ZXJgIGlzIGludm9rZWQgd2l0aCBzaXggYXJndW1lbnRzOlxuICogKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBzb3VyY2VzIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGN1c3RvbWl6ZXIgVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBhc3NpZ25lZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSkge1xuICogICBpZiAoXy5pc0FycmF5KG9ialZhbHVlKSkge1xuICogICAgIHJldHVybiBvYmpWYWx1ZS5jb25jYXQoc3JjVmFsdWUpO1xuICogICB9XG4gKiB9XG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiBbMV0sICdiJzogWzJdIH07XG4gKiB2YXIgb3RoZXIgPSB7ICdhJzogWzNdLCAnYic6IFs0XSB9O1xuICpcbiAqIF8ubWVyZ2VXaXRoKG9iamVjdCwgb3RoZXIsIGN1c3RvbWl6ZXIpO1xuICogLy8gPT4geyAnYSc6IFsxLCAzXSwgJ2InOiBbMiwgNF0gfVxuICovXG52YXIgbWVyZ2VXaXRoID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24gKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplcikge1xuICAgIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpO1xufSk7XG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlV2l0aDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/mergeWith.js\n")},"./node_modules/lodash/noop.js": /*!*************************************!*\ !*** ./node_modules/lodash/noop.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n\nfunction noop() {// No operation performed.\n}\n\nmodule.exports = noop;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanM/YmNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgdW5kZWZpbmVkYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8ubm9vcCk7XG4gKiAvLyA9PiBbdW5kZWZpbmVkLCB1bmRlZmluZWRdXG4gKi9cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gICAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cbm1vZHVsZS5leHBvcnRzID0gbm9vcDtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQVlBO0FBRUE7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/noop.js\n")},"./node_modules/lodash/property.js": /*!*****************************************!*\ !*** ./node_modules/lodash/property.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseProperty = __webpack_require__(/*! ./_baseProperty */ \"./node_modules/lodash/_baseProperty.js\"),\n basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ \"./node_modules/lodash/_basePropertyDeep.js\"),\n isKey = __webpack_require__(/*! ./_isKey */ \"./node_modules/lodash/_isKey.js\"),\n toKey = __webpack_require__(/*! ./_toKey */ \"./node_modules/lodash/_toKey.js\");\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n\n\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3Byb3BlcnR5LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC9wcm9wZXJ0eS5qcz9mOWNlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLCBiYXNlUHJvcGVydHlEZWVwID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5RGVlcCcpLCBpc0tleSA9IHJlcXVpcmUoJy4vX2lzS2V5JyksIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgYXQgYHBhdGhgIG9mIGEgZ2l2ZW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW1xuICogICB7ICdhJzogeyAnYic6IDIgfSB9LFxuICogICB7ICdhJzogeyAnYic6IDEgfSB9XG4gKiBdO1xuICpcbiAqIF8ubWFwKG9iamVjdHMsIF8ucHJvcGVydHkoJ2EuYicpKTtcbiAqIC8vID0+IFsyLCAxXVxuICpcbiAqIF8ubWFwKF8uc29ydEJ5KG9iamVjdHMsIF8ucHJvcGVydHkoWydhJywgJ2InXSkpLCAnYS5iJyk7XG4gKiAvLyA9PiBbMSwgMl1cbiAqL1xuZnVuY3Rpb24gcHJvcGVydHkocGF0aCkge1xuICAgIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBwcm9wZXJ0eTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/property.js\n")},"./node_modules/lodash/remove.js": /*!***************************************!*\ !*** ./node_modules/lodash/remove.js ***! \***************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"),\n basePullAt = __webpack_require__(/*! ./_basePullAt */ "./node_modules/lodash/_basePullAt.js");\n/**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n\n\nfunction remove(array, predicate) {\n var result = [];\n\n if (!(array && array.length)) {\n return result;\n }\n\n var index = -1,\n indexes = [],\n length = array.length;\n predicate = baseIteratee(predicate, 3);\n\n while (++index < length) {\n var value = array[index];\n\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n\n basePullAt(array, indexes);\n return result;\n}\n\nmodule.exports = remove;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JlbW92ZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcmVtb3ZlLmpzP2MwNGMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksIGJhc2VQdWxsQXQgPSByZXF1aXJlKCcuL19iYXNlUHVsbEF0Jyk7XG4vKipcbiAqIFJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gYGFycmF5YCB0aGF0IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvclxuICogYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdGhlIHJlbW92ZWQgZWxlbWVudHMuIFRoZSBwcmVkaWNhdGUgaXMgaW52b2tlZFxuICogd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXgsIGFycmF5KS5cbiAqXG4gKiAqKk5vdGU6KiogVW5saWtlIGBfLmZpbHRlcmAsIHRoaXMgbWV0aG9kIG11dGF0ZXMgYGFycmF5YC4gVXNlIGBfLnB1bGxgXG4gKiB0byBwdWxsIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgYnkgdmFsdWUuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgcmVtb3ZlZCBlbGVtZW50cy5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5ID0gWzEsIDIsIDMsIDRdO1xuICogdmFyIGV2ZW5zID0gXy5yZW1vdmUoYXJyYXksIGZ1bmN0aW9uKG4pIHtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9KTtcbiAqXG4gKiBjb25zb2xlLmxvZyhhcnJheSk7XG4gKiAvLyA9PiBbMSwgM11cbiAqXG4gKiBjb25zb2xlLmxvZyhldmVucyk7XG4gKiAvLyA9PiBbMiwgNF1cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgaWYgKCEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICB2YXIgaW5kZXggPSAtMSwgaW5kZXhlcyA9IFtdLCBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gICAgcHJlZGljYXRlID0gYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICBpbmRleGVzLnB1c2goaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJhc2VQdWxsQXQoYXJyYXksIGluZGV4ZXMpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/remove.js\n')},"./node_modules/lodash/stubArray.js": /*!******************************************!*\ !*** ./node_modules/lodash/stubArray.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJBcnJheS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzP2QzMjciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcgZW1wdHkgYXJyYXkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBlbXB0eSBhcnJheS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGFycmF5cyA9IF8udGltZXMoMiwgXy5zdHViQXJyYXkpO1xuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5cyk7XG4gKiAvLyA9PiBbW10sIFtdXVxuICpcbiAqIGNvbnNvbGUubG9nKGFycmF5c1swXSA9PT0gYXJyYXlzWzFdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIHN0dWJBcnJheSgpIHtcbiAgICByZXR1cm4gW107XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJBcnJheTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/stubArray.js\n")},"./node_modules/lodash/stubFalse.js": /*!******************************************!*\ !*** ./node_modules/lodash/stubFalse.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3N0dWJGYWxzZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkZhbHNlLmpzPzA3YzciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICAgIHJldHVybiBmYWxzZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gc3R1YkZhbHNlO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/stubFalse.js\n")},"./node_modules/lodash/toFinite.js": /*!*****************************************!*\ !*** ./node_modules/lodash/toFinite.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toNumber = __webpack_require__(/*! ./toNumber */ \"./node_modules/lodash/toNumber.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n\n value = toNumber(value);\n\n if (value === INFINITY || value === -INFINITY) {\n var sign = value < 0 ? -1 : 1;\n return sign * MAX_INTEGER;\n }\n\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0Zpbml0ZS5qcz82NDI4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCwgTUFYX0lOVEVHRVIgPSAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwODtcbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEyLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0Zpbml0ZSgzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b0Zpbml0ZShOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9GaW5pdGUoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvRmluaXRlKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiAwO1xuICAgIH1cbiAgICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICAgICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICAgICAgcmV0dXJuIHNpZ24gKiBNQVhfSU5URUdFUjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/IHZhbHVlIDogMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQURBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/toFinite.js\n")},"./node_modules/lodash/toInteger.js": /*!******************************************!*\ !*** ./node_modules/lodash/toInteger.js ***! \******************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar toFinite = __webpack_require__(/*! ./toFinite */ \"./node_modules/lodash/toFinite.js\");\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n\n\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n return result === result ? remainder ? result - remainder : result : 0;\n}\n\nmodule.exports = toInteger;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvSW50ZWdlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovL1NOTGlicmFyeS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9JbnRlZ2VyLmpzPzRiMTciXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0ludGVnZXJgXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdG9pbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBpbnRlZ2VyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvSW50ZWdlcigzLjIpO1xuICogLy8gPT4gM1xuICpcbiAqIF8udG9JbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gMFxuICpcbiAqIF8udG9JbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0ludGVnZXIoJzMuMicpO1xuICogLy8gPT4gM1xuICovXG5mdW5jdGlvbiB0b0ludGVnZXIodmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLCByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuICAgIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/toInteger.js\n")},"./node_modules/lodash/toNumber.js": /*!*****************************************!*\ !*** ./node_modules/lodash/toNumber.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar isObject = __webpack_require__(/*! ./isObject */ \"./node_modules/lodash/isObject.js\"),\n isSymbol = __webpack_require__(/*! ./isSymbol */ \"./node_modules/lodash/isSymbol.js\");\n/** Used as references for various `Number` constants. */\n\n\nvar NAN = 0 / 0;\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = toNumber;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b051bWJlci5qcz9iNGIwIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLCBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOQU47XG4gICAgfVxuICAgIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICAgIH1cbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gICAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICAgICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/lodash/toNumber.js\n")},"./node_modules/lodash/toPlainObject.js": /*!**********************************************!*\ !*** ./node_modules/lodash/toPlainObject.js ***! \**********************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar copyObject = __webpack_require__(/*! ./_copyObject */ \"./node_modules/lodash/_copyObject.js\"),\n keysIn = __webpack_require__(/*! ./keysIn */ \"./node_modules/lodash/keysIn.js\");\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n\n\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanM/OGRlMiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLCBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgcGxhaW4gb2JqZWN0IGZsYXR0ZW5pbmcgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nXG4gKiBrZXllZCBwcm9wZXJ0aWVzIG9mIGB2YWx1ZWAgdG8gb3duIHByb3BlcnRpZXMgb2YgdGhlIHBsYWluIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBwbGFpbiBvYmplY3QuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uYXNzaWduKHsgJ2EnOiAxIH0sIG5ldyBGb28pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgXy50b1BsYWluT2JqZWN0KG5ldyBGb28pKTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMyB9XG4gKi9cbmZ1bmN0aW9uIHRvUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUGxhaW5PYmplY3Q7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/toPlainObject.js\n")},"./node_modules/lodash/toString.js": /*!*****************************************!*\ !*** ./node_modules/lodash/toString.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_modules/lodash/_baseToString.js\");\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvU3RyaW5nLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcz83NmRkIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VUb1N0cmluZyA9IHJlcXVpcmUoJy4vX2Jhc2VUb1N0cmluZycpO1xuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkE7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/toString.js\n")},"./node_modules/lodash/uniq.js": /*!*************************************!*\ !*** ./node_modules/lodash/uniq.js ***! \*************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('\n\nvar baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js");\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n\n\nfunction uniq(array) {\n return array && array.length ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9TTkxpYnJhcnkvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXEuanM/ZWVkNiJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyk7XG4vKipcbiAqIENyZWF0ZXMgYSBkdXBsaWNhdGUtZnJlZSB2ZXJzaW9uIG9mIGFuIGFycmF5LCB1c2luZ1xuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucywgaW4gd2hpY2ggb25seSB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIGVsZW1lbnRcbiAqIGlzIGtlcHQuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG9yZGVyIHRoZXkgb2NjdXJcbiAqIGluIHRoZSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udW5pcShbMiwgMSwgMl0pO1xuICogLy8gPT4gWzIsIDFdXG4gKi9cbmZ1bmN0aW9uIHVuaXEoYXJyYXkpIHtcbiAgICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aCkgPyBiYXNlVW5pcShhcnJheSkgOiBbXTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdW5pcTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUFBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniq.js\n')},"./node_modules/lodash/uniqWith.js": /*!*****************************************!*\ !*** ./node_modules/lodash/uniqWith.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval("\n\nvar baseUniq = __webpack_require__(/*! ./_baseUniq */ \"./node_modules/lodash/_baseUniq.js\");\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n\n\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return array && array.length ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbG9kYXNoL3VuaXFXaXRoLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlxV2l0aC5qcz8xZmVlIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xudmFyIGJhc2VVbmlxID0gcmVxdWlyZSgnLi9fYmFzZVVuaXEnKTtcbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy51bmlxYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjb21wYXJhdG9yYCB3aGljaFxuICogaXMgaW52b2tlZCB0byBjb21wYXJlIGVsZW1lbnRzIG9mIGBhcnJheWAuIFRoZSBvcmRlciBvZiByZXN1bHQgdmFsdWVzIGlzXG4gKiBkZXRlcm1pbmVkIGJ5IHRoZSBvcmRlciB0aGV5IG9jY3VyIGluIHRoZSBhcnJheS5UaGUgY29tcGFyYXRvciBpcyBpbnZva2VkXG4gKiB3aXRoIHR3byBhcmd1bWVudHM6IChhcnJWYWwsIG90aFZhbCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjb21wYXJhdG9yXSBUaGUgY29tcGFyYXRvciBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZHVwbGljYXRlIGZyZWUgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ3gnOiAxLCAneSc6IDIgfSwgeyAneCc6IDIsICd5JzogMSB9LCB7ICd4JzogMSwgJ3knOiAyIH1dO1xuICpcbiAqIF8udW5pcVdpdGgob2JqZWN0cywgXy5pc0VxdWFsKTtcbiAqIC8vID0+IFt7ICd4JzogMSwgJ3knOiAyIH0sIHsgJ3gnOiAyLCAneSc6IDEgfV1cbiAqL1xuZnVuY3Rpb24gdW5pcVdpdGgoYXJyYXksIGNvbXBhcmF0b3IpIHtcbiAgICBjb21wYXJhdG9yID0gdHlwZW9mIGNvbXBhcmF0b3IgPT0gJ2Z1bmN0aW9uJyA/IGNvbXBhcmF0b3IgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChhcnJheSAmJiBhcnJheS5sZW5ndGgpID8gYmFzZVVuaXEoYXJyYXksIHVuZGVmaW5lZCwgY29tcGFyYXRvcikgOiBbXTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdW5pcVdpdGg7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFBQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/lodash/uniqWith.js\n")},"./node_modules/process/browser.js": /*!*****************************************!*\ !*** ./node_modules/process/browser.js ***! \*****************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval(" // shim for using process in browser\n\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcz9mMjhjIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59KCkpO1xuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZSAobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuZnVuY3Rpb24gbm9vcCgpIHsgfVxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW107IH07XG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJzsgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gMDsgfTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/process/browser.js\n")},"./node_modules/regenerator-runtime/runtime.js": /*!*****************************************************!*\ !*** ./node_modules/regenerator-runtime/runtime.js ***! \*****************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }\n\nvar runtime = function (exports) {\n "use strict";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n\n var $Symbol = typeof Symbol === "function" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || "@@iterator";\n var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";\n var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there\'s no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don\'t have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: "normal",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: "throw",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = "suspendedStart";\n var GenStateSuspendedYield = "suspendedYield";\n var GenStateExecuting = "executing";\n var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don\'t natively support it.\n\n\n var IteratorPrototype = {};\n\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction"; // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\n function defineIteratorMethods(prototype) {\n ["next", "throw", "return"].forEach(function (method) {\n prototype[method] = function (arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function (genFun) {\n var ctor = typeof genFun === "function" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === "GeneratorFunction" : false;\n };\n\n exports.mark = function (genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = "GeneratorFunction";\n }\n }\n\n genFun.prototype = Object.create(Gp);\n return genFun;\n }; // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, "__await")` to determine if the yielded value is\n // meant to be awaited.\n\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === "throw") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {\n return PromiseImpl.resolve(value.__await).then(function (value) {\n invoke("next", value, resolve, reject);\n }, function (err) {\n invoke("throw", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function (unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function (error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke("throw", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n\n exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error("Generator is already running");\n }\n\n if (state === GenStateCompleted) {\n if (method === "throw") {\n throw arg;\n } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === "next") {\n // Setting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n } else if (context.method === "throw") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === "return") {\n context.abrupt("return", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\n if (record.type === "normal") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === "throw") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = "throw";\n context.arg = record.arg;\n }\n }\n };\n } // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === "throw") {\n // Note: ["return"] must be used for ES3 parsing compatibility.\n if (delegate.iterator["return"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = "return";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === "throw") {\n // If maybeInvokeDelegate(context) changed context.method from\n // "return" to "throw", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = "throw";\n context.arg = new TypeError("The iterator does not provide a \'throw\' method");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === "throw") {\n context.method = "throw";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (!info) {\n context.method = "throw";\n context.arg = new TypeError("iterator result is not an object");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was "next", forget context.arg since it has been\n // "consumed" by the delegate iterator. If context.method was\n // "return", allow the original .return call to continue in the\n // outer generator.\n\n if (context.method !== "return") {\n context.method = "next";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n Gp[toStringTagSymbol] = "Generator"; // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers\' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn\'t happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n\n Gp[iteratorSymbol] = function () {\n return this;\n };\n\n Gp.toString = function () {\n return "[object Generator]";\n };\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = "normal";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{\n tryLoc: "root"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n } // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === "function") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel\'s\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = "next";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === "throw") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\n function handle(loc, caught) {\n record.type = "throw";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = "next";\n context.arg = undefined;\n }\n\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === "root") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle("end");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, "catchLoc");\n var hasFinally = hasOwn.call(entry, "finallyLoc");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error("try statement without catch or finally");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = "next";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (record.type === "throw") {\n throw record.arg;\n }\n\n if (record.type === "break" || record.type === "continue") {\n this.next = record.arg;\n } else if (record.type === "return") {\n this.rval = this.arg = record.arg;\n this.method = "return";\n this.next = "end";\n } else if (record.type === "normal" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n "catch": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === "throw") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error("illegal catch attempt");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === "next") {\n // Deliberately forget the last sent value so that we don\'t\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n }; // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n\n return exports;\n}( // If this script is executing as a CommonJS module, use module.exports\n// as the regeneratorRuntime namespace. Otherwise create a new empty\n// object. Either way, the resulting object will be used to initialize\n// the regeneratorRuntime variable at the top of this file.\n( false ? undefined : _typeof(module)) === "object" ? module.exports : {});\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you\'ve misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you\'re not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function("r", "regeneratorRuntime = r")(runtime);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU05MaWJyYXJ5Ly4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcz85NmNmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xudmFyIHJ1bnRpbWUgPSAoZnVuY3Rpb24gKGV4cG9ydHMpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcbiAgICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICAgIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICAgIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gICAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuICAgIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAgICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgICAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgICAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcbiAgICAgICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgICAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgICB9XG4gICAgZXhwb3J0cy53cmFwID0gd3JhcDtcbiAgICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gICAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAgIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAgIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAgIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gICAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICAgIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICAgIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gICAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcbiAgICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gICAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICAgIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG4gICAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gICAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gICAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICAgIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHsgfVxuICAgIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkgeyB9XG4gICAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7IH1cbiAgICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gICAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICAgIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAgICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAgICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgICAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICAgIH1cbiAgICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgICAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICAgIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gICAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGV4cG9ydHMuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uIChnZW5GdW4pIHtcbiAgICAgICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgICAgICByZXR1cm4gY3RvclxuICAgICAgICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAgICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgICAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICAgICAgICA6IGZhbHNlO1xuICAgIH07XG4gICAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24gKGdlbkZ1bikge1xuICAgICAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICAgICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgICAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgICAgIHJldHVybiBnZW5GdW47XG4gICAgfTtcbiAgICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAgIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICAgIGV4cG9ydHMuYXdyYXAgPSBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICAgIH07XG4gICAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IsIFByb21pc2VJbXBsKSB7XG4gICAgICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZUltcGwucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHVud3JhcHBlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGhhbmRsZWQgdGhlcmUuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuICAgICAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2VJbXBsKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgICAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAgICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAgICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgICAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAgICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgICAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAgICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgICAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICAgICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLCBcbiAgICAgICAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZykgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgICAgICB9XG4gICAgICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgICAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICAgIH1cbiAgICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICAgIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIGV4cG9ydHMuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG4gICAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAgIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAgIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICAgIGV4cG9ydHMuYXN5bmMgPSBmdW5jdGlvbiAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgUHJvbWlzZUltcGwgPSBQcm9taXNlO1xuICAgICAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpLCBQcm9taXNlSW1wbCk7XG4gICAgICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgICAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICAgICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydDtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICAgICAgY29udGV4dC5hcmcgPSBhcmc7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWxlZ2F0ZSA9IGNvbnRleHQuZGVsZWdhdGU7XG4gICAgICAgICAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWxlZ2F0ZVJlc3VsdCA9IG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZVJlc3VsdDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnNlbnQgPSBjb250ZXh0Ll9zZW50ID0gY29udGV4dC5hcmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgY29udGV4dC5hcmc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYWJydXB0KFwicmV0dXJuXCIsIGNvbnRleHQuYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcbiAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgLy8gR2VuU3RhdGVFeGVjdXRpbmcgYW5kIGxvb3AgYmFjayBmb3IgYW5vdGhlciBpbnZvY2F0aW9uLlxuICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZWNvcmQuYXJnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKSBjYWxsIGFib3ZlLlxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gICAgLy8gcmVzdWx0LCBlaXRoZXIgYnkgcmV0dXJuaW5nIGEgeyB2YWx1ZSwgZG9uZSB9IHJlc3VsdCBmcm9tIHRoZVxuICAgIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAgIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICAgIGZ1bmN0aW9uIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgICAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgICAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICAgICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAgICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG4gICAgICAgICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICAgICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuICAgICAgICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAgICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAgICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAgICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gICAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gICAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcbiAgICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvclwiO1xuICAgIC8vIEEgR2VuZXJhdG9yIHNob3VsZCBhbHdheXMgcmV0dXJuIGl0c2VsZiBhcyB0aGUgaXRlcmF0b3Igb2JqZWN0IHdoZW4gdGhlXG4gICAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAgIC8vIG9iamVjdCB0byBub3QgYmUgcmV0dXJuZWQgZnJvbSB0aGlzIGNhbGwuIFRoaXMgZW5zdXJlcyB0aGF0IGRvZXNuJ3QgaGFwcGVuLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICAgIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gICAgfTtcbiAgICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgICAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuICAgICAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICAgICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICAgICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgICAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgICAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICAgIH1cbiAgICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgICAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICAgICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICAgICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgICAgICB0aGlzLnJlc2V0KHRydWUpO1xuICAgIH1cbiAgICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICAgIHZhciBrZXlzID0gW107XG4gICAgICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGtleXMucmV2ZXJzZSgpO1xuICAgICAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgICAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgICAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAgICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgICAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgICAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgICAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgICB9XG4gICAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbiAgICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICAgICAgY29uc3RydWN0b3I6IENvbnRleHQsXG4gICAgICAgIHJlc2V0OiBmdW5jdGlvbiAoc2tpcFRlbXBSZXNldCkge1xuICAgICAgICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgICAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAgICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG4gICAgICAgICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHN0b3A6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICAgICAgfSxcbiAgICAgICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICAgICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcbiAgICAgICAgICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gISFjYXVnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFicnVwdDogZnVuY3Rpb24gKHR5cGUsIGFyZykge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICAgICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgICAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgICAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG4gICAgICAgICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9LFxuICAgICAgICBmaW5pc2g6IGZ1bmN0aW9uIChmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICAgICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNhdGNoXCI6IGZ1bmN0aW9uICh0cnlMb2MpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgICAgICB9LFxuICAgICAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbiAoaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgICAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgICAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgICAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICAgICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgICAvLyBvciBub3QsIHJldHVybiB0aGUgcnVudGltZSBvYmplY3Qgc28gdGhhdCB3ZSBjYW4gZGVjbGFyZSB0aGUgdmFyaWFibGVcbiAgICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICAgIHJldHVybiBleHBvcnRzO1xufShcbi8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4vLyBhcyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIG5hbWVzcGFjZS4gT3RoZXJ3aXNlIGNyZWF0ZSBhIG5ldyBlbXB0eVxuLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbnR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCIgPyBtb2R1bGUuZXhwb3J0cyA6IHt9KSk7XG50cnkge1xuICAgIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59XG5jYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAgIC8vIGFzc2lnbm1lbnQgc2hvdWxkIGFsd2F5cyB3b3JrIHVubGVzcyBzb21ldGhpbmcgaXMgbWlzY29uZmlndXJlZC4gSnVzdFxuICAgIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAgIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAgIC8vIGlmIGEgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZm9yYmlkcyB1c2luZyBGdW5jdGlvbiwgYnV0IGluIHRoYXQgY2FzZVxuICAgIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gICAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgICAvLyBDU1AgdG8gZm9yYmlkIEZ1bmN0aW9uLCBhbmQgeW91J3JlIG5vdCB3aWxsaW5nIHRvIGZpeCBlaXRoZXIgb2YgdGhvc2VcbiAgICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgICBGdW5jdGlvbihcInJcIiwgXCJyZWdlbmVyYXRvclJ1bnRpbWUgPSByXCIpKHJ1bnRpbWUpO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOzs7Ozs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBQ0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBM0tBO0FBOEtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/regenerator-runtime/runtime.js\n')},"./node_modules/setimmediate/setImmediate.js": /*!***************************************************!*\ !*** ./node_modules/setimmediate/setImmediate.js ***! \***************************************************/ /*! no static exports found */function(module,exports,__webpack_require__){"use strict";eval('/* WEBPACK VAR INJECTION */(function(global, process) {\n\n(function (global, undefined) {\n "use strict";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== "function") {\n callback = new Function("" + callback);\n } // Copy function arguments\n\n\n var args = new Array(arguments.length - 1);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n } // Store and register the task\n\n\n var task = {\n callback: callback,\n args: args\n };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n\n switch (args.length) {\n case 0:\n callback();\n break;\n\n case 1:\n callback(args[0]);\n break;\n\n case 2:\n callback(args[0], args[1]);\n break;\n\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: "Wait until any invocations of this algorithm started before this one have completed."\n // So if we\'re currently running a task, we\'ll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // "too much recursion" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n\n if (task) {\n currentlyRunningATask = true;\n\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function registerImmediate(handle) {\n process.nextTick(function () {\n runIfPresent(handle);\n });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can\'t be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n\n global.onmessage = function () {\n postMessageIsAsynchronous = false;\n };\n\n global.postMessage("", "*");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n var messagePrefix = "setImmediate$" + Math.random() + "$";\n\n var onGlobalMessage = function onGlobalMessage(event) {\n if (event.source === global && typeof event.data === "string" && event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener("message", onGlobalMessage, false);\n } else {\n global.attachEvent("onmessage", onGlobalMessage);\n }\n\n registerImmediate = function registerImmediate(handle) {\n global.postMessage(messagePrefix + handle, "*");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n\n channel.port1.onmessage = function (event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function registerImmediate(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n\n registerImmediate = function registerImmediate(handle) {\n // Create a