diff options
Diffstat (limited to 'apps/settings/js/vue-2.js.map')
-rw-r--r-- | apps/settings/js/vue-2.js.map | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/apps/settings/js/vue-2.js.map b/apps/settings/js/vue-2.js.map index 08af45fd4c6..806588727d6 100644 --- a/apps/settings/js/vue-2.js.map +++ b/apps/settings/js/vue-2.js.map @@ -1 +1 @@ -{"version":3,"file":"vue-2.js?v=1f67c05b89d62d76974e","sources":["webpack:///./apps/settings/src/components/UserList.vue","webpack:///./apps/settings/src/components/UserList.vue?69dd","webpack:///./apps/settings/src/components/UserList.vue?bf93","webpack:///./apps/settings/src/components/UserList/UserRow.vue","webpack:///./apps/settings/src/components/UserList/UserRow.vue?4147","webpack:///./apps/settings/src/components/UserList/UserRow.vue?9742","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?6483","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?2ff0","webpack:///./apps/settings/src/mixins/UserRowMixin.js","webpack:///./apps/settings/src/views/Users.vue","webpack:///./apps/settings/src/views/Users.vue?83c0","webpack:///./apps/settings/src/views/Users.vue?cc08","webpack:///./apps/settings/src/components/UserList.vue?1138","webpack:///./apps/settings/src/components/UserList/UserRow.vue?68e3","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?4ab0","webpack:///./apps/settings/src/views/Users.vue?0f11","webpack:///./apps/settings/src/components/UserList.vue?6b70","webpack:///./apps/settings/src/components/UserList/UserRow.vue?ad6a","webpack:///./apps/settings/src/components/UserList/UserRowSimple.vue?d051","webpack:///./apps/settings/src/views/Users.vue?d4fd"],"sourcesContent":["import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=6cba3aca&\"\nimport script from \"./UserList.vue?vue&type=script&lang=js&\"\nexport * from \"./UserList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/user/nextcloud/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6cba3aca')) {\n api.createRecord('6cba3aca', component.options)\n } else {\n api.reload('6cba3aca', component.options)\n }\n module.hot.accept(\"./UserList.vue?vue&type=template&id=6cba3aca&\", function () {\n api.rerender('6cba3aca', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/UserList.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=template&id=6cba3aca&\"","import { render, staticRenderFns } from \"./UserRow.vue?vue&type=template&id=77960baa&\"\nimport script from \"./UserRow.vue?vue&type=script&lang=js&\"\nexport * from \"./UserRow.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/user/nextcloud/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('77960baa')) {\n api.createRecord('77960baa', component.options)\n } else {\n api.reload('77960baa', component.options)\n }\n module.hot.accept(\"./UserRow.vue?vue&type=template&id=77960baa&\", function () {\n api.rerender('77960baa', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/UserList/UserRow.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRow.vue?vue&type=template&id=77960baa&\"","import { render, staticRenderFns } from \"./UserRowSimple.vue?vue&type=template&id=ff154a08&scoped=true&\"\nimport script from \"./UserRowSimple.vue?vue&type=script&lang=js&\"\nexport * from \"./UserRowSimple.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ff154a08\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/user/nextcloud/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('ff154a08')) {\n api.createRecord('ff154a08', component.options)\n } else {\n api.reload('ff154a08', component.options)\n }\n module.hot.accept(\"./UserRowSimple.vue?vue&type=template&id=ff154a08&scoped=true&\", function () {\n api.rerender('ff154a08', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/UserList/UserRowSimple.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRowSimple.vue?vue&type=template&id=ff154a08&scoped=true&\"","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nexport default {\n props: {\n user: {\n type: Object,\n required: true\n },\n settings: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n groups: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n subAdminsGroups: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n quotaOptions: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n showConfig: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n languages: {\n type: Array,\n required: true\n },\n externalActions: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n /* GROUPS MANAGEMENT */\n userGroups: function userGroups() {\n var _this = this;\n\n var userGroups = this.groups.filter(function (group) {\n return _this.user.groups.includes(group.id);\n });\n return userGroups;\n },\n userSubAdminsGroups: function userSubAdminsGroups() {\n var _this2 = this;\n\n var userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {\n return _this2.user.subadmin.includes(group.id);\n });\n return userSubAdminsGroups;\n },\n availableGroups: function availableGroups() {\n var _this3 = this;\n\n return this.groups.map(function (group) {\n // clone object because we don't want\n // to edit the original groups\n var groupClone = Object.assign({}, group); // two settings here:\n // 1. user NOT in group but no permission to add\n // 2. user is in group but no permission to remove\n\n groupClone.$isDisabled = group.canAdd === false && !_this3.user.groups.includes(group.id) || group.canRemove === false && _this3.user.groups.includes(group.id);\n return groupClone;\n });\n },\n\n /* QUOTA MANAGEMENT */\n usedSpace: function usedSpace() {\n if (this.user.quota.used) {\n return t('settings', '{size} used', {\n size: OC.Util.humanFileSize(this.user.quota.used)\n });\n }\n\n return t('settings', '{size} used', {\n size: OC.Util.humanFileSize(0)\n });\n },\n usedQuota: function usedQuota() {\n var quota = this.user.quota.quota;\n\n if (quota > 0) {\n quota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n } else {\n var usedInGB = this.user.quota.used / (10 * Math.pow(2, 30)); // asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\n quota = 95 * (1 - 1 / (usedInGB + 1));\n }\n\n return isNaN(quota) ? 0 : quota;\n },\n // Mapping saved values to objects\n userQuota: function userQuota() {\n if (this.user.quota.quota >= 0) {\n // if value is valid, let's map the quotaOptions or return custom quota\n var humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n var userQuota = this.quotaOptions.find(function (quota) {\n return quota.id === humanQuota;\n });\n return userQuota || {\n id: humanQuota,\n label: humanQuota\n };\n } else if (this.user.quota.quota === 'default') {\n // default quota is replaced by the proper value on load\n return this.quotaOptions[0];\n }\n\n return this.quotaOptions[1]; // unlimited\n },\n\n /* PASSWORD POLICY? */\n minPasswordLength: function minPasswordLength() {\n return this.$store.getters.getPasswordPolicyMinLength;\n },\n\n /* LANGUAGE */\n userLanguage: function userLanguage() {\n var _this4 = this;\n\n var availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n var userLang = availableLanguages.find(function (lang) {\n return lang.code === _this4.user.language;\n });\n\n if (_typeof(userLang) !== 'object' && this.user.language !== '') {\n return {\n code: this.user.language,\n name: this.user.language\n };\n } else if (this.user.language === '') {\n return false;\n }\n\n return userLang;\n },\n\n /* LAST LOGIN */\n userLastLoginTooltip: function userLastLoginTooltip() {\n if (this.user.lastLogin > 0) {\n return OC.Util.formatDate(this.user.lastLogin);\n }\n\n return '';\n },\n userLastLogin: function userLastLogin() {\n if (this.user.lastLogin > 0) {\n return OC.Util.relativeModifiedDate(this.user.lastLogin);\n }\n\n return t('settings', 'Never');\n }\n },\n methods: {\n /**\n * Generate avatar url\n *\n * @param {string} user The user name\n * @param {int} size Size integer, default 32\n * @returns {string}\n */\n generateAvatar: function generateAvatar(user) {\n var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;\n return OC.generateUrl('/avatar/{user}/{size}?v={version}', {\n user: user,\n size: size,\n version: oc_userconfig.avatar.version\n });\n }\n }\n};","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=889b7562&\"\nimport script from \"./Users.vue?vue&type=script&lang=js&\"\nexport * from \"./Users.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/user/nextcloud/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('889b7562')) {\n api.createRecord('889b7562', component.options)\n } else {\n api.reload('889b7562', component.options)\n }\n module.hot.accept(\"./Users.vue?vue&type=template&id=889b7562&\", function () {\n api.rerender('889b7562', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/views/Users.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Users.vue?vue&type=template&id=889b7562&\"","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport userRow from './UserList/UserRow';\nimport { Multiselect } from 'nextcloud-vue';\nimport InfiniteLoading from 'vue-infinite-loading';\nimport Vue from 'vue';\nvar unlimitedQuota = {\n id: 'none',\n label: t('settings', 'Unlimited')\n};\nvar defaultQuota = {\n id: 'default',\n label: t('settings', 'Default quota')\n};\nvar newUser = {\n id: '',\n displayName: '',\n password: '',\n mailAddress: '',\n groups: [],\n subAdminsGroups: [],\n quota: defaultQuota,\n language: {\n code: 'en',\n name: t('settings', 'Default language')\n }\n};\nexport default {\n name: 'UserList',\n components: {\n userRow: userRow,\n Multiselect: Multiselect,\n InfiniteLoading: InfiniteLoading\n },\n props: {\n users: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n showConfig: {\n type: Object,\n required: true\n },\n selectedGroup: {\n type: String,\n default: null\n },\n externalActions: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n unlimitedQuota: unlimitedQuota,\n defaultQuota: defaultQuota,\n loading: {\n all: false,\n groups: false\n },\n scrolled: false,\n searchQuery: '',\n newUser: Object.assign({}, newUser)\n };\n },\n computed: {\n settings: function settings() {\n return this.$store.getters.getServerData;\n },\n filteredUsers: function filteredUsers() {\n if (this.selectedGroup === 'disabled') {\n return this.users.filter(function (user) {\n return user.enabled === false;\n });\n }\n\n if (!this.settings.isAdmin) {\n // we don't want subadmins to edit themselves\n return this.users.filter(function (user) {\n return user.enabled !== false && user.id !== OC.getCurrentUser().uid;\n });\n }\n\n return this.users.filter(function (user) {\n return user.enabled !== false;\n });\n },\n groups: function groups() {\n // data provided php side + remove the disabled group\n return this.$store.getters.getGroups.filter(function (group) {\n return group.id !== 'disabled';\n }).sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n },\n canAddGroups: function canAddGroups() {\n // disabled if no permission to add new users to group\n return this.groups.map(function (group) {\n // clone object because we don't want\n // to edit the original groups\n group = Object.assign({}, group);\n group.$isDisabled = group.canAdd === false;\n return group;\n });\n },\n subAdminsGroups: function subAdminsGroups() {\n // data provided php side\n return this.$store.getters.getSubadminGroups;\n },\n quotaOptions: function quotaOptions() {\n // convert the preset array into objects\n var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n return acc.concat({\n id: cur,\n label: cur\n });\n }, []); // add default presets\n\n quotaPreset.unshift(this.unlimitedQuota);\n quotaPreset.unshift(this.defaultQuota);\n return quotaPreset;\n },\n minPasswordLength: function minPasswordLength() {\n return this.$store.getters.getPasswordPolicyMinLength;\n },\n usersOffset: function usersOffset() {\n return this.$store.getters.getUsersOffset;\n },\n usersLimit: function usersLimit() {\n return this.$store.getters.getUsersLimit;\n },\n usersCount: function usersCount() {\n return this.users.length;\n },\n\n /* LANGUAGES */\n languages: function languages() {\n return [{\n label: t('settings', 'Common languages'),\n languages: this.settings.languages.commonlanguages\n }, {\n label: t('settings', 'All languages'),\n languages: this.settings.languages.languages\n }];\n }\n },\n watch: {\n // watch url change and group select\n selectedGroup: function selectedGroup(val, old) {\n // if selected is the disabled group but it's empty\n this.redirectIfDisabled();\n this.$store.commit('resetUsers');\n this.$refs.infiniteLoading.stateChanger.reset();\n this.setNewUserDefaultGroup(val);\n },\n // make sure the infiniteLoading state is changed if we manually\n // add/remove data from the store\n usersCount: function usersCount(val, old) {\n // deleting the last user, reset the list\n if (val === 0 && old === 1) {\n this.$refs.infiniteLoading.stateChanger.reset(); // adding the first user, warn the infiniteLoader that\n // the list is not empty anymore (we don't fetch the newly\n // added user as we already have all the info we need)\n } else if (val === 1 && old === 0) {\n this.$refs.infiniteLoading.stateChanger.loaded();\n }\n }\n },\n mounted: function mounted() {\n if (!this.settings.canChangePassword) {\n OC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n }\n /**\n * Reset and init new user form\n */\n\n\n this.resetForm();\n /**\n * Register search\n */\n\n this.userSearch = new OCA.Search(this.search, this.resetSearch);\n /**\n * If disabled group but empty, redirect\n */\n\n this.redirectIfDisabled();\n },\n methods: {\n onScroll: function onScroll(event) {\n this.scrolled = event.target.scrollTo > 0;\n },\n\n /**\n * Validate quota string to make sure it's a valid human file size\n *\n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Object}\n */\n validateQuota: function validateQuota(quota) {\n // only used for new presets sent through @Tag\n var validQuota = OC.Util.computerFileSize(quota);\n\n if (validQuota !== null && validQuota >= 0) {\n // unify format output\n quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n this.newUser.quota = {\n id: quota,\n label: quota\n };\n return this.newUser.quota;\n } // Default is unlimited\n\n\n this.newUser.quota = this.quotaOptions[0];\n return this.quotaOptions[0];\n },\n infiniteHandler: function infiniteHandler($state) {\n this.$store.dispatch('getUsers', {\n offset: this.usersOffset,\n limit: this.usersLimit,\n group: this.selectedGroup !== 'disabled' ? this.selectedGroup : '',\n search: this.searchQuery\n }).then(function (response) {\n response ? $state.loaded() : $state.complete();\n });\n },\n\n /* SEARCH */\n search: function search(query) {\n this.searchQuery = query;\n this.$store.commit('resetUsers');\n this.$refs.infiniteLoading.stateChanger.reset();\n },\n resetSearch: function resetSearch() {\n this.search('');\n },\n resetForm: function resetForm() {\n // revert form to original state\n this.newUser = Object.assign({}, newUser);\n /**\n * Init default language from server data. The use of this.settings\n * requires a computed variable, which break the v-model binding of the form,\n * this is a much easier solution than getter and setter on a computed var\n */\n\n if (this.settings.defaultLanguage) {\n Vue.set(this.newUser.language, 'code', this.settings.defaultLanguage);\n }\n /**\n * In case the user directly loaded the user list within a group\n * the watch won't be triggered. We need to initialize it.\n */\n\n\n this.setNewUserDefaultGroup(this.selectedGroup);\n this.loading.all = false;\n },\n createUser: function createUser() {\n var _this = this;\n\n this.loading.all = true;\n this.$store.dispatch('addUser', {\n userid: this.newUser.id,\n password: this.newUser.password,\n displayName: this.newUser.displayName,\n email: this.newUser.mailAddress,\n groups: this.newUser.groups.map(function (group) {\n return group.id;\n }),\n subadmin: this.newUser.subAdminsGroups.map(function (group) {\n return group.id;\n }),\n quota: this.newUser.quota.id,\n language: this.newUser.language.code\n }).then(function () {\n _this.resetForm();\n\n _this.$refs.newusername.focus();\n }).catch(function (error) {\n _this.loading.all = false;\n\n if (error.response && error.response.data && error.response.data.ocs && error.response.data.ocs.meta) {\n var statuscode = error.response.data.ocs.meta.statuscode;\n\n if (statuscode === 102) {\n // wrong username\n _this.$refs.newusername.focus();\n } else if (statuscode === 107) {\n // wrong password\n _this.$refs.newuserpassword.focus();\n }\n }\n });\n },\n setNewUserDefaultGroup: function setNewUserDefaultGroup(value) {\n if (value && value.length > 0) {\n // setting new user default group to the current selected one\n var currentGroup = this.groups.find(function (group) {\n return group.id === value;\n });\n\n if (currentGroup) {\n this.newUser.groups = [currentGroup];\n return;\n }\n } // fallback, empty selected group\n\n\n this.newUser.groups = [];\n },\n\n /**\n * Create a new group\n *\n * @param {string} gid Group id\n * @returns {Promise}\n */\n createGroup: function createGroup(gid) {\n var _this2 = this;\n\n this.loading.groups = true;\n this.$store.dispatch('addGroup', gid).then(function (group) {\n _this2.newUser.groups.push(_this2.groups.find(function (group) {\n return group.id === gid;\n }));\n\n _this2.loading.groups = false;\n }).catch(function () {\n _this2.loading.groups = false;\n });\n return this.$store.getters.getGroups[this.groups.length];\n },\n\n /**\n * If the selected group is the disabled group but the count is 0\n * redirect to the all users page.\n * * we only check for 0 because we don't have the count on ldap\n * * and we therefore set the usercount to -1 in this specific case\n */\n redirectIfDisabled: function redirectIfDisabled() {\n var allGroups = this.$store.getters.getGroups;\n\n if (this.selectedGroup === 'disabled' && allGroups.findIndex(function (group) {\n return group.id === 'disabled' && group.usercount === 0;\n }) > -1) {\n // disabled group is empty, redirection to all users\n this.$router.push({\n name: 'users'\n });\n this.$refs.infiniteLoading.stateChanger.reset();\n }\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport ClickOutside from 'vue-click-outside';\nimport Vue from 'vue';\nimport VTooltip from 'v-tooltip';\nimport { PopoverMenu, Multiselect, Actions, ActionButton } from 'nextcloud-vue';\nimport UserRowSimple from './UserRowSimple';\nimport UserRowMixin from '../../mixins/UserRowMixin';\nVue.use(VTooltip);\nexport default {\n name: 'UserRow',\n components: {\n UserRowSimple: UserRowSimple,\n PopoverMenu: PopoverMenu,\n Actions: Actions,\n ActionButton: ActionButton,\n Multiselect: Multiselect\n },\n directives: {\n ClickOutside: ClickOutside\n },\n mixins: [UserRowMixin],\n props: {\n user: {\n type: Object,\n required: true\n },\n settings: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n groups: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n subAdminsGroups: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n quotaOptions: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n showConfig: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n languages: {\n type: Array,\n required: true\n },\n externalActions: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n rand: parseInt(Math.random() * 1000),\n openedMenu: false,\n feedbackMessage: '',\n editing: false,\n loading: {\n all: false,\n displayName: false,\n password: false,\n mailAddress: false,\n groups: false,\n subadmins: false,\n quota: false,\n delete: false,\n disable: false,\n languages: false,\n wipe: false\n }\n };\n },\n computed: {\n /* USER POPOVERMENU ACTIONS */\n userActions: function userActions() {\n var actions = [{\n icon: 'icon-delete',\n text: t('settings', 'Delete user'),\n action: this.deleteUser\n }, {\n icon: 'icon-delete',\n text: t('settings', 'Wipe all devices'),\n action: this.wipeUserDevices\n }, {\n icon: this.user.enabled ? 'icon-close' : 'icon-add',\n text: this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n action: this.enableDisableUser\n }];\n\n if (this.user.email !== null && this.user.email !== '') {\n actions.push({\n icon: 'icon-mail',\n text: t('settings', 'Resend welcome email'),\n action: this.sendWelcomeMail\n });\n }\n\n return actions.concat(this.externalActions);\n }\n },\n methods: {\n /* MENU HANDLING */\n toggleMenu: function toggleMenu() {\n this.openedMenu = !this.openedMenu;\n },\n hideMenu: function hideMenu() {\n this.openedMenu = false;\n },\n wipeUserDevices: function wipeUserDevices() {\n var _this = this;\n\n var userid = this.user.id;\n OC.dialogs.confirmDestructive(t('settings', 'In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet.', {\n userid: userid\n }), t('settings', 'Remote wipe of devices'), {\n type: OC.dialogs.YES_NO_BUTTONS,\n confirm: t('settings', 'Wipe {userid}\\'s devices', {\n userid: userid\n }),\n confirmClasses: 'error',\n cancel: t('settings', 'Cancel')\n }, function (result) {\n if (result) {\n _this.loading.wipe = true;\n _this.loading.all = true;\n\n _this.$store.dispatch('wipeUserDevices', userid).then(function () {\n _this.loading.wipe = false;\n _this.loading.all = false;\n });\n }\n }, true);\n },\n deleteUser: function deleteUser() {\n var _this2 = this;\n\n var userid = this.user.id;\n OC.dialogs.confirmDestructive(t('settings', 'Fully delete {userid}\\'s account including all their personal files, app data, etc.', {\n userid: userid\n }), t('settings', 'Account deletion'), {\n type: OC.dialogs.YES_NO_BUTTONS,\n confirm: t('settings', 'Delete {userid}\\'s account', {\n userid: userid\n }),\n confirmClasses: 'error',\n cancel: t('settings', 'Cancel')\n }, function (result) {\n if (result) {\n _this2.loading.delete = true;\n _this2.loading.all = true;\n return _this2.$store.dispatch('deleteUser', userid).then(function () {\n _this2.loading.delete = false;\n _this2.loading.all = false;\n });\n }\n }, true);\n },\n enableDisableUser: function enableDisableUser() {\n var _this3 = this;\n\n this.loading.delete = true;\n this.loading.all = true;\n var userid = this.user.id;\n var enabled = !this.user.enabled;\n return this.$store.dispatch('enableDisableUser', {\n userid: userid,\n enabled: enabled\n }).then(function () {\n _this3.loading.delete = false;\n _this3.loading.all = false;\n });\n },\n\n /**\n \t * Set user displayName\n \t *\n \t * @param {string} displayName The display name\n \t */\n updateDisplayName: function updateDisplayName() {\n var _this4 = this;\n\n var displayName = this.$refs.displayName.value;\n this.loading.displayName = true;\n this.$store.dispatch('setUserData', {\n userid: this.user.id,\n key: 'displayname',\n value: displayName\n }).then(function () {\n _this4.loading.displayName = false;\n _this4.$refs.displayName.value = displayName;\n });\n },\n\n /**\n \t * Set user password\n \t *\n \t * @param {string} password The email adress\n \t */\n updatePassword: function updatePassword() {\n var _this5 = this;\n\n var password = this.$refs.password.value;\n this.loading.password = true;\n this.$store.dispatch('setUserData', {\n userid: this.user.id,\n key: 'password',\n value: password\n }).then(function () {\n _this5.loading.password = false;\n _this5.$refs.password.value = ''; // empty & show placeholder\n });\n },\n\n /**\n \t * Set user mailAddress\n \t *\n \t * @param {string} mailAddress The email adress\n \t */\n updateEmail: function updateEmail() {\n var _this6 = this;\n\n var mailAddress = this.$refs.mailAddress.value;\n this.loading.mailAddress = true;\n this.$store.dispatch('setUserData', {\n userid: this.user.id,\n key: 'email',\n value: mailAddress\n }).then(function () {\n _this6.loading.mailAddress = false;\n _this6.$refs.mailAddress.value = mailAddress;\n });\n },\n\n /**\n \t * Create a new group and add user to it\n \t *\n \t * @param {string} gid Group id\n \t */\n createGroup: function createGroup(gid) {\n var userid;\n return regeneratorRuntime.async(function createGroup$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.loading = {\n groups: true,\n subadmins: true\n };\n _context.prev = 1;\n _context.next = 4;\n return regeneratorRuntime.awrap(this.$store.dispatch('addGroup', gid));\n\n case 4:\n userid = this.user.id;\n _context.next = 7;\n return regeneratorRuntime.awrap(this.$store.dispatch('addUserGroup', {\n userid: userid,\n gid: gid\n }));\n\n case 7:\n _context.next = 12;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](1);\n console.error(_context.t0);\n\n case 12:\n _context.prev = 12;\n this.loading = {\n groups: false,\n subadmins: false\n };\n return _context.finish(12);\n\n case 15:\n return _context.abrupt(\"return\", this.$store.getters.getGroups[this.groups.length]);\n\n case 16:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this, [[1, 9, 12, 15]]);\n },\n\n /**\n \t * Add user to group\n \t *\n \t * @param {object} group Group object\n \t */\n addUserGroup: function addUserGroup(group) {\n var userid, gid;\n return regeneratorRuntime.async(function addUserGroup$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(group.canAdd === false)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\", false);\n\n case 2:\n this.loading.groups = true;\n userid = this.user.id;\n gid = group.id;\n _context2.prev = 5;\n _context2.next = 8;\n return regeneratorRuntime.awrap(this.$store.dispatch('addUserGroup', {\n userid: userid,\n gid: gid\n }));\n\n case 8:\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](5);\n console.error(_context2.t0);\n\n case 13:\n _context2.prev = 13;\n this.loading.groups = false;\n return _context2.finish(13);\n\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this, [[5, 10, 13, 16]]);\n },\n\n /**\n \t * Remove user from group\n \t *\n \t * @param {object} group Group object\n \t */\n removeUserGroup: function removeUserGroup(group) {\n var userid, gid;\n return regeneratorRuntime.async(function removeUserGroup$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(group.canRemove === false)) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\", false);\n\n case 2:\n this.loading.groups = true;\n userid = this.user.id;\n gid = group.id;\n _context3.prev = 5;\n _context3.next = 8;\n return regeneratorRuntime.awrap(this.$store.dispatch('removeUserGroup', {\n userid: userid,\n gid: gid\n }));\n\n case 8:\n this.loading.groups = false; // remove user from current list if current list is the removed group\n\n if (this.$route.params.selectedGroup === gid) {\n this.$store.commit('deleteUser', userid);\n }\n\n _context3.next = 15;\n break;\n\n case 12:\n _context3.prev = 12;\n _context3.t0 = _context3[\"catch\"](5);\n this.loading.groups = false;\n\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }\n }, null, this, [[5, 12]]);\n },\n\n /**\n \t * Add user to group\n \t *\n \t * @param {object} group Group object\n \t */\n addUserSubAdmin: function addUserSubAdmin(group) {\n var userid, gid;\n return regeneratorRuntime.async(function addUserSubAdmin$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n this.loading.subadmins = true;\n userid = this.user.id;\n gid = group.id;\n _context4.prev = 3;\n _context4.next = 6;\n return regeneratorRuntime.awrap(this.$store.dispatch('addUserSubAdmin', {\n userid: userid,\n gid: gid\n }));\n\n case 6:\n this.loading.subadmins = false;\n _context4.next = 12;\n break;\n\n case 9:\n _context4.prev = 9;\n _context4.t0 = _context4[\"catch\"](3);\n console.error(_context4.t0);\n\n case 12:\n case \"end\":\n return _context4.stop();\n }\n }\n }, null, this, [[3, 9]]);\n },\n\n /**\n \t * Remove user from group\n \t *\n \t * @param {object} group Group object\n \t */\n removeUserSubAdmin: function removeUserSubAdmin(group) {\n var userid, gid;\n return regeneratorRuntime.async(function removeUserSubAdmin$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n this.loading.subadmins = true;\n userid = this.user.id;\n gid = group.id;\n _context5.prev = 3;\n _context5.next = 6;\n return regeneratorRuntime.awrap(this.$store.dispatch('removeUserSubAdmin', {\n userid: userid,\n gid: gid\n }));\n\n case 6:\n _context5.next = 11;\n break;\n\n case 8:\n _context5.prev = 8;\n _context5.t0 = _context5[\"catch\"](3);\n console.error(_context5.t0);\n\n case 11:\n _context5.prev = 11;\n this.loading.subadmins = false;\n return _context5.finish(11);\n\n case 14:\n case \"end\":\n return _context5.stop();\n }\n }\n }, null, this, [[3, 8, 11, 14]]);\n },\n\n /**\n \t * Dispatch quota set request\n \t *\n \t * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n \t * @returns {string}\n \t */\n setUserQuota: function setUserQuota() {\n var quota,\n _args6 = arguments;\n return regeneratorRuntime.async(function setUserQuota$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n quota = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : 'none';\n this.loading.quota = true; // ensure we only send the preset id\n\n quota = quota.id ? quota.id : quota;\n _context6.prev = 3;\n _context6.next = 6;\n return regeneratorRuntime.awrap(this.$store.dispatch('setUserData', {\n userid: this.user.id,\n key: 'quota',\n value: quota\n }));\n\n case 6:\n _context6.next = 11;\n break;\n\n case 8:\n _context6.prev = 8;\n _context6.t0 = _context6[\"catch\"](3);\n console.error(_context6.t0);\n\n case 11:\n _context6.prev = 11;\n this.loading.quota = false;\n return _context6.finish(11);\n\n case 14:\n return _context6.abrupt(\"return\", quota);\n\n case 15:\n case \"end\":\n return _context6.stop();\n }\n }\n }, null, this, [[3, 8, 11, 14]]);\n },\n\n /**\n \t * Validate quota string to make sure it's a valid human file size\n \t *\n \t * @param {string} quota Quota in readable format '5 GB'\n \t * @returns {Promise|boolean}\n \t */\n validateQuota: function validateQuota(quota) {\n // only used for new presets sent through @Tag\n var validQuota = OC.Util.computerFileSize(quota);\n\n if (validQuota !== null && validQuota >= 0) {\n // unify format output\n return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n } // if no valid do not change\n\n\n return false;\n },\n\n /**\n \t * Dispatch language set request\n \t *\n \t * @param {Object} lang language object {code:'en', name:'English'}\n \t * @returns {Object}\n \t */\n setUserLanguage: function setUserLanguage(lang) {\n return regeneratorRuntime.async(function setUserLanguage$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n this.loading.languages = true; // ensure we only send the preset id\n\n _context7.prev = 1;\n _context7.next = 4;\n return regeneratorRuntime.awrap(this.$store.dispatch('setUserData', {\n userid: this.user.id,\n key: 'language',\n value: lang.code\n }));\n\n case 4:\n _context7.next = 9;\n break;\n\n case 6:\n _context7.prev = 6;\n _context7.t0 = _context7[\"catch\"](1);\n console.error(_context7.t0);\n\n case 9:\n _context7.prev = 9;\n this.loading.languages = false;\n return _context7.finish(9);\n\n case 12:\n return _context7.abrupt(\"return\", lang);\n\n case 13:\n case \"end\":\n return _context7.stop();\n }\n }\n }, null, this, [[1, 6, 9, 12]]);\n },\n\n /**\n \t * Dispatch new welcome mail request\n \t */\n sendWelcomeMail: function sendWelcomeMail() {\n var _this7 = this;\n\n this.loading.all = true;\n this.$store.dispatch('sendWelcomeMail', this.user.id).then(function (success) {\n if (success) {\n // Show feedback to indicate the success\n _this7.feedbackMessage = t('setting', 'Welcome mail sent!');\n setTimeout(function () {\n _this7.feedbackMessage = '';\n }, 2000);\n }\n\n _this7.loading.all = false;\n });\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { PopoverMenu, Actions, ActionButton } from 'nextcloud-vue';\nimport ClickOutside from 'vue-click-outside';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport UserRowMixin from '../../mixins/UserRowMixin';\nexport default {\n name: 'UserRowSimple',\n components: {\n PopoverMenu: PopoverMenu,\n ActionButton: ActionButton,\n Actions: Actions\n },\n directives: {\n ClickOutside: ClickOutside\n },\n mixins: [UserRowMixin],\n props: {\n user: {\n type: Object,\n required: true\n },\n loading: {\n type: Object,\n required: true\n },\n showConfig: {\n type: Object,\n required: true\n },\n userActions: {\n type: Array,\n required: true\n },\n openedMenu: {\n type: Boolean,\n required: true\n },\n feedbackMessage: {\n type: String,\n required: true\n },\n subAdminsGroups: {\n type: Array,\n required: true\n },\n settings: {\n type: Object,\n required: true\n }\n },\n computed: {\n userGroupsLabels: function userGroupsLabels() {\n return this.userGroups.map(function (group) {\n return group.name;\n }).join(', ');\n },\n userSubAdminsGroupsLabels: function userSubAdminsGroupsLabels() {\n return this.userSubAdminsGroups.map(function (group) {\n return group.name;\n }).join(', ');\n },\n usedSpace: function usedSpace() {\n if (this.user.quota.used) {\n return t('settings', '{size} used', {\n size: OC.Util.humanFileSize(this.user.quota.used)\n });\n }\n\n return t('settings', '{size} used', {\n size: OC.Util.humanFileSize(0)\n });\n },\n canEdit: function canEdit() {\n return getCurrentUser().uid !== this.user.id && this.user.id !== 'admin';\n }\n },\n methods: {\n hideMenu: function hideMenu() {\n this.$emit('hideMenu');\n },\n toggleEdit: function toggleEdit() {\n this.$emit('update:editing', true);\n }\n }\n};","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage';\nimport { AppContent, AppNavigation, AppNavigationItem, AppNavigationNew, AppNavigationSettings, Content, Multiselect } from 'nextcloud-vue';\nimport UserList from '../components/UserList';\nVue.use(VueLocalStorage);\nexport default {\n name: 'Users',\n components: {\n AppContent: AppContent,\n AppNavigation: AppNavigation,\n AppNavigationItem: AppNavigationItem,\n AppNavigationNew: AppNavigationNew,\n AppNavigationSettings: AppNavigationSettings,\n Content: Content,\n UserList: UserList,\n Multiselect: Multiselect\n },\n props: {\n selectedGroup: {\n type: String,\n default: null\n }\n },\n data: function data() {\n return {\n // default quota is set to unlimited\n unlimitedQuota: {\n id: 'none',\n label: t('settings', 'Unlimited')\n },\n // temporary value used for multiselect change\n selectedQuota: false,\n externalActions: [],\n showAddGroupEntry: false,\n loadingAddGroup: false,\n showConfig: {\n showStoragePath: false,\n showUserBackend: false,\n showLastLogin: false,\n showNewUserForm: false,\n showLanguages: false\n }\n };\n },\n computed: {\n users: function users() {\n return this.$store.getters.getUsers;\n },\n usersOffset: function usersOffset() {\n return this.$store.getters.getUsersOffset;\n },\n usersLimit: function usersLimit() {\n return this.$store.getters.getUsersLimit;\n },\n // Local settings\n showLanguages: {\n get: function get() {\n return this.getLocalstorage('showLanguages');\n },\n set: function set(status) {\n this.setLocalStorage('showLanguages', status);\n }\n },\n showLastLogin: {\n get: function get() {\n return this.getLocalstorage('showLastLogin');\n },\n set: function set(status) {\n this.setLocalStorage('showLastLogin', status);\n }\n },\n showUserBackend: {\n get: function get() {\n return this.getLocalstorage('showUserBackend');\n },\n set: function set(status) {\n this.setLocalStorage('showUserBackend', status);\n }\n },\n showStoragePath: {\n get: function get() {\n return this.getLocalstorage('showStoragePath');\n },\n set: function set(status) {\n this.setLocalStorage('showStoragePath', status);\n }\n },\n userCount: function userCount() {\n return this.$store.getters.getUserCount;\n },\n settings: function settings() {\n return this.$store.getters.getServerData;\n },\n // default quota\n quotaOptions: function quotaOptions() {\n // convert the preset array into objects\n var quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n return acc.concat({\n id: cur,\n label: cur\n });\n }, []); // add default presets\n\n quotaPreset.unshift(this.unlimitedQuota);\n return quotaPreset;\n },\n // mapping saved values to objects\n defaultQuota: {\n get: function get() {\n if (this.selectedQuota !== false) {\n return this.selectedQuota;\n }\n\n if (this.settings.defaultQuota !== this.unlimitedQuota.id && OC.Util.computerFileSize(this.settings.defaultQuota) >= 0) {\n // if value is valid, let's map the quotaOptions or return custom quota\n return {\n id: this.settings.defaultQuota,\n label: this.settings.defaultQuota\n };\n }\n\n return this.unlimitedQuota; // unlimited\n },\n set: function set(quota) {\n this.selectedQuota = quota;\n }\n },\n // BUILD APP NAVIGATION MENU OBJECT\n menu: function menu() {\n var _this = this;\n\n // Data provided php side\n var self = this;\n var groups = this.$store.getters.getGroups;\n groups = Array.isArray(groups) ? groups : []; // Map groups\n\n groups = groups.map(function (group) {\n var item = {};\n item.id = group.id.replace(' ', '_');\n item.key = item.id;\n item.utils = {}; // router link to\n\n item.router = {\n name: 'group',\n params: {\n selectedGroup: group.id\n }\n }; // group name\n\n item.text = group.name;\n item.title = group.name; // users count for all groups\n\n if (group.usercount - group.disabled > 0 || group.usercount === -1) {\n item.utils.counter = group.usercount - group.disabled;\n }\n\n if (item.id !== 'admin' && item.id !== 'disabled' && _this.settings.isAdmin) {\n // add delete button on real groups\n item.utils.actions = [{\n icon: 'icon-delete',\n text: t('settings', 'Remove group'),\n action: function action() {\n self.removeGroup(group.id);\n }\n }];\n }\n\n return item;\n }); // Every item is added on top of the array, so we're going backward\n // Groups, separator, disabled, admin, everyone\n // Add separator\n\n var realGroups = groups.find(function (group) {\n return group.id !== 'disabled' && group.id !== 'admin';\n });\n realGroups = typeof realGroups === 'undefined' ? [] : realGroups;\n realGroups = Array.isArray(realGroups) ? realGroups : [realGroups];\n\n if (realGroups.length > 0) {\n var separator = {\n caption: true,\n text: t('settings', 'Groups')\n };\n groups.unshift(separator);\n } // Adjust admin and disabled groups\n\n\n var adminGroup = groups.find(function (group) {\n return group.id === 'admin';\n });\n var disabledGroup = groups.find(function (group) {\n return group.id === 'disabled';\n }); // filter out admin and disabled\n\n groups = groups.filter(function (group) {\n return ['admin', 'disabled'].indexOf(group.id) === -1;\n });\n\n if (adminGroup && adminGroup.text) {\n adminGroup.text = t('settings', 'Admins'); // rename admin group\n\n adminGroup.icon = 'icon-user-admin'; // set icon\n\n groups.unshift(adminGroup); // add admin group if present\n }\n\n if (disabledGroup && disabledGroup.text) {\n disabledGroup.text = t('settings', 'Disabled users'); // rename disabled group\n\n disabledGroup.icon = 'icon-disabled-users'; // set icon\n\n if (disabledGroup.utils && (disabledGroup.utils.counter > 0 // add disabled if not empty\n || disabledGroup.utils.counter === -1) // add disabled if ldap enabled\n ) {\n groups.unshift(disabledGroup);\n\n if (disabledGroup.utils.counter === -1) {\n // hides the counter instead of showing -1\n delete disabledGroup.utils.counter;\n }\n }\n } // Add everyone group\n\n\n var everyoneGroup = {\n id: 'everyone',\n key: 'everyone',\n icon: 'icon-contacts-dark',\n router: {\n name: 'users'\n },\n text: t('settings', 'Everyone')\n }; // users count\n\n if (this.userCount > 0) {\n Vue.set(everyoneGroup, 'utils', {\n counter: this.userCount\n });\n }\n\n groups.unshift(everyoneGroup);\n var addGroup = {\n id: 'addgroup',\n key: 'addgroup',\n icon: 'icon-add',\n text: t('settings', 'Add group'),\n classes: this.loadingAddGroup ? 'icon-loading-small' : ''\n };\n\n if (this.showAddGroupEntry) {\n Vue.set(addGroup, 'edit', {\n text: t('settings', 'Add group'),\n action: this.createGroup,\n reset: function reset() {\n self.showAddGroupEntry = false;\n }\n });\n addGroup.classes = 'editing';\n } else {\n Vue.set(addGroup, 'action', function () {\n self.showAddGroupEntry = true; // focus input\n\n Vue.nextTick(function () {\n window.addgroup.querySelector('form > input[type=\"text\"]').focus();\n });\n });\n }\n\n groups.unshift(addGroup);\n return groups;\n }\n },\n beforeMount: function beforeMount() {\n this.$store.commit('initGroups', {\n groups: this.$store.getters.getServerData.groups,\n orderBy: this.$store.getters.getServerData.sortGroups,\n userCount: this.$store.getters.getServerData.userCount\n });\n this.$store.dispatch('getPasswordPolicyMinLength');\n },\n created: function created() {\n // init the OCA.Settings.UserList object\n // and add the registerAction method\n Object.assign(OCA, {\n Settings: {\n UserList: {\n registerAction: this.registerAction\n }\n }\n });\n },\n methods: {\n toggleNewUserMenu: function toggleNewUserMenu() {\n this.showConfig.showNewUserForm = !this.showConfig.showNewUserForm;\n\n if (this.showConfig.showNewUserForm) {\n Vue.nextTick(function () {\n window.newusername.focus();\n });\n }\n },\n getLocalstorage: function getLocalstorage(key) {\n // force initialization\n var localConfig = this.$localStorage.get(key); // if localstorage is null, fallback to original values\n\n this.showConfig[key] = localConfig !== null ? localConfig === 'true' : this.showConfig[key];\n return this.showConfig[key];\n },\n setLocalStorage: function setLocalStorage(key, status) {\n this.showConfig[key] = status;\n this.$localStorage.set(key, status);\n return status;\n },\n removeGroup: function removeGroup(groupid) {\n var self = this; // TODO migrate to a vue js confirm dialog component\n\n OC.dialogs.confirm(t('settings', 'You are about to remove the group {group}. The users will NOT be deleted.', {\n group: groupid\n }), t('settings', 'Please confirm the group removal '), function (success) {\n if (success) {\n self.$store.dispatch('removeGroup', groupid);\n }\n });\n },\n\n /**\n * Dispatch default quota set request\n *\n * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n */\n setDefaultQuota: function setDefaultQuota() {\n var _this2 = this;\n\n var quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n this.$store.dispatch('setAppConfig', {\n app: 'files',\n key: 'default_quota',\n // ensure we only send the preset id\n value: quota.id ? quota.id : quota\n }).then(function () {\n if (_typeof(quota) !== 'object') {\n quota = {\n id: quota,\n label: quota\n };\n }\n\n _this2.defaultQuota = quota;\n });\n },\n\n /**\n * Validate quota string to make sure it's a valid human file size\n *\n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Promise|boolean}\n */\n validateQuota: function validateQuota(quota) {\n // only used for new presets sent through @Tag\n var validQuota = OC.Util.computerFileSize(quota);\n\n if (validQuota === null) {\n return this.setDefaultQuota('none');\n } else {\n // unify format output\n return this.setDefaultQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n }\n },\n\n /**\n * Register a new action for the user menu\n *\n * @param {string} icon the icon class\n * @param {string} text the text to display\n * @param {Function} action the function to run\n * @returns {Array}\n */\n registerAction: function registerAction(icon, text, action) {\n this.externalActions.push({\n icon: icon,\n text: text,\n action: action\n });\n return this.externalActions;\n },\n\n /**\n * Create a new group\n *\n * @param {Object} event The form submit event\n */\n createGroup: function createGroup(event) {\n var _this3 = this;\n\n var gid = event.target[0].value;\n this.loadingAddGroup = true;\n this.$store.dispatch('addGroup', gid).then(function () {\n _this3.showAddGroupEntry = false;\n _this3.loadingAddGroup = false;\n\n _this3.$router.push({\n name: 'group',\n params: {\n selectedGroup: gid\n }\n });\n }).catch(function () {\n _this3.loadingAddGroup = false;\n });\n }\n }\n};","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"user-list-grid\",\n attrs: { id: \"app-content\" },\n on: {\n \"&scroll\": function($event) {\n return _vm.onScroll($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },\n attrs: { id: \"grid-header\" }\n },\n [\n _c(\"div\", { staticClass: \"avatar\", attrs: { id: \"headerAvatar\" } }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\", attrs: { id: \"headerName\" } }, [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Username\")) + \"\\n\\n\\t\\t\\t\"\n ),\n _c(\"div\", { staticClass: \"subtitle\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Display name\")) +\n \"\\n\\t\\t\\t\"\n )\n ])\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"password\", attrs: { id: \"headerPassword\" } },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Password\")) + \"\\n\\t\\t\"\n )\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"mailAddress\", attrs: { id: \"headerAddress\" } },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Email\")) + \"\\n\\t\\t\")]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"groups\", attrs: { id: \"headerGroups\" } }, [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Groups\")) + \"\\n\\t\\t\")\n ]),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n ? _c(\n \"div\",\n { staticClass: \"subadmins\", attrs: { id: \"headerSubAdmins\" } },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Group admin for\")) +\n \"\\n\\t\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"quota\", attrs: { id: \"headerQuota\" } }, [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Quota\")) + \"\\n\\t\\t\")\n ]),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n { staticClass: \"languages\", attrs: { id: \"headerLanguages\" } },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Language\")) +\n \"\\n\\t\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"headerUserBackend userBackend\" }, [\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"User backend\")) +\n \"\\n\\t\\t\\t\"\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"subtitle storageLocation\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Storage location\")) +\n \"\\n\\t\\t\\t\"\n )\n ])\n : _vm._e()\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"headerLastLogin lastLogin\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Last login\")) +\n \"\\n\\t\\t\"\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showConfig.showNewUserForm,\n expression: \"showConfig.showNewUserForm\"\n }\n ],\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },\n attrs: { id: \"new-user\", disabled: _vm.loading.all },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.createUser($event)\n }\n }\n },\n [\n _c(\"div\", {\n class: _vm.loading.all ? \"icon-loading-small\" : \"icon-add\"\n }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.id,\n expression: \"newUser.id\"\n }\n ],\n ref: \"newusername\",\n attrs: {\n id: \"newusername\",\n disabled: _vm.settings.newUserGenerateUserID,\n placeholder: _vm.settings.newUserGenerateUserID\n ? _vm.t(\"settings\", \"Will be autogenerated\")\n : _vm.t(\"settings\", \"Username\"),\n autocapitalize: \"none\",\n autocomplete: \"off\",\n autocorrect: \"off\",\n name: \"username\",\n pattern: \"[a-zA-Z0-9 _\\\\.@\\\\-']+\",\n required: \"\",\n type: \"text\"\n },\n domProps: { value: _vm.newUser.id },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"id\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"displayName\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.displayName,\n expression: \"newUser.displayName\"\n }\n ],\n attrs: {\n id: \"newdisplayname\",\n placeholder: _vm.t(\"settings\", \"Display name\"),\n autocapitalize: \"none\",\n autocomplete: \"off\",\n autocorrect: \"off\",\n name: \"displayname\",\n type: \"text\"\n },\n domProps: { value: _vm.newUser.displayName },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"displayName\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"password\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.password,\n expression: \"newUser.password\"\n }\n ],\n ref: \"newuserpassword\",\n attrs: {\n id: \"newuserpassword\",\n minlength: _vm.minPasswordLength,\n placeholder: _vm.t(\"settings\", \"Password\"),\n required: _vm.newUser.mailAddress === \"\",\n autocapitalize: \"none\",\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n name: \"password\",\n type: \"password\"\n },\n domProps: { value: _vm.newUser.password },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"password\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"mailAddress\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.mailAddress,\n expression: \"newUser.mailAddress\"\n }\n ],\n attrs: {\n id: \"newemail\",\n placeholder: _vm.t(\"settings\", \"Email\"),\n required:\n _vm.newUser.password === \"\" ||\n _vm.settings.newUserRequireEmail,\n autocapitalize: \"none\",\n autocomplete: \"off\",\n autocorrect: \"off\",\n name: \"email\",\n type: \"email\"\n },\n domProps: { value: _vm.newUser.mailAddress },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"groups\" },\n [\n !_vm.settings.isAdmin\n ? _c(\"input\", {\n class: { \"icon-loading-small\": _vm.loading.groups },\n attrs: {\n id: \"newgroups\",\n required: !_vm.settings.isAdmin,\n tabindex: \"-1\",\n type: \"text\"\n },\n domProps: { value: _vm.newUser.groups }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"Multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"close-on-select\": false,\n disabled: _vm.loading.groups || _vm.loading.all,\n multiple: true,\n options: _vm.canAddGroups,\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n \"tag-width\": 60,\n taggable: true,\n label: \"name\",\n \"tag-placeholder\": \"create\",\n \"track-by\": \"id\"\n },\n on: { tag: _vm.createGroup },\n model: {\n value: _vm.newUser.groups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"groups\", $$v)\n },\n expression: \"newUser.groups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n ? _c(\n \"div\",\n { staticClass: \"subadmins\" },\n [\n _c(\n \"Multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"close-on-select\": false,\n multiple: true,\n options: _vm.subAdminsGroups,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n \"tag-width\": 60,\n label: \"name\",\n \"track-by\": \"id\"\n },\n model: {\n value: _vm.newUser.subAdminsGroups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)\n },\n expression: \"newUser.subAdminsGroups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"quota\" },\n [\n _c(\"Multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"allow-empty\": false,\n options: _vm.quotaOptions,\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n taggable: true,\n label: \"label\",\n \"track-by\": \"id\"\n },\n on: { tag: _vm.validateQuota },\n model: {\n value: _vm.newUser.quota,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"quota\", $$v)\n },\n expression: \"newUser.quota\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n { staticClass: \"languages\" },\n [\n _c(\"Multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"allow-empty\": false,\n options: _vm.languages,\n placeholder: _vm.t(\"settings\", \"Default language\"),\n \"group-label\": \"label\",\n \"group-values\": \"languages\",\n label: \"name\",\n \"track-by\": \"code\"\n },\n model: {\n value: _vm.newUser.language,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"language\", $$v)\n },\n expression: \"newUser.language\"\n }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"lastLogin\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _c(\"input\", {\n staticClass: \"button primary icon-checkmark-white has-tooltip\",\n attrs: {\n id: \"newsubmit\",\n title: _vm.t(\"settings\", \"Add a new user\"),\n type: \"submit\",\n value: \"\"\n }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.filteredUsers, function(user, key) {\n return _c(\"user-row\", {\n key: key,\n attrs: {\n \"external-actions\": _vm.externalActions,\n groups: _vm.groups,\n languages: _vm.languages,\n \"quota-options\": _vm.quotaOptions,\n settings: _vm.settings,\n \"show-config\": _vm.showConfig,\n \"sub-admins-groups\": _vm.subAdminsGroups,\n user: user\n }\n })\n }),\n _vm._v(\" \"),\n _c(\n \"InfiniteLoading\",\n { ref: \"infiniteLoading\", on: { infinite: _vm.infiniteHandler } },\n [\n _c(\"div\", { attrs: { slot: \"spinner\" }, slot: \"spinner\" }, [\n _c(\"div\", { staticClass: \"users-icon-loading icon-loading\" })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _c(\"div\", { staticClass: \"users-list-end\" })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-results\" }, slot: \"no-results\" }, [\n _c(\"div\", { attrs: { id: \"emptycontent\" } }, [\n _c(\"div\", { staticClass: \"icon-contacts-dark\" }),\n _vm._v(\" \"),\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No users in here\")))])\n ])\n ])\n ]\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return Object.keys(_vm.user).length === 1\n ? _c(\"div\", { staticClass: \"row\", attrs: { \"data-id\": _vm.user.id } }, [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: {\n \"icon-loading-small\":\n _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe\n }\n },\n [\n !_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe\n ? _c(\"img\", {\n attrs: {\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\",\n alt: \"\",\n height: \"32\",\n width: \"32\"\n }\n })\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.user.id) + \"\\n\\t\")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"obfuscated\" }, [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(\n _vm.t(\n \"settings\",\n \"You do not have permissions to see the details of this user\"\n )\n ) +\n \"\\n\\t\"\n )\n ])\n ])\n : !_vm.editing\n ? _c(\"UserRowSimple\", {\n attrs: {\n editing: _vm.editing,\n \"feedback-message\": _vm.feedbackMessage,\n groups: _vm.groups,\n languages: _vm.languages,\n loading: _vm.loading,\n \"opened-menu\": _vm.openedMenu,\n settings: _vm.settings,\n \"show-config\": _vm.showConfig,\n \"sub-admins-groups\": _vm.subAdminsGroups,\n \"user-actions\": _vm.userActions,\n user: _vm.user\n },\n on: {\n \"update:editing\": function($event) {\n _vm.editing = $event\n },\n hideMenu: _vm.hideMenu,\n toggleMenu: _vm.toggleMenu\n }\n })\n : _c(\n \"div\",\n {\n staticClass: \"row row--editable\",\n class: { disabled: _vm.loading.delete || _vm.loading.disable },\n attrs: { \"data-id\": _vm.user.id }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: {\n \"icon-loading-small\":\n _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe\n }\n },\n [\n !_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe\n ? _c(\"img\", {\n attrs: {\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\",\n alt: \"\",\n height: \"32\",\n width: \"32\"\n }\n })\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"displayName\" }, [\n _c(\n \"form\",\n {\n staticClass: \"displayName\",\n class: { \"icon-loading-small\": _vm.loading.displayName },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateDisplayName($event)\n }\n }\n },\n [\n _vm.user.backendCapabilities.setDisplayName\n ? [\n _vm.user.backendCapabilities.setDisplayName\n ? _c(\"input\", {\n ref: \"displayName\",\n attrs: {\n id: \"displayName\" + _vm.user.id + _vm.rand,\n disabled:\n _vm.loading.displayName || _vm.loading.all,\n autocapitalize: \"off\",\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n spellcheck: \"false\",\n type: \"text\"\n },\n domProps: { value: _vm.user.displayname }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.user.backendCapabilities.setDisplayName\n ? _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n : _vm._e()\n ]\n : _c(\"div\", {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.t(\n \"settings\",\n \"The backend does not support changing the display name\"\n ),\n expression:\n \"t('settings', 'The backend does not support changing the display name')\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"name\"\n })\n ],\n 2\n )\n ]),\n _vm._v(\" \"),\n _vm.settings.canChangePassword &&\n _vm.user.backendCapabilities.setPassword\n ? _c(\n \"form\",\n {\n staticClass: \"password\",\n class: { \"icon-loading-small\": _vm.loading.password },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updatePassword($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"password\",\n attrs: {\n id: \"password\" + _vm.user.id + _vm.rand,\n disabled: _vm.loading.password || _vm.loading.all,\n minlength: _vm.minPasswordLength,\n placeholder: _vm.t(\"settings\", \"Add new password\"),\n autocapitalize: \"off\",\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n required: \"\",\n spellcheck: \"false\",\n type: \"password\",\n value: \"\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n )\n : _c(\"div\"),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"mailAddress\",\n class: { \"icon-loading-small\": _vm.loading.mailAddress },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateEmail($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"mailAddress\",\n attrs: {\n id: \"mailAddress\" + _vm.user.id + _vm.rand,\n disabled: _vm.loading.mailAddress || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"Add new email address\"),\n autocapitalize: \"off\",\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n spellcheck: \"false\",\n type: \"email\"\n },\n domProps: { value: _vm.user.email }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"groups\",\n class: { \"icon-loading-small\": _vm.loading.groups }\n },\n [\n _c(\n \"Multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"close-on-select\": false,\n disabled: _vm.loading.groups || _vm.loading.all,\n limit: 2,\n multiple: true,\n options: _vm.availableGroups,\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n \"tag-width\": 60,\n taggable: _vm.settings.isAdmin,\n value: _vm.userGroups,\n label: \"name\",\n \"tag-placeholder\": \"create\",\n \"track-by\": \"id\"\n },\n on: {\n remove: _vm.removeUserGroup,\n select: _vm.addUserGroup,\n tag: _vm.createGroup\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n ? _c(\n \"div\",\n {\n staticClass: \"subadmins\",\n class: { \"icon-loading-small\": _vm.loading.subadmins }\n },\n [\n _c(\n \"Multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"close-on-select\": false,\n disabled: _vm.loading.subadmins || _vm.loading.all,\n limit: 2,\n multiple: true,\n options: _vm.subAdminsGroups,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n \"tag-width\": 60,\n value: _vm.userSubAdminsGroups,\n label: \"name\",\n \"track-by\": \"id\"\n },\n on: {\n remove: _vm.removeUserSubAdmin,\n select: _vm.addUserSubAdmin\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.usedSpace,\n expression: \"usedSpace\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"quota\",\n class: { \"icon-loading-small\": _vm.loading.quota }\n },\n [\n _c(\"Multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"allow-empty\": false,\n disabled: _vm.loading.quota || _vm.loading.all,\n options: _vm.quotaOptions,\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n taggable: true,\n value: _vm.userQuota,\n label: \"label\",\n \"tag-placeholder\": \"create\",\n \"track-by\": \"id\"\n },\n on: { input: _vm.setUserQuota, tag: _vm.validateQuota }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n {\n staticClass: \"languages\",\n class: { \"icon-loading-small\": _vm.loading.languages }\n },\n [\n _c(\"Multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n \"allow-empty\": false,\n disabled: _vm.loading.languages || _vm.loading.all,\n options: _vm.languages,\n placeholder: _vm.t(\"settings\", \"No language set\"),\n value: _vm.userLanguage,\n \"group-label\": \"label\",\n \"group-values\": \"languages\",\n label: \"name\",\n \"track-by\": \"code\"\n },\n on: { input: _vm.setUserLanguage }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath || _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"storageLocation\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin ? _c(\"div\") : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _vm.OC.currentUser !== _vm.user.id &&\n _vm.user.id !== \"admin\" &&\n !_vm.loading.all\n ? _c(\n \"div\",\n { staticClass: \"toggleUserActions\" },\n [\n _c(\n \"Actions\",\n [\n _c(\n \"ActionButton\",\n {\n attrs: { icon: \"icon-checkmark\" },\n on: {\n click: function($event) {\n _vm.editing = false\n }\n }\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Done\")) +\n \"\\n\\t\\t\\t\\t\"\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.hideMenu,\n expression: \"hideMenu\"\n }\n ],\n staticClass: \"icon-more\",\n on: { click: _vm.toggleMenu }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"popovermenu\",\n class: { open: _vm.openedMenu }\n },\n [_c(\"PopoverMenu\", { attrs: { menu: _vm.userActions } })],\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"feedback\",\n style: { opacity: _vm.feedbackMessage !== \"\" ? 1 : 0 }\n },\n [\n _c(\"div\", { staticClass: \"icon-checkmark\" }),\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.feedbackMessage) + \"\\n\\t\\t\")\n ]\n )\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { disabled: _vm.loading.delete || _vm.loading.disable },\n attrs: { \"data-id\": _vm.user.id }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: {\n \"icon-loading-small\":\n _vm.loading.delete || _vm.loading.disable || _vm.loading.wipe\n }\n },\n [\n !_vm.loading.delete && !_vm.loading.disable && !_vm.loading.wipe\n ? _c(\"img\", {\n attrs: {\n alt: \"\",\n width: \"32\",\n height: \"32\",\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\"\n }\n })\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.user.id) + \"\\n\\t\\t\"),\n _c(\"div\", { staticClass: \"displayName subtitle\" }, [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.user.displayname) + \"\\n\\t\\t\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\"),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"mailAddress\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.user.email) + \"\\n\\t\")\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"groups\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.userGroupsLabels) + \"\\n\\t\")\n ]),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0 && _vm.settings.isAdmin\n ? _c(\"div\", { staticClass: \"subAdminsGroups\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.userSubAdminsGroupsLabels) + \"\\n\\t\")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.usedSpace,\n expression: \"usedSpace\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"quota\"\n },\n [\n _c(\"progress\", {\n staticClass: \"quota-user-progress\",\n class: { warn: _vm.usedQuota > 80 },\n attrs: { max: \"100\" },\n domProps: { value: _vm.usedQuota }\n })\n ]\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\"div\", { staticClass: \"languages\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.userLanguage.name) + \"\\n\\t\")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend || _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.user.backend) + \"\\n\\t\\t\")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation subtitle\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.user.storageLocation) + \"\\n\\t\\t\"\n )\n ])\n : _vm._e()\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\n \"div\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.userLastLoginTooltip,\n expression: \"userLastLoginTooltip\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"lastLogin\"\n },\n [_vm._v(\"\\n\\t\\t\" + _vm._s(_vm.userLastLogin) + \"\\n\\t\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _vm.canEdit && !_vm.loading.all\n ? _c(\n \"div\",\n { staticClass: \"toggleUserActions\" },\n [\n _c(\n \"Actions\",\n [\n _c(\n \"ActionButton\",\n {\n attrs: { icon: \"icon-rename\" },\n on: { click: _vm.toggleEdit }\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Edit User\")) +\n \"\\n\\t\\t\\t\\t\"\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.hideMenu,\n expression: \"hideMenu\"\n }\n ],\n staticClass: \"icon-more\",\n on: {\n click: function($event) {\n return _vm.$emit(\"toggleMenu\")\n }\n }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"popovermenu\",\n class: { open: _vm.openedMenu }\n },\n [_c(\"PopoverMenu\", { attrs: { menu: _vm.userActions } })],\n 1\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"feedback\",\n style: { opacity: _vm.feedbackMessage !== \"\" ? 1 : 0 }\n },\n [\n _c(\"div\", { staticClass: \"icon-checkmark\" }),\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.feedbackMessage) + \"\\n\\t\\t\")\n ]\n )\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"Content\",\n {\n attrs: {\n \"app-name\": \"settings\",\n \"navigation-class\": { \"icon-loading\": _vm.loadingAddGroup }\n }\n },\n [\n _c(\n \"AppNavigation\",\n [\n _c(\"AppNavigationNew\", {\n attrs: {\n \"button-id\": \"new-user-button\",\n text: _vm.t(\"settings\", \"New user\"),\n \"button-class\": \"icon-add\"\n },\n on: { click: _vm.toggleNewUserMenu }\n }),\n _vm._v(\" \"),\n _c(\n \"ul\",\n { attrs: { id: \"usergrouplist\" } },\n _vm._l(_vm.menu, function(item) {\n return _c(\"AppNavigationItem\", {\n key: item.key,\n attrs: { item: item }\n })\n }),\n 1\n ),\n _vm._v(\" \"),\n _c(\"AppNavigationSettings\", [\n _c(\n \"div\",\n [\n _c(\"p\", [_vm._v(_vm._s(_vm.t(\"settings\", \"Default quota:\")))]),\n _vm._v(\" \"),\n _c(\"Multiselect\", {\n attrs: {\n value: _vm.defaultQuota,\n options: _vm.quotaOptions,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Select default quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n \"allow-empty\": false,\n taggable: true\n },\n on: { tag: _vm.validateQuota, input: _vm.setDefaultQuota }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showLanguages,\n expression: \"showLanguages\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { id: \"showLanguages\", type: \"checkbox\" },\n domProps: {\n checked: Array.isArray(_vm.showLanguages)\n ? _vm._i(_vm.showLanguages, null) > -1\n : _vm.showLanguages\n },\n on: {\n change: function($event) {\n var $$a = _vm.showLanguages,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showLanguages = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showLanguages = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showLanguages = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showLanguages\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show Languages\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showLastLogin,\n expression: \"showLastLogin\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { id: \"showLastLogin\", type: \"checkbox\" },\n domProps: {\n checked: Array.isArray(_vm.showLastLogin)\n ? _vm._i(_vm.showLastLogin, null) > -1\n : _vm.showLastLogin\n },\n on: {\n change: function($event) {\n var $$a = _vm.showLastLogin,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showLastLogin = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showLastLogin = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showLastLogin = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showLastLogin\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show last login\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showUserBackend,\n expression: \"showUserBackend\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { id: \"showUserBackend\", type: \"checkbox\" },\n domProps: {\n checked: Array.isArray(_vm.showUserBackend)\n ? _vm._i(_vm.showUserBackend, null) > -1\n : _vm.showUserBackend\n },\n on: {\n change: function($event) {\n var $$a = _vm.showUserBackend,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showUserBackend = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showUserBackend = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showUserBackend = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showUserBackend\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show user backend\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showStoragePath,\n expression: \"showStoragePath\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { id: \"showStoragePath\", type: \"checkbox\" },\n domProps: {\n checked: Array.isArray(_vm.showStoragePath)\n ? _vm._i(_vm.showStoragePath, null) > -1\n : _vm.showStoragePath\n },\n on: {\n change: function($event) {\n var $$a = _vm.showStoragePath,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showStoragePath = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showStoragePath = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showStoragePath = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showStoragePath\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show storage path\")))\n ])\n ])\n ])\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"AppContent\",\n [\n _c(\"UserList\", {\n attrs: {\n users: _vm.users,\n \"show-config\": _vm.showConfig,\n \"selected-group\": _vm.selectedGroup,\n \"external-actions\": _vm.externalActions\n },\n scopedSlots: _vm._u([\n {\n key: \"content\",\n fn: function() {\n return undefined\n },\n proxy: true\n }\n ])\n })\n ],\n 1\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/MA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjlBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC11BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC3JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7fA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7dA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7MA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;A","sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"vue-2.js?v=662f771dd73ad67e77f2","sources":["webpack:///./apps/settings/src/components/AppDetails.vue","webpack:///./apps/settings/src/components/AppDetails.vue?0b0a","webpack:///./apps/settings/src/components/AppDetails.vue?668f","webpack:///./apps/settings/src/components/AppDetails.vue?baba","webpack:///./apps/settings/src/components/AppList.vue","webpack:///./apps/settings/src/components/AppList.vue?ff65","webpack:///./apps/settings/src/components/AppList.vue?f224","webpack:///./apps/settings/src/components/AppList/AppItem.vue","webpack:///./apps/settings/src/components/AppList/AppItem.vue?6d51","webpack:///./apps/settings/src/components/AppList/AppItem.vue?f6ef","webpack:///./apps/settings/src/components/AppList/AppItem.vue?3e9c","webpack:///./apps/settings/src/components/AppList/AppScore.vue","webpack:///./apps/settings/src/components/AppList/AppScore.vue?5862","webpack:///./apps/settings/src/components/AppList/AppScore.vue?8472","webpack:///./apps/settings/src/components/AppManagement.vue","webpack:///./apps/settings/src/components/AppManagement.vue?9197","webpack:///./apps/settings/src/components/PrefixMixin.vue","webpack:///./apps/settings/src/components/PrefixMixin.vue?4fe7","webpack:///./apps/settings/src/components/SvgFilterMixin.vue","webpack:///./apps/settings/src/components/SvgFilterMixin.vue?0fa6","webpack:///./apps/settings/src/views/Apps.vue","webpack:///./apps/settings/src/views/Apps.vue?53fc","webpack:///./apps/settings/src/views/Apps.vue?04ea","webpack:///./apps/settings/src/components/AppDetails.vue?56e1","webpack:///./apps/settings/src/components/AppList.vue?150c","webpack:///./apps/settings/src/components/AppList/AppItem.vue?39d2","webpack:///./apps/settings/src/components/AppList/AppScore.vue?f088","webpack:///./apps/settings/src/components/AppManagement.vue?efce","webpack:///./apps/settings/src/components/PrefixMixin.vue?5c9b","webpack:///./apps/settings/src/components/SvgFilterMixin.vue?e5f1","webpack:///./apps/settings/src/views/Apps.vue?8d72","webpack:///./apps/settings/src/components/AppDetails.vue?9b6d","webpack:///./apps/settings/src/components/AppList/AppItem.vue?5906","webpack:///./apps/settings/src/components/AppDetails.vue?32dc","webpack:///./apps/settings/src/components/AppList.vue?68f1","webpack:///./apps/settings/src/components/AppList/AppItem.vue?9b42","webpack:///./apps/settings/src/components/AppList/AppScore.vue?2fd1","webpack:///./apps/settings/src/views/Apps.vue?b71b","webpack:///./apps/settings/src/components/AppDetails.vue?1f94","webpack:///./apps/settings/src/components/AppList/AppItem.vue?c33e"],"sourcesContent":["import { render, staticRenderFns } from \"./AppDetails.vue?vue&type=template&id=59a92e62&scoped=true&\"\nimport script from \"./AppDetails.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDetails.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppDetails.vue?vue&type=style&index=0&id=59a92e62&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59a92e62\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('59a92e62')) {\n api.createRecord('59a92e62', component.options)\n } else {\n api.reload('59a92e62', component.options)\n }\n module.hot.accept(\"./AppDetails.vue?vue&type=template&id=59a92e62&scoped=true&\", function () {\n api.rerender('59a92e62', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppDetails.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=59a92e62&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=59a92e62&scoped=true&lang=css&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=template&id=59a92e62&scoped=true&\"","import { render, staticRenderFns } from \"./AppList.vue?vue&type=template&id=6d1e92a4&\"\nimport script from \"./AppList.vue?vue&type=script&lang=js&\"\nexport * from \"./AppList.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6d1e92a4')) {\n api.createRecord('6d1e92a4', component.options)\n } else {\n api.reload('6d1e92a4', component.options)\n }\n module.hot.accept(\"./AppList.vue?vue&type=template&id=6d1e92a4&\", function () {\n api.rerender('6d1e92a4', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppList.vue?vue&type=template&id=6d1e92a4&\"","import { render, staticRenderFns } from \"./AppItem.vue?vue&type=template&id=429da85a&scoped=true&\"\nimport script from \"./AppItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"429da85a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('429da85a')) {\n api.createRecord('429da85a', component.options)\n } else {\n api.reload('429da85a', component.options)\n }\n module.hot.accept(\"./AppItem.vue?vue&type=template&id=429da85a&scoped=true&\", function () {\n api.rerender('429da85a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList/AppItem.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=script&lang=js&\"","import mod from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=css&\"; export default mod; export * from \"-!../../../../../node_modules/vue-style-loader/index.js!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=css&\"","export * from \"-!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=template&id=429da85a&scoped=true&\"","import { render, staticRenderFns } from \"./AppScore.vue?vue&type=template&id=0ecce4fc&\"\nimport script from \"./AppScore.vue?vue&type=script&lang=js&\"\nexport * from \"./AppScore.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('0ecce4fc')) {\n api.createRecord('0ecce4fc', component.options)\n } else {\n api.reload('0ecce4fc', component.options)\n }\n module.hot.accept(\"./AppScore.vue?vue&type=template&id=0ecce4fc&\", function () {\n api.rerender('0ecce4fc', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppList/AppScore.vue\"\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppScore.vue?vue&type=template&id=0ecce4fc&\"","var render, staticRenderFns\nimport script from \"./AppManagement.vue?vue&type=script&lang=js&\"\nexport * from \"./AppManagement.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3d572c5a')) {\n api.createRecord('3d572c5a', component.options)\n } else {\n api.reload('3d572c5a', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"apps/settings/src/components/AppManagement.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppManagement.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppManagement.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./PrefixMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b4ed0c44')) {\n api.createRecord('b4ed0c44', component.options)\n } else {\n api.reload('b4ed0c44', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"apps/settings/src/components/PrefixMixin.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PrefixMixin.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\nexport * from \"./SvgFilterMixin.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('9219d434')) {\n api.createRecord('9219d434', component.options)\n } else {\n api.reload('9219d434', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"apps/settings/src/components/SvgFilterMixin.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SvgFilterMixin.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=d3714d0a&\"\nimport script from \"./Apps.vue?vue&type=script&lang=js&\"\nexport * from \"./Apps.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/home/roeland/nc/server/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('d3714d0a')) {\n api.createRecord('d3714d0a', component.options)\n } else {\n api.reload('d3714d0a', component.options)\n }\n module.hot.accept(\"./Apps.vue?vue&type=template&id=d3714d0a&\", function () {\n api.rerender('d3714d0a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"apps/settings/src/views/Apps.vue\"\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&lang=js&\"","export * from \"-!../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Apps.vue?vue&type=template&id=d3714d0a&\"","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { Multiselect } from 'nextcloud-vue';\nimport marked from 'marked';\nimport dompurify from 'dompurify';\nimport AppScore from './AppList/AppScore';\nimport AppManagement from './AppManagement';\nimport PrefixMixin from './PrefixMixin';\nimport SvgFilterMixin from './SvgFilterMixin';\nexport default {\n name: 'AppDetails',\n components: {\n Multiselect: Multiselect,\n AppScore: AppScore\n },\n mixins: [AppManagement, PrefixMixin, SvgFilterMixin],\n props: ['category', 'app'],\n data: function data() {\n return {\n groupCheckedAppsData: false\n };\n },\n computed: {\n appstoreUrl: function appstoreUrl() {\n return \"https://apps.nextcloud.com/apps/\".concat(this.app.id);\n },\n licence: function licence() {\n if (this.app.licence) {\n return t('settings', '{license}-licensed', {\n license: ('' + this.app.licence).toUpperCase()\n });\n }\n\n return null;\n },\n hasRating: function hasRating() {\n return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n },\n author: function author() {\n if (typeof this.app.author === 'string') {\n return [{\n '@value': this.app.author\n }];\n }\n\n if (this.app.author['@value']) {\n return [this.app.author];\n }\n\n return this.app.author;\n },\n appGroups: function appGroups() {\n return this.app.groups.map(function (group) {\n return {\n id: group,\n name: group\n };\n });\n },\n groups: function groups() {\n return this.$store.getters.getGroups.filter(function (group) {\n return group.id !== 'disabled';\n }).sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n },\n renderMarkdown: function renderMarkdown() {\n var renderer = new marked.Renderer();\n\n renderer.link = function (href, title, text) {\n var prot;\n\n try {\n prot = decodeURIComponent(unescape(href)).replace(/[^\\w:]/g, '').toLowerCase();\n } catch (e) {\n return '';\n }\n\n if (prot.indexOf('http:') !== 0 && prot.indexOf('https:') !== 0) {\n return '';\n }\n\n var out = '<a href=\"' + href + '\" rel=\"noreferrer noopener\"';\n\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n\n out += '>' + text + '</a>';\n return out;\n };\n\n renderer.image = function (href, title, text) {\n if (text) {\n return text;\n }\n\n return title;\n };\n\n renderer.blockquote = function (quote) {\n return quote;\n };\n\n return dompurify.sanitize(marked(this.app.description.trim(), {\n renderer: renderer,\n gfm: false,\n highlight: false,\n tables: false,\n breaks: false,\n pedantic: false,\n sanitize: true,\n smartLists: true,\n smartypants: false\n }), {\n SAFE_FOR_JQUERY: true,\n ALLOWED_TAGS: ['strong', 'p', 'a', 'ul', 'ol', 'li', 'em', 'del', 'blockquote']\n });\n }\n },\n mounted: function mounted() {\n if (this.app.groups.length > 0) {\n this.groupCheckedAppsData = true;\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport AppItem from './AppList/AppItem';\nimport PrefixMixin from './PrefixMixin';\nimport pLimit from 'p-limit';\nexport default {\n name: 'AppList',\n components: {\n AppItem: AppItem\n },\n mixins: [PrefixMixin],\n props: ['category', 'app', 'search'],\n computed: {\n counter: function counter() {\n return this.apps.filter(function (app) {\n return app.update;\n }).length;\n },\n loading: function loading() {\n return this.$store.getters.loading('list');\n },\n hasPendingUpdate: function hasPendingUpdate() {\n return this.apps.filter(function (app) {\n return app.update;\n }).length > 1;\n },\n showUpdateAll: function showUpdateAll() {\n return this.hasPendingUpdate && ['installed', 'updates'].includes(this.category);\n },\n apps: function apps() {\n var _this = this;\n\n var apps = this.$store.getters.getAllApps.filter(function (app) {\n return app.name.toLowerCase().search(_this.search.toLowerCase()) !== -1;\n }).sort(function (a, b) {\n var sortStringA = '' + (a.active ? 0 : 1) + (a.update ? 0 : 1) + a.name;\n var sortStringB = '' + (b.active ? 0 : 1) + (b.update ? 0 : 1) + b.name;\n return OC.Util.naturalSortCompare(sortStringA, sortStringB);\n });\n\n if (this.category === 'installed') {\n return apps.filter(function (app) {\n return app.installed;\n });\n }\n\n if (this.category === 'enabled') {\n return apps.filter(function (app) {\n return app.active && app.installed;\n });\n }\n\n if (this.category === 'disabled') {\n return apps.filter(function (app) {\n return !app.active && app.installed;\n });\n }\n\n if (this.category === 'app-bundles') {\n return apps.filter(function (app) {\n return app.bundles;\n });\n }\n\n if (this.category === 'updates') {\n return apps.filter(function (app) {\n return app.update;\n });\n } // filter app store categories\n\n\n return apps.filter(function (app) {\n return app.appstore && app.category !== undefined && (app.category === _this.category || app.category.indexOf(_this.category) > -1);\n });\n },\n bundles: function bundles() {\n var _this2 = this;\n\n return this.$store.getters.getServerData.bundles.filter(function (bundle) {\n return _this2.bundleApps(bundle.id).length > 0;\n });\n },\n bundleApps: function bundleApps() {\n return function (bundle) {\n return this.$store.getters.getAllApps.filter(function (app) {\n return app.bundleId === bundle;\n });\n };\n },\n searchApps: function searchApps() {\n var _this3 = this;\n\n if (this.search === '') {\n return [];\n }\n\n return this.$store.getters.getAllApps.filter(function (app) {\n if (app.name.toLowerCase().search(_this3.search.toLowerCase()) !== -1) {\n return !_this3.apps.find(function (_app) {\n return _app.id === app.id;\n });\n }\n\n return false;\n });\n },\n useAppStoreView: function useAppStoreView() {\n return !this.useListView && !this.useBundleView;\n },\n useListView: function useListView() {\n return this.category === 'installed' || this.category === 'enabled' || this.category === 'disabled' || this.category === 'updates';\n },\n useBundleView: function useBundleView() {\n return this.category === 'app-bundles';\n },\n allBundlesEnabled: function allBundlesEnabled() {\n var self = this;\n return function (id) {\n return self.bundleApps(id).filter(function (app) {\n return !app.active;\n }).length === 0;\n };\n },\n bundleToggleText: function bundleToggleText() {\n var self = this;\n return function (id) {\n if (self.allBundlesEnabled(id)) {\n return t('settings', 'Disable all');\n }\n\n return t('settings', 'Enable all');\n };\n }\n },\n methods: {\n toggleBundle: function toggleBundle(id) {\n if (this.allBundlesEnabled(id)) {\n return this.disableBundle(id);\n }\n\n return this.enableBundle(id);\n },\n enableBundle: function enableBundle(id) {\n var apps = this.bundleApps(id).map(function (app) {\n return app.id;\n });\n this.$store.dispatch('enableApp', {\n appId: apps,\n groups: []\n }).catch(function (error) {\n console.error(error);\n OC.Notification.show(error);\n });\n },\n disableBundle: function disableBundle(id) {\n var apps = this.bundleApps(id).map(function (app) {\n return app.id;\n });\n this.$store.dispatch('disableApp', {\n appId: apps,\n groups: []\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n },\n updateAll: function updateAll() {\n var _this4 = this;\n\n var limit = pLimit(1);\n this.apps.filter(function (app) {\n return app.update;\n }).map(function (app) {\n return limit(function () {\n return _this4.$store.dispatch('updateApp', {\n appId: app.id\n });\n });\n });\n }\n }\n};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport AppScore from './AppScore';\nimport AppManagement from '../AppManagement';\nimport SvgFilterMixin from '../SvgFilterMixin';\nexport default {\n name: 'AppItem',\n components: {\n AppScore: AppScore\n },\n mixins: [AppManagement, SvgFilterMixin],\n props: {\n app: {},\n category: {},\n listView: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n isSelected: false,\n scrolled: false\n };\n },\n computed: {\n hasRating: function hasRating() {\n return this.app.appstoreData && this.app.appstoreData.ratingNumOverall > 5;\n }\n },\n watch: {\n '$route.params.id': function $routeParamsId(id) {\n this.isSelected = this.app.id === id;\n }\n },\n mounted: function mounted() {\n this.isSelected = this.app.id === this.$route.params.id;\n },\n watchers: {},\n methods: {\n showAppDetails: function () {\n var _showAppDetails = _asyncToGenerator(\n /*#__PURE__*/\n regeneratorRuntime.mark(function _callee(event) {\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(event.currentTarget.tagName === 'INPUT' || event.currentTarget.tagName === 'A')) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n _context.prev = 2;\n _context.next = 5;\n return this.$router.push({\n name: 'apps-details',\n params: {\n category: this.category,\n id: this.app.id\n }\n });\n\n case 5:\n _context.next = 9;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context[\"catch\"](2);\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[2, 7]]);\n }));\n\n function showAppDetails(_x) {\n return _showAppDetails.apply(this, arguments);\n }\n\n return showAppDetails;\n }(),\n prefix: function prefix(_prefix, content) {\n return _prefix + '_' + content;\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'AppScore',\n props: ['score'],\n computed: {\n scoreImage: function scoreImage() {\n var score = Math.round(this.score * 10);\n var imageName = 'rating/s' + score + '.svg';\n return OC.imagePath('core', imageName);\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n computed: {\n appGroups: function appGroups() {\n return this.app.groups.map(function (group) {\n return {\n id: group,\n name: group\n };\n });\n },\n loading: function loading() {\n var self = this;\n return function (id) {\n return self.$store.getters.loading(id);\n };\n },\n installing: function installing() {\n return this.$store.getters.loading('install');\n },\n enableButtonText: function enableButtonText() {\n if (this.app.needsDownload) {\n return t('settings', 'Download and enable');\n }\n\n return t('settings', 'Enable');\n },\n forceEnableButtonText: function forceEnableButtonText() {\n if (this.app.needsDownload) {\n return t('settings', 'Enable untested app');\n }\n\n return t('settings', 'Enable untested app');\n },\n enableButtonTooltip: function enableButtonTooltip() {\n if (this.app.needsDownload) {\n return t('settings', 'The app will be downloaded from the app store');\n }\n\n return false;\n },\n forceEnableButtonTooltip: function forceEnableButtonTooltip() {\n var base = t('settings', 'This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected.');\n\n if (this.app.needsDownload) {\n return base + ' ' + t('settings', 'The app will be downloaded from the app store');\n }\n\n return base;\n }\n },\n mounted: function mounted() {\n if (this.app.groups.length > 0) {\n this.groupCheckedAppsData = true;\n }\n },\n methods: {\n asyncFindGroup: function asyncFindGroup(query) {\n return this.$store.dispatch('getGroups', {\n search: query,\n limit: 5,\n offset: 0\n });\n },\n isLimitedToGroups: function isLimitedToGroups(app) {\n if (this.app.groups.length || this.groupCheckedAppsData) {\n return true;\n }\n\n return false;\n },\n setGroupLimit: function setGroupLimit() {\n if (!this.groupCheckedAppsData) {\n this.$store.dispatch('enableApp', {\n appId: this.app.id,\n groups: []\n });\n }\n },\n canLimitToGroups: function canLimitToGroups(app) {\n if (app.types && app.types.includes('filesystem') || app.types.includes('prelogin') || app.types.includes('authentication') || app.types.includes('logging') || app.types.includes('prevent_group_restriction')) {\n return false;\n }\n\n return true;\n },\n addGroupLimitation: function addGroupLimitation(group) {\n var groups = this.app.groups.concat([]).concat([group.id]);\n this.$store.dispatch('enableApp', {\n appId: this.app.id,\n groups: groups\n });\n },\n removeGroupLimitation: function removeGroupLimitation(group) {\n var currentGroups = this.app.groups.concat([]);\n var index = currentGroups.indexOf(group.id);\n\n if (index > -1) {\n currentGroups.splice(index, 1);\n }\n\n this.$store.dispatch('enableApp', {\n appId: this.app.id,\n groups: currentGroups\n });\n },\n forceEnable: function forceEnable(appId) {\n this.$store.dispatch('forceEnableApp', {\n appId: appId,\n groups: []\n }).then(function (response) {\n OC.Settings.Apps.rebuildNavigation();\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n },\n enable: function enable(appId) {\n this.$store.dispatch('enableApp', {\n appId: appId,\n groups: []\n }).then(function (response) {\n OC.Settings.Apps.rebuildNavigation();\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n },\n disable: function disable(appId) {\n this.$store.dispatch('disableApp', {\n appId: appId\n }).then(function (response) {\n OC.Settings.Apps.rebuildNavigation();\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n },\n remove: function remove(appId) {\n this.$store.dispatch('uninstallApp', {\n appId: appId\n }).then(function (response) {\n OC.Settings.Apps.rebuildNavigation();\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n },\n install: function install(appId) {\n this.$store.dispatch('enableApp', {\n appId: appId\n }).then(function (response) {\n OC.Settings.Apps.rebuildNavigation();\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n },\n update: function update(appId) {\n this.$store.dispatch('updateApp', {\n appId: appId\n }).then(function (response) {\n OC.Settings.Apps.rebuildNavigation();\n }).catch(function (error) {\n OC.Notification.show(error);\n });\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'PrefixMixin',\n methods: {\n prefix: function prefix(_prefix, content) {\n return _prefix + '_' + content;\n }\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nexport default {\n name: 'SvgFilterMixin',\n data: function data() {\n return {\n filterId: ''\n };\n },\n computed: {\n filterUrl: function filterUrl() {\n return \"url(#\".concat(this.filterId, \")\");\n }\n },\n mounted: function mounted() {\n this.filterId = 'invertIconApps' + Math.floor(Math.random() * 100) + new Date().getSeconds() + new Date().getMilliseconds();\n }\n};","//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport { AppContent, AppNavigation, AppNavigationItem, AppSidebar, Content } from 'nextcloud-vue';\nimport AppList from '../components/AppList';\nimport Vue from 'vue';\nimport VueLocalStorage from 'vue-localstorage';\nimport AppDetails from '../components/AppDetails';\nVue.use(VueLocalStorage);\nexport default {\n name: 'Apps',\n components: {\n AppContent: AppContent,\n AppNavigation: AppNavigation,\n AppNavigationItem: AppNavigationItem,\n AppSidebar: AppSidebar,\n Content: Content,\n AppDetails: AppDetails,\n AppList: AppList\n },\n props: {\n category: {\n type: String,\n default: 'installed'\n },\n id: {\n type: String,\n default: ''\n }\n },\n data: function data() {\n return {\n searchQuery: ''\n };\n },\n computed: {\n loading: function loading() {\n return this.$store.getters.loading('categories');\n },\n loadingList: function loadingList() {\n return this.$store.getters.loading('list');\n },\n currentApp: function currentApp() {\n var _this = this;\n\n return this.apps.find(function (app) {\n return app.id === _this.id;\n });\n },\n categories: function categories() {\n return this.$store.getters.getCategories;\n },\n apps: function apps() {\n return this.$store.getters.getAllApps;\n },\n updateCount: function updateCount() {\n return this.$store.getters.getUpdateCount;\n },\n settings: function settings() {\n return this.$store.getters.getServerData;\n },\n // BUILD APP NAVIGATION MENU OBJECT\n menu: function menu() {\n var _this2 = this;\n\n // Data provided php side\n var categories = this.$store.getters.getCategories;\n categories = Array.isArray(categories) ? categories : []; // Map groups\n\n categories = categories.map(function (category) {\n var item = {};\n item.id = 'app-category-' + category.ident;\n item.icon = 'icon-category-' + category.ident;\n item.classes = []; // empty classes, active will be set later\n\n item.router = {\n // router link to\n name: 'apps-category',\n params: {\n category: category.ident\n }\n };\n item.text = category.displayName;\n return item;\n }); // Add everyone group\n\n var defaultCategories = [{\n id: 'app-category-your-apps',\n classes: [],\n router: {\n name: 'apps'\n },\n icon: 'icon-category-installed',\n text: t('settings', 'Your apps')\n }, {\n id: 'app-category-enabled',\n classes: [],\n icon: 'icon-category-enabled',\n router: {\n name: 'apps-category',\n params: {\n category: 'enabled'\n }\n },\n text: t('settings', 'Active apps')\n }, {\n id: 'app-category-disabled',\n classes: [],\n icon: 'icon-category-disabled',\n router: {\n name: 'apps-category',\n params: {\n category: 'disabled'\n }\n },\n text: t('settings', 'Disabled apps')\n }];\n\n if (!this.settings.appstoreEnabled) {\n return defaultCategories;\n }\n\n if (this.$store.getters.getUpdateCount > 0) {\n defaultCategories.push({\n id: 'app-category-updates',\n classes: [],\n icon: 'icon-download',\n router: {\n name: 'apps-category',\n params: {\n category: 'updates'\n }\n },\n text: t('settings', 'Updates'),\n utils: {\n counter: this.$store.getters.getUpdateCount\n }\n });\n }\n\n defaultCategories.push({\n id: 'app-category-app-bundles',\n classes: [],\n icon: 'icon-category-app-bundles',\n router: {\n name: 'apps-category',\n params: {\n category: 'app-bundles'\n }\n },\n text: t('settings', 'App bundles')\n });\n categories = defaultCategories.concat(categories); // Set current group as active\n\n var activeGroup = categories.findIndex(function (group) {\n return group.id === 'app-category-' + _this2.category;\n });\n\n if (activeGroup >= 0) {\n categories[activeGroup].classes.push('active');\n } else {\n categories[0].classes.push('active');\n }\n\n categories.push({\n id: 'app-developer-docs',\n classes: [],\n href: this.settings.developerDocumentation,\n text: t('settings', 'Developer documentation') + ' ↗'\n }); // Return\n\n return categories;\n }\n },\n watch: {\n category: function category(val, old) {\n this.setSearch('');\n }\n },\n beforeMount: function beforeMount() {\n this.$store.dispatch('getCategories');\n this.$store.dispatch('getAllApps');\n this.$store.dispatch('getGroups', {\n offset: 0,\n limit: 5\n });\n this.$store.commit('setUpdateCount', this.$store.getters.getServerData.updateCount);\n },\n mounted: function mounted() {\n /**\n * Register search\n */\n this.appSearch = new OCA.Search(this.setSearch, this.resetSearch);\n },\n methods: {\n setSearch: function setSearch(query) {\n this.searchQuery = query;\n },\n resetSearch: function resetSearch() {\n this.setSearch('');\n },\n hideAppDetails: function hideAppDetails() {\n this.$router.push({\n name: 'apps-category',\n params: {\n category: this.category\n }\n });\n }\n }\n};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-59a92e62] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-59a92e62]:hover,\\n.force[data-v-59a92e62]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \"\\n.force[data-v-429da85a] {\\n\\tbackground: var(--color-main-background);\\n\\tborder-color: var(--color-error);\\n\\tcolor: var(--color-error);\\n}\\n.force[data-v-429da85a]:hover,\\n.force[data-v-429da85a]:active {\\n\\tbackground: var(--color-error);\\n\\tborder-color: var(--color-error) !important;\\n\\tcolor: var(--color-main-background);\\n}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticStyle: { padding: \"20px\" }, attrs: { id: \"app-details-view\" } },\n [\n _c(\"h2\", [\n !_vm.app.preview\n ? _c(\"div\", { staticClass: \"icon-settings-dark\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.previewAsIcon && _vm.app.preview\n ? _c(\n \"svg\",\n { attrs: { width: \"32\", height: \"32\", viewBox: \"0 0 32 32\" } },\n [\n _c(\"defs\", [\n _c(\n \"filter\",\n { attrs: { id: _vm.filterId } },\n [\n _c(\"feColorMatrix\", {\n attrs: {\n in: \"SourceGraphic\",\n type: \"matrix\",\n values: \"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"image\", {\n staticClass: \"app-icon\",\n attrs: {\n x: \"0\",\n y: \"0\",\n width: \"32\",\n height: \"32\",\n preserveAspectRatio: \"xMinYMin meet\",\n filter: _vm.filterUrl,\n \"xlink:href\": _vm.app.preview\n }\n })\n ]\n )\n : _vm._e(),\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.app.name) + \"\\n\\t\")\n ]),\n _vm._v(\" \"),\n _vm.app.screenshot\n ? _c(\"img\", { attrs: { src: _vm.app.screenshot, width: \"100%\" } })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.level === 300 || _vm.app.level === 200 || _vm.hasRating\n ? _c(\n \"div\",\n { staticClass: \"app-level\" },\n [\n _vm.app.level === 300\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.t(\n \"settings\",\n \"This app is supported via your current Nextcloud subscription.\"\n ),\n expression:\n \"t('settings', 'This app is supported via your current Nextcloud subscription.')\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"supported icon-checkmark-color\"\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Supported\"))\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.level === 200\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.t(\n \"settings\",\n \"Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\"\n ),\n expression:\n \"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"official icon-checkmark\"\n },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Featured\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.hasRating\n ? _c(\"AppScore\", {\n attrs: { score: _vm.app.appstoreData.ratingOverall }\n })\n : _vm._e()\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.author\n ? _c(\n \"div\",\n { staticClass: \"app-author\" },\n [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.t(\"settings\", \"by\")) + \"\\n\\t\\t\"),\n _vm._l(_vm.author, function(a, index) {\n return _c(\"span\", { key: index }, [\n a[\"@attributes\"] && a[\"@attributes\"][\"homepage\"]\n ? _c(\n \"a\",\n { attrs: { href: a[\"@attributes\"][\"homepage\"] } },\n [_vm._v(_vm._s(a[\"@value\"]))]\n )\n : a[\"@value\"]\n ? _c(\"span\", [_vm._v(_vm._s(a[\"@value\"]))])\n : _c(\"span\", [_vm._v(_vm._s(a))]),\n index + 1 < _vm.author.length\n ? _c(\"span\", [_vm._v(\", \")])\n : _vm._e()\n ])\n })\n ],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.licence\n ? _c(\"div\", { staticClass: \"app-licence\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.licence) + \"\\n\\t\")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"actions\" }, [\n _c(\"div\", { staticClass: \"actions-buttons\" }, [\n _vm.app.update\n ? _c(\"input\", {\n staticClass: \"update primary\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Update to {version}\", {\n version: _vm.app.update\n }),\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n return _vm.update(_vm.app.id)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.canUnInstall\n ? _c(\"input\", {\n staticClass: \"uninstall\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Remove\"),\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n return _vm.remove(_vm.app.id)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.active\n ? _c(\"input\", {\n staticClass: \"enable\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Disable\"),\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n return _vm.disable(_vm.app.id)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible)\n ? _c(\"input\", {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.enableButtonTooltip,\n expression: \"enableButtonTooltip\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"enable primary\",\n attrs: {\n type: \"button\",\n value: _vm.enableButtonText,\n disabled:\n !_vm.app.canInstall ||\n _vm.installing ||\n _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n return _vm.enable(_vm.app.id)\n }\n }\n })\n : !_vm.app.active\n ? _c(\"input\", {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.forceEnableButtonTooltip,\n expression: \"forceEnableButtonTooltip\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"enable force\",\n attrs: {\n type: \"button\",\n value: _vm.forceEnableButtonText,\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n return _vm.forceEnable(_vm.app.id)\n }\n }\n })\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"app-groups\" }, [\n _vm.app.active && _vm.canLimitToGroups(_vm.app)\n ? _c(\n \"div\",\n { staticClass: \"groups-enable\" },\n [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.groupCheckedAppsData,\n expression: \"groupCheckedAppsData\"\n }\n ],\n staticClass: \"groups-enable__checkbox checkbox\",\n attrs: {\n id: _vm.prefix(\"groups_enable\", _vm.app.id),\n type: \"checkbox\"\n },\n domProps: {\n value: _vm.app.id,\n checked: Array.isArray(_vm.groupCheckedAppsData)\n ? _vm._i(_vm.groupCheckedAppsData, _vm.app.id) > -1\n : _vm.groupCheckedAppsData\n },\n on: {\n change: [\n function($event) {\n var $$a = _vm.groupCheckedAppsData,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = _vm.app.id,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 &&\n (_vm.groupCheckedAppsData = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.groupCheckedAppsData = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.groupCheckedAppsData = $$c\n }\n },\n _vm.setGroupLimit\n ]\n }\n }),\n _vm._v(\" \"),\n _c(\n \"label\",\n { attrs: { for: _vm.prefix(\"groups_enable\", _vm.app.id) } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Limit to groups\")))]\n ),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"group_select\",\n attrs: {\n type: \"hidden\",\n title: _vm.t(\"settings\", \"All\"),\n value: \"\"\n }\n }),\n _vm._v(\" \"),\n _vm.isLimitedToGroups(_vm.app)\n ? _c(\n \"Multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.groups,\n value: _vm.appGroups,\n \"options-limit\": 5,\n placeholder: _vm.t(\n \"settings\",\n \"Limit app usage to groups\"\n ),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false,\n \"tag-width\": 60\n },\n on: {\n select: _vm.addGroupLimitation,\n remove: _vm.removeGroupLimitation,\n \"search-change\": _vm.asyncFindGroup\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No results\")))]\n )\n ]\n )\n : _vm._e()\n ],\n 1\n )\n : _vm._e()\n ])\n ]),\n _vm._v(\" \"),\n _c(\"ul\", { staticClass: \"app-dependencies\" }, [\n _vm.app.missingMinOwnCloudVersion\n ? _c(\"li\", [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"settings\",\n \"This app has no minimum Nextcloud version assigned. This will be an error in the future.\"\n )\n ) +\n \"\\n\\t\\t\"\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.missingMaxOwnCloudVersion\n ? _c(\"li\", [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"settings\",\n \"This app has no maximum Nextcloud version assigned. This will be an error in the future.\"\n )\n ) +\n \"\\n\\t\\t\"\n )\n ])\n : _vm._e(),\n _vm._v(\" \"),\n !_vm.app.canInstall\n ? _c(\"li\", [\n _vm._v(\n \"\\n\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"settings\",\n \"This app cannot be installed because the following dependencies are not fulfilled:\"\n )\n ) +\n \"\\n\\t\\t\\t\"\n ),\n _c(\n \"ul\",\n { staticClass: \"missing-dependencies\" },\n _vm._l(_vm.app.missingDependencies, function(dep, index) {\n return _c(\"li\", { key: index }, [\n _vm._v(\"\\n\\t\\t\\t\\t\\t\" + _vm._s(dep) + \"\\n\\t\\t\\t\\t\")\n ])\n }),\n 0\n )\n ])\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\"p\", { staticClass: \"documentation\" }, [\n !_vm.app.internal\n ? _c(\n \"a\",\n {\n staticClass: \"appslink\",\n attrs: {\n href: _vm.appstoreUrl,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"View in store\")) + \" ↗\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.website\n ? _c(\n \"a\",\n {\n staticClass: \"appslink\",\n attrs: {\n href: _vm.app.website,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Visit website\")) + \" ↗\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.bugs\n ? _c(\n \"a\",\n {\n staticClass: \"appslink\",\n attrs: {\n href: _vm.app.bugs,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Report a bug\")) + \" ↗\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.documentation && _vm.app.documentation.user\n ? _c(\n \"a\",\n {\n staticClass: \"appslink\",\n attrs: {\n href: _vm.app.documentation.user,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"User documentation\")) + \" ↗\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.documentation && _vm.app.documentation.admin\n ? _c(\n \"a\",\n {\n staticClass: \"appslink\",\n attrs: {\n href: _vm.app.documentation.admin,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Admin documentation\")) + \" ↗\")]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.documentation && _vm.app.documentation.developer\n ? _c(\n \"a\",\n {\n staticClass: \"appslink\",\n attrs: {\n href: _vm.app.documentation.developer,\n target: \"_blank\",\n rel: \"noreferrer noopener\"\n }\n },\n [\n _vm._v(\n _vm._s(_vm.t(\"settings\", \"Developer documentation\")) + \" ↗\"\n )\n ]\n )\n : _vm._e()\n ]),\n _vm._v(\" \"),\n _c(\"div\", {\n staticClass: \"app-description\",\n domProps: { innerHTML: _vm._s(_vm.renderMarkdown) }\n })\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { attrs: { id: \"app-content-inner\" } }, [\n _c(\n \"div\",\n {\n staticClass: \"apps-list\",\n class: {\n installed: _vm.useBundleView || _vm.useListView,\n store: _vm.useAppStoreView\n },\n attrs: { id: \"apps-list\" }\n },\n [\n _vm.useListView\n ? [\n _vm.showUpdateAll\n ? _c(\"div\", { staticClass: \"counter\" }, [\n _vm._v(\n \"\\n\\t\\t\\t\\t\" +\n _vm._s(\n _vm.t(\n \"settings\",\n \"{counter} apps have an update available\",\n { counter: _vm.counter }\n )\n ) +\n \"\\n\\t\\t\\t\\t\"\n ),\n _vm.showUpdateAll\n ? _c(\n \"button\",\n {\n staticClass: \"primary\",\n attrs: { id: \"app-list-update-all\" },\n on: { click: _vm.updateAll }\n },\n [\n _vm._v(\n \"\\n\\t\\t\\t\\t\\t\" +\n _vm._s(_vm.t(\"settings\", \"Update all\")) +\n \"\\n\\t\\t\\t\\t\"\n )\n ]\n )\n : _vm._e()\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"transition-group\",\n {\n staticClass: \"apps-list-container\",\n attrs: { name: \"app-list\", tag: \"div\" }\n },\n _vm._l(_vm.apps, function(app) {\n return _c(\"AppItem\", {\n key: app.id,\n attrs: { app: app, category: _vm.category }\n })\n }),\n 1\n )\n ]\n : _vm._e(),\n _vm._v(\" \"),\n _vm.useBundleView\n ? _c(\n \"transition-group\",\n {\n staticClass: \"apps-list-container\",\n attrs: { name: \"app-list\", tag: \"div\" }\n },\n [\n _vm._l(_vm.bundles, function(bundle) {\n return [\n _c(\"div\", { key: bundle.id, staticClass: \"apps-header\" }, [\n _c(\"div\", { staticClass: \"app-image\" }),\n _vm._v(\" \"),\n _c(\"h2\", [\n _vm._v(_vm._s(bundle.name) + \" \"),\n _c(\"input\", {\n attrs: {\n type: \"button\",\n value: _vm.bundleToggleText(bundle.id)\n },\n on: {\n click: function($event) {\n return _vm.toggleBundle(bundle.id)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"app-version\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"app-level\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"app-groups\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"actions\" }, [\n _vm._v(\"\\n\\t\\t\\t\\t\\t\\t \\n\\t\\t\\t\\t\\t\")\n ])\n ]),\n _vm._v(\" \"),\n _vm._l(_vm.bundleApps(bundle.id), function(app) {\n return _c(\"AppItem\", {\n key: bundle.id + app.id,\n attrs: { app: app, category: _vm.category }\n })\n })\n ]\n })\n ],\n 2\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.useAppStoreView\n ? _vm._l(_vm.apps, function(app) {\n return _c(\"AppItem\", {\n key: app.id,\n attrs: { app: app, category: _vm.category, \"list-view\": false }\n })\n })\n : _vm._e()\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"apps-list installed\", attrs: { id: \"apps-list-search\" } },\n [\n _c(\n \"div\",\n { staticClass: \"apps-list-container\" },\n [\n _vm.search !== \"\" && _vm.searchApps.length > 0\n ? [\n _c(\"div\", { staticClass: \"section\" }, [\n _c(\"div\"),\n _vm._v(\" \"),\n _c(\"td\", { attrs: { colspan: \"5\" } }, [\n _c(\"h2\", [\n _vm._v(\n _vm._s(\n _vm.t(\"settings\", \"Results from other categories\")\n )\n )\n ])\n ])\n ]),\n _vm._v(\" \"),\n _vm._l(_vm.searchApps, function(app) {\n return _c(\"AppItem\", {\n key: app.id,\n attrs: {\n app: app,\n category: _vm.category,\n \"list-view\": true\n }\n })\n })\n ]\n : _vm._e()\n ],\n 2\n )\n ]\n ),\n _vm._v(\" \"),\n _vm.search !== \"\" &&\n !_vm.loading &&\n _vm.searchApps.length === 0 &&\n _vm.apps.length === 0\n ? _c(\n \"div\",\n {\n staticClass: \"emptycontent emptycontent-search\",\n attrs: { id: \"apps-list-empty\" }\n },\n [\n _c(\"div\", {\n staticClass: \"icon-settings-dark\",\n attrs: { id: \"app-list-empty-icon\" }\n }),\n _vm._v(\" \"),\n _c(\"h2\", [\n _vm._v(\n _vm._s(_vm.t(\"settings\", \"No apps found for your version\"))\n )\n ])\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { id: \"searchresults\" } })\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"section\",\n class: { selected: _vm.isSelected },\n on: { click: _vm.showAppDetails }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"app-image app-image-icon\",\n on: { click: _vm.showAppDetails }\n },\n [\n (_vm.listView && !_vm.app.preview) ||\n (!_vm.listView && !_vm.app.screenshot)\n ? _c(\"div\", { staticClass: \"icon-settings-dark\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.listView && _vm.app.preview\n ? _c(\n \"svg\",\n { attrs: { width: \"32\", height: \"32\", viewBox: \"0 0 32 32\" } },\n [\n _c(\"defs\", [\n _c(\n \"filter\",\n { attrs: { id: _vm.filterId } },\n [\n _c(\"feColorMatrix\", {\n attrs: {\n in: \"SourceGraphic\",\n type: \"matrix\",\n values: \"-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0\"\n }\n })\n ],\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\"image\", {\n staticClass: \"app-icon\",\n attrs: {\n x: \"0\",\n y: \"0\",\n width: \"32\",\n height: \"32\",\n preserveAspectRatio: \"xMinYMin meet\",\n filter: _vm.filterUrl,\n \"xlink:href\": _vm.app.preview\n }\n })\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n !_vm.listView && _vm.app.screenshot\n ? _c(\"img\", { attrs: { src: _vm.app.screenshot, width: \"100%\" } })\n : _vm._e()\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"app-name\", on: { click: _vm.showAppDetails } },\n [_vm._v(\"\\n\\t\\t\" + _vm._s(_vm.app.name) + \"\\n\\t\")]\n ),\n _vm._v(\" \"),\n !_vm.listView\n ? _c(\"div\", { staticClass: \"app-summary\" }, [\n _vm._v(\"\\n\\t\\t\" + _vm._s(_vm.app.summary) + \"\\n\\t\")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.listView\n ? _c(\"div\", { staticClass: \"app-version\" }, [\n _vm.app.version\n ? _c(\"span\", [_vm._v(_vm._s(_vm.app.version))])\n : _vm.app.appstoreData.releases[0].version\n ? _c(\"span\", [\n _vm._v(_vm._s(_vm.app.appstoreData.releases[0].version))\n ])\n : _vm._e()\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"app-level\" },\n [\n _vm.app.level === 300\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.t(\n \"settings\",\n \"This app is supported via your current Nextcloud subscription.\"\n ),\n expression:\n \"t('settings', 'This app is supported via your current Nextcloud subscription.')\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"supported icon-checkmark-color\"\n },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Supported\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.level === 200\n ? _c(\n \"span\",\n {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.t(\n \"settings\",\n \"Featured apps are developed by and within the community. They offer central functionality and are ready for production use.\"\n ),\n expression:\n \"t('settings', 'Featured apps are developed by and within the community. They offer central functionality and are ready for production use.')\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"official icon-checkmark\"\n },\n [_vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.t(\"settings\", \"Featured\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.hasRating && !_vm.listView\n ? _c(\"AppScore\", { attrs: { score: _vm.app.score } })\n : _vm._e()\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"actions\" }, [\n _vm.app.error\n ? _c(\"div\", { staticClass: \"warning\" }, [\n _vm._v(\"\\n\\t\\t\\t\" + _vm._s(_vm.app.error) + \"\\n\\t\\t\")\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.loading(_vm.app.id)\n ? _c(\"div\", { staticClass: \"icon icon-loading-small\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.update\n ? _c(\"input\", {\n staticClass: \"update primary\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Update to {update}\", {\n update: _vm.app.update\n }),\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.update(_vm.app.id)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.canUnInstall\n ? _c(\"input\", {\n staticClass: \"uninstall\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Remove\"),\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.remove(_vm.app.id)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.app.active\n ? _c(\"input\", {\n staticClass: \"enable\",\n attrs: {\n type: \"button\",\n value: _vm.t(\"settings\", \"Disable\"),\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.disable(_vm.app.id)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n !_vm.app.active && (_vm.app.canInstall || _vm.app.isCompatible)\n ? _c(\"input\", {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.enableButtonTooltip,\n expression: \"enableButtonTooltip\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"enable\",\n attrs: {\n type: \"button\",\n value: _vm.enableButtonText,\n disabled:\n !_vm.app.canInstall ||\n _vm.installing ||\n _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.enable(_vm.app.id)\n }\n }\n })\n : !_vm.app.active\n ? _c(\"input\", {\n directives: [\n {\n name: \"tooltip\",\n rawName: \"v-tooltip.auto\",\n value: _vm.forceEnableButtonTooltip,\n expression: \"forceEnableButtonTooltip\",\n modifiers: { auto: true }\n }\n ],\n staticClass: \"enable force\",\n attrs: {\n type: \"button\",\n value: _vm.forceEnableButtonText,\n disabled: _vm.installing || _vm.loading(_vm.app.id)\n },\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.forceEnable(_vm.app.id)\n }\n }\n })\n : _vm._e()\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"img\", {\n staticClass: \"app-score-image\",\n attrs: { src: _vm.scoreImage }\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"Content\",\n {\n class: { \"with-app-sidebar\": _vm.currentApp },\n attrs: {\n \"app-name\": \"settings\",\n \"content-class\": { \"icon-loading\": _vm.loadingList },\n \"navigation-class\": { \"icon-loading\": _vm.loading }\n }\n },\n [\n _c(\"AppNavigation\", [\n _c(\n \"ul\",\n { attrs: { id: \"appscategories\" } },\n _vm._l(_vm.menu, function(item) {\n return _c(\"AppNavigationItem\", {\n key: item.key,\n attrs: { item: item }\n })\n }),\n 1\n )\n ]),\n _vm._v(\" \"),\n _c(\n \"AppContent\",\n {\n staticClass: \"app-settings-content\",\n class: { \"icon-loading\": _vm.loadingList }\n },\n [\n _c(\"AppList\", {\n attrs: {\n category: _vm.category,\n app: _vm.currentApp,\n search: _vm.searchQuery\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.id && _vm.currentApp\n ? _c(\n \"AppSidebar\",\n { on: { close: _vm.hideAppDetails } },\n [\n _c(\"AppDetails\", {\n attrs: { category: _vm.category, app: _vm.currentApp }\n })\n ],\n 1\n )\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=59a92e62&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5bf4fbf8\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=59a92e62&scoped=true&lang=css&\", function() {\n var newContent = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDetails.vue?vue&type=style&index=0&id=59a92e62&scoped=true&lang=css&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=css&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2d876e7a\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=css&\", function() {\n var newContent = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppItem.vue?vue&type=style&index=0&id=429da85a&scoped=true&lang=css&\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}"],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACvCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAYA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAYA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAYA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAiBA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvTA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrRA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1MA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACnCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACxLA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7BA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClhBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5MA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/QA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;A","sourceRoot":""}
\ No newline at end of file |