From 1f028f22c73773c640e0114fc02ae5f044bb9b30 Mon Sep 17 00:00:00 2001 From: Zack Rauen Date: Tue, 25 Jun 2019 23:17:16 -0400 Subject: [PATCH] some fixes, cleanup needed --- js/main.js | 14 ++++++------ package-lock.json | 41 +++++++++++++++++++++++++--------- src/builtins/customcss.js | 2 +- src/data/emotes/config.js | 2 +- src/data/strings.js | 2 +- src/modules/reactcomponents.js | 11 ++++++++- src/modules/settingsmanager.js | 8 ++++--- src/modules/strings.js | 7 +++++- src/ui/settings.js | 2 ++ 9 files changed, 63 insertions(+), 26 deletions(-) diff --git a/js/main.js b/js/main.js index 87c6270a..aa3c3493 100644 --- a/js/main.js +++ b/js/main.js @@ -143,7 +143,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _str /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floating_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floating/container */ \"./src/ui/floating/container.jsx\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"startDetached\");\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"nativeOpen\");\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) this.openNative();else if (this.startDetached) this.openDetached();else thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection(this.name);\n this.setSection = thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection;\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floating_container__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcz9jM2YyIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImVsZWN0cm9uIiwiVXNlclNldHRpbmdzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiRGlzcGF0Y2hlciIsIkFjdGlvblR5cGVzIiwiQ3VzdG9tQ1NTIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwic3RhcnREZXRhY2hlZCIsIlNldHRpbmdzIiwiZ2V0IiwiY29sbGVjdGlvbiIsIm5hdGl2ZU9wZW4iLCJjb25zdHJ1Y3RvciIsInNhdmVkQ3NzIiwiaW5zZXJ0ZWRDc3MiLCJpc0RldGFjaGVkIiwiZW5hYmxlZCIsIndpbmRvdyIsImFjZSIsIkRPTU1hbmFnZXIiLCJpbmplY3RTY3JpcHQiLCJ0aGVuIiwib3JpZ2luYWwiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsImN1c3RvbWNzcyIsIm9yZGVyIiwiZWxlbWVudCIsImVkaXRvclRpdGxlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiQ1NTRWRpdG9yIiwiY3NzIiwic2F2ZSIsInNhdmVDU1MiLCJiaW5kIiwidXBkYXRlIiwiaW5zZXJ0Q1NTIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsIm9uQ2hhbmdlIiwib25DbGljayIsInRoaXNPYmplY3QiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwiY2hpbGQiLCJtZW1vaXplZFByb3BzIiwiY2hpbGRyZW4iLCJwcm9wcyIsIm9uU2V0U2VjdGlvbiIsInNldFNlY3Rpb24iLCJsb2FkQ1NTIiwid2F0Y2hDb250ZW50IiwiZGlzYWJsZWQiLCJyZW1vdmVQYW5lbCIsInVud2F0Y2hDb250ZW50Iiwid2F0Y2hlciIsImVycm9yIiwidGltZUNhY2hlIiwibG9nIiwid2F0Y2giLCJEYXRhU3RvcmUiLCJjdXN0b21DU1MiLCJwZXJzaXN0ZW50IiwiZXZlbnRUeXBlIiwiZmlsZW5hbWUiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJzdGF0U3luYyIsImVyciIsImNvZGUiLCJzdGF0cyIsIm10aW1lIiwiZ2V0VGltZSIsIm5ld0NTUyIsImxvYWRDdXN0b21DU1MiLCJFdmVudHMiLCJlbWl0IiwiY2xvc2UiLCJ2YWx1ZSIsIm5ld0NzcyIsInVwZGF0ZUN1c3RvbUNTUyIsInNhdmVDdXN0b21DU1MiLCJzaGVsbCIsIm9wZW5FeHRlcm5hbCIsImN1cnJlbnRDU1MiLCJlZGl0b3JSZWYiLCJjcmVhdGVSZWYiLCJlZGl0b3IiLCJyZWYiLCJGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciIsIm9wZW4iLCJvbkNsb3NlIiwib25SZXNpemUiLCJjdXJyZW50IiwicmVzaXplIiwidGl0bGUiLCJoZWlnaHQiLCJ3aWR0aCIsImNlbnRlciIsInJlc2l6YWJsZSIsImNvbmZpcm1DbG9zZSIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwiY29uZmlybWF0aW9uVGV4dCIsImRpcnR5RGlzcGF0Y2giLCJ0eXBlIiwiTEFZRVJfUE9QIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1BLEVBQUUsR0FBR0MsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1DLFFBQVEsR0FBR0QsbUJBQU8sQ0FBQywwQkFBRCxDQUF4Qjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBckI7QUFDQSxNQUFNQyxVQUFVLEdBQUdGLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBbkI7QUFDQSxNQUFNRSxXQUFXLEdBQUdILHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsYUFBMUIsRUFBeUNFLFdBQTdEO0FBRWUsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDakMsTUFBSUMsUUFBSixHQUFlO0FBQUMsV0FBTyxXQUFQO0FBQW9COztBQUNwQyxNQUFJQyxFQUFKLEdBQVM7QUFBQyxXQUFPLFdBQVA7QUFBb0I7O0FBQzlCLE1BQUlDLGFBQUosR0FBb0I7QUFBQyxXQUFPQyxnREFBUSxDQUFDQyxHQUFULENBQWEsS0FBS0MsVUFBbEIsRUFBOEIsS0FBS0wsUUFBbkMsRUFBNkMsZUFBN0MsQ0FBUDtBQUFzRTs7QUFDM0YsTUFBSU0sVUFBSixHQUFpQjtBQUFDLFdBQU9ILGdEQUFRLENBQUNDLEdBQVQsQ0FBYSxLQUFLQyxVQUFsQixFQUE4QixLQUFLTCxRQUFuQyxFQUE2QyxZQUE3QyxDQUFQO0FBQW1FOztBQUVyRk8sYUFBVyxHQUFHO0FBQ1Y7QUFDQSxTQUFLQyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixFQUFuQjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsS0FBbEI7QUFDSDs7QUFFRCxRQUFNQyxPQUFOLEdBQWdCO0FBQ1osUUFBSSxDQUFDQyxNQUFNLENBQUNDLEdBQVosRUFBaUI7QUFDYkMsd0RBQVUsQ0FBQ0MsWUFBWCxDQUF3QixZQUF4QixFQUFzQyx5REFBdEMsRUFBaUdDLElBQWpHLENBQXNHLE1BQU07QUFDeEcsWUFBSUosTUFBTSxDQUFDdEIsT0FBUCxDQUFlMkIsUUFBbkIsRUFBNkJMLE1BQU0sQ0FBQ3RCLE9BQVAsR0FBaUJzQixNQUFNLENBQUN0QixPQUFQLENBQWUyQixRQUFoQztBQUNoQyxPQUZEO0FBR0g7O0FBQ0RkLG9EQUFRLENBQUNlLGFBQVQsQ0FBdUIsS0FBS2pCLEVBQTVCLEVBQWdDa0IsK0NBQU8sQ0FBQ0MsTUFBUixDQUFlQyxTQUEvQyxFQUEwRDtBQUN0REMsV0FBSyxFQUFFLENBRCtDO0FBRXREQyxhQUFPLEVBQUUsTUFBTSxDQUFDLDREQUFDLDBEQUFEO0FBQWUsWUFBSSxFQUFFSiwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQjJCO0FBQXZDLFFBQUQsRUFBeURDLDZDQUFLLENBQUNDLGFBQU4sQ0FBb0JDLCtEQUFwQixFQUErQjtBQUNuR0MsV0FBRyxFQUFFLEtBQUtwQixRQUR5RjtBQUVuR3FCLFlBQUksRUFBRSxLQUFLQyxPQUFMLENBQWFDLElBQWIsQ0FBa0IsSUFBbEIsQ0FGNkY7QUFHbkdDLGNBQU0sRUFBRSxLQUFLQyxTQUFMLENBQWVGLElBQWYsQ0FBb0IsSUFBcEIsQ0FIMkY7QUFJbkdHLGtCQUFVLEVBQUUsS0FBS0EsVUFBTCxDQUFnQkgsSUFBaEIsQ0FBcUIsSUFBckIsQ0FKdUY7QUFLbkdJLG9CQUFZLEVBQUUsS0FBS0EsWUFBTCxDQUFrQkosSUFBbEIsQ0FBdUIsSUFBdkIsQ0FMcUY7QUFNbkdLLGdCQUFRLEVBQUUsS0FBS0EsUUFBTCxDQUFjTCxJQUFkLENBQW1CLElBQW5CO0FBTnlGLE9BQS9CLENBQXpELENBRnVDO0FBVXRETSxhQUFPLEVBQUdDLFVBQUQsSUFBZ0I7QUFDckIsWUFBSSxLQUFLNUIsVUFBVCxFQUFxQjtBQUNyQixZQUFJLEtBQUtKLFVBQVQsRUFBcUIsS0FBSzRCLFVBQUwsR0FBckIsS0FDSyxJQUFJLEtBQUtoQyxhQUFULEVBQXdCLEtBQUtpQyxZQUFMLEdBQXhCLEtBQ0FHLFVBQVUsQ0FBQ0MsbUJBQVgsQ0FBK0JDLEtBQS9CLENBQXFDQyxhQUFyQyxDQUFtREMsUUFBbkQsQ0FBNERDLEtBQTVELENBQWtFQyxZQUFsRSxDQUErRSxLQUFLN0MsSUFBcEY7QUFDTCxhQUFLOEMsVUFBTCxHQUFrQlAsVUFBVSxDQUFDQyxtQkFBWCxDQUErQkMsS0FBL0IsQ0FBcUNDLGFBQXJDLENBQW1EQyxRQUFuRCxDQUE0REMsS0FBNUQsQ0FBa0VDLFlBQXBGO0FBQ0g7QUFoQnFELEtBQTFEO0FBa0JBLFNBQUtFLE9BQUw7QUFDQSxTQUFLYixTQUFMLENBQWUsS0FBS3pCLFFBQXBCO0FBQ0EsU0FBS3VDLFlBQUw7QUFDSDs7QUFFREMsVUFBUSxHQUFHO0FBQ1A3QyxvREFBUSxDQUFDOEMsV0FBVCxDQUFxQixLQUFLaEQsRUFBMUI7QUFDQSxTQUFLaUQsY0FBTDtBQUNIOztBQUVESCxjQUFZLEdBQUc7QUFDWCxRQUFJLEtBQUtJLE9BQVQsRUFBa0IsT0FBTyxLQUFLQyxLQUFMLENBQVcsMkJBQVgsQ0FBUDtBQUNsQixVQUFNQyxTQUFTLEdBQUcsRUFBbEI7QUFDQSxTQUFLQyxHQUFMLENBQVMsNEJBQVQ7QUFDQSxTQUFLSCxPQUFMLEdBQWU5RCxFQUFFLENBQUNrRSxLQUFILENBQVNDLGlEQUFTLENBQUNDLFNBQW5CLEVBQThCO0FBQUNDLGdCQUFVLEVBQUU7QUFBYixLQUE5QixFQUFtRCxPQUFPQyxTQUFQLEVBQWtCQyxRQUFsQixLQUErQjtBQUM3RixVQUFJLENBQUNELFNBQUQsSUFBYyxDQUFDQyxRQUFuQixFQUE2QjtBQUM3QixZQUFNLElBQUlDLE9BQUosQ0FBWUMsQ0FBQyxJQUFJQyxVQUFVLENBQUNELENBQUQsRUFBSSxFQUFKLENBQTNCLENBQU47O0FBQ0EsVUFBSTtBQUFDekUsVUFBRSxDQUFDMkUsUUFBSCxDQUFZUixpREFBUyxDQUFDQyxTQUF0QjtBQUFrQyxPQUF2QyxDQUNBLE9BQU9RLEdBQVAsRUFBWTtBQUNSLFlBQUlBLEdBQUcsQ0FBQ0MsSUFBSixLQUFhLFFBQWpCLEVBQTJCO0FBQzNCLGVBQU9iLFNBQVMsQ0FBQ08sUUFBRCxDQUFoQjtBQUNBLGFBQUs5QixPQUFMLENBQWEsRUFBYjtBQUNIOztBQUNELFlBQU1xQyxLQUFLLEdBQUc5RSxFQUFFLENBQUMyRSxRQUFILENBQVlSLGlEQUFTLENBQUNDLFNBQXRCLENBQWQ7QUFDQSxVQUFJLENBQUNVLEtBQUQsSUFBVSxDQUFDQSxLQUFLLENBQUNDLEtBQWpCLElBQTBCLENBQUNELEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxPQUFaLEVBQS9CLEVBQXNEO0FBQ3RELFVBQUksT0FBT0YsS0FBSyxDQUFDQyxLQUFOLENBQVlDLE9BQVosRUFBUCxLQUFrQyxRQUF0QyxFQUFnRDtBQUNoRCxVQUFJaEIsU0FBUyxDQUFDTyxRQUFELENBQVQsSUFBdUJPLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxPQUFaLEVBQTNCLEVBQWtEO0FBQ2xEaEIsZUFBUyxDQUFDTyxRQUFELENBQVQsR0FBc0JPLEtBQUssQ0FBQ0MsS0FBTixDQUFZQyxPQUFaLEVBQXRCOztBQUNBLFVBQUlWLFNBQVMsSUFBSSxRQUFqQixFQUEyQjtBQUN2QixjQUFNVyxNQUFNLEdBQUdkLGlEQUFTLENBQUNlLGFBQVYsRUFBZjtBQUNBLFlBQUlELE1BQU0sSUFBSSxLQUFLOUQsUUFBbkIsRUFBNkI7QUFDN0IsYUFBS0EsUUFBTCxHQUFnQjhELE1BQWhCO0FBQ0EsYUFBS3JDLFNBQUwsQ0FBZSxLQUFLekIsUUFBcEI7QUFDQWdFLHNEQUFNLENBQUNDLElBQVAsQ0FBWSxtQkFBWixFQUFpQyxLQUFLakUsUUFBdEM7QUFDSDtBQUNKLEtBckJjLENBQWY7QUFzQkg7O0FBRUQwQyxnQkFBYyxHQUFHO0FBQ2IsUUFBSSxDQUFDLEtBQUtDLE9BQVYsRUFBbUIsT0FBTyxLQUFLQyxLQUFMLENBQVcsMkJBQVgsQ0FBUDtBQUNuQixTQUFLRCxPQUFMLENBQWF1QixLQUFiO0FBQ0EsV0FBTyxLQUFLdkIsT0FBWjtBQUNBLFNBQUtHLEdBQUwsQ0FBUyw2QkFBVDtBQUNIOztBQUVEbEIsVUFBUSxDQUFDdUMsS0FBRCxFQUFRO0FBQ1osUUFBSSxDQUFDeEUsZ0RBQVEsQ0FBQ0MsR0FBVCxDQUFhLFVBQWIsRUFBeUIsV0FBekIsRUFBc0MsWUFBdEMsQ0FBTCxFQUEwRDtBQUMxRCxTQUFLNkIsU0FBTCxDQUFlMEMsS0FBZjtBQUNBLFNBQUs3QyxPQUFMLENBQWE2QyxLQUFiO0FBQ0g7O0FBRUQ3QixTQUFPLEdBQUc7QUFDTixTQUFLdEMsUUFBTCxHQUFnQmdELGlEQUFTLENBQUNlLGFBQVYsRUFBaEI7QUFDSDs7QUFFRHRDLFdBQVMsQ0FBQzJDLE1BQUQsRUFBUztBQUNkLFFBQUksT0FBT0EsTUFBUCxLQUFtQixXQUF2QixFQUFvQ0EsTUFBTSxHQUFHLEtBQUtuRSxXQUFkLENBQXBDLEtBQ0ssS0FBS0EsV0FBTCxHQUFtQm1FLE1BQW5CO0FBQ0w5RCxzREFBVSxDQUFDK0QsZUFBWCxDQUEyQkQsTUFBM0I7QUFDSDs7QUFFRDlDLFNBQU8sQ0FBQzhDLE1BQUQsRUFBUztBQUNaLFFBQUksT0FBT0EsTUFBUCxLQUFtQixXQUF2QixFQUFvQyxLQUFLcEUsUUFBTCxHQUFnQm9FLE1BQWhCO0FBQ3BDcEIscURBQVMsQ0FBQ3NCLGFBQVYsQ0FBd0IsS0FBS3RFLFFBQTdCO0FBQ0g7O0FBRUQwQixZQUFVLEdBQUc7QUFDVDNDLFlBQVEsQ0FBQ3dGLEtBQVQsQ0FBZUMsWUFBZixDQUE2QixVQUFTeEIsaURBQVMsQ0FBQ0MsU0FBVSxFQUExRDtBQUNIOztBQUVEdEIsY0FBWSxDQUFDOEMsVUFBRCxFQUFhO0FBQ3JCLFVBQU1DLFNBQVMsR0FBR3pELDZDQUFLLENBQUMwRCxTQUFOLEVBQWxCO0FBQ0EsVUFBTUMsTUFBTSxHQUFHM0QsNkNBQUssQ0FBQ0MsYUFBTixDQUFvQkMsK0RBQXBCLEVBQStCO0FBQzFDMUIsUUFBRSxFQUFFLG9CQURzQztBQUUxQ29GLFNBQUcsRUFBRUgsU0FGcUM7QUFHMUN0RCxTQUFHLEVBQUVxRCxVQUhxQztBQUkxQ3BELFVBQUksRUFBRSxLQUFLQyxPQUFMLENBQWFDLElBQWIsQ0FBa0IsSUFBbEIsQ0FKb0M7QUFLMUNDLFlBQU0sRUFBRSxLQUFLQyxTQUFMLENBQWVGLElBQWYsQ0FBb0IsSUFBcEIsQ0FMa0M7QUFNMUNHLGdCQUFVLEVBQUUsS0FBS0EsVUFBTCxDQUFnQkgsSUFBaEIsQ0FBcUIsSUFBckIsQ0FOOEI7QUFPMUNLLGNBQVEsRUFBRSxLQUFLQSxRQUFMLENBQWNMLElBQWQsQ0FBbUIsSUFBbkI7QUFQZ0MsS0FBL0IsQ0FBZjtBQVVBdUQsa0VBQXVCLENBQUNDLElBQXhCLENBQTZCO0FBQ3pCQyxhQUFPLEVBQUUsTUFBTTtBQUNYLGFBQUs5RSxVQUFMLEdBQWtCLEtBQWxCO0FBQ0gsT0FId0I7QUFJekIrRSxjQUFRLEVBQUUsTUFBTTtBQUNaLFlBQUksQ0FBQ1AsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBekIsSUFBb0MsQ0FBQ1IsU0FBUyxDQUFDUSxPQUFWLENBQWtCQyxNQUEzRCxFQUFtRTtBQUNuRVQsaUJBQVMsQ0FBQ1EsT0FBVixDQUFrQkMsTUFBbEI7QUFDSCxPQVB3QjtBQVF6QkMsV0FBSyxFQUFFekUsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0IyQixXQVJBO0FBU3pCdkIsUUFBRSxFQUFFLHdCQVRxQjtBQVV6QjRGLFlBQU0sRUFBRSxHQVZpQjtBQVd6QkMsV0FBSyxFQUFFLEdBWGtCO0FBWXpCQyxZQUFNLEVBQUUsSUFaaUI7QUFhekJDLGVBQVMsRUFBRSxJQWJjO0FBY3pCdEQsY0FBUSxFQUFFMEMsTUFkZTtBQWV6QmEsa0JBQVksRUFBRSxNQUFNO0FBQ2hCLFlBQUksQ0FBQ2YsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBN0IsRUFBc0MsT0FBTyxLQUFQO0FBQ3RDLGVBQU9SLFNBQVMsQ0FBQ1EsT0FBVixDQUFrQlEsaUJBQXpCO0FBQ0gsT0FsQndCO0FBbUJ6QkMsc0JBQWdCLEVBQUVoRiwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQnNHO0FBbkJYLEtBQTdCO0FBcUJBLFNBQUt6RixVQUFMLEdBQWtCLElBQWxCO0FBQ0FsQixnQkFBWSxDQUFDa0YsS0FBYjtBQUNBL0UsY0FBVSxDQUFDeUcsYUFBWCxDQUF5QjtBQUFDQyxVQUFJLEVBQUV6RyxXQUFXLENBQUMwRztBQUFuQixLQUF6QjtBQUNIOztBQWhKOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9jdXN0b21jc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7U2V0dGluZ3MsIERhdGFTdG9yZSwgUmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBFdmVudHMsIERPTU1hbmFnZXIsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBDU1NFZGl0b3IgZnJvbSBcIi4uL3VpL2N1c3RvbWNzcy9jc3NlZGl0b3JcIjtcclxuaW1wb3J0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyIGZyb20gXCIuLi91aS9mbG9hdGluZy9jb250YWluZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4uL3VpL3NldHRpbmdzL3RpdGxlXCI7XHJcblxyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7XHJcbmNvbnN0IFVzZXJTZXR0aW5ncyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVBY2NvdW50XCIpO1xyXG5jb25zdCBEaXNwYXRjaGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRpcnR5RGlzcGF0Y2hcIik7XHJcbmNvbnN0IEFjdGlvblR5cGVzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkFjdGlvblR5cGVzXCIpLkFjdGlvblR5cGVzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEN1c3RvbUNTUyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiQ3VzdG9tIENTU1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY3VzdG9tY3NzXCI7fVxyXG4gICAgZ2V0IHN0YXJ0RGV0YWNoZWQoKSB7cmV0dXJuIFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIFwic3RhcnREZXRhY2hlZFwiKTt9XHJcbiAgICBnZXQgbmF0aXZlT3BlbigpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJuYXRpdmVPcGVuXCIpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuYWNlKSB7XHJcbiAgICAgICAgICAgIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KFwiYWNlLXNjcmlwdFwiLCBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjIuOS9hY2UuanNcIikudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LnJlcXVpcmUub3JpZ2luYWwpIHdpbmRvdy5yZXF1aXJlID0gd2luZG93LnJlcXVpcmUub3JpZ2luYWw7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKHRoaXMuaWQsIFN0cmluZ3MuUGFuZWxzLmN1c3RvbWNzcywge1xyXG4gICAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgICAgZWxlbWVudDogKCkgPT4gWzxTZXR0aW5nc1RpdGxlIHRleHQ9e1N0cmluZ3MuQ3VzdG9tQ1NTLmVkaXRvclRpdGxlfSAvPiwgUmVhY3QuY3JlYXRlRWxlbWVudChDU1NFZGl0b3IsIHtcclxuICAgICAgICAgICAgICAgIGNzczogdGhpcy5zYXZlZENzcyxcclxuICAgICAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUNTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuRGV0YWNoZWQ6IHRoaXMub3BlbkRldGFjaGVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH0pXSxcclxuICAgICAgICAgICAgb25DbGljazogKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZU9wZW4pIHRoaXMub3Blbk5hdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFydERldGFjaGVkKSB0aGlzLm9wZW5EZXRhY2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIuY2hpbGQubWVtb2l6ZWRQcm9wcy5jaGlsZHJlbi5wcm9wcy5vblNldFNlY3Rpb24odGhpcy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VjdGlvbiA9IHRoaXNPYmplY3QuX3JlYWN0SW50ZXJuYWxGaWJlci5jaGlsZC5tZW1vaXplZFByb3BzLmNoaWxkcmVuLnByb3BzLm9uU2V0U2VjdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZENTUygpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVtb3ZlUGFuZWwodGhpcy5pZCk7XHJcbiAgICAgICAgdGhpcy51bndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVyKSByZXR1cm4gdGhpcy5lcnJvcihcIkFscmVhZHkgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICAgICAgY29uc3QgdGltZUNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5sb2coXCJTdGFydGluZyB0byB3YXRjaCBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaChEYXRhU3RvcmUuY3VzdG9tQ1NTLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aW1lQ2FjaGVbZmlsZW5hbWVdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlQ1NTKFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NTUyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3Q1NTID09IHRoaXMuc2F2ZWRDc3MpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBuZXdDU1M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICAgICAgICAgIEV2ZW50cy5lbWl0KFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bndhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJXYXMgbm90IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLndhdGNoZXI7XHJcbiAgICAgICAgdGhpcy5sb2coXCJObyBsb25nZXIgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICBpZiAoIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDU1ModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDU1MoKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSA9PT0gXCJ1bmRlZmluZWRcIikgbmV3Q3NzID0gdGhpcy5pbnNlcnRlZENzcztcclxuICAgICAgICBlbHNlIHRoaXMuaW5zZXJ0ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRE9NTWFuYWdlci51cGRhdGVDdXN0b21DU1MobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQ1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5zYXZlZENzcyA9IG5ld0NzcztcclxuICAgICAgICBEYXRhU3RvcmUuc2F2ZUN1c3RvbUNTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGVsZWN0cm9uLnNoZWxsLm9wZW5FeHRlcm5hbChgZmlsZTovLyR7RGF0YVN0b3JlLmN1c3RvbUNTU31gKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoY3VycmVudENTUykge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvclwiLFxyXG4gICAgICAgICAgICByZWY6IGVkaXRvclJlZixcclxuICAgICAgICAgICAgY3NzOiBjdXJyZW50Q1NTLFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lci5vcGVuKHtcclxuICAgICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uUmVzaXplOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQgfHwgIWVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpdGxlOiBTdHJpbmdzLkN1c3RvbUNTUy5lZGl0b3JUaXRsZSxcclxuICAgICAgICAgICAgaWQ6IFwiZmxvYXRpbmctZWRpdG9yLXdpbmRvd1wiLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ3MCxcclxuICAgICAgICAgICAgd2lkdGg6IDQxMCxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBlZGl0b3IsXHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yUmVmLmN1cnJlbnQuaGFzVW5zYXZlZENoYW5nZXM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFN0cmluZ3MuQ3VzdG9tQ1NTLmNvbmZpcm1hdGlvblRleHRcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSB0cnVlO1xyXG4gICAgICAgIFVzZXJTZXR0aW5ncy5jbG9zZSgpO1xyXG4gICAgICAgIERpc3BhdGNoZXIuZGlydHlEaXNwYXRjaCh7dHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfUE9QfSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _structs_builtin__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../structs/builtin */ \"./src/structs/builtin.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ui/customcss/csseditor */ \"./src/ui/customcss/csseditor.jsx\");\n/* harmony import */ var _ui_floating_container__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../ui/floating/container */ \"./src/ui/floating/container.jsx\");\n/* harmony import */ var _ui_settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../ui/settings/title */ \"./src/ui/settings/title.jsx\");\n\n\n\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst electron = __webpack_require__(/*! electron */ \"electron\");\n\nconst UserSettings = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"updateAccount\");\nconst Dispatcher = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"dirtyDispatch\");\nconst ActionTypes = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"ActionTypes\").ActionTypes;\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class CustomCSS extends _structs_builtin__WEBPACK_IMPORTED_MODULE_0__[\"default\"] {\n get name() {\n return \"Custom CSS\";\n }\n\n get category() {\n return \"customcss\";\n }\n\n get id() {\n return \"customcss\";\n }\n\n get startDetached() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"startDetached\");\n }\n\n get nativeOpen() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(this.collection, this.category, \"nativeOpen\");\n }\n\n constructor() {\n super();\n this.savedCss = \"\";\n this.insertedCss = \"\";\n this.isDetached = false;\n }\n\n async enabled() {\n if (!window.ace) {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].injectScript(\"ace-script\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.2.9/ace.js\").then(() => {\n if (window.require.original) window.require = window.require.original;\n });\n }\n\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].registerPanel(this.id, modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss, {\n order: 2,\n element: () => [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle\n }), modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n css: this.savedCss,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n openDetached: this.openDetached.bind(this),\n onChange: this.onChange.bind(this)\n })],\n onClick: thisObject => {\n if (this.isDetached) return;\n if (this.nativeOpen) this.openNative();else if (this.startDetached) this.openDetached();else thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection(modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].Panels.customcss);\n this.setSection = thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection;\n }\n });\n this.loadCSS();\n this.insertCSS(this.savedCss);\n this.watchContent();\n }\n\n disabled() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].removePanel(this.id);\n this.unwatchContent();\n }\n\n watchContent() {\n if (this.watcher) return this.error(\"Already watching content.\");\n const timeCache = {};\n this.log(\"Starting to watch content.\");\n this.watcher = fs.watch(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS, {\n persistent: false\n }, async (eventType, filename) => {\n if (!eventType || !filename) return;\n await new Promise(r => setTimeout(r, 50));\n\n try {\n fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n } catch (err) {\n if (err.code !== \"ENOENT\") return;\n delete timeCache[filename];\n this.saveCSS(\"\");\n }\n\n const stats = fs.statSync(modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS);\n if (!stats || !stats.mtime || !stats.mtime.getTime()) return;\n if (typeof stats.mtime.getTime() !== \"number\") return;\n if (timeCache[filename] == stats.mtime.getTime()) return;\n timeCache[filename] = stats.mtime.getTime();\n\n if (eventType == \"change\") {\n const newCSS = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n if (newCSS == this.savedCss) return;\n this.savedCss = newCSS;\n this.insertCSS(this.savedCss);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Events\"].emit(\"customcss-updated\", this.savedCss);\n }\n });\n }\n\n unwatchContent() {\n if (!this.watcher) return this.error(\"Was not watching content.\");\n this.watcher.close();\n delete this.watcher;\n this.log(\"No longer watching content.\");\n }\n\n onChange(value) {\n if (!modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].get(\"settings\", \"customcss\", \"liveUpdate\")) return;\n this.insertCSS(value);\n this.saveCSS(value);\n }\n\n loadCSS() {\n this.savedCss = modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].loadCustomCSS();\n }\n\n insertCSS(newCss) {\n if (typeof newCss === \"undefined\") newCss = this.insertedCss;else this.insertedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DOMManager\"].updateCustomCSS(newCss);\n }\n\n saveCSS(newCss) {\n if (typeof newCss !== \"undefined\") this.savedCss = newCss;\n modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].saveCustomCSS(this.savedCss);\n }\n\n openNative() {\n electron.shell.openExternal(`file://${modules__WEBPACK_IMPORTED_MODULE_1__[\"DataStore\"].customCSS}`);\n }\n\n openDetached(currentCSS) {\n const editorRef = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createRef();\n const editor = modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_ui_customcss_csseditor__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: \"bd-floating-editor\",\n ref: editorRef,\n css: currentCSS,\n save: this.saveCSS.bind(this),\n update: this.insertCSS.bind(this),\n openNative: this.openNative.bind(this),\n onChange: this.onChange.bind(this)\n });\n _ui_floating_container__WEBPACK_IMPORTED_MODULE_3__[\"default\"].open({\n onClose: () => {\n this.isDetached = false;\n },\n onResize: () => {\n if (!editorRef || !editorRef.current || !editorRef.current.resize) return;\n editorRef.current.resize();\n },\n title: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.editorTitle,\n id: \"floating-editor-window\",\n height: 470,\n width: 410,\n center: true,\n resizable: true,\n children: editor,\n confirmClose: () => {\n if (!editorRef || !editorRef.current) return false;\n return editorRef.current.hasUnsavedChanges;\n },\n confirmationText: modules__WEBPACK_IMPORTED_MODULE_1__[\"Strings\"].CustomCSS.confirmationText\n });\n this.isDetached = true;\n UserSettings.close();\n Dispatcher.dirtyDispatch({\n type: ActionTypes.LAYER_POP\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2J1aWx0aW5zL2N1c3RvbWNzcy5qcz9jM2YyIl0sIm5hbWVzIjpbImZzIiwicmVxdWlyZSIsImVsZWN0cm9uIiwiVXNlclNldHRpbmdzIiwiV2VicGFja01vZHVsZXMiLCJnZXRCeVByb3BzIiwiRGlzcGF0Y2hlciIsIkFjdGlvblR5cGVzIiwiQ3VzdG9tQ1NTIiwiQnVpbHRpbiIsIm5hbWUiLCJjYXRlZ29yeSIsImlkIiwic3RhcnREZXRhY2hlZCIsIlNldHRpbmdzIiwiZ2V0IiwiY29sbGVjdGlvbiIsIm5hdGl2ZU9wZW4iLCJjb25zdHJ1Y3RvciIsInNhdmVkQ3NzIiwiaW5zZXJ0ZWRDc3MiLCJpc0RldGFjaGVkIiwiZW5hYmxlZCIsIndpbmRvdyIsImFjZSIsIkRPTU1hbmFnZXIiLCJpbmplY3RTY3JpcHQiLCJ0aGVuIiwib3JpZ2luYWwiLCJyZWdpc3RlclBhbmVsIiwiU3RyaW5ncyIsIlBhbmVscyIsImN1c3RvbWNzcyIsIm9yZGVyIiwiZWxlbWVudCIsImVkaXRvclRpdGxlIiwiUmVhY3QiLCJjcmVhdGVFbGVtZW50IiwiQ1NTRWRpdG9yIiwiY3NzIiwic2F2ZSIsInNhdmVDU1MiLCJiaW5kIiwidXBkYXRlIiwiaW5zZXJ0Q1NTIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsIm9uQ2hhbmdlIiwib25DbGljayIsInRoaXNPYmplY3QiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwiY2hpbGQiLCJtZW1vaXplZFByb3BzIiwiY2hpbGRyZW4iLCJwcm9wcyIsIm9uU2V0U2VjdGlvbiIsInNldFNlY3Rpb24iLCJsb2FkQ1NTIiwid2F0Y2hDb250ZW50IiwiZGlzYWJsZWQiLCJyZW1vdmVQYW5lbCIsInVud2F0Y2hDb250ZW50Iiwid2F0Y2hlciIsImVycm9yIiwidGltZUNhY2hlIiwibG9nIiwid2F0Y2giLCJEYXRhU3RvcmUiLCJjdXN0b21DU1MiLCJwZXJzaXN0ZW50IiwiZXZlbnRUeXBlIiwiZmlsZW5hbWUiLCJQcm9taXNlIiwiciIsInNldFRpbWVvdXQiLCJzdGF0U3luYyIsImVyciIsImNvZGUiLCJzdGF0cyIsIm10aW1lIiwiZ2V0VGltZSIsIm5ld0NTUyIsImxvYWRDdXN0b21DU1MiLCJFdmVudHMiLCJlbWl0IiwiY2xvc2UiLCJ2YWx1ZSIsIm5ld0NzcyIsInVwZGF0ZUN1c3RvbUNTUyIsInNhdmVDdXN0b21DU1MiLCJzaGVsbCIsIm9wZW5FeHRlcm5hbCIsImN1cnJlbnRDU1MiLCJlZGl0b3JSZWYiLCJjcmVhdGVSZWYiLCJlZGl0b3IiLCJyZWYiLCJGbG9hdGluZ1dpbmRvd0NvbnRhaW5lciIsIm9wZW4iLCJvbkNsb3NlIiwib25SZXNpemUiLCJjdXJyZW50IiwicmVzaXplIiwidGl0bGUiLCJoZWlnaHQiLCJ3aWR0aCIsImNlbnRlciIsInJlc2l6YWJsZSIsImNvbmZpcm1DbG9zZSIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwiY29uZmlybWF0aW9uVGV4dCIsImRpcnR5RGlzcGF0Y2giLCJ0eXBlIiwiTEFZRVJfUE9QIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1BLEVBQUUsR0FBR0MsbUJBQU8sQ0FBQyxjQUFELENBQWxCOztBQUNBLE1BQU1DLFFBQVEsR0FBR0QsbUJBQU8sQ0FBQywwQkFBRCxDQUF4Qjs7QUFDQSxNQUFNRSxZQUFZLEdBQUdDLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBckI7QUFDQSxNQUFNQyxVQUFVLEdBQUdGLHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsZUFBMUIsQ0FBbkI7QUFDQSxNQUFNRSxXQUFXLEdBQUdILHNEQUFjLENBQUNDLFVBQWYsQ0FBMEIsYUFBMUIsRUFBeUNFLFdBQTdEO0FBRWUsbUVBQUksTUFBTUMsU0FBTixTQUF3QkMsd0RBQXhCLENBQWdDO0FBQy9DLE1BQUlDLElBQUosR0FBVztBQUFDLFdBQU8sWUFBUDtBQUFxQjs7QUFDakMsTUFBSUMsUUFB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QUFDUSxPQUFWLENBQWtCQyxNQUEzRCxFQUFtRTtBQUNuRVQsaUJBQVMsQ0FBQ1EsT0FBVixDQUFrQkMsTUFBbEI7QUFDSCxPQVB3QjtBQVF6QkMsV0FBSyxFQUFFekUsK0NBQU8sQ0FBQ3RCLFNBQVIsQ0FBa0IyQixXQVJBO0FBU3pCdkIsUUFBRSxFQUFFLHdCQVRxQjtBQVV6QjRGLFlBQU0sRUFBRSxHQVZpQjtBQVd6QkMsV0FBSyxFQUFFLEdBWGtCO0FBWXpCQyxZQUFNLEVBQUUsSUFaaUI7QUFhekJDLGVBQVMsRUFBRSxJQWJjO0FBY3pCdEQsY0FBUSxFQUFFMEMsTUFkZTtBQWV6QmEsa0JBQVksRUFBRSxNQUFNO0FBQ2hCLFlBQUksQ0FBQ2YsU0FBRCxJQUFjLENBQUNBLFNBQVMsQ0FBQ1EsT0FBN0IsRUFBc0MsT0FBTyxLQUFQO0FBQ3RDLGVBQU9SLFNBQVMsQ0FBQ1EsT0FBVixDQUFrQlEsaUJBQXpCO0FBQ0gsT0FsQndCO0FBbUJ6QkMsc0JBQWdCLEVBQUVoRiwrQ0FBTyxDQUFDdEIsU0FBUixDQUFrQnNHO0FBbkJYLEtBQTdCO0FBcUJBLFNBQUt6RixVQUFMLEdBQWtCLElBQWxCO0FBQ0FsQixnQkFBWSxDQUFDa0YsS0FBYjtBQUNBL0UsY0FBVSxDQUFDeUcsYUFBWCxDQUF5QjtBQUFDQyxVQUFJLEVBQUV6RyxXQUFXLENBQUMwRztBQUFuQixLQUF6QjtBQUNIOztBQWhKOEMsQ0FBcEMsRUFBZiIsImZpbGUiOiIuL3NyYy9idWlsdGlucy9jdXN0b21jc3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVpbHRpbiBmcm9tIFwiLi4vc3RydWN0cy9idWlsdGluXCI7XHJcbmltcG9ydCB7U2V0dGluZ3MsIERhdGFTdG9yZSwgUmVhY3QsIFdlYnBhY2tNb2R1bGVzLCBFdmVudHMsIERPTU1hbmFnZXIsIFN0cmluZ3N9IGZyb20gXCJtb2R1bGVzXCI7XHJcbmltcG9ydCBDU1NFZGl0b3IgZnJvbSBcIi4uL3VpL2N1c3RvbWNzcy9jc3NlZGl0b3JcIjtcclxuaW1wb3J0IEZsb2F0aW5nV2luZG93Q29udGFpbmVyIGZyb20gXCIuLi91aS9mbG9hdGluZy9jb250YWluZXJcIjtcclxuaW1wb3J0IFNldHRpbmdzVGl0bGUgZnJvbSBcIi4uL3VpL3NldHRpbmdzL3RpdGxlXCI7XHJcblxyXG5jb25zdCBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcclxuY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7XHJcbmNvbnN0IFVzZXJTZXR0aW5ncyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJ1cGRhdGVBY2NvdW50XCIpO1xyXG5jb25zdCBEaXNwYXRjaGVyID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcImRpcnR5RGlzcGF0Y2hcIik7XHJcbmNvbnN0IEFjdGlvblR5cGVzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcIkFjdGlvblR5cGVzXCIpLkFjdGlvblR5cGVzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IGNsYXNzIEN1c3RvbUNTUyBleHRlbmRzIEJ1aWx0aW4ge1xyXG4gICAgZ2V0IG5hbWUoKSB7cmV0dXJuIFwiQ3VzdG9tIENTU1wiO31cclxuICAgIGdldCBjYXRlZ29yeSgpIHtyZXR1cm4gXCJjdXN0b21jc3NcIjt9XHJcbiAgICBnZXQgaWQoKSB7cmV0dXJuIFwiY3VzdG9tY3NzXCI7fVxyXG4gICAgZ2V0IHN0YXJ0RGV0YWNoZWQoKSB7cmV0dXJuIFNldHRpbmdzLmdldCh0aGlzLmNvbGxlY3Rpb24sIHRoaXMuY2F0ZWdvcnksIFwic3RhcnREZXRhY2hlZFwiKTt9XHJcbiAgICBnZXQgbmF0aXZlT3BlbigpIHtyZXR1cm4gU2V0dGluZ3MuZ2V0KHRoaXMuY29sbGVjdGlvbiwgdGhpcy5jYXRlZ29yeSwgXCJuYXRpdmVPcGVuXCIpO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0ZWRDc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuaXNEZXRhY2hlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGVuYWJsZWQoKSB7XHJcbiAgICAgICAgaWYgKCF3aW5kb3cuYWNlKSB7XHJcbiAgICAgICAgICAgIERPTU1hbmFnZXIuaW5qZWN0U2NyaXB0KFwiYWNlLXNjcmlwdFwiLCBcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2FjZS8xLjIuOS9hY2UuanNcIikudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LnJlcXVpcmUub3JpZ2luYWwpIHdpbmRvdy5yZXF1aXJlID0gd2luZG93LnJlcXVpcmUub3JpZ2luYWw7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBTZXR0aW5ncy5yZWdpc3RlclBhbmVsKHRoaXMuaWQsIFN0cmluZ3MuUGFuZWxzLmN1c3RvbWNzcywge1xyXG4gICAgICAgICAgICBvcmRlcjogMixcclxuICAgICAgICAgICAgZWxlbWVudDogKCkgPT4gWzxTZXR0aW5nc1RpdGxlIHRleHQ9e1N0cmluZ3MuQ3VzdG9tQ1NTLmVkaXRvclRpdGxlfSAvPiwgUmVhY3QuY3JlYXRlRWxlbWVudChDU1NFZGl0b3IsIHtcclxuICAgICAgICAgICAgICAgIGNzczogdGhpcy5zYXZlZENzcyxcclxuICAgICAgICAgICAgICAgIHNhdmU6IHRoaXMuc2F2ZUNTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICAgICAgb3Blbk5hdGl2ZTogdGhpcy5vcGVuTmF0aXZlLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvcGVuRGV0YWNoZWQ6IHRoaXMub3BlbkRldGFjaGVkLmJpbmQodGhpcyksXHJcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogdGhpcy5vbkNoYW5nZS5iaW5kKHRoaXMpXHJcbiAgICAgICAgICAgIH0pXSxcclxuICAgICAgICAgICAgb25DbGljazogKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRGV0YWNoZWQpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hdGl2ZU9wZW4pIHRoaXMub3Blbk5hdGl2ZSgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zdGFydERldGFjaGVkKSB0aGlzLm9wZW5EZXRhY2hlZCgpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIuY2hpbGQubWVtb2l6ZWRQcm9wcy5jaGlsZHJlbi5wcm9wcy5vblNldFNlY3Rpb24oU3RyaW5ncy5QYW5lbHMuY3VzdG9tY3NzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VjdGlvbiA9IHRoaXNPYmplY3QuX3JlYWN0SW50ZXJuYWxGaWJlci5jaGlsZC5tZW1vaXplZFByb3BzLmNoaWxkcmVuLnByb3BzLm9uU2V0U2VjdGlvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubG9hZENTUygpO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHRoaXMuc2F2ZWRDc3MpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWQoKSB7XHJcbiAgICAgICAgU2V0dGluZ3MucmVtb3ZlUGFuZWwodGhpcy5pZCk7XHJcbiAgICAgICAgdGhpcy51bndhdGNoQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAodGhpcy53YXRjaGVyKSByZXR1cm4gdGhpcy5lcnJvcihcIkFscmVhZHkgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICAgICAgY29uc3QgdGltZUNhY2hlID0ge307XHJcbiAgICAgICAgdGhpcy5sb2coXCJTdGFydGluZyB0byB3YXRjaCBjb250ZW50LlwiKTtcclxuICAgICAgICB0aGlzLndhdGNoZXIgPSBmcy53YXRjaChEYXRhU3RvcmUuY3VzdG9tQ1NTLCB7cGVyc2lzdGVudDogZmFsc2V9LCBhc3luYyAoZXZlbnRUeXBlLCBmaWxlbmFtZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWV2ZW50VHlwZSB8fCAhZmlsZW5hbWUpIHJldHVybjtcclxuICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwKSk7XHJcbiAgICAgICAgICAgIHRyeSB7ZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7fVxyXG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLmNvZGUgIT09IFwiRU5PRU5UXCIpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSB0aW1lQ2FjaGVbZmlsZW5hbWVdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlQ1NTKFwiXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXRzID0gZnMuc3RhdFN5bmMoRGF0YVN0b3JlLmN1c3RvbUNTUyk7XHJcbiAgICAgICAgICAgIGlmICghc3RhdHMgfHwgIXN0YXRzLm10aW1lIHx8ICFzdGF0cy5tdGltZS5nZXRUaW1lKCkpIHJldHVybjtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZihzdGF0cy5tdGltZS5nZXRUaW1lKCkpICE9PSBcIm51bWJlclwiKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmICh0aW1lQ2FjaGVbZmlsZW5hbWVdID09IHN0YXRzLm10aW1lLmdldFRpbWUoKSkgcmV0dXJuO1xyXG4gICAgICAgICAgICB0aW1lQ2FjaGVbZmlsZW5hbWVdID0gc3RhdHMubXRpbWUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBpZiAoZXZlbnRUeXBlID09IFwiY2hhbmdlXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NTUyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAobmV3Q1NTID09IHRoaXMuc2F2ZWRDc3MpIHJldHVybjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZWRDc3MgPSBuZXdDU1M7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmluc2VydENTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgICAgICAgICAgICAgIEV2ZW50cy5lbWl0KFwiY3VzdG9tY3NzLXVwZGF0ZWRcIiwgdGhpcy5zYXZlZENzcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1bndhdGNoQ29udGVudCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMud2F0Y2hlcikgcmV0dXJuIHRoaXMuZXJyb3IoXCJXYXMgbm90IHdhdGNoaW5nIGNvbnRlbnQuXCIpO1xyXG4gICAgICAgIHRoaXMud2F0Y2hlci5jbG9zZSgpO1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLndhdGNoZXI7XHJcbiAgICAgICAgdGhpcy5sb2coXCJObyBsb25nZXIgd2F0Y2hpbmcgY29udGVudC5cIik7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2UodmFsdWUpIHtcclxuICAgICAgICBpZiAoIVNldHRpbmdzLmdldChcInNldHRpbmdzXCIsIFwiY3VzdG9tY3NzXCIsIFwibGl2ZVVwZGF0ZVwiKSkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuaW5zZXJ0Q1NTKHZhbHVlKTtcclxuICAgICAgICB0aGlzLnNhdmVDU1ModmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRDU1MoKSB7XHJcbiAgICAgICAgdGhpcy5zYXZlZENzcyA9IERhdGFTdG9yZS5sb2FkQ3VzdG9tQ1NTKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0Q1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSA9PT0gXCJ1bmRlZmluZWRcIikgbmV3Q3NzID0gdGhpcy5pbnNlcnRlZENzcztcclxuICAgICAgICBlbHNlIHRoaXMuaW5zZXJ0ZWRDc3MgPSBuZXdDc3M7XHJcbiAgICAgICAgRE9NTWFuYWdlci51cGRhdGVDdXN0b21DU1MobmV3Q3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlQ1NTKG5ld0Nzcykge1xyXG4gICAgICAgIGlmICh0eXBlb2YobmV3Q3NzKSAhPT0gXCJ1bmRlZmluZWRcIikgdGhpcy5zYXZlZENzcyA9IG5ld0NzcztcclxuICAgICAgICBEYXRhU3RvcmUuc2F2ZUN1c3RvbUNTUyh0aGlzLnNhdmVkQ3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuTmF0aXZlKCkge1xyXG4gICAgICAgIGVsZWN0cm9uLnNoZWxsLm9wZW5FeHRlcm5hbChgZmlsZTovLyR7RGF0YVN0b3JlLmN1c3RvbUNTU31gKTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuRGV0YWNoZWQoY3VycmVudENTUykge1xyXG4gICAgICAgIGNvbnN0IGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZigpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRvciA9IFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ1NTRWRpdG9yLCB7XHJcbiAgICAgICAgICAgIGlkOiBcImJkLWZsb2F0aW5nLWVkaXRvclwiLFxyXG4gICAgICAgICAgICByZWY6IGVkaXRvclJlZixcclxuICAgICAgICAgICAgY3NzOiBjdXJyZW50Q1NTLFxyXG4gICAgICAgICAgICBzYXZlOiB0aGlzLnNhdmVDU1MuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgdXBkYXRlOiB0aGlzLmluc2VydENTUy5iaW5kKHRoaXMpLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiB0aGlzLm9wZW5OYXRpdmUuYmluZCh0aGlzKSxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMub25DaGFuZ2UuYmluZCh0aGlzKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBGbG9hdGluZ1dpbmRvd0NvbnRhaW5lci5vcGVuKHtcclxuICAgICAgICAgICAgb25DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0RldGFjaGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIG9uUmVzaXplOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWVkaXRvclJlZiB8fCAhZWRpdG9yUmVmLmN1cnJlbnQgfHwgIWVkaXRvclJlZi5jdXJyZW50LnJlc2l6ZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQucmVzaXplKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRpdGxlOiBTdHJpbmdzLkN1c3RvbUNTUy5lZGl0b3JUaXRsZSxcclxuICAgICAgICAgICAgaWQ6IFwiZmxvYXRpbmctZWRpdG9yLXdpbmRvd1wiLFxyXG4gICAgICAgICAgICBoZWlnaHQ6IDQ3MCxcclxuICAgICAgICAgICAgd2lkdGg6IDQxMCxcclxuICAgICAgICAgICAgY2VudGVyOiB0cnVlLFxyXG4gICAgICAgICAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIGNoaWxkcmVuOiBlZGl0b3IsXHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFlZGl0b3JSZWYgfHwgIWVkaXRvclJlZi5jdXJyZW50KSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWRpdG9yUmVmLmN1cnJlbnQuaGFzVW5zYXZlZENoYW5nZXM7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFN0cmluZ3MuQ3VzdG9tQ1NTLmNvbmZpcm1hdGlvblRleHRcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmlzRGV0YWNoZWQgPSB0cnVlO1xyXG4gICAgICAgIFVzZXJTZXR0aW5ncy5jbG9zZSgpO1xyXG4gICAgICAgIERpc3BhdGNoZXIuZGlydHlEaXNwYXRjaCh7dHlwZTogQWN0aW9uVHlwZXMuTEFZRVJfUE9QfSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/builtins/customcss.js\n"); /***/ }), @@ -299,7 +299,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _con /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n type: \"category\",\n id: \"general\",\n name: \"General\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"download\",\n value: true\n }, {\n type: \"switch\",\n id: \"emoteMenu\",\n value: true\n }, {\n type: \"switch\",\n id: \"hideEmojiMenu\",\n value: false,\n enableWith: \"emoteMenu\"\n }, {\n type: \"switch\",\n id: \"autoCaps\",\n value: false\n }, {\n type: \"switch\",\n id: \"showNames\",\n value: true\n }, {\n type: \"switch\",\n id: \"modifiers\",\n value: true\n }, {\n type: \"switch\",\n id: \"animateOnHover\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"categories\",\n name: \"Categories\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"\",\n value: true\n }, {\n type: \"switch\",\n id: \"ffz\",\n value: true\n }, {\n type: \"switch\",\n id: \"bttv\",\n value: true\n }]\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvZW1vdGVzL2NvbmZpZy5qcz8yZDVkIl0sIm5hbWVzIjpbInR5cGUiLCJpZCIsIm5hbWUiLCJjb2xsYXBzaWJsZSIsInNldHRpbmdzIiwidmFsdWUiLCJlbmFibGVXaXRoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLGdFQUNYO0FBQ0lBLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxTQUZSO0FBR0lDLE1BQUksRUFBRSxTQUhWO0FBSUlDLGFBQVcsRUFBRSxJQUpqQjtBQUtJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFVBQXJCO0FBQWlDSSxTQUFLLEVBQUU7QUFBeEMsR0FETSxFQUVOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUZNLEVBR047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxlQUFyQjtBQUFzQ0ksU0FBSyxFQUFFLEtBQTdDO0FBQW9EQyxjQUFVLEVBQUU7QUFBaEUsR0FITSxFQUlOO0FBQUNOLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsVUFBckI7QUFBaUNJLFNBQUssRUFBRTtBQUF4QyxHQUpNLEVBS047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxXQUFyQjtBQUFrQ0ksU0FBSyxFQUFFO0FBQXpDLEdBTE0sRUFNTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFdBQXJCO0FBQWtDSSxTQUFLLEVBQUU7QUFBekMsR0FOTSxFQU9OO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZ0JBQXJCO0FBQXVDSSxTQUFLLEVBQUU7QUFBOUMsR0FQTTtBQUxkLENBRFcsRUFnQlg7QUFDSUwsTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFlBRlI7QUFHSUMsTUFBSSxFQUFFLFlBSFY7QUFJSUMsYUFBVyxFQUFFLElBSmpCO0FBS0lDLFVBQVEsRUFBRSxDQUNOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsRUFBckI7QUFBeUJJLFNBQUssRUFBRTtBQUFoQyxHQURNLEVBRU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxLQUFyQjtBQUE0QkksU0FBSyxFQUFFO0FBQW5DLEdBRk0sRUFHTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLE1BQXJCO0FBQTZCSSxTQUFLLEVBQUU7QUFBcEMsR0FITTtBQUxkLENBaEJXLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9lbW90ZXMvY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJnZW5lcmFsXCIsXHJcbiAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRvd25sb2FkXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImVtb3RlTWVudVwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJoaWRlRW1vamlNZW51XCIsIHZhbHVlOiBmYWxzZSwgZW5hYmxlV2l0aDogXCJlbW90ZU1lbnVcIn0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhdXRvQ2Fwc1wiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwic2hvd05hbWVzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcIm1vZGlmaWVyc1wiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhbmltYXRlT25Ib3ZlclwiLCB2YWx1ZTogZmFsc2V9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiY2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIG5hbWU6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZmZ6XCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImJ0dHZcIiwgdmFsdWU6IHRydWV9XHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG5dOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/emotes/config.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n type: \"category\",\n id: \"general\",\n name: \"General\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"download\",\n value: true\n }, {\n type: \"switch\",\n id: \"emoteMenu\",\n value: true\n }, {\n type: \"switch\",\n id: \"hideEmojiMenu\",\n value: false,\n enableWith: \"emoteMenu\"\n }, {\n type: \"switch\",\n id: \"autoCaps\",\n value: false\n }, {\n type: \"switch\",\n id: \"showNames\",\n value: true\n }, {\n type: \"switch\",\n id: \"modifiers\",\n value: true\n }, {\n type: \"switch\",\n id: \"animateOnHover\",\n value: false\n }]\n}, {\n type: \"category\",\n id: \"categories\",\n name: \"Categories\",\n collapsible: true,\n settings: [{\n type: \"switch\",\n id: \"twitch\",\n value: true\n }, {\n type: \"switch\",\n id: \"ffz\",\n value: true\n }, {\n type: \"switch\",\n id: \"bttv\",\n value: true\n }]\n}]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvZW1vdGVzL2NvbmZpZy5qcz8yZDVkIl0sIm5hbWVzIjpbInR5cGUiLCJpZCIsIm5hbWUiLCJjb2xsYXBzaWJsZSIsInNldHRpbmdzIiwidmFsdWUiLCJlbmFibGVXaXRoIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlLGdFQUNYO0FBQ0lBLE1BQUksRUFBRSxVQURWO0FBRUlDLElBQUUsRUFBRSxTQUZSO0FBR0lDLE1BQUksRUFBRSxTQUhWO0FBSUlDLGFBQVcsRUFBRSxJQUpqQjtBQUtJQyxVQUFRLEVBQUUsQ0FDTjtBQUFDSixRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFVBQXJCO0FBQWlDSSxTQUFLLEVBQUU7QUFBeEMsR0FETSxFQUVOO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsV0FBckI7QUFBa0NJLFNBQUssRUFBRTtBQUF6QyxHQUZNLEVBR047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxlQUFyQjtBQUFzQ0ksU0FBSyxFQUFFLEtBQTdDO0FBQW9EQyxjQUFVLEVBQUU7QUFBaEUsR0FITSxFQUlOO0FBQUNOLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsVUFBckI7QUFBaUNJLFNBQUssRUFBRTtBQUF4QyxHQUpNLEVBS047QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxXQUFyQjtBQUFrQ0ksU0FBSyxFQUFFO0FBQXpDLEdBTE0sRUFNTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLFdBQXJCO0FBQWtDSSxTQUFLLEVBQUU7QUFBekMsR0FOTSxFQU9OO0FBQUNMLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsZ0JBQXJCO0FBQXVDSSxTQUFLLEVBQUU7QUFBOUMsR0FQTTtBQUxkLENBRFcsRUFnQlg7QUFDSUwsTUFBSSxFQUFFLFVBRFY7QUFFSUMsSUFBRSxFQUFFLFlBRlI7QUFHSUMsTUFBSSxFQUFFLFlBSFY7QUFJSUMsYUFBVyxFQUFFLElBSmpCO0FBS0lDLFVBQVEsRUFBRSxDQUNOO0FBQUNKLFFBQUksRUFBRSxRQUFQO0FBQWlCQyxNQUFFLEVBQUUsUUFBckI7QUFBK0JJLFNBQUssRUFBRTtBQUF0QyxHQURNLEVBRU47QUFBQ0wsUUFBSSxFQUFFLFFBQVA7QUFBaUJDLE1BQUUsRUFBRSxLQUFyQjtBQUE0QkksU0FBSyxFQUFFO0FBQW5DLEdBRk0sRUFHTjtBQUFDTCxRQUFJLEVBQUUsUUFBUDtBQUFpQkMsTUFBRSxFQUFFLE1BQXJCO0FBQTZCSSxTQUFLLEVBQUU7QUFBcEMsR0FITTtBQUxkLENBaEJXLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9lbW90ZXMvY29uZmlnLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xyXG4gICAge1xyXG4gICAgICAgIHR5cGU6IFwiY2F0ZWdvcnlcIixcclxuICAgICAgICBpZDogXCJnZW5lcmFsXCIsXHJcbiAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgc2V0dGluZ3M6IFtcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImRvd25sb2FkXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImVtb3RlTWVudVwiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJoaWRlRW1vamlNZW51XCIsIHZhbHVlOiBmYWxzZSwgZW5hYmxlV2l0aDogXCJlbW90ZU1lbnVcIn0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhdXRvQ2Fwc1wiLCB2YWx1ZTogZmFsc2V9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwic2hvd05hbWVzXCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcIm1vZGlmaWVyc1wiLCB2YWx1ZTogdHJ1ZX0sXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJhbmltYXRlT25Ib3ZlclwiLCB2YWx1ZTogZmFsc2V9XHJcbiAgICAgICAgXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICB0eXBlOiBcImNhdGVnb3J5XCIsXHJcbiAgICAgICAgaWQ6IFwiY2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIG5hbWU6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIHNldHRpbmdzOiBbXHJcbiAgICAgICAgICAgIHt0eXBlOiBcInN3aXRjaFwiLCBpZDogXCJ0d2l0Y2hcIiwgdmFsdWU6IHRydWV9LFxyXG4gICAgICAgICAgICB7dHlwZTogXCJzd2l0Y2hcIiwgaWQ6IFwiZmZ6XCIsIHZhbHVlOiB0cnVlfSxcclxuICAgICAgICAgICAge3R5cGU6IFwic3dpdGNoXCIsIGlkOiBcImJ0dHZcIiwgdmFsdWU6IHRydWV9XHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG5dOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/emotes/config.js\n"); /***/ }), @@ -335,7 +335,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n en: {\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n }\n },\n developer: {\n name: \"Developer Settings\",\n developerMode: {\n name: \"Developer Mode\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes once a week to stay up to date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitch: {\n name: \"Twitch\",\n note: \"Show Twitch global & subscriber emotes\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Emotes: {\n downloading: \"Downloading emotes in the background do not reload.\",\n downloaded: \"All emotes successfully downloaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmClose: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\"\n }\n },\n es: {\n Collections: {\n settings: {\n name: \"Ajustes\",\n addons: {\n addonErrors: {\n name: \"Mostrar Errores de Addons\"\n }\n }\n }\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbImVuIiwiUGFuZWxzIiwicGx1Z2lucyIsInRoZW1lcyIsImN1c3RvbWNzcyIsIkNvbGxlY3Rpb25zIiwic2V0dGluZ3MiLCJuYW1lIiwiZ2VuZXJhbCIsImVtb3RlcyIsIm5vdGUiLCJwdWJsaWNTZXJ2ZXJzIiwidm9pY2VEaXNjb25uZWN0IiwidHdlbnR5Rm91ckhvdXIiLCJjbGFzc05vcm1hbGl6ZXIiLCJzaG93VG9hc3RzIiwiYXBwZWFyYW5jZSIsInZvaWNlTW9kZSIsIm1pbmltYWxNb2RlIiwiaGlkZUNoYW5uZWxzIiwiZGFya01vZGUiLCJjb2xvcmVkVGV4dCIsImFkZG9ucyIsImFkZG9uRXJyb3JzIiwiYXV0b1Njcm9sbCIsImF1dG9SZWxvYWQiLCJsaXZlVXBkYXRlIiwic3RhcnREZXRhY2hlZCIsIm5hdGl2ZU9wZW4iLCJkZXZlbG9wZXIiLCJkZXZlbG9wZXJNb2RlIiwiY29weVNlbGVjdG9yIiwid2luZG93IiwidHJhbnNwYXJlbmN5IiwiZnJhbWUiLCJkb3dubG9hZCIsImVtb3RlTWVudSIsImhpZGVFbW9qaU1lbnUiLCJhdXRvQ2FwcyIsInNob3dOYW1lcyIsIm1vZGlmaWVycyIsImFuaW1hdGVPbkhvdmVyIiwiY2F0ZWdvcmllcyIsInR3aXRjaCIsImZmeiIsImJ0dHYiLCJFbW90ZXMiLCJkb3dubG9hZGluZyIsImRvd25sb2FkZWQiLCJjbGVhckVtb3RlcyIsImZhdm9yaXRlQWN0aW9uIiwiQ3VzdG9tQ1NTIiwiY29uZmlybWF0aW9uVGV4dCIsInVwZGF0ZSIsInNhdmUiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwiZWRpdG9yVGl0bGUiLCJQdWJsaWNTZXJ2ZXJzIiwiYnV0dG9uIiwiam9pbiIsImpvaW5pbmciLCJqb2luZWQiLCJsb2FkaW5nIiwibG9hZE1vcmUiLCJub3RDb25uZWN0ZWQiLCJzZWFyY2giLCJjb25uZWN0IiwicmVjb25uZWN0IiwiY29ubmVjdGlvbiIsInJlc3VsdHMiLCJxdWVyeSIsIk1vZGFscyIsImNvbmZpcm1DbG9zZSIsIm9rYXkiLCJjYW5jZWwiLCJtZXNzYWdlIiwiZXJyb3IiLCJlcyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBZTtBQUNYQSxJQUFFLEVBQUU7QUFDQUMsVUFBTSxFQUFFO0FBQ0pDLGFBQU8sRUFBRSxTQURMO0FBRUpDLFlBQU0sRUFBRSxRQUZKO0FBR0pDLGVBQVMsRUFBRTtBQUhQLEtBRFI7QUFNQUMsZUFBVyxFQUFFO0FBQ1RDLGNBQVEsRUFBRTtBQUNOQyxZQUFJLEVBQUUsVUFEQTtBQUVOQyxlQUFPLEVBQUU7QUFDTEQsY0FBSSxFQUFFLFNBREQ7QUFFTEUsZ0JBQU0sRUFBRTtBQUNKRixnQkFBSSxFQUFFLGNBREY7QUFFSkcsZ0JBQUksRUFBRTtBQUZGLFdBRkg7QUFNTEMsdUJBQWEsRUFBRTtBQUNYSixnQkFBSSxFQUFFLGdCQURLO0FBRVhHLGdCQUFJLEVBQUU7QUFGSyxXQU5WO0FBVUxFLHlCQUFlLEVBQUU7QUFDYkwsZ0JBQUksRUFBRSxrQkFETztBQUViRyxnQkFBSSxFQUFFO0FBRk8sV0FWWjtBQWNMRyx3QkFBYyxFQUFFO0FBQ1pOLGdCQUFJLEVBQUUsb0JBRE07QUFFWkcsZ0JBQUksRUFBRTtBQUZNLFdBZFg7QUFrQkxJLHlCQUFlLEVBQUU7QUFDYlAsZ0JBQUksRUFBRSxtQkFETztBQUViRyxnQkFBSSxFQUFFO0FBRk8sV0FsQlo7QUFzQkxLLG9CQUFVLEVBQUU7QUFDUlIsZ0JBQUksRUFBRSxhQURFO0FBRVJHLGdCQUFJLEVBQUU7QUFGRTtBQXRCUCxTQUZIO0FBNkJOTSxrQkFBVSxFQUFFO0FBQ1JULGNBQUksRUFBRSxZQURFO0FBRVJVLG1CQUFTLEVBQUU7QUFDUFYsZ0JBQUksRUFBRSxZQURDO0FBRVBHLGdCQUFJLEVBQUU7QUFGQyxXQUZIO0FBTVJRLHFCQUFXLEVBQUU7QUFDVFgsZ0JBQUksRUFBRSxjQURHO0FBRVRHLGdCQUFJLEVBQUU7QUFGRyxXQU5MO0FBVVJT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QU8sRUFBRSxTQUxMO0FBTUpDLFdBQUssRUFBRSxPQU5IO0FBT0p0RCxpQkFBVyxFQUFFO0FBUFQ7QUFyTVIsR0FETztBQWdOWHVELElBQUUsRUFBRTtBQUNBekUsZUFBVyxFQUFFO0FBQ1RDLGNBQVEsRUFBRTtBQUNOQyxZQUFJLEVBQUUsU0FEQTtBQUVOZSxjQUFNLEVBQUU7QUFDSkMscUJBQVcsRUFBRTtBQUNUaEIsZ0JBQUksRUFBRTtBQURHO0FBRFQ7QUFGRjtBQUREO0FBRGI7QUFoTk8sQ0FBZiIsImZpbGUiOiIuL3NyYy9kYXRhL3N0cmluZ3MuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCB7XHJcbiAgICBlbjoge1xyXG4gICAgICAgIFBhbmVsczoge1xyXG4gICAgICAgICAgICBwbHVnaW5zOiBcIlBsdWdpbnNcIixcclxuICAgICAgICAgICAgdGhlbWVzOiBcIlRoZW1lc1wiLFxyXG4gICAgICAgICAgICBjdXN0b21jc3M6IFwiQ3VzdG9tIENTU1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDb2xsZWN0aW9uczoge1xyXG4gICAgICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIFN5c3RlbVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgQkQncyBlbW90ZSBzeXN0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcHVibGljU2VydmVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlB1YmxpYyBTZXJ2ZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzcGxheSBwdWJsaWMgc2VydmVycyBidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVm9pY2UgRGlzY29ubmVjdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRpc2Nvbm5lY3QgZnJvbSB2b2ljZSBzZXJ2ZXIgd2hlbiBjbG9zaW5nIERpc2NvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdHdlbnR5Rm91ckhvdXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCIyNC1Ib3VyIFRpbWVzdGFtcHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05vcm1hbGl6ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOb3JtYWxpemUgQ2xhc3Nlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgc3RhYmxlIGNsYXNzZXMgdG8gZWxlbWVudHMgdG8gaGVscCB0aGVtZXMuIChlLmcuIGFkZHMgLmRhLWNoYW5uZWxzIHRvIC5jaGFubmVscy1JZTJsNkEpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IFRvYXN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgc21hbGwgbm90aWZpY2F0aW9uIGZvciBpbXBvcnRhbnQgaW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBcHBlYXJhbmNlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdm9pY2VNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVm9pY2UgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGV2ZXJ5dGhpbmcgdGhhdCBpc24ndCB2b2ljZSBjaGF0XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbmltYWxNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTWluaW1hbCBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZSBlbGVtZW50cyBhbmQgcmVkdWNlIHRoZSBzaXplIG9mIGVsZW1lbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGVDaGFubmVsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkhpZGUgQ2hhbm5lbHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBkYXJrTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRhcmsgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgY2VydGFpbiBlbGVtZW50cyBkYXJrIGJ5IGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3JlZFRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb2xvcmVkIFRleHRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJNYWtlIHRleHQgY29sb3VyIHRoZSBzYW1lIGFzIHJvbGUgY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhZGRvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFkZG9uIE1hbmFnZXJcIixcclxuICAgICAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgQWRkb24gRXJyb3JzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvd3MgYSBtb2RhbCB3aXRoIHBsdWdpbi90aGVtZSBlcnJvcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1Njcm9sbDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNjcm9sbCBUbyBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG8tc2Nyb2xscyB0byBhIHBsdWdpbidzIHNldHRpbmdzIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIChvbmx5IGlmIG91dCBvZiB2aWV3KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvUmVsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGljIExvYWRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvbWF0aWNhbGx5IGxvYWRzLCByZWxvYWRzLCBhbmQgdW5sb2FkcyBwbHVnaW5zIGFuZCB0aGVtZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tY3NzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tY3NzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ3VzdG9tIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIEN1c3RvbSBDU1MgdGFiXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGxpdmVVcGRhdGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJMaXZlIFVwZGF0ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlVwZGF0ZXMgdGhlIGNzcyBhcyB5b3UgdHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFydERldGFjaGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU3RhcnQgRGV0YWNoZWRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJDbGlja2luZyB0aGUgQ3VzdG9tIENTUyB0YWIgb3BlbnMgdGhlIGVkaXRvciBpbiBhIHNlcGFyYXRlIHdpbmRvd1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbmF0aXZlT3Blbjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk9wZW4gaW4gTmF0aXZlIEVkaXRvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB5b3VyIGN1c3RvbSBjc3MgaW4geW91ciBuYXRpdmUgZWRpdG9yXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZGV2ZWxvcGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEZXZlbG9wZXIgU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXJNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGV2ZWxvcGVyIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBbGxvd3MgYWN0aXZhdGluZyBkZWJ1Z2dlciB3aGVuIHByZXNzaW5nIEY4XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvcHlTZWxlY3Rvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkNvcHkgU2VsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIGEgXFxcIkNvcHkgU2VsZWN0b3JcXFwiIG9wdGlvbiB0byBjb250ZXh0IG1lbnVzIHdoZW4gZGV2ZWxvcGVyIG1vZGUgaXMgYWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgd2luZG93OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJXaW5kb3cgUHJlZmVyZW5jZXNcIixcclxuICAgICAgICAgICAgICAgICAgICB0cmFuc3BhcmVuY3k6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbmFibGUgVHJhbnNwYXJlbmN5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyB0aGUgbWFpbiB3aW5kb3cgdG8gYmUgc2VlLXRocm91Z2ggKHJlcXVpcmVzIHJlc3RhcnQpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZyYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IEZyYW1lXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyB0aGUgbmF0aXZlIG9zIHdpbmRvdyBmcmFtZSB0byB0aGUgbWFpbiB3aW5kb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3Rlc1wiLFxyXG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRG93bmxvYWQgRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRG93bmxvYWQgZW1vdGVzIG9uY2UgYSB3ZWVrIHRvIHN0YXkgdXAgdG8gZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlbW90ZU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBUd2l0Y2gvRmF2b3VyaXRlIGVtb3RlcyBpbiBlbW90ZSBtZW51XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGVFbW9qaU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJIaWRlIEVtb2ppIE1lbnVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBEaXNjb3JkJ3MgZW1vamkgbWVudSB3aGVuIHVzaW5nIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b0NhcHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBBdXRvY2FwaXRhbGl6YXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvY2FwaXRhbGl6ZSBlbW90ZSBjb21tYW5kc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93TmFtZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IE5hbWVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZSBuYW1lcyBvbiBob3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IEVtb3RlIE1vZGlmaWVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZSBlbW90ZSBtb2RzIChmbGlwLCBzcGluLCBwdWxzZSwgc3BpbjIsIHNwaW4zLCAxc3BpbiwgMnNwaW4sIDNzcGluLCB0ciwgYmwsIGJyLCBzaGFrZSwgc2hha2UyLCBzaGFrZTMsIGZsYXApXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGVPbkhvdmVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQW5pbWF0ZSBPbiBIb3ZlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk9ubHkgYW5pbWF0ZSB0aGUgZW1vdGUgbW9kaWZpZXJzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHR3aXRjaDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlR3aXRjaFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoIGdsb2JhbCAmIHN1YnNjcmliZXIgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZmejoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZyYW5rZXJGYWNlWlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGVzIGZyb20gRkZaXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGJ0dHY6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJCZXR0ZXJUVFZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlcyBmcm9tIEJUVFZcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgRW1vdGVzOiB7XHJcbiAgICAgICAgICAgIGRvd25sb2FkaW5nOiBcIkRvd25sb2FkaW5nIGVtb3RlcyBpbiB0aGUgYmFja2dyb3VuZCBkbyBub3QgcmVsb2FkLlwiLFxyXG4gICAgICAgICAgICBkb3dubG9hZGVkOiBcIkFsbCBlbW90ZXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWQuXCIsXHJcbiAgICAgICAgICAgIGNsZWFyRW1vdGVzOiBcIkNsZWFyIEVtb3RlIERhdGFcIixcclxuICAgICAgICAgICAgZmF2b3JpdGVBY3Rpb246IFwiRmF2b3JpdGUhXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIEN1c3RvbUNTUzoge1xyXG4gICAgICAgICAgICBjb25maXJtYXRpb25UZXh0OiBcIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0byB5b3VyIEN1c3RvbSBDU1MuIENsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCBsb3NlIGFsbCB0aG9zZSBjaGFuZ2VzLlwiLFxyXG4gICAgICAgICAgICB1cGRhdGU6IFwiVXBkYXRlXCIsXHJcbiAgICAgICAgICAgIHNhdmU6IFwiU2F2ZVwiLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiBcIk9wZW4gaW4gU3lzdGVtIEVkaXRvclwiLFxyXG4gICAgICAgICAgICBvcGVuRGV0YWNoZWQ6IFwiRGV0YWNoIFdpbmRvd1wiLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogXCJFZGl0b3IgU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgZWRpdG9yVGl0bGU6IFwiQ3VzdG9tIENTUyBFZGl0b3JcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgUHVibGljU2VydmVyczoge1xyXG4gICAgICAgICAgICBidXR0b246IFwicHVibGljXCIsXHJcbiAgICAgICAgICAgIGpvaW46IFwiSm9pblwiLFxyXG4gICAgICAgICAgICBqb2luaW5nOiBcIkpvaW5pbmdcIixcclxuICAgICAgICAgICAgam9pbmVkOiBcIkpvaW5lZFwiLFxyXG4gICAgICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcclxuICAgICAgICAgICAgbG9hZE1vcmU6IFwiTG9hZCBNb3JlXCIsXHJcbiAgICAgICAgICAgIG5vdENvbm5lY3RlZDogXCJOb3QgY29ubmVjdGVkIHRvIERpc2NvcmRTZXJ2ZXJzLmNvbSFcIixcclxuICAgICAgICAgICAgc2VhcmNoOiBcIlNlYXJjaFwiLFxyXG4gICAgICAgICAgICBjb25uZWN0OiBcIkNvbm5lY3RcIixcclxuICAgICAgICAgICAgcmVjb25uZWN0OiBcIlJlY29ubmVjdFwiLFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICAgICAgY29ubmVjdGlvbjogXCJDb25uZWN0ZWQgYXM6IHt7dXNlcm5hbWV9fSN7e2Rpc2NyaW1pbmF0b3J9fVwiLFxyXG4gICAgICAgICAgICByZXN1bHRzOiBcIlNob3dpbmcge3tzdGFydH19LXt7ZW5kfX0gb2Yge3t0b3RhbH19IHJlc3VsdHMgaW4ge3tjYXRlZ29yeX19XCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcImZvciB7e3F1ZXJ5fX1cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgTW9kYWxzOiB7XHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogXCJBcmUgWW91IFN1cmU/XCIsXHJcbiAgICAgICAgICAgIG9rYXk6IFwiT2theVwiLFxyXG4gICAgICAgICAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgICAgIG5hbWU6IFwiTmFtZVwiLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBcIk1lc3NhZ2VcIixcclxuICAgICAgICAgICAgZXJyb3I6IFwiRXJyb3JcIixcclxuICAgICAgICAgICAgYWRkb25FcnJvcnM6IFwiQWRkb24gRXJyb3JzXCJcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXM6IHtcclxuICAgICAgICBDb2xsZWN0aW9uczoge1xyXG4gICAgICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBanVzdGVzXCIsXHJcbiAgICAgICAgICAgICAgICBhZGRvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1vc3RyYXIgRXJyb3JlcyBkZSBBZGRvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n en: {\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n }\n },\n developer: {\n name: \"Developer Settings\",\n developerMode: {\n name: \"Developer Mode\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes once a week to stay up to date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitch: {\n name: \"Twitch\",\n note: \"Show Twitch global & subscriber emotes\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Emotes: {\n downloading: \"Downloading emotes in the background do not reload.\",\n downloaded: \"All emotes successfully downloaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmClose: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\"\n }\n },\n es: {\n Collections: {\n settings: {\n name: \"Ajustes\",\n addons: {\n addonErrors: {\n name: \"Mostrar Errores de Addons\"\n }\n }\n }\n }\n },\n sv: {\n Panels: {\n plugins: \"Tillägg\",\n themes: \"Teman\",\n customcss: \"Egen CSS\"\n },\n Collections: {\n settings: {\n name: \"Inställningar\",\n general: {\n name: \"Generellt\",\n emotes: {\n name: \"Emotessystem\",\n note: \"Aktiverar BD's emotessystem\"\n },\n publicServers: {\n name: \"Publika Servrar\",\n note: \"Visa knappen för publika servrar\"\n },\n voiceDisconnect: {\n name: \"Lämna Röst\",\n note: \"Lämna röstsamtal när Discord stängs ner\"\n },\n twentyFourHour: {\n name: \"24-Timmars Tidsstämpel\",\n note: \"Visar 24-timmars tidsstämplar istället för AM/PM\"\n },\n classNormalizer: {\n name: \"Normalisera Klasser\",\n note: \"Lägger till statiska klasser för att underlätta teman (ex. lägger till .da-channels på .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Visa Toasts\",\n note: \"Visar en liten notification för viktig information\"\n }\n },\n appearance: {\n name: \"Utseende\",\n voiceMode: {\n name: \"Röstläge\",\n note: \"Gömmer allt förutom röstchatt\"\n },\n minimalMode: {\n name: \"Minimalt Läge\",\n note: \"Gömmer och förminskar komponenter\"\n },\n hideChannels: {\n name: \"Göm Kanaler\",\n note: \"Gömmer kanaler när minimalt läge är aktiverat\"\n },\n darkMode: {\n name: \"Mörkt Läge\",\n note: \"Gör vissa komponenter mörka\"\n },\n coloredText: {\n name: \"Färgad Text\",\n note: \"Gör att text får samma färg som rollfärgen\"\n }\n },\n addons: {\n name: \"Tilläggshanterare\",\n addonErrors: {\n name: \"Visa tilläggsfel\",\n note: \"Visar en modal med tillägg- och temafel\"\n },\n autoScroll: {\n name: \"Skrolla till inställningar Scroll To Settings\",\n note: \"Skrollar automatisks till ett tilläggs inställningar när knappen är tryckt (endast om inställningarna är utanför vy)\"\n },\n autoReload: {\n name: \"Automatisk Laddning\",\n note: \"Laddar automatisk in, om och ur tillägg och teman\"\n }\n },\n customcss: {\n name: \"Egen CSS\",\n customcss: {\n name: \"Egen CSS\",\n note: \"Aktiverar \\\"Egen CSS\\\"-fliken\"\n },\n liveUpdate: {\n name: \"Uppdatera Direkt\",\n note: \"Uppdaterar css allteftersom du skriver\"\n },\n startDetached: {\n name: \"Starta Frånkopplad\",\n note: \"Öppnar CSS redigeraren i ett separat fönster när \\\"Egen CSS\\\"-fliken klickas\"\n },\n nativeOpen: {\n name: \"Öppna I Standardredigerare\",\n note: \"Öppnar CSS filen i operativsystemets standardredigerare när \\\"Egen CSS\\\"-fliken klickas\"\n }\n },\n developer: {\n name: \"Utvecklarinställningar\",\n developerMode: {\n name: \"Utvecklarläge\",\n note: \"Gör det möjligt att aktivera avlusare med F8\"\n },\n copySelector: {\n name: \"Kopiera Selektor\",\n note: \"Lägger till valet \\\"Kopiera Selektor\\\" i kontext menyn när utvecklarläge är aktiverat\"\n }\n },\n window: {\n name: \"Fönsterinställningar\",\n transparency: {\n name: \"Aktivera Genomskinlighet\",\n note: \"Gör att huvudfönstret blir genomskinligt (kräver omstart)\"\n },\n frame: {\n name: \"Fönsterram\",\n note: \"Lägger till operativsystemets standard fönsterram runt huvudfönstret\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"Generellt\",\n download: {\n name: \"Ladda Ner Emotes\",\n note: \"Ladda ner emotes en gång i veckan för att hålla sig uppdaterad\"\n },\n emoteMenu: {\n name: \"Emote Meny\",\n note: \"Visa Twitch/Favorit emotes i emote meny\"\n },\n hideEmojiMenu: {\n name: \"Gömmer Emoji Meny\",\n note: \"Gömmer Discord's emoji meny när emote meny är aktiverad\"\n },\n autoCaps: {\n name: \"Automatiskt Stor Bokstav I Emotes\",\n note: \"Gör automatiskt stor bokstav i emote kommandon\"\n },\n showNames: {\n name: \"Visa namn\",\n note: \"Visa namn när musen hålls över en emote\"\n },\n modifiers: {\n name: \"Visa Emote Modifierare\",\n note: \"Aktivera emote modifierare (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animera När Musen Hålls Över\",\n note: \"Animera endast emote midiferare när musen hålls över emoten\"\n }\n },\n categories: {\n name: \"Kategorier\",\n twitch: {\n name: \"Twitch\",\n note: \"Visa Twitch global & prenumerant emotes\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"Visa emotes från FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Visa emotes från BTTV\"\n }\n }\n }\n },\n Emotes: {\n downloading: \"Laddar ner emotes i backgrunden, ladda inte om\",\n downloaded: \"Alla emotes laddades ner utan problem.\",\n clearEmotes: \"Rensa Emote Data\",\n favoriteAction: \"Favorit!\"\n },\n CustomCSS: {\n confirmationText: \"Du har osparade ändringar av egna CSS:en. Alla ändringar kommer försvinna om du stänger det här fönstret\",\n update: \"Uppdatera\",\n save: \"Spara\",\n openNative: \"Öppna I Standardredigerare\",\n openDetached: \"Koppla Loss Fönster\",\n settings: \"Inställningar för redigerare\",\n editorTitle: \"Egen CSS Redigerare\"\n },\n PublicServers: {\n button: \"Publik\",\n join: \"Gå med\",\n joining: \"Går med\",\n joined: \"Gick med\",\n loading: \"Laddar\",\n loadMore: \"ladda mer\",\n notConnected: \"Ingen anslutning till DiscordServers.com!\",\n search: \"Sök\",\n connect: \"Anslut\",\n reconnect: \"Återanslut\",\n categories: \"Kategorier\",\n connection: \"Ansluten som: {{username}}#{{discriminator}}\",\n results: \"Visar {{start}}-{{end}} av {{total}} resultat i {{category}}\",\n query: \"för {{query}}\"\n },\n Modals: {\n confirmClose: \"Är du säker?\",\n okay: \"Okej\",\n cancel: \"Avbryt\",\n name: \"Namn\",\n message: \"Meddelande\",\n error: \"Fel\",\n addonErrors: \"Tilläggsfel\"\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbImVuIiwiUGFuZWxzIiwicGx1Z2lucyIsInRoZW1lcyIsImN1c3RvbWNzcyIsIkNvbGxlY3Rpb25zIiwic2V0dGluZ3MiLCJuYW1lIiwiZ2VuZXJhbCIsImVtb3RlcyIsIm5vdGUiLCJwdWJsaWNTZXJ2ZXJzIiwidm9pY2VEaXNjb25uZWN0IiwidHdlbnR5Rm91ckhvdXIiLCJjbGFzc05vcm1hbGl6ZXIiLCJzaG93VG9hc3RzIiwiYXBwZWFyYW5jZSIsInZvaWNlTW9kZSIsIm1pbmltYWxNb2RlIiwiaGlkZUNoYW5uZWxzIiwiZGFya01vZGUiLCJjb2xvcmVkVGV4dCIsImFkZG9ucyIsImFkZG9uRXJyb3JzIiwiYXV0b1Njcm9sbCIsImF1dG9SZWxvYWQiLCJsaXZlVXBkYXRlIiwic3RhcnREZXRhY2hlZCIsIm5hdGl2ZU9wZW4iLCJkZXZlbG9wZXIiLCJkZXZlbG9wZXJNb2RlIiwiY29weVNlbGVjdG9yIiwid2luZG93IiwidHJhbnNwYXJlbmN5IiwiZnJhbWUiLCJkb3dubG9hZCIsImVtb3RlTWVudSIsImhpZGVFbW9qaU1lbnUiLCJhdXRvQ2FwcyIsInNob3dOYW1lcyIsIm1vZGlmaWVycyIsImFuaW1hdGVPbkhvdmVyIiwiY2F0ZWdvcmllcyIsInR3aXRjaCIsImZmeiIsImJ0dHYiLCJFbW90ZXMiLCJkb3dubG9hZGluZyIsImRvd25sb2FkZWQiLCJjbGVhckVtb3RlcyIsImZhdm9yaXRlQWN0aW9uIiwiQ3VzdG9tQ1NTIiwiY29uZmlybWF0aW9uVGV4dCIsInVwZGF0ZSIsInNhdmUiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwiZWRpdG9yVGl0bGUiLCJQdWJsaWNTZXJ2ZXJzIiwiYnV0dG9uIiwiam9pbiIsImpvaW5pbmciLCJqb2luZWQiLCJsb2FkaW5nIiwibG9hZE1vcmUiLCJub3RDb25uZWN0ZWQiLCJzZWFyY2giLCJjb25uZWN0IiwicmVjb25uZWN0IiwiY29ubmVjdGlvbiIsInJlc3VsdHMiLCJxdWVyeSIsIk1vZGFscyIsImNvbmZpcm1DbG9zZSIsIm9rYXkiLCJjYW5jZWwiLCJtZXNzYWdlIiwiZXJyb3IiLCJlcyIsInN2Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLElBQUUsRUFBRTtBQUNBQyxVQUFNLEVBQUU7QUFDSkMsYUFBTyxFQUFFLFNBREw7QUFFSkMsWUFBTSxFQUFFLFFBRko7QUFHSkMsZUFBUyxFQUFFO0FBSFAsS0FEUjtBQU1BQyxlQUFXLEVBQUU7QUFDVEMsY0FBUSxFQUFFO0FBQ05DLFlBQUksRUFBRSxVQURBO0FBRU5DLGVBQU8sRUFBRTtBQUNMRCxjQUFJLEVBQUUsU0FERDtBQUVMRSxnQkFBTSxFQUFFO0FBQ0pGLGdCQUFJLEVBQUUsY0FERjtBQUVKRyxnQkFBSSxFQUFFO0FBRkYsV0FGSDtBQU1MQyx1QkFBYSxFQUFFO0FBQ1hKLGdCQUFJLEVBQUUsZ0JBREs7QUFFWEcsZ0JBQUksRUFBRTtBQUZLLFdBTlY7QUFVTEUseUJBQWUsRUFBRTtBQUNiTCxnQkFBSSxFQUFFLGtCQURPO0FBRWJHLGdCQUFJLEVBQUU7QUFGTyxXQVZaO0FBY0xHLHdCQUFjLEVBQUU7QUFDWk4sZ0JBQUksRUFBRSxvQkFETTtBQUVaRyxnQkFBSSxFQUFFO0FBRk0sV0FkWDtBQWtCTEkseUJBQWUsRUFBRTtBQUNiUCxnQkFBSSxFQUFFLG1CQURPO0FBRWJHLGdCQUFJLEVBQUU7QUFGTyxXQWxCWjtBQXNCTEssb0JBQVUsRUFBRTtBQUNSUixnQkFBSSxFQUFFLGFBREU7QUFFUkcsZ0JBQUksRUFBRTtBQUZFO0FBdEJQLFNBRkg7QUE2Qk5NLGtCQUFVLEVBQUU7QUFDUlQsY0FBSSxFQUFFLFlBREU7QUFFUlUsbUJBQVMsRUFBRTtBQUNQVixnQkFBSSxFQUFFLFlBREM7QUFFUEcsZ0JBQUksRUFBRTtBQUZDLFdBRkg7QUFNUlEscUJBQVcsRUFBRTtBQUNUWCxnQkFBSSxFQUFFLGNBREc7QUFFVEcsZ0JBQUksRUFBRTtBQUZHLFdBTkw7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QyxVQUFNLEVBQUU7QUFDSkMsa0JBQVksRUFBRSxjQURWO0FBRUpDLFVBQUksRUFBRSxNQUZGO0FBR0pDLFlBQU0sRUFBRSxRQUhKO0FBSUpwRSxVQUFJLEVBQUUsTUFKRjtBQUtKcUUsYUFBTyxFQUFFLFlBTEw7QUFNSkMsV0FBSyxFQUFFLEtBTkg7QUFPSnRELGlCQUFXLEVBQUU7QUFQVDtBQXJNUjtBQTVOTyxDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAgIGVuOiB7XHJcbiAgICAgICAgUGFuZWxzOiB7XHJcbiAgICAgICAgICAgIHBsdWdpbnM6IFwiUGx1Z2luc1wiLFxyXG4gICAgICAgICAgICB0aGVtZXM6IFwiVGhlbWVzXCIsXHJcbiAgICAgICAgICAgIGN1c3RvbWNzczogXCJDdXN0b20gQ1NTXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIENvbGxlY3Rpb25zOiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgU3lzdGVtXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyBCRCdzIGVtb3RlIHN5c3RlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUHVibGljIFNlcnZlcnNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNwbGF5IHB1YmxpYyBzZXJ2ZXJzIGJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB2b2ljZURpc2Nvbm5lY3Q6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBEaXNjb25uZWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzY29ubmVjdCBmcm9tIHZvaWNlIHNlcnZlciB3aGVuIGNsb3NpbmcgRGlzY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIjI0LUhvdXIgVGltZXN0YW1wc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGNoYW5uZWxzIHdoZW4gaW4gbWluaW1hbCBtb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTm9ybWFsaXplcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk5vcm1hbGl6ZSBDbGFzc2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBzdGFibGUgY2xhc3NlcyB0byBlbGVtZW50cyB0byBoZWxwIHRoZW1lcy4gKGUuZy4gYWRkcyAuZGEtY2hhbm5lbHMgdG8gLmNoYW5uZWxzLUllMmw2QSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RvYXN0czoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgVG9hc3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvd3MgYSBzbWFsbCBub3RpZmljYXRpb24gZm9yIGltcG9ydGFudCBpbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFwcGVhcmFuY2VcIixcclxuICAgICAgICAgICAgICAgICAgICB2b2ljZU1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgZXZlcnl0aGluZyB0aGF0IGlzbid0IHZvaWNlIGNoYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbWluaW1hbE1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJNaW5pbWFsIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlIGVsZW1lbnRzIGFuZCByZWR1Y2UgdGhlIHNpemUgb2YgZWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZUNoYW5uZWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBDaGFubmVsc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGNoYW5uZWxzIHdoZW4gaW4gbWluaW1hbCBtb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGFyayBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTWFrZSBjZXJ0YWluIGVsZW1lbnRzIGRhcmsgYnkgZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcmVkVGV4dDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkNvbG9yZWQgVGV4dFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgdGV4dCBjb2xvdXIgdGhlIHNhbWUgYXMgcm9sZSBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQWRkb24gTWFuYWdlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZG9uRXJyb3JzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBBZGRvbiBFcnJvcnNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIG1vZGFsIHdpdGggcGx1Z2luL3RoZW1lIGVycm9yc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2Nyb2xsIFRvIFNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQXV0by1zY3JvbGxzIHRvIGEgcGx1Z2luJ3Mgc2V0dGluZ3Mgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQgKG9ubHkgaWYgb3V0IG9mIHZpZXcpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9SZWxvYWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBdXRvbWF0aWMgTG9hZGluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9tYXRpY2FsbHkgbG9hZHMsIHJlbG9hZHMsIGFuZCB1bmxvYWRzIHBsdWdpbnMgYW5kIHRoZW1lc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkN1c3RvbSBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlcyB0aGUgQ3VzdG9tIENTUyB0YWJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbGl2ZVVwZGF0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkxpdmUgVXBkYXRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVXBkYXRlcyB0aGUgY3NzIGFzIHlvdSB0eXBlXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0RGV0YWNoZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTdGFydCBEZXRhY2hlZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB0aGUgZWRpdG9yIGluIGEgc2VwYXJhdGUgd2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBuYXRpdmVPcGVuOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiT3BlbiBpbiBOYXRpdmUgRWRpdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQ2xpY2tpbmcgdGhlIEN1c3RvbSBDU1MgdGFiIG9wZW5zIHlvdXIgY3VzdG9tIGNzcyBpbiB5b3VyIG5hdGl2ZSBlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkZXZlbG9wZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRldmVsb3BlciBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRldmVsb3Blck1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEZXZlbG9wZXIgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFsbG93cyBhY3RpdmF0aW5nIGRlYnVnZ2VyIHdoZW4gcHJlc3NpbmcgRjhcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29weVNlbGVjdG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ29weSBTZWxlY3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgYSBcXFwiQ29weSBTZWxlY3RvclxcXCIgb3B0aW9uIHRvIGNvbnRleHQgbWVudXMgd2hlbiBkZXZlbG9wZXIgbW9kZSBpcyBhY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB3aW5kb3c6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIldpbmRvdyBQcmVmZXJlbmNlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVuYWJsZSBUcmFuc3BhcmVuY3lcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIHRoZSBtYWluIHdpbmRvdyB0byBiZSBzZWUtdGhyb3VnaCAocmVxdWlyZXMgcmVzdGFydClcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZnJhbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJXaW5kb3cgRnJhbWVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIHRoZSBuYXRpdmUgb3Mgd2luZG93IGZyYW1lIHRvIHRoZSBtYWluIHdpbmRvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbW90ZXM6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEb3dubG9hZCBFbW90ZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEb3dubG9hZCBlbW90ZXMgb25jZSBhIHdlZWsgdG8gc3RheSB1cCB0byBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVtb3RlTWVudToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIE1lbnVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaC9GYXZvdXJpdGUgZW1vdGVzIGluIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZUVtb2ppTWVudToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkhpZGUgRW1vamkgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIERpc2NvcmQncyBlbW9qaSBtZW51IHdoZW4gdXNpbmcgZW1vdGUgbWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvQ2Fwczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIEF1dG9jYXBpdGFsaXphdGlvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9jYXBpdGFsaXplIGVtb3RlIGNvbW1hbmRzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dOYW1lczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgTmFtZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlIG5hbWVzIG9uIGhvdmVyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgRW1vdGUgTW9kaWZpZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRW5hYmxlIGVtb3RlIG1vZHMgKGZsaXAsIHNwaW4sIHB1bHNlLCBzcGluMiwgc3BpbjMsIDFzcGluLCAyc3BpbiwgM3NwaW4sIHRyLCBibCwgYnIsIHNoYWtlLCBzaGFrZTIsIHNoYWtlMywgZmxhcClcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZU9uSG92ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBbmltYXRlIE9uIEhvdmVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiT25seSBhbmltYXRlIHRoZSBlbW90ZSBtb2RpZmllcnMgb24gaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDYXRlZ29yaWVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdHdpdGNoOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVHdpdGNoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBUd2l0Y2ggZ2xvYmFsICYgc3Vic2NyaWJlciBlbW90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmZ6OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRnJhbmtlckZhY2VaXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBGRlpcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYnR0djoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkJldHRlclRUVlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGVzIGZyb20gQlRUVlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBFbW90ZXM6IHtcclxuICAgICAgICAgICAgZG93bmxvYWRpbmc6IFwiRG93bmxvYWRpbmcgZW1vdGVzIGluIHRoZSBiYWNrZ3JvdW5kIGRvIG5vdCByZWxvYWQuXCIsXHJcbiAgICAgICAgICAgIGRvd25sb2FkZWQ6IFwiQWxsIGVtb3RlcyBzdWNjZXNzZnVsbHkgZG93bmxvYWRlZC5cIixcclxuICAgICAgICAgICAgY2xlYXJFbW90ZXM6IFwiQ2xlYXIgRW1vdGUgRGF0YVwiLFxyXG4gICAgICAgICAgICBmYXZvcml0ZUFjdGlvbjogXCJGYXZvcml0ZSFcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ3VzdG9tQ1NTOiB7XHJcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFwiWW91IGhhdmUgdW5zYXZlZCBjaGFuZ2VzIHRvIHlvdXIgQ3VzdG9tIENTUy4gQ2xvc2luZyB0aGlzIHdpbmRvdyB3aWxsIGxvc2UgYWxsIHRob3NlIGNoYW5nZXMuXCIsXHJcbiAgICAgICAgICAgIHVwZGF0ZTogXCJVcGRhdGVcIixcclxuICAgICAgICAgICAgc2F2ZTogXCJTYXZlXCIsXHJcbiAgICAgICAgICAgIG9wZW5OYXRpdmU6IFwiT3BlbiBpbiBTeXN0ZW0gRWRpdG9yXCIsXHJcbiAgICAgICAgICAgIG9wZW5EZXRhY2hlZDogXCJEZXRhY2ggV2luZG93XCIsXHJcbiAgICAgICAgICAgIHNldHRpbmdzOiBcIkVkaXRvciBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICBlZGl0b3JUaXRsZTogXCJDdXN0b20gQ1NTIEVkaXRvclwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBQdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogXCJwdWJsaWNcIixcclxuICAgICAgICAgICAgam9pbjogXCJKb2luXCIsXHJcbiAgICAgICAgICAgIGpvaW5pbmc6IFwiSm9pbmluZ1wiLFxyXG4gICAgICAgICAgICBqb2luZWQ6IFwiSm9pbmVkXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IFwiTG9hZGluZ1wiLFxyXG4gICAgICAgICAgICBsb2FkTW9yZTogXCJMb2FkIE1vcmVcIixcclxuICAgICAgICAgICAgbm90Q29ubmVjdGVkOiBcIk5vdCBjb25uZWN0ZWQgdG8gRGlzY29yZFNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgICAgICBzZWFyY2g6IFwiU2VhcmNoXCIsXHJcbiAgICAgICAgICAgIGNvbm5lY3Q6IFwiQ29ubmVjdFwiLFxyXG4gICAgICAgICAgICByZWNvbm5lY3Q6IFwiUmVjb25uZWN0XCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgICAgICBjb25uZWN0aW9uOiBcIkNvbm5lY3RlZCBhczoge3t1c2VybmFtZX19I3t7ZGlzY3JpbWluYXRvcn19XCIsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IFwiU2hvd2luZyB7e3N0YXJ0fX0te3tlbmR9fSBvZiB7e3RvdGFsfX0gcmVzdWx0cyBpbiB7e2NhdGVnb3J5fX1cIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiZm9yIHt7cXVlcnl9fVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBNb2RhbHM6IHtcclxuICAgICAgICAgICAgY29uZmlybUNsb3NlOiBcIkFyZSBZb3UgU3VyZT9cIixcclxuICAgICAgICAgICAgb2theTogXCJPa2F5XCIsXHJcbiAgICAgICAgICAgIGNhbmNlbDogXCJDYW5jZWxcIixcclxuICAgICAgICAgICAgbmFtZTogXCJOYW1lXCIsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVzc2FnZVwiLFxyXG4gICAgICAgICAgICBlcnJvcjogXCJFcnJvclwiLFxyXG4gICAgICAgICAgICBhZGRvbkVycm9yczogXCJBZGRvbiBFcnJvcnNcIlxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlczoge1xyXG4gICAgICAgIENvbGxlY3Rpb25zOiB7XHJcbiAgICAgICAgICAgIHNldHRpbmdzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkFqdXN0ZXNcIixcclxuICAgICAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGFkZG9uRXJyb3JzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTW9zdHJhciBFcnJvcmVzIGRlIEFkZG9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIHN2OiB7XHJcbiAgICAgICAgUGFuZWxzOiB7XHJcbiAgICAgICAgICAgIHBsdWdpbnM6IFwiVGlsbMOkZ2dcIixcclxuICAgICAgICAgICAgdGhlbWVzOiBcIlRlbWFuXCIsXHJcbiAgICAgICAgICAgIGN1c3RvbWNzczogXCJFZ2VuIENTU1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDb2xsZWN0aW9uczoge1xyXG4gICAgICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJJbnN0w6RsbG5pbmdhclwiLFxyXG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJlbGx0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGVzc3lzdGVtXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWt0aXZlcmFyIEJEJ3MgZW1vdGVzc3lzdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJQdWJsaWthIFNlcnZyYXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJWaXNhIGtuYXBwZW4gZsO2ciBwdWJsaWthIHNlcnZyYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTMOkbW5hIFLDtnN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTMOkbW5hIHLDtnN0c2FtdGFsIG7DpHIgRGlzY29yZCBzdMOkbmdzIG5lclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIjI0LVRpbW1hcnMgVGlkc3N0w6RtcGVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYXIgMjQtdGltbWFycyB0aWRzc3TDpG1wbGFyIGlzdMOkbGxldCBmw7ZyIEFNL1BNXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTm9ybWFsaXplcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk5vcm1hbGlzZXJhIEtsYXNzZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJMw6RnZ2VyIHRpbGwgc3RhdGlza2Ega2xhc3NlciBmw7ZyIGF0dCB1bmRlcmzDpHR0YSB0ZW1hbiAoZXguIGzDpGdnZXIgdGlsbCAuZGEtY2hhbm5lbHMgcMOlIC5jaGFubmVscy1JZTJsNkEpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWaXNhIFRvYXN0c1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlZpc2FyIGVuIGxpdGVuIG5vdGlmaWNhdGlvbiBmw7ZyIHZpa3RpZyBpbmZvcm1hdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlV0c2VlbmRlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdm9pY2VNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUsO2c3Rsw6RnZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkfDtm1tZXIgYWxsdCBmw7ZydXRvbSByw7ZzdGNoYXR0XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbmltYWxNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTWluaW1hbHQgTMOkZ2VcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJHw7ZtbWVyIG9jaCBmw7ZybWluc2thciBrb21wb25lbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoaWRlQ2hhbm5lbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJHw7ZtIEthbmFsZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJHw7ZtbWVyIGthbmFsZXIgbsOkciBtaW5pbWFsdCBsw6RnZSDDpHIgYWt0aXZlcmF0XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTcO2cmt0IEzDpGdlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2ciB2aXNzYSBrb21wb25lbnRlciBtw7Zya2FcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3JlZFRleHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGw6RyZ2FkIFRleHRcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJHw7ZyIGF0dCB0ZXh0IGbDpXIgc2FtbWEgZsOkcmcgc29tIHJvbGxmw6RyZ2VuXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYWRkb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUaWxsw6RnZ3NoYW50ZXJhcmVcIixcclxuICAgICAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZpc2EgdGlsbMOkZ2dzZmVsXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYXIgZW4gbW9kYWwgbWVkIHRpbGzDpGdnLSBvY2ggdGVtYWZlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2tyb2xsYSB0aWxsIGluc3TDpGxsbmluZ2FyIFNjcm9sbCBUbyBTZXR0aW5nc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNrcm9sbGFyIGF1dG9tYXRpc2tzIHRpbGwgZXR0IHRpbGzDpGdncyBpbnN0w6RsbG5pbmdhciBuw6RyIGtuYXBwZW4gw6RyIHRyeWNrdCAoZW5kYXN0IG9tIGluc3TDpGxsbmluZ2FybmEgw6RyIHV0YW5mw7ZyIHZ5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvUmVsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGlzayBMYWRkbmluZ1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkxhZGRhciBhdXRvbWF0aXNrIGluLCBvbSBvY2ggdXIgdGlsbMOkZ2cgb2NoIHRlbWFuXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRWdlbiBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFZ2VuIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFrdGl2ZXJhciBcXFwiRWdlbiBDU1NcXFwiLWZsaWtlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBsaXZlVXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVXBwZGF0ZXJhIERpcmVrdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlVwcGRhdGVyYXIgY3NzIGFsbHRlZnRlcnNvbSBkdSBza3JpdmVyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0RGV0YWNoZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTdGFydGEgRnLDpW5rb3BwbGFkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiw5ZwcG5hciBDU1MgcmVkaWdlcmFyZW4gaSBldHQgc2VwYXJhdCBmw7Zuc3RlciBuw6RyIFxcXCJFZ2VuIENTU1xcXCItZmxpa2VuIGtsaWNrYXNcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZU9wZW46IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLDlnBwbmEgSSBTdGFuZGFyZHJlZGlnZXJhcmVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLDlnBwbmFyIENTUyBmaWxlbiBpIG9wZXJhdGl2c3lzdGVtZXRzIHN0YW5kYXJkcmVkaWdlcmFyZSBuw6RyIFxcXCJFZ2VuIENTU1xcXCItZmxpa2VuIGtsaWNrYXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkZXZlbG9wZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlV0dmVja2xhcmluc3TDpGxsbmluZ2FyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVyTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlV0dmVja2xhcmzDpGdlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2ciBkZXQgbcO2amxpZ3QgYXR0IGFrdGl2ZXJhIGF2bHVzYXJlIG1lZCBGOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb3B5U2VsZWN0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJLb3BpZXJhIFNlbGVrdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTMOkZ2dlciB0aWxsIHZhbGV0IFxcXCJLb3BpZXJhIFNlbGVrdG9yXFxcIiBpIGtvbnRleHQgbWVueW4gbsOkciB1dHZlY2tsYXJsw6RnZSDDpHIgYWt0aXZlcmF0XCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgd2luZG93OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGw7Zuc3Rlcmluc3TDpGxsbmluZ2FyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbmN5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQWt0aXZlcmEgR2Vub21za2lubGlnaGV0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2ciBhdHQgaHV2dWRmw7Zuc3RyZXQgYmxpciBnZW5vbXNraW5saWd0IChrcsOkdmVyIG9tc3RhcnQpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZyYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRsO2bnN0ZXJyYW1cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJMw6RnZ2VyIHRpbGwgb3BlcmF0aXZzeXN0ZW1ldHMgc3RhbmRhcmQgZsO2bnN0ZXJyYW0gcnVudCBodXZ1ZGbDtm5zdHJldFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbW90ZXM6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICBnZW5lcmFsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJHZW5lcmVsbHRcIixcclxuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkxhZGRhIE5lciBFbW90ZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJMYWRkYSBuZXIgZW1vdGVzIGVuIGfDpW5nIGkgdmVja2FuIGbDtnIgYXR0IGjDpWxsYSBzaWcgdXBwZGF0ZXJhZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlbW90ZU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBNZW55XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYSBUd2l0Y2gvRmF2b3JpdCBlbW90ZXMgaSBlbW90ZSBtZW55XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGhpZGVFbW9qaU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJHw7ZtbWVyIEVtb2ppIE1lbnlcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJHw7ZtbWVyIERpc2NvcmQncyBlbW9qaSBtZW55IG7DpHIgZW1vdGUgbWVueSDDpHIgYWt0aXZlcmFkXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9DYXBzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGlza3QgU3RvciBCb2tzdGF2IEkgRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2ciBhdXRvbWF0aXNrdCBzdG9yIGJva3N0YXYgaSBlbW90ZSBrb21tYW5kb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd05hbWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVmlzYSBuYW1uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYSBuYW1uIG7DpHIgbXVzZW4gaMOlbGxzIMO2dmVyIGVuIGVtb3RlXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZpc2EgRW1vdGUgTW9kaWZpZXJhcmVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBa3RpdmVyYSBlbW90ZSBtb2RpZmllcmFyZSAoZmxpcCwgc3BpbiwgcHVsc2UsIHNwaW4yLCBzcGluMywgMXNwaW4sIDJzcGluLCAzc3BpbiwgdHIsIGJsLCBiciwgc2hha2UsIHNoYWtlMiwgc2hha2UzLCBmbGFwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlT25Ib3Zlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFuaW1lcmEgTsOkciBNdXNlbiBIw6VsbHMgw5Z2ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBbmltZXJhIGVuZGFzdCBlbW90ZSBtaWRpZmVyYXJlIG7DpHIgbXVzZW4gaMOlbGxzIMO2dmVyIGVtb3RlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkthdGVnb3JpZXJcIixcclxuICAgICAgICAgICAgICAgICAgICB0d2l0Y2g6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUd2l0Y2hcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJWaXNhIFR3aXRjaCBnbG9iYWwgJiBwcmVudW1lcmFudCBlbW90ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmZ6OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRnJhbmtlckZhY2VaXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYSBlbW90ZXMgZnLDpW4gRkZaXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGJ0dHY6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJCZXR0ZXJUVFZcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJWaXNhIGVtb3RlcyBmcsOlbiBCVFRWXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIEVtb3Rlczoge1xyXG4gICAgICAgICAgICBkb3dubG9hZGluZzogXCJMYWRkYXIgbmVyIGVtb3RlcyBpIGJhY2tncnVuZGVuLCBsYWRkYSBpbnRlIG9tXCIsXHJcbiAgICAgICAgICAgIGRvd25sb2FkZWQ6IFwiQWxsYSBlbW90ZXMgbGFkZGFkZXMgbmVyIHV0YW4gcHJvYmxlbS5cIixcclxuICAgICAgICAgICAgY2xlYXJFbW90ZXM6IFwiUmVuc2EgRW1vdGUgRGF0YVwiLFxyXG4gICAgICAgICAgICBmYXZvcml0ZUFjdGlvbjogXCJGYXZvcml0IVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDdXN0b21DU1M6IHtcclxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogXCJEdSBoYXIgb3NwYXJhZGUgw6RuZHJpbmdhciBhdiBlZ25hIENTUzplbi4gQWxsYSDDpG5kcmluZ2FyIGtvbW1lciBmw7Zyc3Zpbm5hIG9tIGR1IHN0w6RuZ2VyIGRldCBow6RyIGbDtm5zdHJldFwiLFxyXG4gICAgICAgICAgICB1cGRhdGU6IFwiVXBwZGF0ZXJhXCIsXHJcbiAgICAgICAgICAgIHNhdmU6IFwiU3BhcmFcIixcclxuICAgICAgICAgICAgb3Blbk5hdGl2ZTogXCLDlnBwbmEgSSBTdGFuZGFyZHJlZGlnZXJhcmVcIixcclxuICAgICAgICAgICAgb3BlbkRldGFjaGVkOiBcIktvcHBsYSBMb3NzIEbDtm5zdGVyXCIsXHJcbiAgICAgICAgICAgIHNldHRpbmdzOiBcIkluc3TDpGxsbmluZ2FyIGbDtnIgcmVkaWdlcmFyZVwiLFxyXG4gICAgICAgICAgICBlZGl0b3JUaXRsZTogXCJFZ2VuIENTUyBSZWRpZ2VyYXJlXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIFB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgYnV0dG9uOiBcIlB1Ymxpa1wiLFxyXG4gICAgICAgICAgICBqb2luOiBcIkfDpSBtZWRcIixcclxuICAgICAgICAgICAgam9pbmluZzogXCJHw6VyIG1lZFwiLFxyXG4gICAgICAgICAgICBqb2luZWQ6IFwiR2ljayBtZWRcIixcclxuICAgICAgICAgICAgbG9hZGluZzogXCJMYWRkYXJcIixcclxuICAgICAgICAgICAgbG9hZE1vcmU6IFwibGFkZGEgbWVyXCIsXHJcbiAgICAgICAgICAgIG5vdENvbm5lY3RlZDogXCJJbmdlbiBhbnNsdXRuaW5nIHRpbGwgRGlzY29yZFNlcnZlcnMuY29tIVwiLFxyXG4gICAgICAgICAgICBzZWFyY2g6IFwiU8O2a1wiLFxyXG4gICAgICAgICAgICBjb25uZWN0OiBcIkFuc2x1dFwiLFxyXG4gICAgICAgICAgICByZWNvbm5lY3Q6IFwiw4V0ZXJhbnNsdXRcIixcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogXCJLYXRlZ29yaWVyXCIsXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb246IFwiQW5zbHV0ZW4gc29tOiB7e3VzZXJuYW1lfX0je3tkaXNjcmltaW5hdG9yfX1cIixcclxuICAgICAgICAgICAgcmVzdWx0czogXCJWaXNhciB7e3N0YXJ0fX0te3tlbmR9fSBhdiB7e3RvdGFsfX0gcmVzdWx0YXQgaSB7e2NhdGVnb3J5fX1cIixcclxuICAgICAgICAgICAgcXVlcnk6IFwiZsO2ciB7e3F1ZXJ5fX1cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgTW9kYWxzOiB7XHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogXCLDhHIgZHUgc8Oka2VyP1wiLFxyXG4gICAgICAgICAgICBva2F5OiBcIk9rZWpcIixcclxuICAgICAgICAgICAgY2FuY2VsOiBcIkF2YnJ5dFwiLFxyXG4gICAgICAgICAgICBuYW1lOiBcIk5hbW5cIixcclxuICAgICAgICAgICAgbWVzc2FnZTogXCJNZWRkZWxhbmRlXCIsXHJcbiAgICAgICAgICAgIGVycm9yOiBcIkZlbFwiLFxyXG4gICAgICAgICAgICBhZGRvbkVycm9yczogXCJUaWxsw6RnZ3NmZWxcIlxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); /***/ }), @@ -503,7 +503,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"].React;\nconst components = {};\nconst unknownComponents = new Set();\nconst listeners = new Set();\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactComponents {\n get named() {\n return components;\n }\n\n get unknown() {\n return unknownComponents;\n }\n\n get listeners() {\n return listeners;\n }\n\n initialize() {\n this.walkReactTree(document.querySelector(\"#app-mount\")._reactRootContainer._internalRoot.current);\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].after(\"ReactComponents\", React, \"createElement\", (_, __, returnValue) => {\n this.walkRenderTree(returnValue);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n }\n\n get(name, filter) {\n return new Promise(resolve => {\n if (components[name]) return resolve(components[name]);\n listeners.add({\n name,\n filter,\n resolve\n });\n if (!filter) return;\n\n for (const component of unknownComponents) {\n if (!filter(component)) continue;\n component.displayName = name;\n unknownComponents.delete(component);\n this.addNamedComponent(component);\n }\n });\n }\n\n addNamedComponent(component) {\n const name = component.displayName;\n\n if (!components[name]) {\n components[name] = component;\n\n for (const listener of listeners) {\n if (listener.name !== name) continue;\n listener.resolve(component);\n listeners.delete(listener);\n }\n }\n }\n\n addUnknownComponent(component) {\n if (unknownComponents.has(component)) return;\n\n for (const listener of listeners) {\n if (!listener.filter || !listener.filter(component)) continue;\n component.displayName = listener.name;\n this.addNamedComponent(component);\n }\n\n if (!component.displayName) unknownComponents.add(component);\n }\n\n addComponent(component) {\n if (component.displayName) return this.addNamedComponent(component);\n return this.addUnknownComponent(component);\n }\n\n walkRenderTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (Array.isArray(tree)) for (const value of tree) this.walkRenderTree(value);\n if (tree.props && tree.props.children) this.walkRenderTree(tree.props.children);\n }\n\n walkReactTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (tree.child) this.walkReactTree(tree.child);\n if (tree.sibling) this.walkReactTree(tree.sibling);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcmVhY3Rjb21wb25lbnRzLmpzPzY5NTQiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsImNvbXBvbmVudHMiLCJ1bmtub3duQ29tcG9uZW50cyIsIlNldCIsImxpc3RlbmVycyIsIlJlYWN0Q29tcG9uZW50cyIsIm5hbWVkIiwidW5rbm93biIsImluaXRpYWxpemUiLCJ3YWxrUmVhY3RUcmVlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiX3JlYWN0Um9vdENvbnRhaW5lciIsIl9pbnRlcm5hbFJvb3QiLCJjdXJyZW50IiwiUGF0Y2hlciIsImFmdGVyIiwiXyIsIl9fIiwicmV0dXJuVmFsdWUiLCJ3YWxrUmVuZGVyVHJlZSIsImluc3RlYWQiLCJDb21wb25lbnQiLCJwcm90b3R5cGUiLCJ0aGlzT2JqZWN0IiwiYWRkQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJnZXQiLCJuYW1lIiwiZmlsdGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhZGQiLCJjb21wb25lbnQiLCJkaXNwbGF5TmFtZSIsImRlbGV0ZSIsImFkZE5hbWVkQ29tcG9uZW50IiwibGlzdGVuZXIiLCJhZGRVbmtub3duQ29tcG9uZW50IiwiaGFzIiwidHJlZSIsInR5cGUiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWx1ZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjaGlsZCIsInNpYmxpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQSxNQUFNQSxLQUFLLEdBQUdDLHVEQUFjLENBQUNELEtBQTdCO0FBQ0EsTUFBTUUsVUFBVSxHQUFHLEVBQW5CO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsSUFBSUMsR0FBSixFQUExQjtBQUNBLE1BQU1DLFNBQVMsR0FBRyxJQUFJRCxHQUFKLEVBQWxCO0FBRWUsbUVBQUksTUFBTUUsZUFBTixDQUFzQjtBQUVyQyxNQUFJQyxLQUFKLEdBQVk7QUFBQyxXQUFPTCxVQUFQO0FBQW1COztBQUNoQyxNQUFJTSxPQUFKLEdBQWM7QUFBQyxXQUFPTCxpQkFBUDtBQUEwQjs7QUFDekMsTUFBSUUsU0FBSixHQUFnQjtBQUFDLFdBQU9BLFNBQVA7QUFBa0I7O0FBRW5DSSxZQUFVLEdBQUc7QUFDVCxTQUFLQyxhQUFMLENBQW1CQyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsWUFBdkIsRUFBcUNDLG1CQUFyQyxDQUF5REMsYUFBekQsQ0FBdUVDLE9BQTFGO0FBQ0FDLG9EQUFPLENBQUNDLEtBQVIsQ0FBYyxpQkFBZCxFQUFpQ2pCLEtBQWpDLEVBQXdDLGVBQXhDLEVBQXlELENBQUNrQixDQUFELEVBQUlDLEVBQUosRUFBUUMsV0FBUixLQUF3QjtBQUM3RSxXQUFLQyxjQUFMLENBQW9CRCxXQUFwQjtBQUNILEtBRkQ7QUFHQUosb0RBQU8sQ0FBQ00sT0FBUixDQUFnQixpQkFBaEIsRUFBbUN0QixLQUFLLENBQUN1QixTQUFOLENBQWdCQyxTQUFuRCxFQUE4RCxvQkFBOUQsRUFBcUZDLFVBQUQsSUFBZ0I7QUFDaEcsV0FBS0MsWUFBTCxDQUFrQkQsVUFBVSxDQUFDRSxXQUE3QjtBQUNILEtBRkQ7QUFHQVgsb0RBQU8sQ0FBQ00sT0FBUixDQUFnQixpQkFBaEIsRUFBbUN0QixLQUFLLENBQUN1QixTQUFOLENBQWdCQyxTQUFuRCxFQUE4RCwyQkFBOUQsRUFBNEZDLFVBQUQsSUFBZ0I7QUFDdkcsV0FBS0MsWUFBTCxDQUFrQkQsVUFBVSxDQUFDRSxXQUE3QjtBQUNILEtBRkQ7QUFHSDs7QUFFREMsS0FBRyxDQUFDQyxJQUFELEVBQU9DLE1BQVAsRUFBZTtBQUNkLFdBQU8sSUFBSUMsT0FBSixDQUFZQyxPQUFPLElBQUk7QUFDMUIsVUFBSTlCLFVBQVUsQ0FBQzJCLElBQUQsQ0FBZCxFQUFzQixPQUFPRyxPQUFPLENBQUM5QixVQUFVLENBQUMyQixJQUFELENBQVgsQ0FBZDtBQUN0QnhCLGVBQVMsQ0FBQzRCLEdBQVYsQ0FBYztBQUFDSixZQUFEO0FBQU9DLGNBQVA7QUFBZUU7QUFBZixPQUFkO0FBQ0EsVUFBSSxDQUFDRixNQUFMLEVBQWE7O0FBQ2IsV0FBSyxNQUFNSSxTQUFYLElBQXdCL0IsaUJBQXhCLEVBQTJDO0FBQ3ZDLFlBQUksQ0FBQzJCLE1BQU0sQ0FBQ0ksU0FBRCxDQUFYLEVBQXdCO0FBQ3hCQSxpQkFBUyxDQUFDQyxXQUFWLEdBQXdCTixJQUF4QjtBQUNBMUIseUJBQWlCLENBQUNpQyxNQUFsQixDQUF5QkYsU0FBekI7QUFDQSxhQUFLRyxpQkFBTCxDQUF1QkgsU0FBdkI7QUFDSDtBQUNKLEtBVk0sQ0FBUDtBQVdIOztBQUVERyxtQkFBaUIsQ0FBQ0gsU0FBRCxFQUFZO0FBQ3pCLFVBQU1MLElBQUksR0FBR0ssU0FBUyxDQUFDQyxXQUF2Qjs7QUFDQSxRQUFJLENBQUNqQyxVQUFVLENBQUMyQixJQUFELENBQWYsRUFBdUI7QUFDbkIzQixnQkFBVSxDQUFDMkIsSUFBRCxDQUFWLEdBQW1CSyxTQUFuQjs7QUFDQSxXQUFLLE1BQU1JLFFBQVgsSUFBdUJqQyxTQUF2QixFQUFrQztBQUM5QixZQUFJaUMsUUFBUSxDQUFDVCxJQUFULEtBQWtCQSxJQUF0QixFQUE0QjtBQUM1QlMsZ0JBQVEsQ0FBQ04sT0FBVCxDQUFpQkUsU0FBakI7QUFDQTdCLGlCQUFTLENBQUMrQixNQUFWLENBQWlCRSxRQUFqQjtBQUNIO0FBQ0o7QUFDSjs7QUFFREMscUJBQW1CLENBQUNMLFNBQUQsRUFBWTtBQUMzQixRQUFJL0IsaUJBQWlCLENBQUNxQyxHQUFsQixDQUFzQk4sU0FBdEIsQ0FBSixFQUFzQzs7QUFDdEMsU0FBSyxNQUFNSSxRQUFYLElBQXVCakMsU0FBdkIsRUFBa0M7QUFDOUIsVUFBSSxDQUFDaUMsUUFBUSxDQUFDUixNQUFWLElBQW9CLENBQUNRLFFBQVEsQ0FBQ1IsTUFBVCxDQUFnQkksU0FBaEIsQ0FBekIsRUFBcUQ7QUFDckRBLGVBQVMsQ0FBQ0MsV0FBVixHQUF3QkcsUUFBUSxDQUFDVCxJQUFqQztBQUNBLFdBQUtRLGlCQUFMLENBQXVCSCxTQUF2QjtBQUNIOztBQUNELFFBQUksQ0FBQ0EsU0FBUyxDQUFDQyxXQUFmLEVBQTRCaEMsaUJBQWlCLENBQUM4QixHQUFsQixDQUFzQkMsU0FBdEI7QUFDL0I7O0FBRURSLGNBQVksQ0FBQ1EsU0FBRCxFQUFZO0FBQ3BCLFFBQUlBLFNBQVMsQ0FBQ0MsV0FBZCxFQUEyQixPQUFPLEtBQUtFLGlCQUFMLENBQXVCSCxTQUF2QixDQUFQO0FBQzNCLFdBQU8sS0FBS0ssbUJBQUwsQ0FBeUJMLFNBQXpCLENBQVA7QUFDSDs7QUFFRGIsZ0JBQWMsQ0FBQ29CLElBQUQsRUFBTztBQUNqQixRQUFJLENBQUNBLElBQUwsRUFBVztBQUNYLFFBQUksT0FBT0EsSUFBSSxDQUFDQyxJQUFaLElBQXFCLFVBQXpCLEVBQXFDLEtBQUtoQixZQUFMLENBQWtCZSxJQUFJLENBQUNDLElBQXZCO0FBQ3JDLFFBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjSCxJQUFkLENBQUosRUFBeUIsS0FBSyxNQUFNSSxLQUFYLElBQW9CSixJQUFwQixFQUEwQixLQUFLcEIsY0FBTCxDQUFvQndCLEtBQXBCO0FBQ25ELFFBQUlKLElBQUksQ0FBQ0ssS0FBTCxJQUFjTCxJQUFJLENBQUNLLEtBQUwsQ0FBV0MsUUFBN0IsRUFBdUMsS0FBSzFCLGNBQUwsQ0FBb0JvQixJQUFJLENBQUNLLEtBQUwsQ0FBV0MsUUFBL0I7QUFDMUM7O0FBRURyQyxlQUFhLENBQUMrQixJQUFELEVBQU87QUFDaEIsUUFBSSxDQUFDQSxJQUFMLEVBQVc7QUFDWCxRQUFJLE9BQU9BLElBQUksQ0FBQ0MsSUFBWixJQUFxQixVQUF6QixFQUFxQyxLQUFLaEIsWUFBTCxDQUFrQmUsSUFBSSxDQUFDQyxJQUF2QjtBQUNyQyxRQUFJRCxJQUFJLENBQUNPLEtBQVQsRUFBZ0IsS0FBS3RDLGFBQUwsQ0FBbUIrQixJQUFJLENBQUNPLEtBQXhCO0FBQ2hCLFFBQUlQLElBQUksQ0FBQ1EsT0FBVCxFQUFrQixLQUFLdkMsYUFBTCxDQUFtQitCLElBQUksQ0FBQ1EsT0FBeEI7QUFDckI7O0FBeEVvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcmVhY3Rjb21wb25lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmNvbnN0IGNvbXBvbmVudHMgPSB7fTtcclxuY29uc3QgdW5rbm93bkNvbXBvbmVudHMgPSBuZXcgU2V0KCk7XHJcbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBSZWFjdENvbXBvbmVudHMge1xyXG5cclxuICAgIGdldCBuYW1lZCgpIHtyZXR1cm4gY29tcG9uZW50czt9XHJcbiAgICBnZXQgdW5rbm93bigpIHtyZXR1cm4gdW5rbm93bkNvbXBvbmVudHM7fVxyXG4gICAgZ2V0IGxpc3RlbmVycygpIHtyZXR1cm4gbGlzdGVuZXJzO31cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIHRoaXMud2Fsa1JlYWN0VHJlZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI2FwcC1tb3VudFwiKS5fcmVhY3RSb290Q29udGFpbmVyLl9pbnRlcm5hbFJvb3QuY3VycmVudCk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdCwgXCJjcmVhdGVFbGVtZW50XCIsIChfLCBfXywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy53YWxrUmVuZGVyVHJlZShyZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgUGF0Y2hlci5pbnN0ZWFkKFwiUmVhY3RDb21wb25lbnRzXCIsIFJlYWN0LkNvbXBvbmVudC5wcm90b3R5cGUsIFwiY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5Db21wb25lbnQucHJvdG90eXBlLCBcIlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnRcIiwgKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5hZGRDb21wb25lbnQodGhpc09iamVjdC5jb25zdHJ1Y3Rvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0KG5hbWUsIGZpbHRlcikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudHNbbmFtZV0pIHJldHVybiByZXNvbHZlKGNvbXBvbmVudHNbbmFtZV0pO1xyXG4gICAgICAgICAgICBsaXN0ZW5lcnMuYWRkKHtuYW1lLCBmaWx0ZXIsIHJlc29sdmV9KTtcclxuICAgICAgICAgICAgaWYgKCFmaWx0ZXIpIHJldHVybjtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgdW5rbm93bkNvbXBvbmVudHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsdGVyKGNvbXBvbmVudCkpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LmRpc3BsYXlOYW1lID0gbmFtZTtcclxuICAgICAgICAgICAgICAgIHVua25vd25Db21wb25lbnRzLmRlbGV0ZShjb21wb25lbnQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkTmFtZWRDb21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IGNvbXBvbmVudC5kaXNwbGF5TmFtZTtcclxuICAgICAgICBpZiAoIWNvbXBvbmVudHNbbmFtZV0pIHtcclxuICAgICAgICAgICAgY29tcG9uZW50c1tuYW1lXSA9IGNvbXBvbmVudDtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lci5uYW1lICE9PSBuYW1lKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGxpc3RlbmVyLnJlc29sdmUoY29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZFVua25vd25Db21wb25lbnQoY29tcG9uZW50KSB7XHJcbiAgICAgICAgaWYgKHVua25vd25Db21wb25lbnRzLmhhcyhjb21wb25lbnQpKSByZXR1cm47XHJcbiAgICAgICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiBsaXN0ZW5lcnMpIHtcclxuICAgICAgICAgICAgaWYgKCFsaXN0ZW5lci5maWx0ZXIgfHwgIWxpc3RlbmVyLmZpbHRlcihjb21wb25lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29tcG9uZW50LmRpc3BsYXlOYW1lID0gbGlzdGVuZXIubmFtZTtcclxuICAgICAgICAgICAgdGhpcy5hZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWNvbXBvbmVudC5kaXNwbGF5TmFtZSkgdW5rbm93bkNvbXBvbmVudHMuYWRkKGNvbXBvbmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgICAgIGlmIChjb21wb25lbnQuZGlzcGxheU5hbWUpIHJldHVybiB0aGlzLmFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkVW5rbm93bkNvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHdhbGtSZW5kZXJUcmVlKHRyZWUpIHtcclxuICAgICAgICBpZiAoIXRyZWUpIHJldHVybjtcclxuICAgICAgICBpZiAodHlwZW9mKHRyZWUudHlwZSkgPT0gXCJmdW5jdGlvblwiKSB0aGlzLmFkZENvbXBvbmVudCh0cmVlLnR5cGUpO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyZWUpKSBmb3IgKGNvbnN0IHZhbHVlIG9mIHRyZWUpIHRoaXMud2Fsa1JlbmRlclRyZWUodmFsdWUpO1xyXG4gICAgICAgIGlmICh0cmVlLnByb3BzICYmIHRyZWUucHJvcHMuY2hpbGRyZW4pIHRoaXMud2Fsa1JlbmRlclRyZWUodHJlZS5wcm9wcy5jaGlsZHJlbik7XHJcbiAgICB9XHJcblxyXG4gICAgd2Fsa1JlYWN0VHJlZSh0cmVlKSB7XHJcbiAgICAgICAgaWYgKCF0cmVlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHR5cGVvZih0cmVlLnR5cGUpID09IFwiZnVuY3Rpb25cIikgdGhpcy5hZGRDb21wb25lbnQodHJlZS50eXBlKTtcclxuICAgICAgICBpZiAodHJlZS5jaGlsZCkgdGhpcy53YWxrUmVhY3RUcmVlKHRyZWUuY2hpbGQpO1xyXG4gICAgICAgIGlmICh0cmVlLnNpYmxpbmcpIHRoaXMud2Fsa1JlYWN0VHJlZSh0cmVlLnNpYmxpbmcpO1xyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/reactcomponents.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"].React;\nconst components = {};\nconst unknownComponents = new Set();\nconst listeners = new Set();\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class ReactComponents {\n get named() {\n return components;\n }\n\n get unknown() {\n return unknownComponents;\n }\n\n get listeners() {\n return listeners;\n }\n\n constructor() {\n this.walkReactTree(document.querySelector(\"#app-mount\")._reactRootContainer._internalRoot.current);\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].after(\"ReactComponents\", React, \"createElement\", (_, __, returnValue) => {\n this.walkRenderTree(returnValue);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.Component.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.PureComponent.prototype, \"componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n _patcher__WEBPACK_IMPORTED_MODULE_1__[\"default\"].instead(\"ReactComponents\", React.PureComponent.prototype, \"UNSAFE_componentWillMount\", thisObject => {\n this.addComponent(thisObject.constructor);\n });\n }\n\n initialize() {}\n\n get(name, filter) {\n return new Promise(resolve => {\n if (components[name]) return resolve(components[name]);\n listeners.add({\n name,\n filter,\n resolve\n });\n if (!filter) return;\n\n for (const component of unknownComponents) {\n if (!filter(component)) continue;\n component.displayName = name;\n unknownComponents.delete(component);\n this.addNamedComponent(component);\n }\n });\n }\n\n addNamedComponent(component) {\n const name = component.displayName;\n\n if (!components[name]) {\n components[name] = component;\n\n for (const listener of listeners) {\n if (listener.name !== name) continue;\n listener.resolve(component);\n listeners.delete(listener);\n }\n }\n }\n\n addUnknownComponent(component) {\n if (unknownComponents.has(component)) return;\n\n for (const listener of listeners) {\n if (!listener.filter || !listener.filter(component)) continue;\n component.displayName = listener.name;\n this.addNamedComponent(component);\n }\n\n if (!component.displayName) unknownComponents.add(component);\n }\n\n addComponent(component) {\n if (component.displayName) return this.addNamedComponent(component);\n return this.addUnknownComponent(component);\n }\n\n walkRenderTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (Array.isArray(tree)) for (const value of tree) this.walkRenderTree(value);\n if (tree.props && tree.props.children) this.walkRenderTree(tree.props.children);\n }\n\n walkReactTree(tree) {\n if (!tree) return;\n if (typeof tree.type == \"function\") this.addComponent(tree.type);\n if (tree.child) this.walkReactTree(tree.child);\n if (tree.sibling) this.walkReactTree(tree.sibling);\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvcmVhY3Rjb21wb25lbnRzLmpzPzY5NTQiXSwibmFtZXMiOlsiUmVhY3QiLCJEaXNjb3JkTW9kdWxlcyIsImNvbXBvbmVudHMiLCJ1bmtub3duQ29tcG9uZW50cyIsIlNldCIsImxpc3RlbmVycyIsIlJlYWN0Q29tcG9uZW50cyIsIm5hbWVkIiwidW5rbm93biIsImNvbnN0cnVjdG9yIiwid2Fsa1JlYWN0VHJlZSIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsIl9yZWFjdFJvb3RDb250YWluZXIiLCJfaW50ZXJuYWxSb290IiwiY3VycmVudCIsIlBhdGNoZXIiLCJhZnRlciIsIl8iLCJfXyIsInJldHVyblZhbHVlIiwid2Fsa1JlbmRlclRyZWUiLCJpbnN0ZWFkIiwiQ29tcG9uZW50IiwicHJvdG90eXBlIiwidGhpc09iamVjdCIsImFkZENvbXBvbmVudCIsIlB1cmVDb21wb25lbnQiLCJpbml0aWFsaXplIiwiZ2V0IiwibmFtZSIsImZpbHRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWRkIiwiY29tcG9uZW50IiwiZGlzcGxheU5hbWUiLCJkZWxldGUiLCJhZGROYW1lZENvbXBvbmVudCIsImxpc3RlbmVyIiwiYWRkVW5rbm93bkNvbXBvbmVudCIsImhhcyIsInRyZWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwidmFsdWUiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2hpbGQiLCJzaWJsaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUEsTUFBTUEsS0FBSyxHQUFHQyx1REFBYyxDQUFDRCxLQUE3QjtBQUNBLE1BQU1FLFVBQVUsR0FBRyxFQUFuQjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHLElBQUlDLEdBQUosRUFBMUI7QUFDQSxNQUFNQyxTQUFTLEdBQUcsSUFBSUQsR0FBSixFQUFsQjtBQUVlLG1FQUFJLE1BQU1FLGVBQU4sQ0FBc0I7QUFFckMsTUFBSUMsS0FB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Y0FBTCxDQUFvQnFCLElBQUksQ0FBQ0ssS0FBTCxDQUFXQyxRQUEvQjtBQUMxQzs7QUFFRHRDLGVBQWEsQ0FBQ2dDLElBQUQsRUFBTztBQUNoQixRQUFJLENBQUNBLElBQUwsRUFBVztBQUNYLFFBQUksT0FBT0EsSUFBSSxDQUFDQyxJQUFaLElBQXFCLFVBQXpCLEVBQXFDLEtBQUtqQixZQUFMLENBQWtCZ0IsSUFBSSxDQUFDQyxJQUF2QjtBQUNyQyxRQUFJRCxJQUFJLENBQUNPLEtBQVQsRUFBZ0IsS0FBS3ZDLGFBQUwsQ0FBbUJnQyxJQUFJLENBQUNPLEtBQXhCO0FBQ2hCLFFBQUlQLElBQUksQ0FBQ1EsT0FBVCxFQUFrQixLQUFLeEMsYUFBTCxDQUFtQmdDLElBQUksQ0FBQ1EsT0FBeEI7QUFDckI7O0FBakZvQyxDQUExQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvcmVhY3Rjb21wb25lbnRzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBQYXRjaGVyIGZyb20gXCIuL3BhdGNoZXJcIjtcclxuXHJcbmNvbnN0IFJlYWN0ID0gRGlzY29yZE1vZHVsZXMuUmVhY3Q7XHJcbmNvbnN0IGNvbXBvbmVudHMgPSB7fTtcclxuY29uc3QgdW5rbm93bkNvbXBvbmVudHMgPSBuZXcgU2V0KCk7XHJcbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBSZWFjdENvbXBvbmVudHMge1xyXG5cclxuICAgIGdldCBuYW1lZCgpIHtyZXR1cm4gY29tcG9uZW50czt9XHJcbiAgICBnZXQgdW5rbm93bigpIHtyZXR1cm4gdW5rbm93bkNvbXBvbmVudHM7fVxyXG4gICAgZ2V0IGxpc3RlbmVycygpIHtyZXR1cm4gbGlzdGVuZXJzO31cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLndhbGtSZWFjdFRyZWUoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIiNhcHAtbW91bnRcIikuX3JlYWN0Um9vdENvbnRhaW5lci5faW50ZXJuYWxSb290LmN1cnJlbnQpO1xyXG4gICAgICAgIFBhdGNoZXIuYWZ0ZXIoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QsIFwiY3JlYXRlRWxlbWVudFwiLCAoXywgX18sIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMud2Fsa1JlbmRlclRyZWUocmV0dXJuVmFsdWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5Db21wb25lbnQucHJvdG90eXBlLCBcImNvbXBvbmVudFdpbGxNb3VudFwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmFkZENvbXBvbmVudCh0aGlzT2JqZWN0LmNvbnN0cnVjdG9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuQ29tcG9uZW50LnByb3RvdHlwZSwgXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBQYXRjaGVyLmluc3RlYWQoXCJSZWFjdENvbXBvbmVudHNcIiwgUmVhY3QuUHVyZUNvbXBvbmVudC5wcm90b3R5cGUsIFwiY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFBhdGNoZXIuaW5zdGVhZChcIlJlYWN0Q29tcG9uZW50c1wiLCBSZWFjdC5QdXJlQ29tcG9uZW50LnByb3RvdHlwZSwgXCJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50XCIsICh0aGlzT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkQ29tcG9uZW50KHRoaXNPYmplY3QuY29uc3RydWN0b3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7fVxyXG5cclxuICAgIGdldChuYW1lLCBmaWx0ZXIpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb21wb25lbnRzW25hbWVdKSByZXR1cm4gcmVzb2x2ZShjb21wb25lbnRzW25hbWVdKTtcclxuICAgICAgICAgICAgbGlzdGVuZXJzLmFkZCh7bmFtZSwgZmlsdGVyLCByZXNvbHZlfSk7XHJcbiAgICAgICAgICAgIGlmICghZmlsdGVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIHVua25vd25Db21wb25lbnRzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWZpbHRlcihjb21wb25lbnQpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1bmtub3duQ29tcG9uZW50cy5kZWxldGUoY29tcG9uZW50KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWRkTmFtZWRDb21wb25lbnQoY29tcG9uZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE5hbWVkQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgICAgIGNvbnN0IG5hbWUgPSBjb21wb25lbnQuZGlzcGxheU5hbWU7XHJcbiAgICAgICAgaWYgKCFjb21wb25lbnRzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHNbbmFtZV0gPSBjb21wb25lbnQ7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobGlzdGVuZXIubmFtZSAhPT0gbmFtZSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBsaXN0ZW5lci5yZXNvbHZlKGNvbXBvbmVudCk7XHJcbiAgICAgICAgICAgICAgICBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRVbmtub3duQ29tcG9uZW50KGNvbXBvbmVudCkge1xyXG4gICAgICAgIGlmICh1bmtub3duQ29tcG9uZW50cy5oYXMoY29tcG9uZW50KSkgcmV0dXJuO1xyXG4gICAgICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgbGlzdGVuZXJzKSB7XHJcbiAgICAgICAgICAgIGlmICghbGlzdGVuZXIuZmlsdGVyIHx8ICFsaXN0ZW5lci5maWx0ZXIoY29tcG9uZW50KSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGxpc3RlbmVyLm5hbWU7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkTmFtZWRDb21wb25lbnQoY29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFjb21wb25lbnQuZGlzcGxheU5hbWUpIHVua25vd25Db21wb25lbnRzLmFkZChjb21wb25lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZENvbXBvbmVudChjb21wb25lbnQpIHtcclxuICAgICAgICBpZiAoY29tcG9uZW50LmRpc3BsYXlOYW1lKSByZXR1cm4gdGhpcy5hZGROYW1lZENvbXBvbmVudChjb21wb25lbnQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFVua25vd25Db21wb25lbnQoY29tcG9uZW50KTtcclxuICAgIH1cclxuXHJcbiAgICB3YWxrUmVuZGVyVHJlZSh0cmVlKSB7XHJcbiAgICAgICAgaWYgKCF0cmVlKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHR5cGVvZih0cmVlLnR5cGUpID09IFwiZnVuY3Rpb25cIikgdGhpcy5hZGRDb21wb25lbnQodHJlZS50eXBlKTtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlKSkgZm9yIChjb25zdCB2YWx1ZSBvZiB0cmVlKSB0aGlzLndhbGtSZW5kZXJUcmVlKHZhbHVlKTtcclxuICAgICAgICBpZiAodHJlZS5wcm9wcyAmJiB0cmVlLnByb3BzLmNoaWxkcmVuKSB0aGlzLndhbGtSZW5kZXJUcmVlKHRyZWUucHJvcHMuY2hpbGRyZW4pO1xyXG4gICAgfVxyXG5cclxuICAgIHdhbGtSZWFjdFRyZWUodHJlZSkge1xyXG4gICAgICAgIGlmICghdHJlZSkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0eXBlb2YodHJlZS50eXBlKSA9PSBcImZ1bmN0aW9uXCIpIHRoaXMuYWRkQ29tcG9uZW50KHRyZWUudHlwZSk7XHJcbiAgICAgICAgaWYgKHRyZWUuY2hpbGQpIHRoaXMud2Fsa1JlYWN0VHJlZSh0cmVlLmNoaWxkKTtcclxuICAgICAgICBpZiAodHJlZS5zaWJsaW5nKSB0aGlzLndhbGtSZWFjdFRyZWUodHJlZS5zaWJsaW5nKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/reactcomponents.js\n"); /***/ }), @@ -515,7 +515,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _dis /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsManager {\n constructor() {\n this.state = {};\n this.collections = [];\n this.panels = [];\n this.registerCollection(\"settings\", \"Settings\", data__WEBPACK_IMPORTED_MODULE_0__[\"SettingsConfig\"]);\n this.updateStrings = this.updateStrings.bind(this);\n }\n\n initialize() {\n this.loadSettings();\n this.updateStrings();\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"strings-updated\", this.updateStrings); // this.patchSections();\n }\n\n registerCollection(id, name, settings, button = null) {\n if (this.collections.find(c => c.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a collection with id \" + id);\n this.collections.push({\n type: \"collection\",\n id: id,\n name: name,\n settings: settings,\n button: button\n });\n this.setup();\n }\n\n removeCollection(id) {\n const location = this.collections.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.collections.splice(location, 1);\n } // TODO: Move this to SettingsRenderer and also add a registerContentPanel\n\n\n registerPanel(id, name, options) {\n if (this.panels.find(p => p.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a panel with id \" + id);\n const {\n element,\n onClick,\n order = 1\n } = options;\n const section = {\n id,\n order,\n label: name,\n section: name\n };\n if (onClick) section.clickListener = onClick;\n if (element) section.element = element instanceof _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.Component ? () => _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.createElement(element, {}) : typeof element == \"function\" ? element : () => element;\n this.panels.push(section);\n }\n\n removePanel(id) {\n const location = this.panels.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.panels.splice(location, 1);\n }\n\n getPath(path, collectionId = \"\", categoryId = \"\") {\n const collection = path.length == 3 ? path[0] : collectionId;\n const category = path.length == 3 ? path[1] : path.length == 2 ? path[0] : categoryId;\n const setting = path[path.length - 1];\n return {\n collection,\n category,\n setting\n };\n }\n\n setup() {\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const categories = this.collections[c].settings;\n if (!this.state[collection.id]) this.state[collection.id] = {};\n\n for (let cc = 0; cc < categories.length; cc++) {\n const category = categories[cc];\n\n if (category.type != \"category\") {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = category.value;\n } else {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = {};\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n if (!this.state[collection.id][category.id].hasOwnProperty(setting.id)) this.state[collection.id][category.id][setting.id] = setting.value;\n\n if (setting.enableWith) {\n const path = this.getPath(setting.enableWith.split(\".\"), collection.id, category.id);\n if (setting.hasOwnProperty(\"disabled\")) continue;\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n return !this.state[path.collection][path.category][path.setting];\n }\n });\n }\n\n if (setting.disableWith) {\n const path = this.getPath(setting.disableWith.split(\".\"), collection.id, category.id);\n if (setting.hasOwnProperty(\"disabled\")) continue;\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n return this.state[path.collection][path.category][path.setting];\n }\n });\n }\n }\n }\n }\n }\n }\n\n saveSettings() {\n _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setData(\"settings\", this.state);\n }\n\n loadSettings() {\n const previousState = _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getData(\"settings\");\n if (!previousState) return this.saveSettings();\n\n for (const collection in this.state) {\n if (!previousState[collection]) Object.assign(previousState, {\n [collection]: this.state[collection]\n });\n\n for (const category in this.state[collection]) {\n if (!previousState[collection][category]) Object.assign(previousState[collection], {\n [category]: this.state[collection][category]\n });\n\n for (const setting in this.state[collection][category]) {\n if (previousState[collection][category][setting] == undefined) continue;\n this.state[collection][category][setting] = previousState[collection][category][setting];\n }\n }\n }\n\n this.saveSettings(); // in case new things were added\n }\n\n onSettingChange(collection, category, id, value) {\n const before = this.collections.length + this.panels.length;\n this.state[collection][category][id] = value;\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].dispatch(\"setting-updated\", collection, category, id, value);\n const after = this.collections.length + this.panels.length;\n this.saveSettings();\n if (before != after) setTimeout(this.forceUpdate.bind(this), 50);\n }\n\n getSetting(collection, category, id) {\n if (arguments.length == 2) return this.collections[0].find(c => c.id == arguments[0]).settings.find(s => s.id == arguments[1]);\n return this.collections.find(c => c.id == collection).find(c => c.id == category).settings.find(s => s.id == id);\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n if (!this.state[collection] || !this.state[collection][category]) return false;\n return this.state[collection][category][id];\n }\n\n set(collection, category, id, value) {\n if (arguments.length == 3) {\n value = id;\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n return this.onSettingChange(collection, category, id, value);\n }\n\n on(collection, category, identifier, callback) {\n const handler = (col, cat, id, value) => {\n if (col !== collection || cat !== category || id !== identifier) return;\n callback(value);\n };\n\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"setting-updated\", handler);\n return () => {\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].off(\"setting-updated\", handler);\n };\n }\n\n updateStrings() {\n // Update settings collections\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const CS = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Collections[collection.id];\n if (!CS) continue;\n collection.name = CS.name || collection.name;\n const categories = this.collections[c].settings;\n\n for (let cat = 0; cat < categories.length; cat++) {\n const category = categories[cat];\n const CatStr = CS[category.id];\n if (!CatStr) continue;\n category.name = CatStr.name || category.name;\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n const SetStr = CatStr[setting.id];\n if (!SetStr) continue;\n setting.name = SetStr.name || setting.name;\n setting.note = SetStr.note || setting.note;\n }\n }\n } // Update panel labels\n\n\n for (let p = 0; p < this.panels.length; p++) {\n const panel = this.panels[p];\n const Str = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Panels[panel.id];\n panel.name = Str || panel.name;\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzP2IyZjkiXSwibmFtZXMiOlsiU2V0dGluZ3NNYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJzdGF0ZSIsImNvbGxlY3Rpb25zIiwicGFuZWxzIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiU2V0dGluZ3NDb25maWciLCJ1cGRhdGVTdHJpbmdzIiwiYmluZCIsImluaXRpYWxpemUiLCJsb2FkU2V0dGluZ3MiLCJFdmVudHMiLCJvbiIsImlkIiwibmFtZSIsInNldHRpbmdzIiwiYnV0dG9uIiwiZmluZCIsImMiLCJMb2dnZXIiLCJlcnJvciIsInB1c2giLCJ0eXBlIiwic2V0dXAiLCJyZW1vdmVDb2xsZWN0aW9uIiwibG9jYXRpb24iLCJmaW5kSW5kZXgiLCJzcGxpY2UiLCJyZWdpc3RlclBhbmVsIiwib3B0aW9ucyIsInAiLCJlbGVtZW50Iiwib25DbGljayIsIm9yZGVyIiwic2VjdGlvbiIsImxhYmVsIiwiY2xpY2tMaXN0ZW5lciIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwicmVtb3ZlUGFuZWwiLCJnZXRQYXRoIiwicGF0aCIsImNvbGxlY3Rpb25JZCIsImNhdGVnb3J5SWQiLCJjb2xsZWN0aW9uIiwibGVuZ3RoIiwiY2F0ZWdvcnkiLCJzZXR0aW5nIiwiY2F0ZWdvcmllcyIsImNjIiwiaGFzT3duUHJvcGVydHkiLCJ2YWx1ZSIsInMiLCJlbmFibGVXaXRoIiwic3BsaXQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImRpc2FibGVXaXRoIiwic2F2ZVNldHRpbmdzIiwiRGF0YVN0b3JlIiwic2V0RGF0YSIsInByZXZpb3VzU3RhdGUiLCJnZXREYXRhIiwiYXNzaWduIiwidW5kZWZpbmVkIiwib25TZXR0aW5nQ2hhbmdlIiwiYmVmb3JlIiwiZGlzcGF0Y2giLCJhZnRlciIsInNldFRpbWVvdXQiLCJmb3JjZVVwZGF0ZSIsImdldFNldHRpbmciLCJhcmd1bWVudHMiLCJzZXQiLCJpZGVudGlmaWVyIiwiY2FsbGJhY2siLCJoYW5kbGVyIiwiY29sIiwiY2F0Iiwib2ZmIiwiQ1MiLCJTdHJpbmdzIiwiQ29sbGVjdGlvbnMiLCJDYXRTdHIiLCJTZXRTdHIiLCJub3RlIiwicGFuZWwiLCJTdHIiLCJQYW5lbHMiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsZUFBTixDQUFzQjtBQUVyQ0MsYUFBVyxHQUFHO0FBQ1YsU0FBS0MsS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLEVBQW5CO0FBQ0EsU0FBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDQSxTQUFLQyxrQkFBTCxDQUF3QixVQUF4QixFQUFvQyxVQUFwQyxFQUFnREMsbURBQWhEO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQixLQUFLQSxhQUFMLENBQW1CQyxJQUFuQixDQUF3QixJQUF4QixDQUFyQjtBQUNIOztBQUVEQyxZQUFVLEdBQUc7QUFDVCxTQUFLQyxZQUFMO0FBQ0EsU0FBS0gsYUFBTDtBQUNBSSxvREFBTSxDQUFDQyxFQUFQLENBQVUsaUJBQVYsRUFBNkIsS0FBS0wsYUFBbEMsRUFIUyxDQUlUO0FBQ0g7O0FBRURGLG9CQUFrQixDQUFDUSxFQUFELEVBQUtDLElBQUwsRUFBV0MsUUFBWCxFQUFxQkMsTUFBTSxHQUFHLElBQTlCLEVBQW9DO0FBQ2xELFFBQUksS0FBS2IsV0FBTCxDQUFpQmMsSUFBakIsQ0FBc0JDLENBQUMsSUFBSUEsQ0FBQyxDQUFDTCxFQUFGLElBQVFBLEVBQW5DLENBQUosRUFBNEMsT0FBT00sK0NBQU0sQ0FBQ0MsS0FBUCxDQUFhLFVBQWIsRUFBeUIsdUNBQXVDUCxFQUFoRSxDQUFQO0FBQzVDLFNBQUtWLFdBQUwsQ0FBaUJrQixJQUFqQixDQUFzQjtBQUNsQkMsVUFBSSxFQUFFLFlBRFk7QUFFbEJU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QU0sQ0FBQ3pFLElBQVAsSUFBZW1DLE9BQU8sQ0FBQ25DLElBQXRDO0FBQ0FtQyxpQkFBTyxDQUFDdUMsSUFBUixHQUFlRCxNQUFNLENBQUNDLElBQVAsSUFBZXZDLE9BQU8sQ0FBQ3VDLElBQXRDO0FBQ0g7QUFDSjtBQUNKLEtBckJXLENBdUJaOzs7QUFDQSxTQUFLLElBQUkxRCxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHLEtBQUsxQixNQUFMLENBQVkyQyxNQUFoQyxFQUF3Q2pCLENBQUMsRUFBekMsRUFBNkM7QUFDekMsWUFBTTJELEtBQUssR0FBRyxLQUFLckYsTUFBTCxDQUFZMEIsQ0FBWixDQUFkO0FBQ0EsWUFBTTRELEdBQUcsR0FBR04sZ0RBQU8sQ0FBQ08sTUFBUixDQUFlRixLQUFLLENBQUM1RSxFQUFyQixDQUFaO0FBQ0E0RSxXQUFLLENBQUMzRSxJQUFOLEdBQWE0RSxHQUFHLElBQUlELEtBQUssQ0FBQzNFLElBQTFCO0FBQ0g7QUFDSjs7QUE3TG9DLENBQTFCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9zZXR0aW5nc21hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NldHRpbmdzQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL2VtaXR0ZXJcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBTZXR0aW5nc01hbmFnZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5wYW5lbHMgPSBbXTtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29sbGVjdGlvbihcInNldHRpbmdzXCIsIFwiU2V0dGluZ3NcIiwgU2V0dGluZ3NDb25maWcpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncyA9IHRoaXMudXBkYXRlU3RyaW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVN0cmluZ3MoKTtcclxuICAgICAgICBFdmVudHMub24oXCJzdHJpbmdzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVTdHJpbmdzKTtcclxuICAgICAgICAvLyB0aGlzLnBhdGNoU2VjdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlckNvbGxlY3Rpb24oaWQsIG5hbWUsIHNldHRpbmdzLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjb2xsZWN0aW9uXCIsXHJcbiAgICAgICAgICAgIGlkOiBpZCxcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgc2V0dGluZ3M6IHNldHRpbmdzLFxyXG4gICAgICAgICAgICBidXR0b246IGJ1dHRvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0dXAoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmNvbGxlY3Rpb25zLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5zcGxpY2UobG9jYXRpb24sIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBTZXR0aW5nc1JlbmRlcmVyIGFuZCBhbHNvIGFkZCBhIHJlZ2lzdGVyQ29udGVudFBhbmVsXHJcbiAgICByZWdpc3RlclBhbmVsKGlkLCBuYW1lLCBvcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFuZWxzLmZpbmQocCA9PiBwLmlkID09IGlkKSkgcmV0dXJuIExvZ2dlci5lcnJvcihcIlNldHRpbmdzXCIsIFwiQWxyZWFkeSBoYXZlIGEgcGFuZWwgd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICBjb25zdCB7ZWxlbWVudCwgb25DbGljaywgb3JkZXIgPSAxfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHtpZCwgb3JkZXIsIGxhYmVsOiBuYW1lLCBzZWN0aW9uOiBuYW1lfTtcclxuICAgICAgICBpZiAob25DbGljaykgc2VjdGlvbi5jbGlja0xpc3RlbmVyID0gb25DbGljaztcclxuICAgICAgICBpZiAoZWxlbWVudCkgc2VjdGlvbi5lbGVtZW50ID0gZWxlbWVudCBpbnN0YW5jZW9mIERpc2NvcmRNb2R1bGVzLlJlYWN0LkNvbXBvbmVudCA/ICgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCwge30pIDogdHlwZW9mKGVsZW1lbnQpID09IFwiZnVuY3Rpb25cIiA/IGVsZW1lbnQgOiAoKSA9PiBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnB1c2goc2VjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUGFuZWwoaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMucGFuZWxzLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5wYW5lbHMuc3BsaWNlKGxvY2F0aW9uLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYXRoKHBhdGgsIGNvbGxlY3Rpb25JZCA9IFwiXCIsIGNhdGVnb3J5SWQgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzBdIDogY29sbGVjdGlvbklkO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcGF0aC5sZW5ndGggPT0gMyA/IHBhdGhbMV0gOiBwYXRoLmxlbmd0aCA9PSAyID8gcGF0aFswXSA6IGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICByZXR1cm4ge2NvbGxlY3Rpb24sIGNhdGVnb3J5LCBzZXR0aW5nfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cCgpIHtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHRoaXMuY29sbGVjdGlvbnMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbnNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0pIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0gPSB7fTtcclxuICAgICAgICAgICAgZm9yIChsZXQgY2MgPSAwOyBjYyA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYysrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbY2NdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5LnR5cGUgIT0gXCJjYXRlZ29yeVwiKSB7aWYgKCF0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdLmhhc093blByb3BlcnR5KGNhdGVnb3J5LmlkKSkgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXVtjYXRlZ29yeS5pZF0gPSBjYXRlZ29yeS52YWx1ZTt9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0uaGFzT3duUHJvcGVydHkoY2F0ZWdvcnkuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgY2F0ZWdvcnkuc2V0dGluZ3MubGVuZ3RoOyBzKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdLmhhc093blByb3BlcnR5KHNldHRpbmcuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXVtzZXR0aW5nLmlkXSA9IHNldHRpbmcudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nLmVuYWJsZVdpdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGgoc2V0dGluZy5lbmFibGVXaXRoLnNwbGl0KFwiLlwiKSwgY29sbGVjdGlvbi5pZCwgY2F0ZWdvcnkuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcuaGFzT3duUHJvcGVydHkoXCJkaXNhYmxlZFwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZywgXCJkaXNhYmxlZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5zdGF0ZVtwYXRoLmNvbGxlY3Rpb25dW3BhdGguY2F0ZWdvcnldW3BhdGguc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nLmRpc2FibGVXaXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRQYXRoKHNldHRpbmcuZGlzYWJsZVdpdGguc3BsaXQoXCIuXCIpLCBjb2xsZWN0aW9uLmlkLCBjYXRlZ29yeS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVkXCIpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZXR0aW5nLCBcImRpc2FibGVkXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbcGF0aC5jb2xsZWN0aW9uXVtwYXRoLmNhdGVnb3J5XVtwYXRoLnNldHRpbmddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcInNldHRpbmdzXCIsIHRoaXMuc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRTZXR0aW5ncygpIHtcclxuICAgICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gRGF0YVN0b3JlLmdldERhdGEoXCJzZXR0aW5nc1wiKTtcclxuICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGUpIHJldHVybiB0aGlzLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBpbiB0aGlzLnN0YXRlKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldmlvdXNTdGF0ZVtjb2xsZWN0aW9uXSkgT2JqZWN0LmFzc2lnbihwcmV2aW91c1N0YXRlLCB7W2NvbGxlY3Rpb25dOiB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dfSk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgaW4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1N0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XSkgT2JqZWN0LmFzc2lnbihwcmV2aW91c1N0YXRlW2NvbGxlY3Rpb25dLCB7W2NhdGVnb3J5XTogdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV19KTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2V0dGluZyBpbiB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1N0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XVtzZXR0aW5nXSA9PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVbY29sbGVjdGlvbl1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZVNldHRpbmdzKCk7IC8vIGluIGNhc2UgbmV3IHRoaW5ncyB3ZXJlIGFkZGVkXHJcbiAgICB9XHJcblxyXG4gICAgb25TZXR0aW5nQ2hhbmdlKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdmFsdWUpIHtcclxuICAgICAgICBjb25zdCBiZWZvcmUgPSB0aGlzLmNvbGxlY3Rpb25zLmxlbmd0aCArIHRoaXMucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XVtpZF0gPSB2YWx1ZTtcclxuICAgICAgICBFdmVudHMuZGlzcGF0Y2goXCJzZXR0aW5nLXVwZGF0ZWRcIiwgY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB2YWx1ZSk7XHJcbiAgICAgICAgY29uc3QgYWZ0ZXIgPSB0aGlzLmNvbGxlY3Rpb25zLmxlbmd0aCArIHRoaXMucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGlmIChiZWZvcmUgIT0gYWZ0ZXIpIHNldFRpbWVvdXQodGhpcy5mb3JjZVVwZGF0ZS5iaW5kKHRoaXMpLCA1MCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1swXS5maW5kKGMgPT4gYy5pZCA9PSBhcmd1bWVudHNbMF0pLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGFyZ3VtZW50c1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gY29sbGVjdGlvbikuZmluZChjID0+IGMuaWQgPT0gY2F0ZWdvcnkpLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSB8fCAhdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGlkO1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWRlbnRpZmllciwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGNvbCwgY2F0LCBpZCwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbCAhPT0gY29sbGVjdGlvbiB8fCBjYXQgIT09IGNhdGVnb3J5IHx8IGlkICE9PSBpZGVudGlmaWVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCBoYW5kbGVyKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge0V2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTdHJpbmdzKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyBjb2xsZWN0aW9uc1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgdGhpcy5jb2xsZWN0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgQ1MgPSBTdHJpbmdzLkNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uaWRdO1xyXG4gICAgICAgICAgICBpZiAoIUNTKSBjb250aW51ZTtcclxuICAgICAgICAgICAgY29sbGVjdGlvbi5uYW1lID0gQ1MubmFtZSB8fCBjb2xsZWN0aW9uLm5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjYXQgPSAwOyBjYXQgPCBjYXRlZ29yaWVzLmxlbmd0aDsgY2F0KyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gY2F0ZWdvcmllc1tjYXRdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgQ2F0U3RyID0gQ1NbY2F0ZWdvcnkuaWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFDYXRTdHIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcnkubmFtZSA9IENhdFN0ci5uYW1lIHx8IGNhdGVnb3J5Lm5hbWU7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzID0gMDsgcyA8IGNhdGVnb3J5LnNldHRpbmdzLmxlbmd0aDsgcysrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFNldFN0ciA9IENhdFN0cltzZXR0aW5nLmlkXTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIVNldFN0cikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5uYW1lID0gU2V0U3RyLm5hbWUgfHwgc2V0dGluZy5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcubm90ZSA9IFNldFN0ci5ub3RlIHx8IHNldHRpbmcubm90ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXBkYXRlIHBhbmVsIGxhYmVsc1xyXG4gICAgICAgIGZvciAobGV0IHAgPSAwOyBwIDwgdGhpcy5wYW5lbHMubGVuZ3RoOyBwKyspIHtcclxuICAgICAgICAgICAgY29uc3QgcGFuZWwgPSB0aGlzLnBhbmVsc1twXTtcclxuICAgICAgICAgICAgY29uc3QgU3RyID0gU3RyaW5ncy5QYW5lbHNbcGFuZWwuaWRdO1xyXG4gICAgICAgICAgICBwYW5lbC5uYW1lID0gU3RyIHx8IHBhbmVsLm5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59OyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsManager {\n constructor() {\n this.state = {};\n this.collections = [];\n this.panels = [];\n this.registerCollection(\"settings\", \"Settings\", data__WEBPACK_IMPORTED_MODULE_0__[\"SettingsConfig\"]);\n this.updateStrings = this.updateStrings.bind(this);\n }\n\n initialize() {\n this.loadSettings();\n this.updateStrings();\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"strings-updated\", this.updateStrings); // this.patchSections();\n }\n\n registerCollection(id, name, settings, button = null) {\n if (this.collections.find(c => c.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a collection with id \" + id);\n this.collections.push({\n type: \"collection\",\n id: id,\n name: name,\n settings: settings,\n button: button\n });\n this.setup();\n this.updateStrings();\n }\n\n removeCollection(id) {\n const location = this.collections.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.collections.splice(location, 1);\n } // TODO: Move this to SettingsRenderer and also add a registerContentPanel\n\n\n registerPanel(id, name, options) {\n if (this.panels.find(p => p.id == id)) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"Already have a panel with id \" + id);\n const {\n element,\n onClick,\n order = 1\n } = options;\n const section = {\n id,\n order,\n label: name,\n section: name\n };\n if (onClick) section.clickListener = onClick;\n if (element) section.element = element instanceof _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.Component ? () => _discordmodules__WEBPACK_IMPORTED_MODULE_4__[\"default\"].React.createElement(element, {}) : typeof element == \"function\" ? element : () => element;\n this.panels.push(section);\n }\n\n removePanel(id) {\n const location = this.panels.findIndex(c => c.id == id);\n if (!location < 0) return _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].error(\"Settings\", \"No collection with id \" + id);\n this.panels.splice(location, 1);\n }\n\n getPath(path, collectionId = \"\", categoryId = \"\") {\n const collection = path.length == 3 ? path[0] : collectionId;\n const category = path.length == 3 ? path[1] : path.length == 2 ? path[0] : categoryId;\n const setting = path[path.length - 1];\n return {\n collection,\n category,\n setting\n };\n }\n\n setup() {\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const categories = this.collections[c].settings;\n if (!this.state[collection.id]) this.state[collection.id] = {};\n\n for (let cc = 0; cc < categories.length; cc++) {\n const category = categories[cc];\n\n if (category.type != \"category\") {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = category.value;\n } else {\n if (!this.state[collection.id].hasOwnProperty(category.id)) this.state[collection.id][category.id] = {};\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n if (!this.state[collection.id][category.id].hasOwnProperty(setting.id)) this.state[collection.id][category.id][setting.id] = setting.value;\n\n if (setting.enableWith) {\n const path = this.getPath(setting.enableWith.split(\".\"), collection.id, category.id);\n if (setting.hasOwnProperty(\"disabled\")) continue;\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n return !this.state[path.collection][path.category][path.setting];\n }\n });\n }\n\n if (setting.disableWith) {\n const path = this.getPath(setting.disableWith.split(\".\"), collection.id, category.id);\n if (setting.hasOwnProperty(\"disabled\")) continue;\n Object.defineProperty(setting, \"disabled\", {\n get: () => {\n return this.state[path.collection][path.category][path.setting];\n }\n });\n }\n }\n }\n }\n }\n }\n\n saveSettings() {\n _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setData(\"settings\", this.state);\n }\n\n loadSettings() {\n const previousState = _datastore__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getData(\"settings\");\n if (!previousState) return this.saveSettings();\n\n for (const collection in this.state) {\n if (!previousState[collection]) Object.assign(previousState, {\n [collection]: this.state[collection]\n });\n\n for (const category in this.state[collection]) {\n if (!previousState[collection][category]) Object.assign(previousState[collection], {\n [category]: this.state[collection][category]\n });\n\n for (const setting in this.state[collection][category]) {\n if (previousState[collection][category][setting] == undefined) continue;\n this.state[collection][category][setting] = previousState[collection][category][setting];\n }\n }\n }\n\n this.saveSettings(); // in case new things were added\n }\n\n onSettingChange(collection, category, id, value) {\n // const before = this.collections.length + this.panels.length;\n this.state[collection][category][id] = value;\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].dispatch(\"setting-updated\", collection, category, id, value); // const after = this.collections.length + this.panels.length;\n\n this.saveSettings(); // if (before != after) setTimeout(this.forceUpdate.bind(this), 50);\n }\n\n getSetting(collection, category, id) {\n if (arguments.length == 2) return this.collections[0].find(c => c.id == arguments[0]).settings.find(s => s.id == arguments[1]);\n return this.collections.find(c => c.id == collection).find(c => c.id == category).settings.find(s => s.id == id);\n }\n\n get(collection, category, id) {\n if (arguments.length == 2) {\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n if (!this.state[collection] || !this.state[collection][category]) return false;\n return this.state[collection][category][id];\n }\n\n set(collection, category, id, value) {\n if (arguments.length == 3) {\n value = id;\n id = category;\n category = collection;\n collection = \"settings\";\n }\n\n return this.onSettingChange(collection, category, id, value);\n }\n\n on(collection, category, identifier, callback) {\n const handler = (col, cat, id, value) => {\n if (col !== collection || cat !== category || id !== identifier) return;\n callback(value);\n };\n\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].on(\"setting-updated\", handler);\n return () => {\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].off(\"setting-updated\", handler);\n };\n }\n\n updateStrings() {\n // Update settings collections\n for (let c = 0; c < this.collections.length; c++) {\n const collection = this.collections[c];\n const CS = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Collections[collection.id];\n console.log(CS);\n if (!CS) continue;\n collection.name = CS.name || collection.name;\n const categories = this.collections[c].settings;\n\n for (let cat = 0; cat < categories.length; cat++) {\n const category = categories[cat];\n const CatStr = CS[category.id];\n if (!CatStr) continue;\n category.name = CatStr.name || category.name;\n\n for (let s = 0; s < category.settings.length; s++) {\n const setting = category.settings[s];\n const SetStr = CatStr[setting.id];\n if (!SetStr) continue;\n setting.name = SetStr.name || setting.name;\n setting.note = SetStr.note || setting.note;\n }\n }\n } // Update panel labels\n\n\n for (let p = 0; p < this.panels.length; p++) {\n const panel = this.panels[p];\n const Str = _strings__WEBPACK_IMPORTED_MODULE_5__[\"default\"].Panels[panel.id];\n panel.name = Str || panel.name;\n }\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc2V0dGluZ3NtYW5hZ2VyLmpzP2IyZjkiXSwibmFtZXMiOlsiU2V0dGluZ3NNYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJzdGF0ZSIsImNvbGxlY3Rpb25zIiwicGFuZWxzIiwicmVnaXN0ZXJDb2xsZWN0aW9uIiwiU2V0dGluZ3NDb25maWciLCJ1cGRhdGVTdHJpbmdzIiwiYmluZCIsImluaXRpYWxpemUiLCJsb2FkU2V0dGluZ3MiLCJFdmVudHMiLCJvbiIsImlkIiwibmFtZSIsInNldHRpbmdzIiwiYnV0dG9uIiwiZmluZCIsImMiLCJMb2dnZXIiLCJlcnJvciIsInB1c2giLCJ0eXBlIiwic2V0dXAiLCJyZW1vdmVDb2xsZWN0aW9uIiwibG9jYXRpb24iLCJmaW5kSW5kZXgiLCJzcGxpY2UiLCJyZWdpc3RlclBhbmVsIiwib3B0aW9ucyIsInAiLCJlbGVtZW50Iiwib25DbGljayIsIm9yZGVyIiwic2VjdGlvbiIsImxhYmVsIiwiY2xpY2tMaXN0ZW5lciIsIkRpc2NvcmRNb2R1bGVzIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjcmVhdGVFbGVtZW50IiwicmVtb3ZlUGFuZWwiLCJnZXRQYXRoIiwicGF0aCIsImNvbGxlY3Rpb25JZCIsImNhdGVnb3J5SWQiLCJjb2xsZWN0aW9uIiwibGVuZ3RoIiwiY2F0ZWdvcnkiLCJzZXR0aW5nIiwiY2F0ZWdvcmllcyIsImNjIiwiaGFzT3duUHJvcGVydHkiLCJ2YWx1ZSIsInMiLCJlbmFibGVXaXRoIiwic3BsaXQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsImRpc2FibGVXaXRoIiwic2F2ZVNldHRpbmdzIiwiRGF0YVN0b3JlIiwic2V0RGF0YSIsInByZXZpb3VzU3RhdGUiLCJnZXREYXRhIiwiYXNzaWduIiwidW5kZWZpbmVkIiwib25TZXR0aW5nQ2hhbmdlIiwiZGlzcGF0Y2giLCJnZXRTZXR0aW5nIiwiYXJndW1lbnRzIiwic2V0IiwiaWRlbnRpZmllciIsImNhbGxiYWNrIiwiaGFuZGxlciIsImNvbCIsImNhdCIsIm9mZiIsIkNTIiwiU3RyaW5ncyIsIkNvbGxlY3Rpb25zIiwiY29uc29sZSIsImxvZyIsIkNhdFN0ciIsIlNldFN0ciIsIm5vdGUiLCJwYW5lbCIsIlN0ciIsIlBhbmVscyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFZSxtRUFBSSxNQUFNQSxlQUFOLENBQXNCO0FBRXJDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxLQUFMLEdBQWEsRUFBYjtBQUNBLFNBQUtDLFdBQUwsR0FBbUIsRUFBbkI7QUFDQSxTQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtDLGtCQUFMLENBQXdCLFVBQXhCLEVBQW9DLFVBQXBDLEVBQWdEQyxtREFBaEQ7QUFDQSxTQUFLQyxhQUFMLEdBQXFCLEtBQUtBLGFBQUwsQ0FBbUJDLElBQW5CLENBQXdCLElBQXhCLENBQXJCO0FBQ0g7O0FBRURDLFlBQVUsR0FBRztBQUNULFNBQUtDLFlBQUw7QUFDQSxTQUFLSCxhQUFMO0FBQ0FJLG9EQUFNLENBQUNDLEVBQVAsQ0FBVSxpQkFBVixFQUE2QixLQUFLTCxhQUFsQyxFQUhTLENBSVQ7QUFDSDs7QUFFREYsb0JBQWtCLENBQUNRLEVBQUQsRUFBS0MsSUFBTCxFQUFXQyxRQUFYLEVBQXFCQyxNQUFNLEdBQUcsSUFBOUIsRUFBb0M7QUFDbEQsUUFBSSxLQUFLYixXQUFMLENBQWlCYyxJQUFqQixDQUFzQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNMLEVBQUYsSUFBUUEsRUFBbkMsQ0FBSixFQUE0QyxPQUFPTSwrQ0FBTSxDQUFDQyxLQUFQLENBQWEsVUFBYixFQUF5Qix1Q0FBdUNQLEVBQWhFLENBQVA7QUFDNUMsU0FBS1YsV0FBTCxDQUFpQmtCLElBQWpCLENBQXNCO0FBQ2xCQyxVQUFJLEVBQUUsWUFEWTtBQUVsQlQsUUFBRSxFQUFFQSxFQUZjO0FBR2xCQyxVQUFJ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QUFoQyxFQUF3Q2pCLENBQUMsRUFBekMsRUFBNkM7QUFDekMsWUFBTXlELEtBQUssR0FBRyxLQUFLbkYsTUFBTCxDQUFZMEIsQ0FBWixDQUFkO0FBQ0EsWUFBTTBELEdBQUcsR0FBR1IsZ0RBQU8sQ0FBQ1MsTUFBUixDQUFlRixLQUFLLENBQUMxRSxFQUFyQixDQUFaO0FBQ0EwRSxXQUFLLENBQUN6RSxJQUFOLEdBQWEwRSxHQUFHLElBQUlELEtBQUssQ0FBQ3pFLElBQTFCO0FBQ0g7QUFDSjs7QUEvTG9DLENBQTFCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9zZXR0aW5nc21hbmFnZXIuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NldHRpbmdzQ29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuL2xvZ2dlclwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL2VtaXR0ZXJcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBTdHJpbmdzIGZyb20gXCIuL3N0cmluZ3NcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBTZXR0aW5nc01hbmFnZXIge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbGxlY3Rpb25zID0gW107XHJcbiAgICAgICAgdGhpcy5wYW5lbHMgPSBbXTtcclxuICAgICAgICB0aGlzLnJlZ2lzdGVyQ29sbGVjdGlvbihcInNldHRpbmdzXCIsIFwiU2V0dGluZ3NcIiwgU2V0dGluZ3NDb25maWcpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU3RyaW5ncyA9IHRoaXMudXBkYXRlU3RyaW5ncy5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVN0cmluZ3MoKTtcclxuICAgICAgICBFdmVudHMub24oXCJzdHJpbmdzLXVwZGF0ZWRcIiwgdGhpcy51cGRhdGVTdHJpbmdzKTtcclxuICAgICAgICAvLyB0aGlzLnBhdGNoU2VjdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICByZWdpc3RlckNvbGxlY3Rpb24oaWQsIG5hbWUsIHNldHRpbmdzLCBidXR0b24gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gaWQpKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJBbHJlYWR5IGhhdmUgYSBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogXCJjb2xsZWN0aW9uXCIsXHJcbiAgICAgICAgICAgIGlkOiBpZCxcclxuICAgICAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICAgICAgc2V0dGluZ3M6IHNldHRpbmdzLFxyXG4gICAgICAgICAgICBidXR0b246IGJ1dHRvblxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0dXAoKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVN0cmluZ3MoKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVDb2xsZWN0aW9uKGlkKSB7XHJcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLmNvbGxlY3Rpb25zLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9ucy5zcGxpY2UobG9jYXRpb24sIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IE1vdmUgdGhpcyB0byBTZXR0aW5nc1JlbmRlcmVyIGFuZCBhbHNvIGFkZCBhIHJlZ2lzdGVyQ29udGVudFBhbmVsXHJcbiAgICByZWdpc3RlclBhbmVsKGlkLCBuYW1lLCBvcHRpb25zKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucGFuZWxzLmZpbmQocCA9PiBwLmlkID09IGlkKSkgcmV0dXJuIExvZ2dlci5lcnJvcihcIlNldHRpbmdzXCIsIFwiQWxyZWFkeSBoYXZlIGEgcGFuZWwgd2l0aCBpZCBcIiArIGlkKTtcclxuICAgICAgICBjb25zdCB7ZWxlbWVudCwgb25DbGljaywgb3JkZXIgPSAxfSA9IG9wdGlvbnM7XHJcbiAgICAgICAgY29uc3Qgc2VjdGlvbiA9IHtpZCwgb3JkZXIsIGxhYmVsOiBuYW1lLCBzZWN0aW9uOiBuYW1lfTtcclxuICAgICAgICBpZiAob25DbGljaykgc2VjdGlvbi5jbGlja0xpc3RlbmVyID0gb25DbGljaztcclxuICAgICAgICBpZiAoZWxlbWVudCkgc2VjdGlvbi5lbGVtZW50ID0gZWxlbWVudCBpbnN0YW5jZW9mIERpc2NvcmRNb2R1bGVzLlJlYWN0LkNvbXBvbmVudCA/ICgpID0+IERpc2NvcmRNb2R1bGVzLlJlYWN0LmNyZWF0ZUVsZW1lbnQoZWxlbWVudCwge30pIDogdHlwZW9mKGVsZW1lbnQpID09IFwiZnVuY3Rpb25cIiA/IGVsZW1lbnQgOiAoKSA9PiBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMucGFuZWxzLnB1c2goc2VjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlUGFuZWwoaWQpIHtcclxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMucGFuZWxzLmZpbmRJbmRleChjID0+IGMuaWQgPT0gaWQpO1xyXG4gICAgICAgIGlmICghbG9jYXRpb24gPCAwKSByZXR1cm4gTG9nZ2VyLmVycm9yKFwiU2V0dGluZ3NcIiwgXCJObyBjb2xsZWN0aW9uIHdpdGggaWQgXCIgKyBpZCk7XHJcbiAgICAgICAgdGhpcy5wYW5lbHMuc3BsaWNlKGxvY2F0aW9uLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQYXRoKHBhdGgsIGNvbGxlY3Rpb25JZCA9IFwiXCIsIGNhdGVnb3J5SWQgPSBcIlwiKSB7XHJcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHBhdGgubGVuZ3RoID09IDMgPyBwYXRoWzBdIDogY29sbGVjdGlvbklkO1xyXG4gICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gcGF0aC5sZW5ndGggPT0gMyA/IHBhdGhbMV0gOiBwYXRoLmxlbmd0aCA9PSAyID8gcGF0aFswXSA6IGNhdGVnb3J5SWQ7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgICAgICByZXR1cm4ge2NvbGxlY3Rpb24sIGNhdGVnb3J5LCBzZXR0aW5nfTtcclxuICAgIH1cclxuXHJcbiAgICBzZXR1cCgpIHtcclxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHRoaXMuY29sbGVjdGlvbnMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IHRoaXMuY29sbGVjdGlvbnNbY107XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSB0aGlzLmNvbGxlY3Rpb25zW2NdLnNldHRpbmdzO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0pIHRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0gPSB7fTtcclxuICAgICAgICAgICAgZm9yIChsZXQgY2MgPSAwOyBjYyA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYysrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGNhdGVnb3JpZXNbY2NdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5LnR5cGUgIT0gXCJjYXRlZ29yeVwiKSB7aWYgKCF0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdLmhhc093blByb3BlcnR5KGNhdGVnb3J5LmlkKSkgdGhpcy5zdGF0ZVtjb2xsZWN0aW9uLmlkXVtjYXRlZ29yeS5pZF0gPSBjYXRlZ29yeS52YWx1ZTt9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF0uaGFzT3duUHJvcGVydHkoY2F0ZWdvcnkuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgY2F0ZWdvcnkuc2V0dGluZ3MubGVuZ3RoOyBzKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGNhdGVnb3J5LnNldHRpbmdzW3NdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3RhdGVbY29sbGVjdGlvbi5pZF1bY2F0ZWdvcnkuaWRdLmhhc093blByb3BlcnR5KHNldHRpbmcuaWQpKSB0aGlzLnN0YXRlW2NvbGxlY3Rpb24uaWRdW2NhdGVnb3J5LmlkXVtzZXR0aW5nLmlkXSA9IHNldHRpbmcudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nLmVuYWJsZVdpdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGgoc2V0dGluZy5lbmFibGVXaXRoLnNwbGl0KFwiLlwiKSwgY29sbGVjdGlvbi5pZCwgY2F0ZWdvcnkuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmcuaGFzT3duUHJvcGVydHkoXCJkaXNhYmxlZFwiKSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZywgXCJkaXNhYmxlZFwiLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5zdGF0ZVtwYXRoLmNvbGxlY3Rpb25dW3BhdGguY2F0ZWdvcnldW3BhdGguc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXR0aW5nLmRpc2FibGVXaXRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5nZXRQYXRoKHNldHRpbmcuZGlzYWJsZVdpdGguc3BsaXQoXCIuXCIpLCBjb2xsZWN0aW9uLmlkLCBjYXRlZ29yeS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZy5oYXNPd25Qcm9wZXJ0eShcImRpc2FibGVkXCIpKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzZXR0aW5nLCBcImRpc2FibGVkXCIsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGVbcGF0aC5jb2xsZWN0aW9uXVtwYXRoLmNhdGVnb3J5XVtwYXRoLnNldHRpbmddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTZXR0aW5ncygpIHtcclxuICAgICAgICBEYXRhU3RvcmUuc2V0RGF0YShcInNldHRpbmdzXCIsIHRoaXMuc3RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRTZXR0aW5ncygpIHtcclxuICAgICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gRGF0YVN0b3JlLmdldERhdGEoXCJzZXR0aW5nc1wiKTtcclxuICAgICAgICBpZiAoIXByZXZpb3VzU3RhdGUpIHJldHVybiB0aGlzLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29sbGVjdGlvbiBpbiB0aGlzLnN0YXRlKSB7XHJcbiAgICAgICAgICAgIGlmICghcHJldmlvdXNTdGF0ZVtjb2xsZWN0aW9uXSkgT2JqZWN0LmFzc2lnbihwcmV2aW91c1N0YXRlLCB7W2NvbGxlY3Rpb25dOiB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dfSk7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgaW4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1N0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XSkgT2JqZWN0LmFzc2lnbihwcmV2aW91c1N0YXRlW2NvbGxlY3Rpb25dLCB7W2NhdGVnb3J5XTogdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV19KTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc2V0dGluZyBpbiB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1N0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XVtzZXR0aW5nXSA9PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVbY29sbGVjdGlvbl1bY2F0ZWdvcnldW3NldHRpbmddID0gcHJldmlvdXNTdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1bc2V0dGluZ107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2F2ZVNldHRpbmdzKCk7IC8vIGluIGNhc2UgbmV3IHRoaW5ncyB3ZXJlIGFkZGVkXHJcbiAgICB9XHJcblxyXG4gICAgb25TZXR0aW5nQ2hhbmdlKGNvbGxlY3Rpb24sIGNhdGVnb3J5LCBpZCwgdmFsdWUpIHtcclxuICAgICAgICAvLyBjb25zdCBiZWZvcmUgPSB0aGlzLmNvbGxlY3Rpb25zLmxlbmd0aCArIHRoaXMucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLnN0YXRlW2NvbGxlY3Rpb25dW2NhdGVnb3J5XVtpZF0gPSB2YWx1ZTtcclxuICAgICAgICBFdmVudHMuZGlzcGF0Y2goXCJzZXR0aW5nLXVwZGF0ZWRcIiwgY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkLCB2YWx1ZSk7XHJcbiAgICAgICAgLy8gY29uc3QgYWZ0ZXIgPSB0aGlzLmNvbGxlY3Rpb25zLmxlbmd0aCArIHRoaXMucGFuZWxzLmxlbmd0aDtcclxuICAgICAgICB0aGlzLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgIC8vIGlmIChiZWZvcmUgIT0gYWZ0ZXIpIHNldFRpbWVvdXQodGhpcy5mb3JjZVVwZGF0ZS5iaW5kKHRoaXMpLCA1MCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZyhjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQpIHtcclxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAyKSByZXR1cm4gdGhpcy5jb2xsZWN0aW9uc1swXS5maW5kKGMgPT4gYy5pZCA9PSBhcmd1bWVudHNbMF0pLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGFyZ3VtZW50c1sxXSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdGlvbnMuZmluZChjID0+IGMuaWQgPT0gY29sbGVjdGlvbikuZmluZChjID0+IGMuaWQgPT0gY2F0ZWdvcnkpLnNldHRpbmdzLmZpbmQocyA9PiBzLmlkID09IGlkKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoY29sbGVjdGlvbiwgY2F0ZWdvcnksIGlkKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXSB8fCAhdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV0pIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVtjb2xsZWN0aW9uXVtjYXRlZ29yeV1baWRdO1xyXG4gICAgfVxyXG5cclxuICAgIHNldChjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGlkO1xyXG4gICAgICAgICAgICBpZCA9IGNhdGVnb3J5O1xyXG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNvbGxlY3Rpb247XHJcbiAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLm9uU2V0dGluZ0NoYW5nZShjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWQsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBvbihjb2xsZWN0aW9uLCBjYXRlZ29yeSwgaWRlbnRpZmllciwgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBoYW5kbGVyID0gKGNvbCwgY2F0LCBpZCwgdmFsdWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvbCAhPT0gY29sbGVjdGlvbiB8fCBjYXQgIT09IGNhdGVnb3J5IHx8IGlkICE9PSBpZGVudGlmaWVyKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKHZhbHVlKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIEV2ZW50cy5vbihcInNldHRpbmctdXBkYXRlZFwiLCBoYW5kbGVyKTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge0V2ZW50cy5vZmYoXCJzZXR0aW5nLXVwZGF0ZWRcIiwgaGFuZGxlcik7fTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVTdHJpbmdzKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyBjb2xsZWN0aW9uc1xyXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgdGhpcy5jb2xsZWN0aW9ucy5sZW5ndGg7IGMrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gdGhpcy5jb2xsZWN0aW9uc1tjXTtcclxuICAgICAgICAgICAgY29uc3QgQ1MgPSBTdHJpbmdzLkNvbGxlY3Rpb25zW2NvbGxlY3Rpb24uaWRdO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhDUyk7XHJcbiAgICAgICAgICAgIGlmICghQ1MpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjb2xsZWN0aW9uLm5hbWUgPSBDUy5uYW1lIHx8IGNvbGxlY3Rpb24ubmFtZTtcclxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IHRoaXMuY29sbGVjdGlvbnNbY10uc2V0dGluZ3M7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGNhdCA9IDA7IGNhdCA8IGNhdGVnb3JpZXMubGVuZ3RoOyBjYXQrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2NhdF07XHJcbiAgICAgICAgICAgICAgICBjb25zdCBDYXRTdHIgPSBDU1tjYXRlZ29yeS5pZF07XHJcbiAgICAgICAgICAgICAgICBpZiAoIUNhdFN0cikgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXRlZ29yeS5uYW1lID0gQ2F0U3RyLm5hbWUgfHwgY2F0ZWdvcnkubmFtZTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDwgY2F0ZWdvcnkuc2V0dGluZ3MubGVuZ3RoOyBzKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nID0gY2F0ZWdvcnkuc2V0dGluZ3Nbc107XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgU2V0U3RyID0gQ2F0U3RyW3NldHRpbmcuaWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghU2V0U3RyKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLm5hbWUgPSBTZXRTdHIubmFtZSB8fCBzZXR0aW5nLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5ub3RlID0gU2V0U3RyLm5vdGUgfHwgc2V0dGluZy5ub3RlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVcGRhdGUgcGFuZWwgbGFiZWxzXHJcbiAgICAgICAgZm9yIChsZXQgcCA9IDA7IHAgPCB0aGlzLnBhbmVscy5sZW5ndGg7IHArKykge1xyXG4gICAgICAgICAgICBjb25zdCBwYW5lbCA9IHRoaXMucGFuZWxzW3BdO1xyXG4gICAgICAgICAgICBjb25zdCBTdHIgPSBTdHJpbmdzLlBhbmVsc1twYW5lbC5pZF07XHJcbiAgICAgICAgICAgIHBhbmVsLm5hbWUgPSBTdHIgfHwgcGFuZWwubmFtZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/settingsmanager.js\n"); /***/ }), @@ -527,7 +527,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"currentLocale\", function() { return currentLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLocale\", function() { return setLocale; });\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _data_strings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../data/strings */ \"./src/data/strings.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n\n\n\n\n\nconst {\n Dispatcher,\n DiscordConstants\n} = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nconst Messages = {};\nlet currentLocale = \"en\";\nfunction setLocale(newLocale) {\n currentLocale = newLocale;\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, _data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][currentLocale]);\n _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"].emit(\"strings-updated\");\n}\n_utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, _data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][currentLocale]);\nDispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({\n settings\n}) => {\n const newLocale = settings.locale;\n if (newLocale && newLocale != currentLocale) setLocale(newLocale.split(\"-\")[0]);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Proxy(Messages, {\n get: function (strings, category) {\n if (!strings.hasOwnProperty(category)) {\n return new Proxy({}, {\n get: function () {\n return `String group \"${category}\" not found.`;\n }\n });\n }\n\n return new Proxy(strings[category], {\n get: function (obj, prop) {\n if (typeof obj[prop] == \"string\") return new _structs_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"](obj[prop]);\n return obj[prop];\n }\n });\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcz8zNTllIl0sIm5hbWVzIjpbIkRpc3BhdGNoZXIiLCJEaXNjb3JkQ29uc3RhbnRzIiwiRGlzY29yZE1vZHVsZXMiLCJNZXNzYWdlcyIsImN1cnJlbnRMb2NhbGUiLCJzZXRMb2NhbGUiLCJuZXdMb2NhbGUiLCJVdGlsaXRpZXMiLCJleHRlbmQiLCJSYXdTdHJpbmdzIiwiRXZlbnRzIiwiZW1pdCIsInN1YnNjcmliZSIsIkFjdGlvblR5cGVzIiwiVVNFUl9TRVRUSU5HU19VUERBVEUiLCJzZXR0aW5ncyIsImxvY2FsZSIsInNwbGl0IiwiUHJveHkiLCJnZXQiLCJzdHJpbmdzIiwiY2F0ZWdvcnkiLCJoYXNPd25Qcm9wZXJ0eSIsIm9iaiIsInByb3AiLCJGb3JtYXR0YWJsZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxNQUFNO0FBQUNBLFlBQUQ7QUFBYUM7QUFBYixJQUFpQ0MsdURBQXZDO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLEVBQWpCO0FBRU8sSUFBSUMsYUFBYSxHQUFHLElBQXBCO0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsRUFBOEI7QUFDakNGLGVBQWEsR0FBR0UsU0FBaEI7QUFDSEMsb0RBQVMsQ0FBQ0MsTUFBVixDQUFpQkwsUUFBakIsRUFBMkJNLHFEQUFVLENBQUNMLGFBQUQsQ0FBckM7QUFDQU0sa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLGlCQUFaO0FBQ0E7QUFFREosa0RBQVMsQ0FBQ0MsTUFBVixDQUFpQkwsUUFBakIsRUFBMkJNLHFEQUFVLENBQUNMLGFBQUQsQ0FBckM7QUFFQUosVUFBVSxDQUFDWSxTQUFYLENBQXFCWCxnQkFBZ0IsQ0FBQ1ksV0FBakIsQ0FBNkJDLG9CQUFsRCxFQUF3RSxDQUFDO0FBQUNDO0FBQUQsQ0FBRCxLQUFnQjtBQUNwRixRQUFNVCxTQUFTLEdBQUdTLFFBQVEsQ0FBQ0MsTUFBM0I7QUFDQSxNQUFJVixTQUFTLElBQUlBLFNBQVMsSUFBSUYsYUFBOUIsRUFBNkNDLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDVyxLQUFWLENBQWdCLEdBQWhCLEVBQXFCLENBQXJCLENBQUQsQ0FBVDtBQUNoRCxDQUhEO0FBS2UsbUVBQUlDLEtBQUosQ0FBVWYsUUFBVixFQUFvQjtBQUNsQ2dCLEtBQUcsRUFBRSxVQUFTQyxPQUFULEVBQWtCQyxRQUFsQixFQUE0QjtBQUMxQixRQUFJLENBQUNELE9BQU8sQ0FBQ0UsY0FBUixDQUF1QkQsUUFBdkIsQ0FBTCxFQUF1QztBQUM1QyxhQUFPLElBQUlILEtBQUosQ0FBVSxFQUFWLEVBQWM7QUFDcEJDLFdBQUcsRUFBRSxZQUFXO0FBQ2YsaUJBQVEsaUJBQWdCRSxRQUFTLGNBQWpDO0FBQ0E7QUFIbUIsT0FBZCxDQUFQO0FBS0E7O0FBQ0QsV0FBTyxJQUFJSCxLQUFKLENBQVVFLE9BQU8sQ0FBQ0MsUUFBRCxDQUFqQixFQUE2QjtBQUNuQ0YsU0FBRyxFQUFFLFVBQVNJLEdBQVQsRUFBY0MsSUFBZCxFQUFvQjtBQUN4QixZQUFJLE9BQU9ELEdBQUcsQ0FBQ0MsSUFBRCxDQUFWLElBQXFCLFFBQXpCLEVBQW1DLE9BQU8sSUFBSUMsdURBQUosQ0FBc0JGLEdBQUcsQ0FBQ0MsSUFBRCxDQUF6QixDQUFQO0FBQ25DLGVBQU9ELEdBQUcsQ0FBQ0MsSUFBRCxDQUFWO0FBQ0E7QUFKa0MsS0FBN0IsQ0FBUDtBQU1BO0FBZmlDLENBQXBCLENBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9zdHJpbmdzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBSYXdTdHJpbmdzIGZyb20gXCIuLi9kYXRhL3N0cmluZ3NcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuaW1wb3J0IEZvcm1hdHRhYmxlU3RyaW5nIGZyb20gXCIuLi9zdHJ1Y3RzL3N0cmluZ1wiO1xyXG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuL2VtaXR0ZXJcIjtcclxuXHJcbmNvbnN0IHtEaXNwYXRjaGVyLCBEaXNjb3JkQ29uc3RhbnRzfSA9IERpc2NvcmRNb2R1bGVzO1xyXG5jb25zdCBNZXNzYWdlcyA9IHt9O1xyXG5cclxuZXhwb3J0IGxldCBjdXJyZW50TG9jYWxlID0gXCJlblwiO1xyXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9jYWxlKG5ld0xvY2FsZSkge1xyXG4gICAgY3VycmVudExvY2FsZSA9IG5ld0xvY2FsZTtcclxuXHRVdGlsaXRpZXMuZXh0ZW5kKE1lc3NhZ2VzLCBSYXdTdHJpbmdzW2N1cnJlbnRMb2NhbGVdKTtcclxuXHRFdmVudHMuZW1pdChcInN0cmluZ3MtdXBkYXRlZFwiKTtcclxufVxyXG5cclxuVXRpbGl0aWVzLmV4dGVuZChNZXNzYWdlcywgUmF3U3RyaW5nc1tjdXJyZW50TG9jYWxlXSk7XHJcblxyXG5EaXNwYXRjaGVyLnN1YnNjcmliZShEaXNjb3JkQ29uc3RhbnRzLkFjdGlvblR5cGVzLlVTRVJfU0VUVElOR1NfVVBEQVRFLCAoe3NldHRpbmdzfSkgPT4ge1xyXG4gICAgY29uc3QgbmV3TG9jYWxlID0gc2V0dGluZ3MubG9jYWxlO1xyXG4gICAgaWYgKG5ld0xvY2FsZSAmJiBuZXdMb2NhbGUgIT0gY3VycmVudExvY2FsZSkgc2V0TG9jYWxlKG5ld0xvY2FsZS5zcGxpdChcIi1cIilbMF0pO1xyXG59KTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBQcm94eShNZXNzYWdlcywge1xyXG5cdGdldDogZnVuY3Rpb24oc3RyaW5ncywgY2F0ZWdvcnkpIHtcclxuICAgICAgICBpZiAoIXN0cmluZ3MuaGFzT3duUHJvcGVydHkoY2F0ZWdvcnkpKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJveHkoe30sIHtcclxuXHRcdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGBTdHJpbmcgZ3JvdXAgXCIke2NhdGVnb3J5fVwiIG5vdCBmb3VuZC5gO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmV3IFByb3h5KHN0cmluZ3NbY2F0ZWdvcnldLCB7XHJcblx0XHRcdGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZihvYmpbcHJvcF0pID09IFwic3RyaW5nXCIpIHJldHVybiBuZXcgRm9ybWF0dGFibGVTdHJpbmcob2JqW3Byb3BdKTtcclxuXHRcdFx0XHRyZXR1cm4gb2JqW3Byb3BdO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcbn0pO1xyXG5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"currentLocale\", function() { return currentLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLocale\", function() { return setLocale; });\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _data_strings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../data/strings */ \"./src/data/strings.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n\n\n\n\n\nconst {\n Dispatcher,\n DiscordConstants,\n UserSettingsStore\n} = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nconst Messages = {};\nconst discordLocale = UserSettingsStore.locale.split(\"-\")[0];\nlet currentLocale = \"en\";\nfunction setLocale(newLocale) {\n currentLocale = newLocale;\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, _data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][currentLocale]);\n _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"].emit(\"strings-updated\");\n console.log(\"Changed to \" + newLocale);\n}\n_utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, _data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][currentLocale]);\nif (_data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][discordLocale] && discordLocale != \"en\") setLocale(discordLocale);\nDispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({\n settings\n}) => {\n const newLocale = settings.locale;\n if (newLocale && newLocale != currentLocale) setLocale(newLocale.split(\"-\")[0]);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Proxy(Messages, {\n get: function (strings, category) {\n if (!strings.hasOwnProperty(category)) {\n return new Proxy({}, {\n get: function () {\n return `String group \"${category}\" not found.`;\n }\n });\n }\n\n return new Proxy(strings[category], {\n get: function (obj, prop) {\n if (typeof obj[prop] == \"string\") return new _structs_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"](obj[prop]);\n return obj[prop];\n }\n });\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcz8zNTllIl0sIm5hbWVzIjpbIkRpc3BhdGNoZXIiLCJEaXNjb3JkQ29uc3RhbnRzIiwiVXNlclNldHRpbmdzU3RvcmUiLCJEaXNjb3JkTW9kdWxlcyIsIk1lc3NhZ2VzIiwiZGlzY29yZExvY2FsZSIsImxvY2FsZSIsInNwbGl0IiwiY3VycmVudExvY2FsZSIsInNldExvY2FsZSIsIm5ld0xvY2FsZSIsIlV0aWxpdGllcyIsImV4dGVuZCIsIlJhd1N0cmluZ3MiLCJFdmVudHMiLCJlbWl0IiwiY29uc29sZSIsImxvZyIsInN1YnNjcmliZSIsIkFjdGlvblR5cGVzIiwiVVNFUl9TRVRUSU5HU19VUERBVEUiLCJzZXR0aW5ncyIsIlByb3h5IiwiZ2V0Iiwic3RyaW5ncyIsImNhdGVnb3J5IiwiaGFzT3duUHJvcGVydHkiLCJvYmoiLCJwcm9wIiwiRm9ybWF0dGFibGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTTtBQUFDQSxZQUFEO0FBQWFDLGtCQUFiO0FBQStCQztBQUEvQixJQUFvREMsdURBQTFEO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsYUFBYSxHQUFHSCxpQkFBaUIsQ0FBQ0ksTUFBbEIsQ0FBeUJDLEtBQXpCLENBQStCLEdBQS9CLEVBQW9DLENBQXBDLENBQXRCO0FBRU8sSUFBSUMsYUFBYSxHQUFHLElBQXBCO0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsRUFBOEI7QUFDakNGLGVBQWEsR0FBR0UsU0FBaEI7QUFDSEMsb0RBQVMsQ0FBQ0MsTUFBVixDQUFpQlIsUUFBakIsRUFBMkJTLHFEQUFVLENBQUNMLGFBQUQsQ0FBckM7QUFDQU0sa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLGlCQUFaO0FBQ0FDLFNBQU8sQ0FBQ0MsR0FBUixDQUFZLGdCQUFnQlAsU0FBNUI7QUFDQTtBQUVEQyxrREFBUyxDQUFDQyxNQUFWLENBQWlCUixRQUFqQixFQUEyQlMscURBQVUsQ0FBQ0wsYUFBRCxDQUFyQztBQUVBLElBQUlLLHFEQUFVLENBQUNSLGFBQUQsQ0FBVixJQUE2QkEsYUFBYSxJQUFJLElBQWxELEVBQXdESSxTQUFTLENBQUNKLGFBQUQsQ0FBVDtBQUV4REwsVUFBVSxDQUFDa0IsU0FBWCxDQUFxQmpCLGdCQUFnQixDQUFDa0IsV0FBakIsQ0FBNkJDLG9CQUFsRCxFQUF3RSxDQUFDO0FBQUNDO0FBQUQsQ0FBRCxLQUFnQjtBQUNwRixRQUFNWCxTQUFTLEdBQUdXLFFBQVEsQ0FBQ2YsTUFBM0I7QUFDQSxNQUFJSSxTQUFTLElBQUlBLFNBQVMsSUFBSUYsYUFBOUIsRUFBNkNDLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDSCxLQUFWLENBQWdCLEdBQWhCLEVBQXFCLENBQXJCLENBQUQsQ0FBVDtBQUNoRCxDQUhEO0FBS2UsbUVBQUllLEtBQUosQ0FBVWxCLFFBQVYsRUFBb0I7QUFDbENtQixLQUFHLEVBQUUsVUFBU0MsT0FBVCxFQUFrQkMsUUFBbEIsRUFBNEI7QUFDMUIsUUFBSSxDQUFDRCxPQUFPLENBQUNFLGNBQVIsQ0FBdUJELFFBQXZCLENBQUwsRUFBdUM7QUFDNUMsYUFBTyxJQUFJSCxLQUFKLENBQVUsRUFBVixFQUFjO0FBQ3BCQyxXQUFHLEVBQUUsWUFBVztBQUNmLGlCQUFRLGlCQUFnQkUsUUFBUyxjQUFqQztBQUNBO0FBSG1CLE9BQWQsQ0FBUDtBQUtBOztBQUNELFdBQU8sSUFBSUgsS0FBSixDQUFVRSxPQUFPLENBQUNDLFFBQUQsQ0FBakIsRUFBNkI7QUFDbkNGLFNBQUcsRUFBRSxVQUFTSSxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDeEIsWUFBSSxPQUFPRCxHQUFHLENBQUNDLElBQUQsQ0FBVixJQUFxQixRQUF6QixFQUFtQyxPQUFPLElBQUlDLHVEQUFKLENBQXNCRixHQUFHLENBQUNDLElBQUQsQ0FBekIsQ0FBUDtBQUNuQyxlQUFPRCxHQUFHLENBQUNDLElBQUQsQ0FBVjtBQUNBO0FBSmtDLEtBQTdCLENBQVA7QUFNQTtBQWZpQyxDQUFwQixDQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgUmF3U3RyaW5ncyBmcm9tIFwiLi4vZGF0YS9zdHJpbmdzXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBGb3JtYXR0YWJsZVN0cmluZyBmcm9tIFwiLi4vc3RydWN0cy9zdHJpbmdcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcblxyXG5jb25zdCB7RGlzcGF0Y2hlciwgRGlzY29yZENvbnN0YW50cywgVXNlclNldHRpbmdzU3RvcmV9ID0gRGlzY29yZE1vZHVsZXM7XHJcbmNvbnN0IE1lc3NhZ2VzID0ge307XHJcblxyXG5jb25zdCBkaXNjb3JkTG9jYWxlID0gVXNlclNldHRpbmdzU3RvcmUubG9jYWxlLnNwbGl0KFwiLVwiKVswXTtcclxuXHJcbmV4cG9ydCBsZXQgY3VycmVudExvY2FsZSA9IFwiZW5cIjtcclxuZXhwb3J0IGZ1bmN0aW9uIHNldExvY2FsZShuZXdMb2NhbGUpIHtcclxuICAgIGN1cnJlbnRMb2NhbGUgPSBuZXdMb2NhbGU7XHJcblx0VXRpbGl0aWVzLmV4dGVuZChNZXNzYWdlcywgUmF3U3RyaW5nc1tjdXJyZW50TG9jYWxlXSk7XHJcblx0RXZlbnRzLmVtaXQoXCJzdHJpbmdzLXVwZGF0ZWRcIik7XHJcblx0Y29uc29sZS5sb2coXCJDaGFuZ2VkIHRvIFwiICsgbmV3TG9jYWxlKTtcclxufVxyXG5cclxuVXRpbGl0aWVzLmV4dGVuZChNZXNzYWdlcywgUmF3U3RyaW5nc1tjdXJyZW50TG9jYWxlXSk7XHJcblxyXG5pZiAoUmF3U3RyaW5nc1tkaXNjb3JkTG9jYWxlXSAmJiBkaXNjb3JkTG9jYWxlICE9IFwiZW5cIikgc2V0TG9jYWxlKGRpc2NvcmRMb2NhbGUpO1xyXG5cclxuRGlzcGF0Y2hlci5zdWJzY3JpYmUoRGlzY29yZENvbnN0YW50cy5BY3Rpb25UeXBlcy5VU0VSX1NFVFRJTkdTX1VQREFURSwgKHtzZXR0aW5nc30pID0+IHtcclxuICAgIGNvbnN0IG5ld0xvY2FsZSA9IHNldHRpbmdzLmxvY2FsZTtcclxuICAgIGlmIChuZXdMb2NhbGUgJiYgbmV3TG9jYWxlICE9IGN1cnJlbnRMb2NhbGUpIHNldExvY2FsZShuZXdMb2NhbGUuc3BsaXQoXCItXCIpWzBdKTtcclxufSk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgUHJveHkoTWVzc2FnZXMsIHtcclxuXHRnZXQ6IGZ1bmN0aW9uKHN0cmluZ3MsIGNhdGVnb3J5KSB7XHJcbiAgICAgICAgaWYgKCFzdHJpbmdzLmhhc093blByb3BlcnR5KGNhdGVnb3J5KSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb3h5KHt9LCB7XHJcblx0XHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdHJldHVybiBgU3RyaW5nIGdyb3VwIFwiJHtjYXRlZ29yeX1cIiBub3QgZm91bmQuYDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG5ldyBQcm94eShzdHJpbmdzW2NhdGVnb3J5XSwge1xyXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xyXG5cdFx0XHRcdGlmICh0eXBlb2Yob2JqW3Byb3BdKSA9PSBcInN0cmluZ1wiKSByZXR1cm4gbmV3IEZvcm1hdHRhYmxlU3RyaW5nKG9ialtwcm9wXSk7XHJcblx0XHRcdFx0cmV0dXJuIG9ialtwcm9wXTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59KTtcclxuXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n"); /***/ }), @@ -839,7 +839,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_contentlist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/contentlist */ \"./src/ui/settings/contentlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/title */ \"./src/ui/settings/title.jsx\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsRenderer {\n constructor() {\n this.patchSections();\n }\n\n buildSettingsPanel(title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(title, config, onChange, button);\n }\n\n getSettingsPanel(title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object.assign({}, section, {\n onChange\n }));\n })];\n }\n\n getContentPanel(title, contentList, contentState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_contentlist__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, {\n title: title,\n contentList: contentList,\n contentState: contentState\n }, options));\n }\n\n get attribution() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-version\",\n style: {\n fontSize: \"12px\",\n fontWeight: \"600\",\n color: \"#72767d\",\n padding: \"2px 10px\"\n }\n }, `BBD v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} by `, modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"a\", {\n href: \"https://github.com/rauenzi/\",\n target: \"_blank\"\n }, \"Zerebos\"));\n }\n\n async patchSections() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Patcher\"].after(\"SettingsManager\", modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"FluxContainer(GuildSettings)\").prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.memoizedProps.id = \"guild-settings\";\n });\n const UserSettings = await modules__WEBPACK_IMPORTED_MODULE_1__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = \"user-settings\";\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"generateSections\", (thisObject, args, returnValue) => {\n let location = returnValue.findIndex(s => s.section.toLowerCase() == \"linux\") + 1;\n\n const insert = section => {\n returnValue.splice(location, 0, section);\n location++;\n };\n\n insert({\n section: \"DIVIDER\"\n });\n insert({\n section: \"HEADER\",\n label: \"BandagedBD\"\n });\n\n for (const collection of modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].collections) {\n if (collection.disabled) continue;\n insert({\n section: collection.name,\n label: collection.name,\n element: () => this.buildSettingsPanel(collection.name, collection.settings, modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].state[collection.id], modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].onSettingChange.bind(modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].panels.sort((a, b) => a.order > b.order)) {\n if (panel.clickListener) panel.onClick = event => panel.clickListener(thisObject, event, returnValue);\n insert(panel);\n }\n\n insert({\n section: \"CUSTOM\",\n element: () => this.attribution\n });\n });\n this.forceUpdate();\n }\n\n forceUpdate() {\n const viewClass = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getReactInstance(node).return.return.return.return.return.return.stateNode.forceUpdate();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzLmpzPzc2YmUiXSwibmFtZXMiOlsiU2V0dGluZ3NSZW5kZXJlciIsImNvbnN0cnVjdG9yIiwicGF0Y2hTZWN0aW9ucyIsImJ1aWxkU2V0dGluZ3NQYW5lbCIsInRpdGxlIiwiY29uZmlnIiwic3RhdGUiLCJvbkNoYW5nZSIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJpZCIsImdldFNldHRpbmdzUGFuZWwiLCJncm91cHMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJTZXR0aW5nc1RpdGxlIiwidGV4dCIsIm1hcCIsIlNldHRpbmdzR3JvdXAiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb250ZW50UGFuZWwiLCJjb250ZW50TGlzdCIsImNvbnRlbnRTdGF0ZSIsIm9wdGlvbnMiLCJDb250ZW50TGlzdCIsImF0dHJpYnV0aW9uIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsInBhZGRpbmciLCJDb25maWciLCJiYmRWZXJzaW9uIiwiaHJlZiIsInRhcmdldCIsIlBhdGNoZXIiLCJhZnRlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwicmV0dXJuIiwibWVtb2l6ZWRQcm9wcyIsIlVzZXJTZXR0aW5ncyIsIlJlYWN0Q29tcG9uZW50cyIsImdldCIsIm0iLCJnZW5lcmF0ZVNlY3Rpb25zIiwiYXJncyIsInJldHVyblZhbHVlIiwibG9jYXRpb24iLCJmaW5kSW5kZXgiLCJzIiwidG9Mb3dlckNhc2UiLCJpbnNlcnQiLCJzcGxpY2UiLCJsYWJlbCIsImNvbGxlY3Rpb24iLCJTZXR0aW5ncyIsImNvbGxlY3Rpb25zIiwiZGlzYWJsZWQiLCJuYW1lIiwiZWxlbWVudCIsIm9uU2V0dGluZ0NoYW5nZSIsImJpbmQiLCJwYW5lbCIsInBhbmVscyIsInNvcnQiLCJhIiwiYiIsIm9yZGVyIiwiY2xpY2tMaXN0ZW5lciIsIm9uQ2xpY2siLCJldmVudCIsImZvcmNlVXBkYXRlIiwidmlld0NsYXNzIiwiZ2V0QnlQcm9wcyIsInN0YW5kYXJkU2lkZWJhclZpZXciLCJzcGxpdCIsIm5vZGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJVdGlsaXRpZXMiLCJnZXRSZWFjdEluc3RhbmNlIiwic3RhdGVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRWUsbUVBQUksTUFBTUEsZ0JBQU4sQ0FBdUI7QUFFdENDLGFBQVcsR0FBRztBQUNWLFNBQUtDLGFBQUw7QUFDSDs7QUFFREMsb0JBQWtCLENBQUNDLEtBQUQsRUFBUUMsTUFBUixFQUFnQkMsS0FBaEIsRUFBdUJDLFFBQXZCLEVBQWlDQyxNQUFNLEdBQUcsSUFBMUMsRUFBZ0Q7QUFDOURILFVBQU0sQ0FBQ0ksT0FBUCxDQUFlQyxPQUFPLElBQUk7QUFDdEJBLGFBQU8sQ0FBQ0MsUUFBUixDQUFpQkYsT0FBakIsQ0FBeUJHLElBQUksSUFBSUEsSUFBSSxDQUFDQyxLQUFMLEdBQWFQLEtBQUssQ0FBQ0ksT0FBTyxDQUFDSSxFQUFULENBQUwsQ0FBa0JGLElBQUksQ0FBQ0UsRUFBdkIsQ0FBOUM7QUFDSCxLQUZEO0FBR0EsV0FBTyxLQUFLQyxnQkFBTCxDQUFzQlgsS0FBdEIsRUFBNkJDLE1BQTdCLEVBQXFDRSxRQUFyQyxFQUErQ0MsTUFBL0MsQ0FBUDtBQUNIOztBQUVETyxrQkFBZ0IsQ0FBQ1gsS0FBRCxFQUFRWSxNQUFSLEVBQWdCVCxRQUFoQixFQUEwQkMsTUFBTSxHQUFHLElBQW5DLEVBQXlDO0FBQ3JELFdBQU8sQ0FBQ1MsNkNBQUssQ0FBQ0MsYUFBTixDQUFvQkMsdURBQXBCLEVBQW1DO0FBQUNDLFVBQUksRUFBRWhCLEtBQVA7QUFBY0ksWUFBTSxFQUFFQTtB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Q00sYUFBTixDQUFvQmhDLFVBQXBCLEVBQWdDa0MsS0FBaEMsRUFBdUN4QixXQUF2QyxDQUEzQjtBQUN6QkssY0FBTSxDQUFDVyxLQUFELENBQU47QUFDSDs7QUFDRFgsWUFBTSxDQUFDO0FBQUNuRCxlQUFPLEVBQUUsUUFBVjtBQUFvQjJELGVBQU8sRUFBRSxNQUFNLEtBQUt2QztBQUF4QyxPQUFELENBQU47QUFDSCxLQXJCRDtBQXNCQSxTQUFLbUQsV0FBTDtBQUNIOztBQUVEQSxhQUFXLEdBQUc7QUFDVixVQUFNQyxTQUFTLEdBQUd2QyxzREFBYyxDQUFDd0MsVUFBZixDQUEwQixxQkFBMUIsRUFBaURDLG1CQUFqRCxDQUFxRUMsS0FBckUsQ0FBMkUsR0FBM0UsRUFBZ0YsQ0FBaEYsQ0FBbEI7QUFDQSxVQUFNQyxJQUFJLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF3QixJQUFHTixTQUFVLEVBQXJDLENBQWI7QUFDQU8scURBQVMsQ0FBQ0MsZ0JBQVYsQ0FBMkJKLElBQTNCLEVBQWlDdEMsTUFBakMsQ0FBd0NBLE1BQXhDLENBQStDQSxNQUEvQyxDQUFzREEsTUFBdEQsQ0FBNkRBLE1BQTdELENBQW9FQSxNQUFwRSxDQUEyRTJDLFNBQTNFLENBQXFGVixXQUFyRjtBQUNIOztBQXZFcUMsQ0FBM0IsRUFBZiIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlcywgUGF0Y2hlciwgUmVhY3RDb21wb25lbnRzLCBVdGlsaXRpZXMsIFNldHRpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IENvbnRlbnRMaXN0IGZyb20gXCIuL3NldHRpbmdzL2NvbnRlbnRsaXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzL2dyb3VwXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzL3RpdGxlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgU2V0dGluZ3NSZW5kZXJlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5wYXRjaFNlY3Rpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRTZXR0aW5nc1BhbmVsKHRpdGxlLCBjb25maWcsIHN0YXRlLCBvbkNoYW5nZSwgYnV0dG9uID0gbnVsbCkge1xyXG4gICAgICAgIGNvbmZpZy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICBzZWN0aW9uLnNldHRpbmdzLmZvckVhY2goaXRlbSA9PiBpdGVtLnZhbHVlID0gc3RhdGVbc2VjdGlvbi5pZF1baXRlbS5pZF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNldHRpbmdzUGFuZWwodGl0bGUsIGNvbmZpZywgb25DaGFuZ2UsIGJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZ3NQYW5lbCh0aXRsZSwgZ3JvdXBzLCBvbkNoYW5nZSwgYnV0dG9uID0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBbUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1RpdGxlLCB7dGV4dDogdGl0bGUsIGJ1dHRvbjogYnV0dG9ufSksIGdyb3Vwcy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzR3JvdXAsIE9iamVjdC5hc3NpZ24oe30sIHNlY3Rpb24sIHtvbkNoYW5nZX0pKTtcclxuICAgICAgICB9KV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29udGVudFBhbmVsKHRpdGxlLCBjb250ZW50TGlzdCwgY29udGVudFN0YXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZW50TGlzdCwgT2JqZWN0LmFzc2lnbih7fSwge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIGNvbnRlbnRMaXN0OiBjb250ZW50TGlzdCxcclxuICAgICAgICAgICAgY29udGVudFN0YXRlOiBjb250ZW50U3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGF0dHJpYnV0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmQtdmVyc2lvblwiLCBzdHlsZToge2ZvbnRTaXplOiBcIjEycHhcIiwgZm9udFdlaWdodDogXCI2MDBcIiwgY29sb3I6IFwiIzcyNzY3ZFwiLCBwYWRkaW5nOiBcIjJweCAxMHB4XCJ9fSxcclxuICAgICAgICAgICAgYEJCRCB2JHtDb25maWcuYmJkVmVyc2lvbn0gYnkgYCxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIFwiWmVyZWJvc1wiKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGF0Y2hTZWN0aW9ucygpIHtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJGbHV4Q29udGFpbmVyKEd1aWxkU2V0dGluZ3MpXCIpLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpc09iamVjdC5fcmVhY3RJbnRlcm5hbEZpYmVyLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcImd1aWxkLXNldHRpbmdzXCI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgVXNlclNldHRpbmdzID0gYXdhaXQgUmVhY3RDb21wb25lbnRzLmdldChcIlVzZXJTZXR0aW5nc1wiLCBtID0+IG0ucHJvdG90eXBlICYmIG0ucHJvdG90eXBlLmdlbmVyYXRlU2VjdGlvbnMpO1xyXG4gICAgICAgIFBhdGNoZXIuYWZ0ZXIoXCJTZXR0aW5nc01hbmFnZXJcIiwgVXNlclNldHRpbmdzLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpc09iamVjdC5fcmVhY3RJbnRlcm5hbEZpYmVyLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5tZW1vaXplZFByb3BzLmlkID0gXCJ1c2VyLXNldHRpbmdzXCI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcImdlbmVyYXRlU2VjdGlvbnNcIiwgKHRoaXNPYmplY3QsIGFyZ3MsIHJldHVyblZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHJldHVyblZhbHVlLmZpbmRJbmRleChzID0+IHMuc2VjdGlvbi50b0xvd2VyQ2FzZSgpID09IFwibGludXhcIikgKyAxO1xyXG4gICAgICAgICAgICBjb25zdCBpbnNlcnQgPSAoc2VjdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc3BsaWNlKGxvY2F0aW9uLCAwLCBzZWN0aW9uKTtcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uKys7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGluc2VydCh7c2VjdGlvbjogXCJESVZJREVSXCJ9KTtcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkhFQURFUlwiLCBsYWJlbDogXCJCYW5kYWdlZEJEXCJ9KTtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIFNldHRpbmdzLmNvbGxlY3Rpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sbGVjdGlvbi5kaXNhYmxlZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBpbnNlcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlY3Rpb246IGNvbGxlY3Rpb24ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sbGVjdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6ICgpID0+IHRoaXMuYnVpbGRTZXR0aW5nc1BhbmVsKGNvbGxlY3Rpb24ubmFtZSwgY29sbGVjdGlvbi5zZXR0aW5ncywgU2V0dGluZ3Muc3RhdGVbY29sbGVjdGlvbi5pZF0sIFNldHRpbmdzLm9uU2V0dGluZ0NoYW5nZS5iaW5kKFNldHRpbmdzLCBjb2xsZWN0aW9uLmlkKSwgY29sbGVjdGlvbi5idXR0b24gPyBjb2xsZWN0aW9uLmJ1dHRvbiA6IG51bGwpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhbmVsIG9mIFNldHRpbmdzLnBhbmVscy5zb3J0KChhLGIpID0+IGEub3JkZXIgPiBiLm9yZGVyKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhbmVsLmNsaWNrTGlzdGVuZXIpIHBhbmVsLm9uQ2xpY2sgPSAoZXZlbnQpID0+IHBhbmVsLmNsaWNrTGlzdGVuZXIodGhpc09iamVjdCwgZXZlbnQsIHJldHVyblZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGluc2VydChwYW5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkNVU1RPTVwiLCBlbGVtZW50OiAoKSA9PiB0aGlzLmF0dHJpYnV0aW9ufSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcmNlVXBkYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IHZpZXdDbGFzcyA9IFdlYnBhY2tNb2R1bGVzLmdldEJ5UHJvcHMoXCJzdGFuZGFyZFNpZGViYXJWaWV3XCIpLnN0YW5kYXJkU2lkZWJhclZpZXcuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAuJHt2aWV3Q2xhc3N9YCk7XHJcbiAgICAgICAgVXRpbGl0aWVzLmdldFJlYWN0SW5zdGFuY2Uobm9kZSkucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4uc3RhdGVOb2RlLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! modules */ \"./src/modules/modules.js\");\n/* harmony import */ var _settings_contentlist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./settings/contentlist */ \"./src/ui/settings/contentlist.jsx\");\n/* harmony import */ var _settings_group__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./settings/group */ \"./src/ui/settings/group.jsx\");\n/* harmony import */ var _settings_title__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./settings/title */ \"./src/ui/settings/title.jsx\");\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class SettingsRenderer {\n constructor() {\n this.patchSections();\n }\n\n buildSettingsPanel(title, config, state, onChange, button = null) {\n config.forEach(section => {\n section.settings.forEach(item => item.value = state[section.id][item.id]);\n });\n return this.getSettingsPanel(title, config, onChange, button);\n }\n\n getSettingsPanel(title, groups, onChange, button = null) {\n return [modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_title__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n text: title,\n button: button\n }), groups.map(section => {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_group__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object.assign({}, section, {\n onChange\n }));\n })];\n }\n\n getContentPanel(title, contentList, contentState, options = {}) {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(_settings_contentlist__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({}, {\n title: title,\n contentList: contentList,\n contentState: contentState\n }, options));\n }\n\n get attribution() {\n return modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"div\", {\n className: \"bd-version\",\n style: {\n fontSize: \"12px\",\n fontWeight: \"600\",\n color: \"#72767d\",\n padding: \"2px 10px\"\n }\n }, `BBD v${data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].bbdVersion} by `, modules__WEBPACK_IMPORTED_MODULE_1__[\"React\"].createElement(\"a\", {\n href: \"https://github.com/rauenzi/\",\n target: \"_blank\"\n }, \"Zerebos\"));\n }\n\n async patchSections() {\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Patcher\"].after(\"SettingsManager\", modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByDisplayName(\"FluxContainer(GuildSettings)\").prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.memoizedProps.id = \"guild-settings\";\n });\n console.log(\"getting user settings\");\n const UserSettings = await modules__WEBPACK_IMPORTED_MODULE_1__[\"ReactComponents\"].get(\"UserSettings\", m => m.prototype && m.prototype.generateSections);\n console.log(\"got 'em\");\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"render\", thisObject => {\n thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = \"user-settings\";\n });\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Patcher\"].after(\"SettingsManager\", UserSettings.prototype, \"generateSections\", (thisObject, args, returnValue) => {\n let location = returnValue.findIndex(s => s.section.toLowerCase() == \"linux\") + 1;\n\n const insert = section => {\n returnValue.splice(location, 0, section);\n location++;\n };\n\n insert({\n section: \"DIVIDER\"\n });\n insert({\n section: \"HEADER\",\n label: \"BandagedBD\"\n });\n\n for (const collection of modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].collections) {\n if (collection.disabled) continue;\n insert({\n section: collection.name,\n label: collection.name,\n element: () => this.buildSettingsPanel(collection.name, collection.settings, modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].state[collection.id], modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].onSettingChange.bind(modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"], collection.id), collection.button ? collection.button : null)\n });\n }\n\n for (const panel of modules__WEBPACK_IMPORTED_MODULE_1__[\"Settings\"].panels.sort((a, b) => a.order > b.order)) {\n if (panel.clickListener) panel.onClick = event => panel.clickListener(thisObject, event, returnValue);\n insert(panel);\n }\n\n insert({\n section: \"CUSTOM\",\n element: () => this.attribution\n });\n });\n this.forceUpdate();\n }\n\n forceUpdate() {\n const viewClass = modules__WEBPACK_IMPORTED_MODULE_1__[\"WebpackModules\"].getByProps(\"standardSidebarView\").standardSidebarView.split(\" \")[0];\n const node = document.querySelector(`.${viewClass}`);\n modules__WEBPACK_IMPORTED_MODULE_1__[\"Utilities\"].getReactInstance(node).return.return.return.return.return.return.stateNode.forceUpdate();\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL3VpL3NldHRpbmdzLmpzPzc2YmUiXSwibmFtZXMiOlsiU2V0dGluZ3NSZW5kZXJlciIsImNvbnN0cnVjdG9yIiwicGF0Y2hTZWN0aW9ucyIsImJ1aWxkU2V0dGluZ3NQYW5lbCIsInRpdGxlIiwiY29uZmlnIiwic3RhdGUiLCJvbkNoYW5nZSIsImJ1dHRvbiIsImZvckVhY2giLCJzZWN0aW9uIiwic2V0dGluZ3MiLCJpdGVtIiwidmFsdWUiLCJpZCIsImdldFNldHRpbmdzUGFuZWwiLCJncm91cHMiLCJSZWFjdCIsImNyZWF0ZUVsZW1lbnQiLCJTZXR0aW5nc1RpdGxlIiwidGV4dCIsIm1hcCIsIlNldHRpbmdzR3JvdXAiLCJPYmplY3QiLCJhc3NpZ24iLCJnZXRDb250ZW50UGFuZWwiLCJjb250ZW50TGlzdCIsImNvbnRlbnRTdGF0ZSIsIm9wdGlvbnMiLCJDb250ZW50TGlzdCIsImF0dHJpYnV0aW9uIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsInBhZGRpbmciLCJDb25maWciLCJiYmRWZXJzaW9uIiwiaHJlZiIsInRhcmdldCIsIlBhdGNoZXIiLCJhZnRlciIsIldlYnBhY2tNb2R1bGVzIiwiZ2V0QnlEaXNwbGF5TmFtZSIsInByb3RvdHlwZSIsInRoaXNPYmplY3QiLCJfcmVhY3RJbnRlcm5hbEZpYmVyIiwicmV0dXJuIiwibWVtb2l6ZWRQcm9wcyIsImNvbnNvbGUiLCJsb2ciLCJVc2VyU2V0dGluZ3MiLCJSZWFjdENvbXBvbmVudHMiLCJnZXQiLCJtIiwiZ2VuZXJhdGVTZWN0aW9ucyIsImFyZ3MiLCJyZXR1cm5WYWx1ZSIsImxvY2F0aW9uIiwiZmluZEluZGV4IiwicyIsInRvTG93ZXJDYXNlIiwiaW5zZXJ0Iiwic3BsaWNlIiwibGFiZWwiLCJjb2xsZWN0aW9uIiwiU2V0dGluZ3MiLCJjb2xsZWN0aW9ucyIsImRpc2FibGVkIiwibmFtZSIsImVsZW1lbnQiLCJvblNldHRpbmdDaGFuZ2UiLCJiaW5kIiwicGFuZWwiLCJwYW5lbHMiLCJzb3J0IiwiYSIsImIiLCJvcmRlciIsImNsaWNrTGlzdGVuZXIiLCJvbkNsaWNrIiwiZXZlbnQiLCJmb3JjZVVwZGF0ZSIsInZpZXdDbGFzcyIsImdldEJ5UHJvcHMiLCJzdGFuZGFyZFNpZGViYXJWaWV3Iiwic3BsaXQiLCJub2RlIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiVXRpbGl0aWVzIiwiZ2V0UmVhY3RJbnN0YW5jZSIsInN0YXRlTm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVlLG1FQUFJLE1BQU1BLGdCQUFOLENBQXVCO0FBRXRDQyxhQUFXLEdBQUc7QUFDVixTQUFLQyxhQUFMO0FBQ0g7O0FBRURDLG9CQUFrQixDQUFDQyxLQUFELEVBQVFDLE1BQVIsRUFBZ0JDLEtBQWhCLEVBQXVCQyxRQUF2QixFQUFpQ0MsTUFBTSxHQUFHLElBQTFDLEVBQWdEO0FBQzlESCxVQUFNLENBQUNJLE9BQVAsQ0FBZUMsT0FBTyxJQUFJO0FBQ3RCQSxhQUFPLENBQUNDLFFBQVIsQ0FBaUJGLE9BQWpCLENBQXlCRyxJQUFJLElBQUlBLElBQUksQ0FBQ0MsS0FBTCxHQUFhUCxLQUFLLENBQUNJLE9BQU8sQ0FBQ0ksRUFBVCxDQUFMLENBQWtCRixJQUFJLENBQUNFLEVBQXZCLENBQTlDO0FBQ0gsS0FGRDtBQUdBLFdBQU8sS0FBS0MsZ0JBQUwsQ0FBc0JYLEtBQXRCLEVBQTZCQyxNQUE3QixFQUFxQ0UsUUFBckMsRUFBK0NDLE1BQS9DLENBQVA7QUFDSDs7QUFFRE8sa0JBQWdCLENBQUNYLEtBQUQsRUFBUVksTUFBUixFQUFnQlQsUUFBaEIsRUFBMEJDLE1BQU0sR0FBRyxJQUFuQyxFQUF5QztBQUNyRCxXQUFPLENBQUNTLDZDQUFLLENBQUNDLGFBQU4sQ0FBb0JDLHVEQUFwQixFQUFtQztBQUFDQyxVQUFJLEVBQUVoQixLQUFQO0FBQWNJLFlBQU0sRUFBRUE7QUFBdEIsS0FBbkMsQ0FBRCxFQUFvRVEsTUFBTSxDQUFDSyxHQUFQLENBQVdYLE9BQU8sSUFBSTtBQUM3RixhQUFPTyw2Q0FBSyxDQUFDQyxhQUFOLENBQW9CSSx1REFBcEIsRUFBbUNDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLEVBQWQsRUFBa0JkLE9BQWxCLEVBQTJCO0FBQUNIO0FBQUQsT0FBM0IsQ0FBbkMsQ0FBUDtBQUNILEtBRjBFLENBQXBFLENBQVA7QUFHSDs7QUFFRGtCLGlCQUFlLENBQUNyQixLQUFELEVBQVFzQixXQUFSLEVBQXFCQyxZQUFyQixFQUFtQ0MsT0FBTyxHQUFHLEVBQTdDLEVBQWlEO0FBQzVELFdBQU9YLDZDQUFLLENBQUNDLGFBQU4sQ0FBb0JXLDZEQUFwQixFQUFpQ04sTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQjtBQUN0RHBCLFdBQUssRUFBRUEsS0FEK0M7QUFFdERzQixpQkFBVyxFQUFFQSxXQUZ5QztBQUd0REMsa0JBQVksRUFBRUE7QUFId0MsS0FBbEIsRUFJckNDLE9BSnFDLENBQWpDLENBQVA7QUFLSDs7QUFFRCxNQUFJRSxXQUFKLEdBQWtCO0FBQ2QsV0FBT2IsNkNBQUssQ0FBQ0MsYUFBTixDQUFvQixLQUFwQixFQUEyQjtBQUFDYSxlQUFTLEVBQUUsWUFBWjtBQUEwQkMsV0FBSyxFQUFFO0FBQUNDLGdCQUFRLEVBQUUsTUFBWDtBQUFtQkMsa0JBQVUsRUFBRSxLQUEvQjtBQUFzQ0MsYUFBSyxFQUFFLFNBQTdDO0FBQXdEQyxlQUFPLEVBQUU7QUFBakU7QUFBakMsS0FBM0IsRUFDRixRQUFPQywyQ0FBTSxDQUFDQyxVQUFXLE1BRHZCLEVBRUhyQiw2Q0FBSyxDQUFDQyxhQUFOLENBQW9CLEdBQXBCLEVBQXlCO0FBQUNxQixVQUFJLEVBQUUsNkJBQVA7QUFBc0NDLFlBQU0sRUFBRTtBQUE5QyxLQUF6QixFQUFrRixTQUFsRixDQUZHLENBQVA7QUFJSDs7QUFFRCxRQUFNdEMsYUFBTixHQUFzQjtBQUNsQnVDLG1EQUFPLENBQUNDLEtBQVIsQ0FBYyxpQkFBZCxFQUFpQ0Msc0RBQWMsQ0FBQ0MsZ0JBQWYsQ0FBZ0MsOEJBQWhDLEVBQWdFQyxTQUFqRyxFQUE0RyxRQUE1RyxFQUF1SEMsVUFBRCxJQUFnQjtBQUNsSUEsZ0JBQVUsQ0FBQ0MsbUJBQVgsQ0FBK0JDLE1BQS9CLENBQXNDQSxNQUF0QyxDQUE2Q0EsTUFBN0MsQ0FBb0RBLE1BQXBELENBQTJEQSxNQUEzRCxDQUFrRUEsTUFBbEUsQ0FBeUVDLGFBQXpFLENBQXVGbkMsRUFBdkYsR0FBNEYsZ0JBQTVGO0FBQ0gsS0FGRDtBQUdBb0MsV0FBTyxDQUFDQyxHQUFSLENBQVksdUJBQVo7QUFDQSxVQUFNQyxZQUFZLEdBQUcsTUFBTUMsdURBQWUsQ0FBQ0MsR0FBaEIsQ0FBb0IsY0FBcEIsRUFBb0NDLENBQUMsSUFBSUEsQ0FBQyxDQUFDVixTQUFGLElBQWVVLENBQUMsQ0FBQ1YsU0FBRixDQUFZVyxnQkFBcEUsQ0FBM0I7QUFDQU4sV0FBTyxDQUFDQyxHQUFSLENBQVksU0FBWjtBQUNBVixtREFBTyxDQUFDQyxLQUFSLENBQWMsaUJBQWQsRUFBaUNVLFlBQVksQ0FBQ1AsU0FBOUMsRUFBeUQsUUFBekQsRUFBb0VDLFVBQUQsSUFBZ0I7QUFDL0VBLGdCQUFVLENBQUNDLG1CQUFYLENBQStCQyxNQUEvQixDQUFzQ0EsTUFBdEMsQ0FBNkNBLE1BQTdDLENBQW9EQSxNQUFwRCxDQUEyREEsTUFBM0QsQ0FBa0VBLE1BQWxFLENBQXlFQSxNQUF6RSxDQUFnRkMsYUFBaEYsQ0FBOEZuQyxFQUE5RixHQUFtRyxlQUFuRztBQUNILEtBRkQ7QUFHQTJCLG1EQUFPLENBQUNDLEtBQVIsQ0FBYyxpQkFBZCxFQUFpQ1UsWUFBWSxDQUFDUCxTQUE5QyxFQUF5RCxrQkFBekQsRUFBNkUsQ0FBQ0MsVUFBRCxFQUFhVyxJQUFiLEVBQW1CQyxXQUFuQixLQUFtQztBQUM1RyxVQUFJQyxRQUFRLEdBQUdELFdBQVcsQ0FBQ0UsU0FBWixDQUFzQkMsQ0FBQyxJQUFJQSxDQUFDLENBQUNuRCxPQUFGLENBQVVvRCxXQUFWLE1BQTJCLE9BQXRELElBQWlFLENBQWhGOztBQUNBLFlBQU1DLE1BQU0sR0FBSXJELE9BQUQsSUFBYTtBQUN4QmdELG1CQUFXLENBQUNNLE1BQVosQ0FBbUJMLFFBQW5CLEVBQTZCLENBQTdCLEVBQWdDakQsT0FBaEM7QUFDQWlELGdCQUFRO0FBQ1gsT0FIRDs7QUFJQUksWUFBTSxDQUFDO0FBQUNyRCxlQUFPLEVBQUU7QUFBVixPQUFELENBQU47QUFDQXFELFlBQU0sQ0FBQztBQUFDckQsZUFBTyxFQUFFLFFBQVY7QUFBb0J1RCxhQUFLLEVBQUU7QUFBM0IsT0FBRCxDQUFOOztBQUNBLFdBQUssTUFBTUMsVUFBWCxJQUF5QkMsZ0RBQVEsQ0FBQ0MsV0FBbEMsRUFBK0M7QUFDM0MsWUFBSUYsVUFBVSxDQUFDRyxRQUFmLEVBQXlCO0FBQ3pCTixjQUFNLENBQUM7QUFDSHJELGlCQUFPLEVBQUV3RCxVQUFVLENBQUNJLElBRGpCO0FBRUhMLGVBQUssRUFBRUMsVUFBVSxDQUFDSSxJQUZmO0FBR0hDLGlCQUFPLEVBQUUsTUFBTSxLQUFLcEUsa0JBQUwsQ0FBd0IrRCxVQUFVLENBQUNJLElBQW5DLEVBQXlDSixVQUFVLENBQUN2RCxRQUFwRCxFQUE4RHdELGdEQUFRLENBQUM3RCxLQUFULENBQWU0RCxVQUFVLENBQUNwRCxFQUExQixDQUE5RCxFQUE2RnFELGdEQUFRLENBQUNLLGVBQVQsQ0FBeUJDLElBQXpCLENBQThCTixnREFBOUIsRUFBd0NELFVBQVUsQ0FBQ3BELEVBQW5ELENBQTdGLEVBQXFKb0QsVUFBVSxDQUFDMUQsTUFBWCxHQUFvQjBELFVBQVUsQ0FBQzFELE1BQS9CLEdBQXdDLElBQTdMO0FBSFosU0FBRCxDQUFOO0FBS0g7O0FBQ0QsV0FBSyxNQUFNa0UsS0FBWCxJQUFvQlAsZ0RBQVEsQ0FBQ1EsTUFBVCxDQUFnQkMsSUFBaEIsQ0FBcUIsQ0FBQ0MsQ0FBRCxFQUFHQyxDQUFILEtBQVNELENBQUMsQ0FBQ0UsS0FBRixHQUFVRCxDQUFDLENBQUNDLEtBQTFDLENBQXBCLEVBQXNFO0FBQ2xFLFlBQUlMLEtBQUssQ0FBQ00sYUFBVixFQUF5Qk4sS0FBSyxDQUFDTyxPQUFOLEdBQWlCQyxLQUFELElBQVdSLEtBQUssQ0FBQ00sYUFBTixDQUFvQmxDLFVBQXBCLEVBQWdDb0MsS0FBaEMsRUFBdUN4QixXQUF2QyxDQUEzQjtBQUN6QkssY0FBTSxDQUFDVyxLQUFELENBQU47QUFDSDs7QUFDRFgsWUFBTSxDQUFDO0FBQUNyRCxlQUFPLEVBQUUsUUFBVjtBQUFvQjZELGVBQU8sRUFBRSxNQUFNLEtBQUt6QztBQUF4QyxPQUFELENBQU47QUFDSCxLQXJCRDtBQXNCQSxTQUFLcUQsV0FBTDtBQUNIOztBQUVEQSxhQUFXLEdBQUc7QUFDVixVQUFNQyxTQUFTLEdBQUd6QyxzREFBYyxDQUFDMEMsVUFBZixDQUEwQixxQkFBMUIsRUFBaURDLG1CQUFqRCxDQUFxRUMsS0FBckUsQ0FBMkUsR0FBM0UsRUFBZ0YsQ0FBaEYsQ0FBbEI7QUFDQSxVQUFNQyxJQUFJLEdBQUdDLFFBQVEsQ0FBQ0MsYUFBVCxDQUF3QixJQUFHTixTQUFVLEVBQXJDLENBQWI7QUFDQU8scURBQVMsQ0FBQ0MsZ0JBQVYsQ0FBMkJKLElBQTNCLEVBQWlDeEMsTUFBakMsQ0FBd0NBLE1BQXhDLENBQStDQSxNQUEvQyxDQUFzREEsTUFBdEQsQ0FBNkRBLE1BQTdELENBQW9FQSxNQUFwRSxDQUEyRTZDLFNBQTNFLENBQXFGVixXQUFyRjtBQUNIOztBQXpFcUMsQ0FBM0IsRUFBZiIsImZpbGUiOiIuL3NyYy91aS9zZXR0aW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tIFwiZGF0YVwiO1xyXG5pbXBvcnQge1JlYWN0LCBXZWJwYWNrTW9kdWxlcywgUGF0Y2hlciwgUmVhY3RDb21wb25lbnRzLCBVdGlsaXRpZXMsIFNldHRpbmdzfSBmcm9tIFwibW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IENvbnRlbnRMaXN0IGZyb20gXCIuL3NldHRpbmdzL2NvbnRlbnRsaXN0XCI7XHJcbmltcG9ydCBTZXR0aW5nc0dyb3VwIGZyb20gXCIuL3NldHRpbmdzL2dyb3VwXCI7XHJcbmltcG9ydCBTZXR0aW5nc1RpdGxlIGZyb20gXCIuL3NldHRpbmdzL3RpdGxlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgU2V0dGluZ3NSZW5kZXJlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5wYXRjaFNlY3Rpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYnVpbGRTZXR0aW5nc1BhbmVsKHRpdGxlLCBjb25maWcsIHN0YXRlLCBvbkNoYW5nZSwgYnV0dG9uID0gbnVsbCkge1xyXG4gICAgICAgIGNvbmZpZy5mb3JFYWNoKHNlY3Rpb24gPT4ge1xyXG4gICAgICAgICAgICBzZWN0aW9uLnNldHRpbmdzLmZvckVhY2goaXRlbSA9PiBpdGVtLnZhbHVlID0gc3RhdGVbc2VjdGlvbi5pZF1baXRlbS5pZF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldFNldHRpbmdzUGFuZWwodGl0bGUsIGNvbmZpZywgb25DaGFuZ2UsIGJ1dHRvbik7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2V0dGluZ3NQYW5lbCh0aXRsZSwgZ3JvdXBzLCBvbkNoYW5nZSwgYnV0dG9uID0gbnVsbCkge1xyXG4gICAgICAgIHJldHVybiBbUmVhY3QuY3JlYXRlRWxlbWVudChTZXR0aW5nc1RpdGxlLCB7dGV4dDogdGl0bGUsIGJ1dHRvbjogYnV0dG9ufSksIGdyb3Vwcy5tYXAoc2VjdGlvbiA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFNldHRpbmdzR3JvdXAsIE9iamVjdC5hc3NpZ24oe30sIHNlY3Rpb24sIHtvbkNoYW5nZX0pKTtcclxuICAgICAgICB9KV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Q29udGVudFBhbmVsKHRpdGxlLCBjb250ZW50TGlzdCwgY29udGVudFN0YXRlLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChDb250ZW50TGlzdCwgT2JqZWN0LmFzc2lnbih7fSwge1xyXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgIGNvbnRlbnRMaXN0OiBjb250ZW50TGlzdCxcclxuICAgICAgICAgICAgY29udGVudFN0YXRlOiBjb250ZW50U3RhdGVcclxuICAgICAgICB9LCBvcHRpb25zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGF0dHJpYnV0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtjbGFzc05hbWU6IFwiYmQtdmVyc2lvblwiLCBzdHlsZToge2ZvbnRTaXplOiBcIjEycHhcIiwgZm9udFdlaWdodDogXCI2MDBcIiwgY29sb3I6IFwiIzcyNzY3ZFwiLCBwYWRkaW5nOiBcIjJweCAxMHB4XCJ9fSxcclxuICAgICAgICAgICAgYEJCRCB2JHtDb25maWcuYmJkVmVyc2lvbn0gYnkgYCxcclxuICAgICAgICAgICAgUmVhY3QuY3JlYXRlRWxlbWVudChcImFcIiwge2hyZWY6IFwiaHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvXCIsIHRhcmdldDogXCJfYmxhbmtcIn0sIFwiWmVyZWJvc1wiKVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcGF0Y2hTZWN0aW9ucygpIHtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFdlYnBhY2tNb2R1bGVzLmdldEJ5RGlzcGxheU5hbWUoXCJGbHV4Q29udGFpbmVyKEd1aWxkU2V0dGluZ3MpXCIpLnByb3RvdHlwZSwgXCJyZW5kZXJcIiwgKHRoaXNPYmplY3QpID0+IHtcclxuICAgICAgICAgICAgdGhpc09iamVjdC5fcmVhY3RJbnRlcm5hbEZpYmVyLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcImd1aWxkLXNldHRpbmdzXCI7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJnZXR0aW5nIHVzZXIgc2V0dGluZ3NcIilcclxuICAgICAgICBjb25zdCBVc2VyU2V0dGluZ3MgPSBhd2FpdCBSZWFjdENvbXBvbmVudHMuZ2V0KFwiVXNlclNldHRpbmdzXCIsIG0gPT4gbS5wcm90b3R5cGUgJiYgbS5wcm90b3R5cGUuZ2VuZXJhdGVTZWN0aW9ucyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJnb3QgJ2VtXCIpXHJcbiAgICAgICAgUGF0Y2hlci5hZnRlcihcIlNldHRpbmdzTWFuYWdlclwiLCBVc2VyU2V0dGluZ3MucHJvdG90eXBlLCBcInJlbmRlclwiLCAodGhpc09iamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzT2JqZWN0Ll9yZWFjdEludGVybmFsRmliZXIucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLm1lbW9pemVkUHJvcHMuaWQgPSBcInVzZXItc2V0dGluZ3NcIjtcclxuICAgICAgICB9KTtcclxuICAgICAgICBQYXRjaGVyLmFmdGVyKFwiU2V0dGluZ3NNYW5hZ2VyXCIsIFVzZXJTZXR0aW5ncy5wcm90b3R5cGUsIFwiZ2VuZXJhdGVTZWN0aW9uc1wiLCAodGhpc09iamVjdCwgYXJncywgcmV0dXJuVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gcmV0dXJuVmFsdWUuZmluZEluZGV4KHMgPT4gcy5zZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT0gXCJsaW51eFwiKSArIDE7XHJcbiAgICAgICAgICAgIGNvbnN0IGluc2VydCA9IChzZWN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zcGxpY2UobG9jYXRpb24sIDAsIHNlY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgbG9jYXRpb24rKztcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgaW5zZXJ0KHtzZWN0aW9uOiBcIkRJVklERVJcIn0pO1xyXG4gICAgICAgICAgICBpbnNlcnQoe3NlY3Rpb246IFwiSEVBREVSXCIsIGxhYmVsOiBcIkJhbmRhZ2VkQkRcIn0pO1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgU2V0dGluZ3MuY29sbGVjdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjb2xsZWN0aW9uLmRpc2FibGVkKSBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGluc2VydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VjdGlvbjogY29sbGVjdGlvbi5uYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBjb2xsZWN0aW9uLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogKCkgPT4gdGhpcy5idWlsZFNldHRpbmdzUGFuZWwoY29sbGVjdGlvbi5uYW1lLCBjb2xsZWN0aW9uLnNldHRpbmdzLCBTZXR0aW5ncy5zdGF0ZVtjb2xsZWN0aW9uLmlkXSwgU2V0dGluZ3Mub25TZXR0aW5nQ2hhbmdlLmJpbmQoU2V0dGluZ3MsIGNvbGxlY3Rpb24uaWQpLCBjb2xsZWN0aW9uLmJ1dHRvbiA/IGNvbGxlY3Rpb24uYnV0dG9uIDogbnVsbClcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFuZWwgb2YgU2V0dGluZ3MucGFuZWxzLnNvcnQoKGEsYikgPT4gYS5vcmRlciA+IGIub3JkZXIpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFuZWwuY2xpY2tMaXN0ZW5lcikgcGFuZWwub25DbGljayA9IChldmVudCkgPT4gcGFuZWwuY2xpY2tMaXN0ZW5lcih0aGlzT2JqZWN0LCBldmVudCwgcmV0dXJuVmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgaW5zZXJ0KHBhbmVsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpbnNlcnQoe3NlY3Rpb246IFwiQ1VTVE9NXCIsIGVsZW1lbnQ6ICgpID0+IHRoaXMuYXR0cmlidXRpb259KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yY2VVcGRhdGUoKSB7XHJcbiAgICAgICAgY29uc3Qgdmlld0NsYXNzID0gV2VicGFja01vZHVsZXMuZ2V0QnlQcm9wcyhcInN0YW5kYXJkU2lkZWJhclZpZXdcIikuc3RhbmRhcmRTaWRlYmFyVmlldy5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYC4ke3ZpZXdDbGFzc31gKTtcclxuICAgICAgICBVdGlsaXRpZXMuZ2V0UmVhY3RJbnN0YW5jZShub2RlKS5yZXR1cm4ucmV0dXJuLnJldHVybi5yZXR1cm4ucmV0dXJuLnJldHVybi5zdGF0ZU5vZGUuZm9yY2VVcGRhdGUoKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/ui/settings.js\n"); /***/ }), diff --git a/package-lock.json b/package-lock.json index 8a8c8cea..685f4530 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2817,7 +2817,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2838,12 +2839,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2858,17 +2861,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2985,7 +2991,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2997,6 +3004,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3011,6 +3019,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3018,12 +3027,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -3042,6 +3053,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3122,7 +3134,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3134,6 +3147,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3219,7 +3233,8 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -3255,6 +3270,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -3274,6 +3290,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3317,12 +3334,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, diff --git a/src/builtins/customcss.js b/src/builtins/customcss.js index f3244d4b..cfe3224f 100644 --- a/src/builtins/customcss.js +++ b/src/builtins/customcss.js @@ -44,7 +44,7 @@ export default new class CustomCSS extends Builtin { if (this.isDetached) return; if (this.nativeOpen) this.openNative(); else if (this.startDetached) this.openDetached(); - else thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection(this.name); + else thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection(Strings.Panels.customcss); this.setSection = thisObject._reactInternalFiber.child.memoizedProps.children.props.onSetSection; } }); diff --git a/src/data/emotes/config.js b/src/data/emotes/config.js index 63975790..cf9bc8cb 100644 --- a/src/data/emotes/config.js +++ b/src/data/emotes/config.js @@ -20,7 +20,7 @@ export default [ name: "Categories", collapsible: true, settings: [ - {type: "switch", id: "", value: true}, + {type: "switch", id: "twitch", value: true}, {type: "switch", id: "ffz", value: true}, {type: "switch", id: "bttv", value: true} ] diff --git a/src/data/strings.js b/src/data/strings.js index 49123e90..efbd45db 100644 --- a/src/data/strings.js +++ b/src/data/strings.js @@ -218,7 +218,7 @@ export default { } } }, - se: { + sv: { Panels: { plugins: "Tillägg", themes: "Teman", diff --git a/src/modules/reactcomponents.js b/src/modules/reactcomponents.js index e78f0eab..57373792 100644 --- a/src/modules/reactcomponents.js +++ b/src/modules/reactcomponents.js @@ -12,7 +12,7 @@ export default new class ReactComponents { get unknown() {return unknownComponents;} get listeners() {return listeners;} - initialize() { + constructor() { this.walkReactTree(document.querySelector("#app-mount")._reactRootContainer._internalRoot.current); Patcher.after("ReactComponents", React, "createElement", (_, __, returnValue) => { this.walkRenderTree(returnValue); @@ -23,8 +23,17 @@ export default new class ReactComponents { Patcher.instead("ReactComponents", React.Component.prototype, "UNSAFE_componentWillMount", (thisObject) => { this.addComponent(thisObject.constructor); }); + + Patcher.instead("ReactComponents", React.PureComponent.prototype, "componentWillMount", (thisObject) => { + this.addComponent(thisObject.constructor); + }); + Patcher.instead("ReactComponents", React.PureComponent.prototype, "UNSAFE_componentWillMount", (thisObject) => { + this.addComponent(thisObject.constructor); + }); } + initialize() {} + get(name, filter) { return new Promise(resolve => { if (components[name]) return resolve(components[name]); diff --git a/src/modules/settingsmanager.js b/src/modules/settingsmanager.js index 017e2b2c..3139ce18 100644 --- a/src/modules/settingsmanager.js +++ b/src/modules/settingsmanager.js @@ -32,6 +32,7 @@ export default new class SettingsManager { button: button }); this.setup(); + this.updateStrings(); } removeCollection(id) { @@ -123,12 +124,12 @@ export default new class SettingsManager { } onSettingChange(collection, category, id, value) { - const before = this.collections.length + this.panels.length; + // const before = this.collections.length + this.panels.length; this.state[collection][category][id] = value; Events.dispatch("setting-updated", collection, category, id, value); - const after = this.collections.length + this.panels.length; + // const after = this.collections.length + this.panels.length; this.saveSettings(); - if (before != after) setTimeout(this.forceUpdate.bind(this), 50); + // if (before != after) setTimeout(this.forceUpdate.bind(this), 50); } getSetting(collection, category, id) { @@ -170,6 +171,7 @@ export default new class SettingsManager { for (let c = 0; c < this.collections.length; c++) { const collection = this.collections[c]; const CS = Strings.Collections[collection.id]; + console.log(CS); if (!CS) continue; collection.name = CS.name || collection.name; const categories = this.collections[c].settings; diff --git a/src/modules/strings.js b/src/modules/strings.js index f5f9ecc8..1bf1efb2 100644 --- a/src/modules/strings.js +++ b/src/modules/strings.js @@ -4,18 +4,23 @@ import Utilities from "./utilities"; import FormattableString from "../structs/string"; import Events from "./emitter"; -const {Dispatcher, DiscordConstants} = DiscordModules; +const {Dispatcher, DiscordConstants, UserSettingsStore} = DiscordModules; const Messages = {}; +const discordLocale = UserSettingsStore.locale.split("-")[0]; + export let currentLocale = "en"; export function setLocale(newLocale) { currentLocale = newLocale; Utilities.extend(Messages, RawStrings[currentLocale]); Events.emit("strings-updated"); + console.log("Changed to " + newLocale); } Utilities.extend(Messages, RawStrings[currentLocale]); +if (RawStrings[discordLocale] && discordLocale != "en") setLocale(discordLocale); + Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({settings}) => { const newLocale = settings.locale; if (newLocale && newLocale != currentLocale) setLocale(newLocale.split("-")[0]); diff --git a/src/ui/settings.js b/src/ui/settings.js index 440e1eba..e5881ad6 100644 --- a/src/ui/settings.js +++ b/src/ui/settings.js @@ -43,7 +43,9 @@ export default new class SettingsRenderer { Patcher.after("SettingsManager", WebpackModules.getByDisplayName("FluxContainer(GuildSettings)").prototype, "render", (thisObject) => { thisObject._reactInternalFiber.return.return.return.return.return.return.memoizedProps.id = "guild-settings"; }); + console.log("getting user settings") const UserSettings = await ReactComponents.get("UserSettings", m => m.prototype && m.prototype.generateSections); + console.log("got 'em") Patcher.after("SettingsManager", UserSettings.prototype, "render", (thisObject) => { thisObject._reactInternalFiber.return.return.return.return.return.return.return.memoizedProps.id = "user-settings"; });