diff --git a/js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js b/js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js
new file mode 100644
index 000000000..dd9ccb8e5
--- /dev/null
+++ b/js/activity-node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue.js
@@ -0,0 +1,23026 @@
+(self["webpackChunkactivity"] = self["webpackChunkactivity"] || []).push([["node_modules_nextcloud_auth_dist_index_esm_js-src_views_ActivityTab_vue"],{
+
+/***/ "./node_modules/@nextcloud/auth/dist/index.esm.js":
+/*!********************************************************!*\
+ !*** ./node_modules/@nextcloud/auth/dist/index.esm.js ***!
+ \********************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "getCurrentUser": () => (/* binding */ getCurrentUser),
+/* harmony export */ "getRequestToken": () => (/* binding */ getRequestToken),
+/* harmony export */ "onRequestTokenUpdate": () => (/* binding */ onRequestTokenUpdate)
+/* harmony export */ });
+/* harmony import */ var _nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.esm.js");
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+const tokenElement = document.getElementsByTagName('head')[0];
+let token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null;
+const observers = [];
+function getRequestToken() {
+ return token;
+}
+function onRequestTokenUpdate(observer) {
+ observers.push(observer);
+}
+// Listen to server event and keep token in sync
+(0,_nextcloud_event_bus__WEBPACK_IMPORTED_MODULE_0__.subscribe)('csrf-token-update', e => {
+ token = e.token;
+ observers.forEach(observer => {
+ try {
+ observer(e.token);
+ }
+ catch (e) {
+ console.error('error updating CSRF token observer', e);
+ }
+ });
+});
+
+///
+const getAttribute = (el, attribute) => {
+ if (el) {
+ return el.getAttribute(attribute);
+ }
+ return null;
+};
+const head = document.getElementsByTagName('head')[0];
+const uid = getAttribute(head, 'data-user');
+const displayName = getAttribute(head, 'data-user-displayname');
+const isAdmin = (typeof OC === 'undefined')
+ ? false
+ : OC.isUserAdmin();
+function getCurrentUser() {
+ if (uid === null) {
+ return null;
+ }
+ return {
+ uid,
+ displayName,
+ isAdmin,
+ };
+}
+
+
+//# sourceMappingURL=index.esm.js.map
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/auth/dist/index.js":
+/*!****************************************************!*\
+ !*** ./node_modules/@nextcloud/auth/dist/index.js ***!
+ \****************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+var eventBus = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.js");
+
+var tokenElement = document.getElementsByTagName('head')[0];
+var token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null;
+var observers = [];
+function getRequestToken() {
+ return token;
+}
+function onRequestTokenUpdate(observer) {
+ observers.push(observer);
+}
+// Listen to server event and keep token in sync
+eventBus.subscribe('csrf-token-update', function (e) {
+ token = e.token;
+ observers.forEach(function (observer) {
+ try {
+ observer(e.token);
+ }
+ catch (e) {
+ console.error('error updating CSRF token observer', e);
+ }
+ });
+});
+
+///
+var getAttribute = function (el, attribute) {
+ if (el) {
+ return el.getAttribute(attribute);
+ }
+ return null;
+};
+var head = document.getElementsByTagName('head')[0];
+var uid = getAttribute(head, 'data-user');
+var displayName = getAttribute(head, 'data-user-displayname');
+var isAdmin = (typeof OC === 'undefined')
+ ? false
+ : OC.isUserAdmin();
+function getCurrentUser() {
+ if (uid === null) {
+ return null;
+ }
+ return {
+ uid: uid,
+ displayName: displayName,
+ isAdmin: isAdmin,
+ };
+}
+
+exports.getCurrentUser = getCurrentUser;
+exports.getRequestToken = getRequestToken;
+exports.onRequestTokenUpdate = onRequestTokenUpdate;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/axios/dist/index.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/@nextcloud/axios/dist/index.js ***!
+ \*****************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+"use strict";
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+var Axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
+var auth = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.js");
+var router = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.js");
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var Axios__default = /*#__PURE__*/_interopDefaultLegacy(Axios);
+
+/******************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+};
+
+function __awaiter(thisArg, _arguments, P, generator) {
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+
+function __generator(thisArg, body) {
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+ function verb(n) { return function (v) { return step([n, v]); }; }
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+ switch (op[0]) {
+ case 0: case 1: t = op; break;
+ case 4: _.label++; return { value: op[1], done: false };
+ case 5: _.label++; y = op[1]; op = [0]; continue;
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+ if (t[2]) _.ops.pop();
+ _.trys.pop(); continue;
+ }
+ op = body.call(thisArg, _);
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+ }
+}
+
+var RETRY_KEY = Symbol('csrf-retry');
+var onError$2 = function (axios) { return function (error) { return __awaiter(void 0, void 0, void 0, function () {
+ var config, response, request, responseURL, status, token;
+ var _a;
+ var _b;
+ return __generator(this, function (_c) {
+ switch (_c.label) {
+ case 0:
+ config = error.config, response = error.response, request = error.request;
+ responseURL = request === null || request === void 0 ? void 0 : request.responseURL;
+ status = response === null || response === void 0 ? void 0 : response.status;
+ if (!(status === 412
+ && ((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.message) === 'CSRF check failed'
+ && config[RETRY_KEY] === undefined)) return [3 /*break*/, 2];
+ console.warn("Request to ".concat(responseURL, " failed because of a CSRF mismatch. Fetching a new token"));
+ return [4 /*yield*/, axios.get(router.generateUrl('/csrftoken'))];
+ case 1:
+ token = (_c.sent()).data.token;
+ console.debug("New request token ".concat(token, " fetched"));
+ axios.defaults.headers.requesttoken = token;
+ return [2 /*return*/, axios(__assign(__assign({}, config), (_a = { headers: __assign(__assign({}, config.headers), { requesttoken: token }) }, _a[RETRY_KEY] = true, _a)))];
+ case 2: return [2 /*return*/, Promise.reject(error)];
+ }
+ });
+}); }; };
+
+var RETRY_DELAY_KEY = Symbol('retryDelay');
+var onError$1 = function (axios) { return function (error) { return __awaiter(void 0, void 0, void 0, function () {
+ var config, response, request, responseURL, status, headers, retryDelay_1;
+ var _a;
+ var _b;
+ return __generator(this, function (_c) {
+ switch (_c.label) {
+ case 0:
+ config = error.config, response = error.response, request = error.request;
+ responseURL = request === null || request === void 0 ? void 0 : request.responseURL;
+ status = response === null || response === void 0 ? void 0 : response.status;
+ headers = response === null || response === void 0 ? void 0 : response.headers;
+ if (!(status === 503
+ && headers['x-nextcloud-maintenance-mode'] === '1'
+ && config.retryIfMaintenanceMode
+ && (!config[RETRY_DELAY_KEY] || config[RETRY_DELAY_KEY] <= 32))) return [3 /*break*/, 2];
+ retryDelay_1 = ((_b = config[RETRY_DELAY_KEY]) !== null && _b !== void 0 ? _b : 1) * 2;
+ console.warn("Request to ".concat(responseURL, " failed because of maintenance mode. Retrying in ").concat(retryDelay_1, "s"));
+ return [4 /*yield*/, new Promise(function (resolve, _) {
+ setTimeout(resolve, retryDelay_1 * 1000);
+ })];
+ case 1:
+ _c.sent();
+ return [2 /*return*/, axios(__assign(__assign({}, config), (_a = {}, _a[RETRY_DELAY_KEY] = retryDelay_1, _a)))];
+ case 2: return [2 /*return*/, Promise.reject(error)];
+ }
+ });
+}); }; };
+
+var onError = function (error) { return __awaiter(void 0, void 0, void 0, function () {
+ var config, response, request, responseURL, status;
+ var _a;
+ return __generator(this, function (_b) {
+ config = error.config, response = error.response, request = error.request;
+ responseURL = request === null || request === void 0 ? void 0 : request.responseURL;
+ status = response === null || response === void 0 ? void 0 : response.status;
+ if (status === 401
+ && ((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.message) === 'Current user is not logged in'
+ && config.reloadExpiredSession
+ && (window === null || window === void 0 ? void 0 : window.location)) {
+ console.error("Request to ".concat(responseURL, " failed because the user session expired. Reloading the page \u2026"));
+ window.location.reload();
+ }
+ return [2 /*return*/, Promise.reject(error)];
+ });
+}); };
+
+var _a;
+var client = Axios__default["default"].create({
+ headers: {
+ requesttoken: (_a = auth.getRequestToken()) !== null && _a !== void 0 ? _a : ''
+ }
+});
+var cancelableClient = Object.assign(client, {
+ CancelToken: Axios__default["default"].CancelToken,
+ isCancel: Axios__default["default"].isCancel,
+});
+cancelableClient.interceptors.response.use(function (r) { return r; }, onError$2(cancelableClient));
+cancelableClient.interceptors.response.use(function (r) { return r; }, onError$1(cancelableClient));
+cancelableClient.interceptors.response.use(function (r) { return r; }, onError);
+auth.onRequestTokenUpdate(function (token) { return client.defaults.headers.requesttoken = token; });
+
+module.exports = cancelableClient;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/dist/index.esm.js":
+/*!*************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/dist/index.esm.js ***!
+ \*************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "ProxyBus": () => (/* binding */ ProxyBus),
+/* harmony export */ "SimpleBus": () => (/* binding */ SimpleBus),
+/* harmony export */ "emit": () => (/* binding */ emit),
+/* harmony export */ "subscribe": () => (/* binding */ subscribe),
+/* harmony export */ "unsubscribe": () => (/* binding */ unsubscribe)
+/* harmony export */ });
+/* harmony import */ var semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semver/functions/valid.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js");
+/* harmony import */ var semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0__);
+/* harmony import */ var semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! semver/functions/major.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js");
+/* harmony import */ var semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1__);
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+
+class ProxyBus {
+ bus;
+ constructor(bus) {
+ if (typeof bus.getVersion !== 'function' || !semver_functions_valid_js__WEBPACK_IMPORTED_MODULE_0___default()(bus.getVersion())) {
+ console.warn('Proxying an event bus with an unknown or invalid version');
+ }
+ else if (semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1___default()(bus.getVersion()) !== semver_functions_major_js__WEBPACK_IMPORTED_MODULE_1___default()(this.getVersion())) {
+ console.warn('Proxying an event bus of version ' + bus.getVersion() + ' with ' + this.getVersion());
+ }
+ this.bus = bus;
+ }
+ getVersion() {
+ return "3.0.2";
+ }
+ subscribe(name, handler) {
+ this.bus.subscribe(name, handler);
+ }
+ unsubscribe(name, handler) {
+ this.bus.unsubscribe(name, handler);
+ }
+ emit(name, event) {
+ this.bus.emit(name, event);
+ }
+}
+
+class SimpleBus {
+ handlers = new Map();
+ getVersion() {
+ return "3.0.2";
+ }
+ subscribe(name, handler) {
+ this.handlers.set(name, (this.handlers.get(name) || []).concat(handler));
+ }
+ unsubscribe(name, handler) {
+ this.handlers.set(name, (this.handlers.get(name) || []).filter(h => h != handler));
+ }
+ emit(name, event) {
+ (this.handlers.get(name) || []).forEach(h => {
+ try {
+ h(event);
+ }
+ catch (e) {
+ console.error('could not invoke event listener', e);
+ }
+ });
+ }
+}
+
+function getBus() {
+ if ((typeof window.OC !== 'undefined') && window.OC._eventBus && typeof window._nc_event_bus === 'undefined') {
+ console.warn('found old event bus instance at OC._eventBus. Update your version!');
+ window._nc_event_bus = window.OC._eventBus;
+ }
+ // Either use an existing event bus instance or create one
+ if (typeof window._nc_event_bus !== 'undefined') {
+ return new ProxyBus(window._nc_event_bus);
+ }
+ else {
+ return window._nc_event_bus = new SimpleBus();
+ }
+}
+const bus = getBus();
+/**
+ * Register an event listener
+ *
+ * @param name name of the event
+ * @param handler callback invoked for every matching event emitted on the bus
+ */
+function subscribe(name, handler) {
+ bus.subscribe(name, handler);
+}
+/**
+ * Unregister a previously registered event listener
+ *
+ * Note: doesn't work with anonymous functions (closures). Use method of an object or store listener function in variable.
+ *
+ * @param name name of the event
+ * @param handler callback passed to `subscribed`
+ */
+function unsubscribe(name, handler) {
+ bus.unsubscribe(name, handler);
+}
+/**
+ * Emit an event
+ *
+ * @param name name of the event
+ * @param event event payload
+ */
+function emit(name, event) {
+ bus.emit(name, event);
+}
+
+
+//# sourceMappingURL=index.esm.js.map
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/dist/index.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/dist/index.js ***!
+ \*********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+Object.defineProperty(exports, "__esModule", ({ value: true }));
+
+var valid = __webpack_require__(/*! semver/functions/valid.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js");
+var major = __webpack_require__(/*! semver/functions/major.js */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js");
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+var valid__default = /*#__PURE__*/_interopDefaultLegacy(valid);
+var major__default = /*#__PURE__*/_interopDefaultLegacy(major);
+
+var ProxyBus = /** @class */ (function () {
+ function ProxyBus(bus) {
+ if (typeof bus.getVersion !== 'function' || !valid__default["default"](bus.getVersion())) {
+ console.warn('Proxying an event bus with an unknown or invalid version');
+ }
+ else if (major__default["default"](bus.getVersion()) !== major__default["default"](this.getVersion())) {
+ console.warn('Proxying an event bus of version ' + bus.getVersion() + ' with ' + this.getVersion());
+ }
+ this.bus = bus;
+ }
+ ProxyBus.prototype.getVersion = function () {
+ return "3.0.2";
+ };
+ ProxyBus.prototype.subscribe = function (name, handler) {
+ this.bus.subscribe(name, handler);
+ };
+ ProxyBus.prototype.unsubscribe = function (name, handler) {
+ this.bus.unsubscribe(name, handler);
+ };
+ ProxyBus.prototype.emit = function (name, event) {
+ this.bus.emit(name, event);
+ };
+ return ProxyBus;
+}());
+
+var SimpleBus = /** @class */ (function () {
+ function SimpleBus() {
+ this.handlers = new Map();
+ }
+ SimpleBus.prototype.getVersion = function () {
+ return "3.0.2";
+ };
+ SimpleBus.prototype.subscribe = function (name, handler) {
+ this.handlers.set(name, (this.handlers.get(name) || []).concat(handler));
+ };
+ SimpleBus.prototype.unsubscribe = function (name, handler) {
+ this.handlers.set(name, (this.handlers.get(name) || []).filter(function (h) { return h != handler; }));
+ };
+ SimpleBus.prototype.emit = function (name, event) {
+ (this.handlers.get(name) || []).forEach(function (h) {
+ try {
+ h(event);
+ }
+ catch (e) {
+ console.error('could not invoke event listener', e);
+ }
+ });
+ };
+ return SimpleBus;
+}());
+
+function getBus() {
+ if ((typeof window.OC !== 'undefined') && window.OC._eventBus && typeof window._nc_event_bus === 'undefined') {
+ console.warn('found old event bus instance at OC._eventBus. Update your version!');
+ window._nc_event_bus = window.OC._eventBus;
+ }
+ // Either use an existing event bus instance or create one
+ if (typeof window._nc_event_bus !== 'undefined') {
+ return new ProxyBus(window._nc_event_bus);
+ }
+ else {
+ return window._nc_event_bus = new SimpleBus();
+ }
+}
+var bus = getBus();
+/**
+ * Register an event listener
+ *
+ * @param name name of the event
+ * @param handler callback invoked for every matching event emitted on the bus
+ */
+function subscribe(name, handler) {
+ bus.subscribe(name, handler);
+}
+/**
+ * Unregister a previously registered event listener
+ *
+ * Note: doesn't work with anonymous functions (closures). Use method of an object or store listener function in variable.
+ *
+ * @param name name of the event
+ * @param handler callback passed to `subscribed`
+ */
+function unsubscribe(name, handler) {
+ bus.unsubscribe(name, handler);
+}
+/**
+ * Emit an event
+ *
+ * @param name name of the event
+ * @param event event payload
+ */
+function emit(name, event) {
+ bus.emit(name, event);
+}
+
+exports.ProxyBus = ProxyBus;
+exports.SimpleBus = SimpleBus;
+exports.emit = emit;
+exports.subscribe = subscribe;
+exports.unsubscribe = unsubscribe;
+//# sourceMappingURL=index.js.map
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js":
+/*!*********************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js ***!
+ \*********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+const debug = __webpack_require__(/*! ../internal/debug */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js")
+const { MAX_LENGTH, MAX_SAFE_INTEGER } = __webpack_require__(/*! ../internal/constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js")
+const { re, t } = __webpack_require__(/*! ../internal/re */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js")
+
+const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js")
+const { compareIdentifiers } = __webpack_require__(/*! ../internal/identifiers */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js")
+class SemVer {
+ constructor (version, options) {
+ options = parseOptions(options)
+
+ if (version instanceof SemVer) {
+ if (version.loose === !!options.loose &&
+ version.includePrerelease === !!options.includePrerelease) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError(`Invalid Version: ${version}`)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError(
+ `version is longer than ${MAX_LENGTH} characters`
+ )
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+ // this isn't actually relevant for versions, but keep it so that we
+ // don't run into trouble passing this.options around.
+ this.includePrerelease = !!options.includePrerelease
+
+ const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+ if (!m) {
+ throw new TypeError(`Invalid Version: ${version}`)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map((id) => {
+ if (/^[0-9]+$/.test(id)) {
+ const num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+ }
+
+ format () {
+ this.version = `${this.major}.${this.minor}.${this.patch}`
+ if (this.prerelease.length) {
+ this.version += `-${this.prerelease.join('.')}`
+ }
+ return this.version
+ }
+
+ toString () {
+ return this.version
+ }
+
+ compare (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ if (typeof other === 'string' && other === this.version) {
+ return 0
+ }
+ other = new SemVer(other, this.options)
+ }
+
+ if (other.version === this.version) {
+ return 0
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+ }
+
+ compareMain (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return (
+ compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+ )
+ }
+
+ comparePre (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ let i = 0
+ do {
+ const a = this.prerelease[i]
+ const b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
+
+ compareBuild (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ let i = 0
+ do {
+ const a = this.build[i]
+ const b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+ }
+
+ // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+ inc (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (
+ this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0
+ ) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ let i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error(`invalid increment argument: ${release}`)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+ }
+}
+
+module.exports = SemVer
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js":
+/*!**********************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js")
+const major = (a, loose) => new SemVer(a, loose).major
+module.exports = major
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js":
+/*!**********************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+const { MAX_LENGTH } = __webpack_require__(/*! ../internal/constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js")
+const { re, t } = __webpack_require__(/*! ../internal/re */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js")
+const SemVer = __webpack_require__(/*! ../classes/semver */ "./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js")
+
+const parseOptions = __webpack_require__(/*! ../internal/parse-options */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js")
+const parse = (version, options) => {
+ options = parseOptions(options)
+
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
+
+ const r = options.loose ? re[t.LOOSE] : re[t.FULL]
+ if (!r.test(version)) {
+ return null
+ }
+
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+
+module.exports = parse
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js":
+/*!**********************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js ***!
+ \**********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+const parse = __webpack_require__(/*! ./parse */ "./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js")
+const valid = (version, options) => {
+ const v = parse(version, options)
+ return v ? v.version : null
+}
+module.exports = valid
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js":
+/*!*************************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js ***!
+ \*************************************************************************************/
+/***/ ((module) => {
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+const SEMVER_SPEC_VERSION = '2.0.0'
+
+const MAX_LENGTH = 256
+const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+/* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+const MAX_SAFE_COMPONENT_LENGTH = 16
+
+module.exports = {
+ SEMVER_SPEC_VERSION,
+ MAX_LENGTH,
+ MAX_SAFE_INTEGER,
+ MAX_SAFE_COMPONENT_LENGTH,
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js":
+/*!*********************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js ***!
+ \*********************************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+/* provided dependency */ var process = __webpack_require__(/*! ./node_modules/process/browser.js */ "./node_modules/process/browser.js");
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+const debug = (
+ typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)
+) ? (...args) => console.error('SEMVER', ...args)
+ : () => {}
+
+module.exports = debug
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js":
+/*!***************************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js ***!
+ \***************************************************************************************/
+/***/ ((module) => {
+
+const numeric = /^[0-9]+$/
+const compareIdentifiers = (a, b) => {
+ const anum = numeric.test(a)
+ const bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
+
+module.exports = {
+ compareIdentifiers,
+ rcompareIdentifiers,
+}
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js":
+/*!*****************************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/parse-options.js ***!
+ \*****************************************************************************************/
+/***/ ((module) => {
+
+// parse out just the options we care about so we always get a consistent
+// obj with keys in a consistent order.
+const opts = ['includePrerelease', 'loose', 'rtl']
+const parseOptions = options =>
+ !options ? {}
+ : typeof options !== 'object' ? { loose: true }
+ : opts.filter(k => options[k]).reduce((o, k) => {
+ o[k] = true
+ return o
+ }, {})
+module.exports = parseOptions
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js":
+/*!******************************************************************************!*\
+ !*** ./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js ***!
+ \******************************************************************************/
+/***/ ((module, exports, __webpack_require__) => {
+
+const { MAX_SAFE_COMPONENT_LENGTH } = __webpack_require__(/*! ./constants */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js")
+const debug = __webpack_require__(/*! ./debug */ "./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js")
+exports = module.exports = {}
+
+// The actual regexps go on exports.re
+const re = exports.re = []
+const src = exports.src = []
+const t = exports.t = {}
+let R = 0
+
+const createToken = (name, value, isGlobal) => {
+ const index = R++
+ debug(name, index, value)
+ t[name] = index
+ src[index] = value
+ re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
+createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+')
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*')
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})\\.` +
+ `(${src[t.NUMERICIDENTIFIER]})`)
+
+createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
+ `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
+
+createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
+}|${src[t.NONNUMERICIDENTIFIER]})`)
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
+}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
+
+createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
+}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+')
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
+}(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
+}${src[t.PRERELEASE]}?${
+ src[t.BUILD]}?`)
+
+createToken('FULL', `^${src[t.FULLPLAIN]}$`)
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
+}${src[t.PRERELEASELOOSE]}?${
+ src[t.BUILD]}?`)
+
+createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
+
+createToken('GTLT', '((?:<|>)?=?)')
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
+createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
+
+createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
+ `(?:${src[t.PRERELEASE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
+ `(?:${src[t.PRERELEASELOOSE]})?${
+ src[t.BUILD]}?` +
+ `)?)?`)
+
+createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
+createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+createToken('COERCE', `${'(^|[^\\d])' +
+ '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
+ `(?:$|[^\\d])`)
+createToken('COERCERTL', src[t.COERCE], true)
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+createToken('LONETILDE', '(?:~>?)')
+
+createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
+exports.tildeTrimReplace = '$1~'
+
+createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
+createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+createToken('LONECARET', '(?:\\^)')
+
+createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
+exports.caretTrimReplace = '$1^'
+
+createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
+createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
+createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
+}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
+exports.comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAIN]})` +
+ `\\s*$`)
+
+createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s+-\\s+` +
+ `(${src[t.XRANGEPLAINLOOSE]})` +
+ `\\s*$`)
+
+// Star ranges basically just allow anything at all.
+createToken('STAR', '(<|>)?=?\\s*\\*')
+// >=0.0.0 is like a star
+createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
+createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/logger/dist/ConsoleLogger.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/@nextcloud/logger/dist/ConsoleLogger.js ***!
+ \**************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+__webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
+__webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
+__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
+__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
+__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.ConsoleLogger = void 0;
+exports.buildConsoleLogger = buildConsoleLogger;
+__webpack_require__(/*! core-js/modules/es.object.assign.js */ "./node_modules/core-js/modules/es.object.assign.js");
+__webpack_require__(/*! core-js/modules/es.symbol.to-primitive.js */ "./node_modules/core-js/modules/es.symbol.to-primitive.js");
+__webpack_require__(/*! core-js/modules/es.date.to-primitive.js */ "./node_modules/core-js/modules/es.date.to-primitive.js");
+__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
+__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
+__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
+__webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js");
+var _contracts = __webpack_require__(/*! ./contracts */ "./node_modules/@nextcloud/logger/dist/contracts.js");
+function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
+function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
+function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
+var ConsoleLogger = /*#__PURE__*/function () {
+ function ConsoleLogger(context) {
+ _classCallCheck(this, ConsoleLogger);
+ _defineProperty(this, "context", void 0);
+ this.context = context;
+ }
+ _createClass(ConsoleLogger, [{
+ key: "formatMessage",
+ value: function formatMessage(message, level, context) {
+ var msg = '[' + _contracts.LogLevel[level].toUpperCase() + ']';
+ if (context && context.app) {
+ msg += ' ' + context.app + ': ';
+ }
+ return msg + message;
+ }
+ }, {
+ key: "log",
+ value: function log(level, message, context) {
+ var _this$context;
+ if (level < ((_this$context = this.context) === null || _this$context === void 0 ? void 0 : _this$context.level)) return;
+ switch (level) {
+ case _contracts.LogLevel.Debug:
+ console.debug(this.formatMessage(message, _contracts.LogLevel.Debug, context), context);
+ break;
+ case _contracts.LogLevel.Info:
+ console.info(this.formatMessage(message, _contracts.LogLevel.Info, context), context);
+ break;
+ case _contracts.LogLevel.Warn:
+ console.warn(this.formatMessage(message, _contracts.LogLevel.Warn, context), context);
+ break;
+ case _contracts.LogLevel.Error:
+ console.error(this.formatMessage(message, _contracts.LogLevel.Error, context), context);
+ break;
+ case _contracts.LogLevel.Fatal:
+ default:
+ console.error(this.formatMessage(message, _contracts.LogLevel.Fatal, context), context);
+ break;
+ }
+ }
+ }, {
+ key: "debug",
+ value: function debug(message, context) {
+ this.log(_contracts.LogLevel.Debug, message, Object.assign({}, this.context, context));
+ }
+ }, {
+ key: "info",
+ value: function info(message, context) {
+ this.log(_contracts.LogLevel.Info, message, Object.assign({}, this.context, context));
+ }
+ }, {
+ key: "warn",
+ value: function warn(message, context) {
+ this.log(_contracts.LogLevel.Warn, message, Object.assign({}, this.context, context));
+ }
+ }, {
+ key: "error",
+ value: function error(message, context) {
+ this.log(_contracts.LogLevel.Error, message, Object.assign({}, this.context, context));
+ }
+ }, {
+ key: "fatal",
+ value: function fatal(message, context) {
+ this.log(_contracts.LogLevel.Fatal, message, Object.assign({}, this.context, context));
+ }
+ }]);
+ return ConsoleLogger;
+}();
+exports.ConsoleLogger = ConsoleLogger;
+function buildConsoleLogger(context) {
+ return new ConsoleLogger(context);
+}
+//# sourceMappingURL=ConsoleLogger.js.map
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/logger/dist/LoggerBuilder.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/@nextcloud/logger/dist/LoggerBuilder.js ***!
+ \**************************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+
+__webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
+__webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js");
+__webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js");
+__webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js");
+__webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js");
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.LoggerBuilder = void 0;
+__webpack_require__(/*! core-js/modules/es.symbol.to-primitive.js */ "./node_modules/core-js/modules/es.symbol.to-primitive.js");
+__webpack_require__(/*! core-js/modules/es.date.to-primitive.js */ "./node_modules/core-js/modules/es.date.to-primitive.js");
+__webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js");
+__webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js");
+__webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
+__webpack_require__(/*! core-js/modules/es.number.constructor.js */ "./node_modules/core-js/modules/es.number.constructor.js");
+var _auth = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.js");
+var _contracts = __webpack_require__(/*! ./contracts */ "./node_modules/@nextcloud/logger/dist/contracts.js");
+function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
+function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
+function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
+/**
+ * @notExported
+ */
+var LoggerBuilder = /*#__PURE__*/function () {
+ function LoggerBuilder(factory) {
+ _classCallCheck(this, LoggerBuilder);
+ _defineProperty(this, "context", void 0);
+ _defineProperty(this, "factory", void 0);
+ this.context = {};
+ this.factory = factory;
+ }
+
+ /** Set the app name within the logging context */
+ _createClass(LoggerBuilder, [{
+ key: "setApp",
+ value: function setApp(appId) {
+ this.context.app = appId;
+ return this;
+ }
+
+ /** Set the logging level within the logging context */
+ }, {
+ key: "setLogLevel",
+ value: function setLogLevel(level) {
+ this.context.level = level;
+ return this;
+ }
+
+ /** Set the user id within the logging context
+ * @see {@link detectUser}
+ */
+ }, {
+ key: "setUid",
+ value: function setUid(uid) {
+ this.context.uid = uid;
+ return this;
+ }
+
+ /** Detect the currently logged in user and set the user id within the logging context */
+ }, {
+ key: "detectUser",
+ value: function detectUser() {
+ var user = (0, _auth.getCurrentUser)();
+ if (user !== null) {
+ this.context.uid = user.uid;
+ }
+ return this;
+ }
+
+ /** Detect and use logging level configured in nextcloud config */
+ }, {
+ key: "detectLogLevel",
+ value: function detectLogLevel() {
+ var self = this;
+
+ // Use arrow function to prevent undefined `this` within event handler
+ var onLoaded = function onLoaded() {
+ if (document.readyState === "complete" || document.readyState === "interactive" && window.OC !== undefined) {
+ var _window$OC, _window$OC$config, _window$OC2;
+ // Up to, including, nextcloud 24 the loglevel was not exposed
+ self.context.level = ((_window$OC = window.OC) === null || _window$OC === void 0 ? void 0 : (_window$OC$config = _window$OC.config) === null || _window$OC$config === void 0 ? void 0 : _window$OC$config.loglevel) !== undefined ? window.OC.config.loglevel : _contracts.LogLevel.Warn;
+ // Override loglevel if we are in debug mode
+ if ((_window$OC2 = window.OC) !== null && _window$OC2 !== void 0 && _window$OC2.debug) {
+ self.context.level = _contracts.LogLevel.Debug;
+ }
+ document.removeEventListener("readystatechange", onLoaded);
+ } else {
+ document.addEventListener("readystatechange", onLoaded);
+ }
+ };
+ onLoaded();
+ return this;
+ }
+
+ /** Build a logger using the logging context and factory */
+ }, {
+ key: "build",
+ value: function build() {
+ if (this.context.level === undefined) {
+ // No logging level set manually, use the configured one
+ this.detectLogLevel();
+ }
+ return this.factory(this.context);
+ }
+ }]);
+ return LoggerBuilder;
+}();
+exports.LoggerBuilder = LoggerBuilder;
+//# sourceMappingURL=LoggerBuilder.js.map
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/logger/dist/contracts.js":
+/*!**********************************************************!*\
+ !*** ./node_modules/@nextcloud/logger/dist/contracts.js ***!
+ \**********************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+
+__webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.LogLevel = void 0;
+var LogLevel;
+exports.LogLevel = LogLevel;
+(function (LogLevel) {
+ LogLevel[LogLevel["Debug"] = 0] = "Debug";
+ LogLevel[LogLevel["Info"] = 1] = "Info";
+ LogLevel[LogLevel["Warn"] = 2] = "Warn";
+ LogLevel[LogLevel["Error"] = 3] = "Error";
+ LogLevel[LogLevel["Fatal"] = 4] = "Fatal";
+})(LogLevel || (exports.LogLevel = LogLevel = {}));
+//# sourceMappingURL=contracts.js.map
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/logger/dist/index.js":
+/*!******************************************************!*\
+ !*** ./node_modules/@nextcloud/logger/dist/index.js ***!
+ \******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+
+__webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js");
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+Object.defineProperty(exports, "LogLevel", ({
+ enumerable: true,
+ get: function get() {
+ return _contracts.LogLevel;
+ }
+}));
+exports.getLogger = getLogger;
+exports.getLoggerBuilder = getLoggerBuilder;
+var _ConsoleLogger = __webpack_require__(/*! ./ConsoleLogger */ "./node_modules/@nextcloud/logger/dist/ConsoleLogger.js");
+var _LoggerBuilder = __webpack_require__(/*! ./LoggerBuilder */ "./node_modules/@nextcloud/logger/dist/LoggerBuilder.js");
+var _contracts = __webpack_require__(/*! ./contracts */ "./node_modules/@nextcloud/logger/dist/contracts.js");
+/**
+ * Build a customized logger instance
+ */
+function getLoggerBuilder() {
+ return new _LoggerBuilder.LoggerBuilder(_ConsoleLogger.buildConsoleLogger);
+}
+
+/**
+ * Get a default logger instance without any configuration
+ */
+function getLogger() {
+ return getLoggerBuilder().build();
+}
+//# sourceMappingURL=index.js.map
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/paths/dist/index.js":
+/*!*****************************************************!*\
+ !*** ./node_modules/@nextcloud/paths/dist/index.js ***!
+ \*****************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.encodePath = encodePath;
+exports.basename = basename;
+exports.dirname = dirname;
+exports.joinPaths = joinPaths;
+exports.isSamePath = isSamePath;
+
+__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js");
+
+__webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
+
+__webpack_require__(/*! core-js/modules/es.string.split.js */ "./node_modules/core-js/modules/es.string.split.js");
+
+__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
+
+__webpack_require__(/*! core-js/modules/es.array.filter.js */ "./node_modules/core-js/modules/es.array.filter.js");
+
+__webpack_require__(/*! core-js/modules/es.array.reduce.js */ "./node_modules/core-js/modules/es.array.reduce.js");
+
+__webpack_require__(/*! core-js/modules/es.array.concat.js */ "./node_modules/core-js/modules/es.array.concat.js");
+
+/**
+ * URI-Encodes a file path but keep the path slashes.
+ */
+function encodePath(path) {
+ if (!path) {
+ return path;
+ }
+
+ return path.split('/').map(encodeURIComponent).join('/');
+}
+/**
+ * Returns the base name of the given path.
+ * For example for "/abc/somefile.txt" it will return "somefile.txt"
+ */
+
+
+function basename(path) {
+ return path.replace(/\\/g, '/').replace(/.*\//, '');
+}
+/**
+ * Returns the dir name of the given path.
+ * For example for "/abc/somefile.txt" it will return "/abc"
+ */
+
+
+function dirname(path) {
+ return path.replace(/\\/g, '/').replace(/\/[^\/]*$/, '');
+}
+/**
+ * Join path sections
+ */
+
+
+function joinPaths() {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ if (arguments.length < 1) {
+ return '';
+ } // discard empty arguments
+
+
+ var nonEmptyArgs = args.filter(function (arg) {
+ return arg.length > 0;
+ });
+
+ if (nonEmptyArgs.length < 1) {
+ return '';
+ }
+
+ var lastArg = nonEmptyArgs[nonEmptyArgs.length - 1];
+ var leadingSlash = nonEmptyArgs[0].charAt(0) === '/';
+ var trailingSlash = lastArg.charAt(lastArg.length - 1) === '/';
+ var sections = nonEmptyArgs.reduce(function (acc, section) {
+ return acc.concat(section.split('/'));
+ }, []);
+ var first = !leadingSlash;
+ var path = sections.reduce(function (acc, section) {
+ if (section === '') {
+ return acc;
+ }
+
+ if (first) {
+ first = false;
+ return acc + section;
+ }
+
+ return acc + '/' + section;
+ }, '');
+
+ if (trailingSlash) {
+ // add it back
+ return path + '/';
+ }
+
+ return path;
+}
+/**
+ * Returns whether the given paths are the same, without
+ * leading, trailing or doubled slashes and also removing
+ * the dot sections.
+ */
+
+
+function isSamePath(path1, path2) {
+ var pathSections1 = (path1 || '').split('/').filter(function (p) {
+ return p !== '.';
+ });
+ var pathSections2 = (path2 || '').split('/').filter(function (p) {
+ return p !== '.';
+ });
+ path1 = joinPaths.apply(undefined, pathSections1);
+ path2 = joinPaths.apply(undefined, pathSections2);
+ return path1 === path2;
+}
+//# sourceMappingURL=index.js.map
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/router/dist/index.js":
+/*!******************************************************!*\
+ !*** ./node_modules/@nextcloud/router/dist/index.js ***!
+ \******************************************************/
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.getRootUrl = exports.generateFilePath = exports.imagePath = exports.generateUrl = exports.generateOcsUrl = exports.generateRemoteUrl = exports.linkTo = void 0;
+
+__webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
+
+///
+
+/**
+ * Get an url with webroot to a file in an app
+ *
+ * @param {string} app the id of the app the file belongs to
+ * @param {string} file the file path relative to the app folder
+ * @return {string} URL with webroot to a file
+ */
+const linkTo = (app, file) => generateFilePath(app, '', file);
+/**
+ * Creates a relative url for remote use
+ *
+ * @param {string} service id
+ * @return {string} the url
+ */
+
+
+exports.linkTo = linkTo;
+
+const linkToRemoteBase = service => getRootUrl() + '/remote.php/' + service;
+/**
+ * @brief Creates an absolute url for remote use
+ * @param {string} service id
+ * @return {string} the url
+ */
+
+
+const generateRemoteUrl = service => window.location.protocol + '//' + window.location.host + linkToRemoteBase(service);
+/**
+ * Get the base path for the given OCS API service
+ *
+ * @param {string} url OCS API service url
+ * @param {object} params parameters to be replaced into the service url
+ * @param {UrlOptions} options options for the parameter replacement
+ * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)
+ * @param {Number} options.ocsVersion OCS version to use (defaults to 2)
+ * @return {string} Absolute path for the OCS URL
+ */
+
+
+exports.generateRemoteUrl = generateRemoteUrl;
+
+const generateOcsUrl = (url, params, options) => {
+ const allOptions = Object.assign({
+ ocsVersion: 2
+ }, options || {});
+ const version = allOptions.ocsVersion === 1 ? 1 : 2;
+ return window.location.protocol + '//' + window.location.host + getRootUrl() + '/ocs/v' + version + '.php' + _generateUrlPath(url, params, options);
+};
+
+exports.generateOcsUrl = generateOcsUrl;
+
+/**
+ * Generate a url path, which can contain parameters
+ *
+ * Parameters will be URL encoded automatically
+ *
+ * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token
+ * @param {object} params parameters to be replaced into the address
+ * @param {UrlOptions} options options for the parameter replacement
+ * @return {string} Path part for the given URL
+ */
+const _generateUrlPath = (url, params, options) => {
+ const allOptions = Object.assign({
+ escape: true
+ }, options || {});
+
+ const _build = function (text, vars) {
+ vars = vars || {};
+ return text.replace(/{([^{}]*)}/g, function (a, b) {
+ var r = vars[b];
+
+ if (allOptions.escape) {
+ return typeof r === 'string' || typeof r === 'number' ? encodeURIComponent(r.toString()) : encodeURIComponent(a);
+ } else {
+ return typeof r === 'string' || typeof r === 'number' ? r.toString() : a;
+ }
+ });
+ };
+
+ if (url.charAt(0) !== '/') {
+ url = '/' + url;
+ }
+
+ return _build(url, params || {});
+};
+/**
+ * Generate the url with webroot for the given relative url, which can contain parameters
+ *
+ * Parameters will be URL encoded automatically
+ *
+ * @param {string} url address (can contain placeholders e.g. /call/{token} would replace {token} with the value of params.token
+ * @param {object} params parameters to be replaced into the url
+ * @param {UrlOptions} options options for the parameter replacement
+ * @param {boolean} options.noRewrite True if you want to force index.php being added
+ * @param {boolean} options.escape Set to false if parameters should not be URL encoded (default true)
+ * @return {string} URL with webroot for the given relative URL
+ */
+
+
+const generateUrl = (url, params, options) => {
+ const allOptions = Object.assign({
+ noRewrite: false
+ }, options || {});
+
+ if (OC.config.modRewriteWorking === true && !allOptions.noRewrite) {
+ return getRootUrl() + _generateUrlPath(url, params, options);
+ }
+
+ return getRootUrl() + '/index.php' + _generateUrlPath(url, params, options);
+};
+/**
+ * Get the path with webroot to an image file
+ * if no extension is given for the image, it will automatically decide
+ * between .png and .svg based on what the browser supports
+ *
+ * @param {string} app the app id to which the image belongs
+ * @param {string} file the name of the image file
+ * @return {string}
+ */
+
+
+exports.generateUrl = generateUrl;
+
+const imagePath = (app, file) => {
+ if (file.indexOf('.') === -1) {
+ //if no extension is given, use svg
+ return generateFilePath(app, 'img', file + '.svg');
+ }
+
+ return generateFilePath(app, 'img', file);
+};
+/**
+ * Get the url with webroot for a file in an app
+ *
+ * @param {string} app the id of the app
+ * @param {string} type the type of the file to link to (e.g. css,img,ajax.template)
+ * @param {string} file the filename
+ * @return {string} URL with webroot for a file in an app
+ */
+
+
+exports.imagePath = imagePath;
+
+const generateFilePath = (app, type, file) => {
+ const isCore = OC.coreApps.indexOf(app) !== -1;
+ let link = getRootUrl();
+
+ if (file.substring(file.length - 3) === 'php' && !isCore) {
+ link += '/index.php/apps/' + app;
+
+ if (file !== 'index.php') {
+ link += '/';
+
+ if (type) {
+ link += encodeURI(type + '/');
+ }
+
+ link += file;
+ }
+ } else if (file.substring(file.length - 3) !== 'php' && !isCore) {
+ link = OC.appswebroots[app];
+
+ if (type) {
+ link += '/' + type + '/';
+ }
+
+ if (link.substring(link.length - 1) !== '/') {
+ link += '/';
+ }
+
+ link += file;
+ } else {
+ if ((app === 'settings' || app === 'core' || app === 'search') && type === 'ajax') {
+ link += '/index.php/';
+ } else {
+ link += '/';
+ }
+
+ if (!isCore) {
+ link += 'apps/';
+ }
+
+ if (app !== '') {
+ app += '/';
+ link += app;
+ }
+
+ if (type) {
+ link += type + '/';
+ }
+
+ link += file;
+ }
+
+ return link;
+};
+/**
+ * Return the web root path where this Nextcloud instance
+ * is accessible, with a leading slash.
+ * For example "/nextcloud".
+ *
+ * @return {string} web root path
+ */
+
+
+exports.generateFilePath = generateFilePath;
+
+const getRootUrl = () => OC.webroot;
+
+exports.getRootUrl = getRootUrl;
+//# sourceMappingURL=index.js.map
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/vue-richtext/dist/index.js":
+/*!************************************************************!*\
+ !*** ./node_modules/@nextcloud/vue-richtext/dist/index.js ***!
+ \************************************************************/
+/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "ReferenceList": () => (/* binding */ ReferenceList),
+/* harmony export */ "ReferenceWidget": () => (/* binding */ ReferenceWidget),
+/* harmony export */ "RichText": () => (/* binding */ RichText),
+/* harmony export */ "default": () => (/* binding */ RichText),
+/* harmony export */ "isWidgetRegistered": () => (/* binding */ isWidgetRegistered),
+/* harmony export */ "registerWidget": () => (/* binding */ registerWidget),
+/* harmony export */ "renderWidget": () => (/* binding */ renderWidget)
+/* harmony export */ });
+/* harmony import */ var _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @nextcloud/axios */ "./node_modules/@nextcloud/axios/dist/index.esm.js");
+/* harmony import */ var _nextcloud_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @nextcloud/router */ "./node_modules/@nextcloud/router/dist/index.js");
+/* provided dependency */ var console = __webpack_require__(/*! ./node_modules/console-browserify/index.js */ "./node_modules/console-browserify/index.js");
+
+
+function bail(error) {
+ if (error) {
+ throw error;
+ }
+}
+/*!
+ * Determine if an object is a Buffer
+ *
+ * @author Feross Aboukhadijeh
+ * @license MIT
+ */
+var isBuffer$1 = function isBuffer(obj) {
+ return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
+};
+var hasOwn = Object.prototype.hasOwnProperty;
+var toStr = Object.prototype.toString;
+var defineProperty = Object.defineProperty;
+var gOPD = Object.getOwnPropertyDescriptor;
+var isArray = function isArray2(arr) {
+ if (typeof Array.isArray === "function") {
+ return Array.isArray(arr);
+ }
+ return toStr.call(arr) === "[object Array]";
+};
+var isPlainObject$1 = function isPlainObject(obj) {
+ if (!obj || toStr.call(obj) !== "[object Object]") {
+ return false;
+ }
+ var hasOwnConstructor = hasOwn.call(obj, "constructor");
+ var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, "isPrototypeOf");
+ if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {
+ return false;
+ }
+ var key;
+ for (key in obj) {
+ }
+ return typeof key === "undefined" || hasOwn.call(obj, key);
+};
+var setProperty = function setProperty2(target, options) {
+ if (defineProperty && options.name === "__proto__") {
+ defineProperty(target, options.name, {
+ enumerable: true,
+ configurable: true,
+ value: options.newValue,
+ writable: true
+ });
+ } else {
+ target[options.name] = options.newValue;
+ }
+};
+var getProperty = function getProperty2(obj, name) {
+ if (name === "__proto__") {
+ if (!hasOwn.call(obj, name)) {
+ return void 0;
+ } else if (gOPD) {
+ return gOPD(obj, name).value;
+ }
+ }
+ return obj[name];
+};
+var extend = function extend2() {
+ var options, name, src, copy, copyIsArray, clone;
+ var target = arguments[0];
+ var i = 1;
+ var length = arguments.length;
+ var deep = false;
+ if (typeof target === "boolean") {
+ deep = target;
+ target = arguments[1] || {};
+ i = 2;
+ }
+ if (target == null || typeof target !== "object" && typeof target !== "function") {
+ target = {};
+ }
+ for (; i < length; ++i) {
+ options = arguments[i];
+ if (options != null) {
+ for (name in options) {
+ src = getProperty(target, name);
+ copy = getProperty(options, name);
+ if (target !== copy) {
+ if (deep && copy && (isPlainObject$1(copy) || (copyIsArray = isArray(copy)))) {
+ if (copyIsArray) {
+ copyIsArray = false;
+ clone = src && isArray(src) ? src : [];
+ } else {
+ clone = src && isPlainObject$1(src) ? src : {};
+ }
+ setProperty(target, { name, newValue: extend2(deep, clone, copy) });
+ } else if (typeof copy !== "undefined") {
+ setProperty(target, { name, newValue: copy });
+ }
+ }
+ }
+ }
+ }
+ return target;
+};
+function isPlainObject2(value) {
+ if (typeof value !== "object" || value === null) {
+ return false;
+ }
+ const prototype = Object.getPrototypeOf(value);
+ return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);
+}
+function trough() {
+ const fns = [];
+ const pipeline = { run, use };
+ return pipeline;
+ function run(...values) {
+ let middlewareIndex = -1;
+ const callback = values.pop();
+ if (typeof callback !== "function") {
+ throw new TypeError("Expected function as last argument, not " + callback);
+ }
+ next(null, ...values);
+ function next(error, ...output) {
+ const fn = fns[++middlewareIndex];
+ let index2 = -1;
+ if (error) {
+ callback(error);
+ return;
+ }
+ while (++index2 < values.length) {
+ if (output[index2] === null || output[index2] === void 0) {
+ output[index2] = values[index2];
+ }
+ }
+ values = output;
+ if (fn) {
+ wrap$1(fn, next)(...output);
+ } else {
+ callback(null, ...output);
+ }
+ }
+ }
+ function use(middelware) {
+ if (typeof middelware !== "function") {
+ throw new TypeError(
+ "Expected `middelware` to be a function, not " + middelware
+ );
+ }
+ fns.push(middelware);
+ return pipeline;
+ }
+}
+function wrap$1(middleware, callback) {
+ let called;
+ return wrapped;
+ function wrapped(...parameters) {
+ const fnExpectsCallback = middleware.length > parameters.length;
+ let result;
+ if (fnExpectsCallback) {
+ parameters.push(done);
+ }
+ try {
+ result = middleware.apply(this, parameters);
+ } catch (error) {
+ const exception = error;
+ if (fnExpectsCallback && called) {
+ throw exception;
+ }
+ return done(exception);
+ }
+ if (!fnExpectsCallback) {
+ if (result instanceof Promise) {
+ result.then(then, done);
+ } else if (result instanceof Error) {
+ done(result);
+ } else {
+ then(result);
+ }
+ }
+ }
+ function done(error, ...output) {
+ if (!called) {
+ called = true;
+ callback(error, ...output);
+ }
+ }
+ function then(value) {
+ done(null, value);
+ }
+}
+/*!
+ * Determine if an object is a Buffer
+ *
+ * @author Feross Aboukhadijeh
+ * @license MIT
+ */
+var isBuffer2 = function isBuffer3(obj) {
+ return obj != null && obj.constructor != null && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
+};
+function stringifyPosition(value) {
+ if (!value || typeof value !== "object") {
+ return "";
+ }
+ if ("position" in value || "type" in value) {
+ return position(value.position);
+ }
+ if ("start" in value || "end" in value) {
+ return position(value);
+ }
+ if ("line" in value || "column" in value) {
+ return point$1(value);
+ }
+ return "";
+}
+function point$1(point2) {
+ return index(point2 && point2.line) + ":" + index(point2 && point2.column);
+}
+function position(pos) {
+ return point$1(pos && pos.start) + "-" + point$1(pos && pos.end);
+}
+function index(value) {
+ return value && typeof value === "number" ? value : 1;
+}
+class VFileMessage extends Error {
+ constructor(reason, place, origin) {
+ const parts = [null, null];
+ let position2 = {
+ start: { line: null, column: null },
+ end: { line: null, column: null }
+ };
+ super();
+ if (typeof place === "string") {
+ origin = place;
+ place = void 0;
+ }
+ if (typeof origin === "string") {
+ const index2 = origin.indexOf(":");
+ if (index2 === -1) {
+ parts[1] = origin;
+ } else {
+ parts[0] = origin.slice(0, index2);
+ parts[1] = origin.slice(index2 + 1);
+ }
+ }
+ if (place) {
+ if ("type" in place || "position" in place) {
+ if (place.position) {
+ position2 = place.position;
+ }
+ } else if ("start" in place || "end" in place) {
+ position2 = place;
+ } else if ("line" in place || "column" in place) {
+ position2.start = place;
+ }
+ }
+ this.name = stringifyPosition(place) || "1:1";
+ this.message = typeof reason === "object" ? reason.message : reason;
+ this.stack = typeof reason === "object" ? reason.stack : "";
+ this.reason = this.message;
+ this.fatal;
+ this.line = position2.start.line;
+ this.column = position2.start.column;
+ this.source = parts[0];
+ this.ruleId = parts[1];
+ this.position = position2;
+ this.actual;
+ this.expected;
+ this.file;
+ this.url;
+ this.note;
+ }
+}
+VFileMessage.prototype.file = "";
+VFileMessage.prototype.name = "";
+VFileMessage.prototype.reason = "";
+VFileMessage.prototype.message = "";
+VFileMessage.prototype.stack = "";
+VFileMessage.prototype.fatal = null;
+VFileMessage.prototype.column = null;
+VFileMessage.prototype.line = null;
+VFileMessage.prototype.source = null;
+VFileMessage.prototype.ruleId = null;
+VFileMessage.prototype.position = null;
+const path = { basename, dirname, extname, join, sep: "/" };
+function basename(path2, ext) {
+ if (ext !== void 0 && typeof ext !== "string") {
+ throw new TypeError('"ext" argument must be a string');
+ }
+ assertPath$1(path2);
+ let start = 0;
+ let end = -1;
+ let index2 = path2.length;
+ let seenNonSlash;
+ if (ext === void 0 || ext.length === 0 || ext.length > path2.length) {
+ while (index2--) {
+ if (path2.charCodeAt(index2) === 47) {
+ if (seenNonSlash) {
+ start = index2 + 1;
+ break;
+ }
+ } else if (end < 0) {
+ seenNonSlash = true;
+ end = index2 + 1;
+ }
+ }
+ return end < 0 ? "" : path2.slice(start, end);
+ }
+ if (ext === path2) {
+ return "";
+ }
+ let firstNonSlashEnd = -1;
+ let extIndex = ext.length - 1;
+ while (index2--) {
+ if (path2.charCodeAt(index2) === 47) {
+ if (seenNonSlash) {
+ start = index2 + 1;
+ break;
+ }
+ } else {
+ if (firstNonSlashEnd < 0) {
+ seenNonSlash = true;
+ firstNonSlashEnd = index2 + 1;
+ }
+ if (extIndex > -1) {
+ if (path2.charCodeAt(index2) === ext.charCodeAt(extIndex--)) {
+ if (extIndex < 0) {
+ end = index2;
+ }
+ } else {
+ extIndex = -1;
+ end = firstNonSlashEnd;
+ }
+ }
+ }
+ }
+ if (start === end) {
+ end = firstNonSlashEnd;
+ } else if (end < 0) {
+ end = path2.length;
+ }
+ return path2.slice(start, end);
+}
+function dirname(path2) {
+ assertPath$1(path2);
+ if (path2.length === 0) {
+ return ".";
+ }
+ let end = -1;
+ let index2 = path2.length;
+ let unmatchedSlash;
+ while (--index2) {
+ if (path2.charCodeAt(index2) === 47) {
+ if (unmatchedSlash) {
+ end = index2;
+ break;
+ }
+ } else if (!unmatchedSlash) {
+ unmatchedSlash = true;
+ }
+ }
+ return end < 0 ? path2.charCodeAt(0) === 47 ? "/" : "." : end === 1 && path2.charCodeAt(0) === 47 ? "//" : path2.slice(0, end);
+}
+function extname(path2) {
+ assertPath$1(path2);
+ let index2 = path2.length;
+ let end = -1;
+ let startPart = 0;
+ let startDot = -1;
+ let preDotState = 0;
+ let unmatchedSlash;
+ while (index2--) {
+ const code2 = path2.charCodeAt(index2);
+ if (code2 === 47) {
+ if (unmatchedSlash) {
+ startPart = index2 + 1;
+ break;
+ }
+ continue;
+ }
+ if (end < 0) {
+ unmatchedSlash = true;
+ end = index2 + 1;
+ }
+ if (code2 === 46) {
+ if (startDot < 0) {
+ startDot = index2;
+ } else if (preDotState !== 1) {
+ preDotState = 1;
+ }
+ } else if (startDot > -1) {
+ preDotState = -1;
+ }
+ }
+ if (startDot < 0 || end < 0 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {
+ return "";
+ }
+ return path2.slice(startDot, end);
+}
+function join(...segments) {
+ let index2 = -1;
+ let joined;
+ while (++index2 < segments.length) {
+ assertPath$1(segments[index2]);
+ if (segments[index2]) {
+ joined = joined === void 0 ? segments[index2] : joined + "/" + segments[index2];
+ }
+ }
+ return joined === void 0 ? "." : normalize$1(joined);
+}
+function normalize$1(path2) {
+ assertPath$1(path2);
+ const absolute = path2.charCodeAt(0) === 47;
+ let value = normalizeString(path2, !absolute);
+ if (value.length === 0 && !absolute) {
+ value = ".";
+ }
+ if (value.length > 0 && path2.charCodeAt(path2.length - 1) === 47) {
+ value += "/";
+ }
+ return absolute ? "/" + value : value;
+}
+function normalizeString(path2, allowAboveRoot) {
+ let result = "";
+ let lastSegmentLength = 0;
+ let lastSlash = -1;
+ let dots = 0;
+ let index2 = -1;
+ let code2;
+ let lastSlashIndex;
+ while (++index2 <= path2.length) {
+ if (index2 < path2.length) {
+ code2 = path2.charCodeAt(index2);
+ } else if (code2 === 47) {
+ break;
+ } else {
+ code2 = 47;
+ }
+ if (code2 === 47) {
+ if (lastSlash === index2 - 1 || dots === 1)
+ ;
+ else if (lastSlash !== index2 - 1 && dots === 2) {
+ if (result.length < 2 || lastSegmentLength !== 2 || result.charCodeAt(result.length - 1) !== 46 || result.charCodeAt(result.length - 2) !== 46) {
+ if (result.length > 2) {
+ lastSlashIndex = result.lastIndexOf("/");
+ if (lastSlashIndex !== result.length - 1) {
+ if (lastSlashIndex < 0) {
+ result = "";
+ lastSegmentLength = 0;
+ } else {
+ result = result.slice(0, lastSlashIndex);
+ lastSegmentLength = result.length - 1 - result.lastIndexOf("/");
+ }
+ lastSlash = index2;
+ dots = 0;
+ continue;
+ }
+ } else if (result.length > 0) {
+ result = "";
+ lastSegmentLength = 0;
+ lastSlash = index2;
+ dots = 0;
+ continue;
+ }
+ }
+ if (allowAboveRoot) {
+ result = result.length > 0 ? result + "/.." : "..";
+ lastSegmentLength = 2;
+ }
+ } else {
+ if (result.length > 0) {
+ result += "/" + path2.slice(lastSlash + 1, index2);
+ } else {
+ result = path2.slice(lastSlash + 1, index2);
+ }
+ lastSegmentLength = index2 - lastSlash - 1;
+ }
+ lastSlash = index2;
+ dots = 0;
+ } else if (code2 === 46 && dots > -1) {
+ dots++;
+ } else {
+ dots = -1;
+ }
+ }
+ return result;
+}
+function assertPath$1(path2) {
+ if (typeof path2 !== "string") {
+ throw new TypeError(
+ "Path must be a string. Received " + JSON.stringify(path2)
+ );
+ }
+}
+const proc = { cwd };
+function cwd() {
+ return "/";
+}
+function isUrl(fileURLOrPath) {
+ return fileURLOrPath !== null && typeof fileURLOrPath === "object" && fileURLOrPath.href && fileURLOrPath.origin;
+}
+function urlToPath(path2) {
+ if (typeof path2 === "string") {
+ path2 = new URL(path2);
+ } else if (!isUrl(path2)) {
+ const error = new TypeError(
+ 'The "path" argument must be of type string or an instance of URL. Received `' + path2 + "`"
+ );
+ error.code = "ERR_INVALID_ARG_TYPE";
+ throw error;
+ }
+ if (path2.protocol !== "file:") {
+ const error = new TypeError("The URL must be of scheme file");
+ error.code = "ERR_INVALID_URL_SCHEME";
+ throw error;
+ }
+ return getPathFromURLPosix(path2);
+}
+function getPathFromURLPosix(url) {
+ if (url.hostname !== "") {
+ const error = new TypeError(
+ 'File URL host must be "localhost" or empty on darwin'
+ );
+ error.code = "ERR_INVALID_FILE_URL_HOST";
+ throw error;
+ }
+ const pathname = url.pathname;
+ let index2 = -1;
+ while (++index2 < pathname.length) {
+ if (pathname.charCodeAt(index2) === 37 && pathname.charCodeAt(index2 + 1) === 50) {
+ const third = pathname.charCodeAt(index2 + 2);
+ if (third === 70 || third === 102) {
+ const error = new TypeError(
+ "File URL path must not include encoded / characters"
+ );
+ error.code = "ERR_INVALID_FILE_URL_PATH";
+ throw error;
+ }
+ }
+ }
+ return decodeURIComponent(pathname);
+}
+const order = ["history", "path", "basename", "stem", "extname", "dirname"];
+class VFile {
+ constructor(value) {
+ let options;
+ if (!value) {
+ options = {};
+ } else if (typeof value === "string" || isBuffer2(value)) {
+ options = { value };
+ } else if (isUrl(value)) {
+ options = { path: value };
+ } else {
+ options = value;
+ }
+ this.data = {};
+ this.messages = [];
+ this.history = [];
+ this.cwd = proc.cwd();
+ this.value;
+ this.stored;
+ this.result;
+ this.map;
+ let index2 = -1;
+ while (++index2 < order.length) {
+ const prop2 = order[index2];
+ if (prop2 in options && options[prop2] !== void 0) {
+ this[prop2] = prop2 === "history" ? [...options[prop2]] : options[prop2];
+ }
+ }
+ let prop;
+ for (prop in options) {
+ if (!order.includes(prop))
+ this[prop] = options[prop];
+ }
+ }
+ get path() {
+ return this.history[this.history.length - 1];
+ }
+ set path(path2) {
+ if (isUrl(path2)) {
+ path2 = urlToPath(path2);
+ }
+ assertNonEmpty(path2, "path");
+ if (this.path !== path2) {
+ this.history.push(path2);
+ }
+ }
+ get dirname() {
+ return typeof this.path === "string" ? path.dirname(this.path) : void 0;
+ }
+ set dirname(dirname2) {
+ assertPath(this.basename, "dirname");
+ this.path = path.join(dirname2 || "", this.basename);
+ }
+ get basename() {
+ return typeof this.path === "string" ? path.basename(this.path) : void 0;
+ }
+ set basename(basename2) {
+ assertNonEmpty(basename2, "basename");
+ assertPart(basename2, "basename");
+ this.path = path.join(this.dirname || "", basename2);
+ }
+ get extname() {
+ return typeof this.path === "string" ? path.extname(this.path) : void 0;
+ }
+ set extname(extname2) {
+ assertPart(extname2, "extname");
+ assertPath(this.dirname, "extname");
+ if (extname2) {
+ if (extname2.charCodeAt(0) !== 46) {
+ throw new Error("`extname` must start with `.`");
+ }
+ if (extname2.includes(".", 1)) {
+ throw new Error("`extname` cannot contain multiple dots");
+ }
+ }
+ this.path = path.join(this.dirname, this.stem + (extname2 || ""));
+ }
+ get stem() {
+ return typeof this.path === "string" ? path.basename(this.path, this.extname) : void 0;
+ }
+ set stem(stem) {
+ assertNonEmpty(stem, "stem");
+ assertPart(stem, "stem");
+ this.path = path.join(this.dirname || "", stem + (this.extname || ""));
+ }
+ toString(encoding) {
+ return (this.value || "").toString(encoding);
+ }
+ message(reason, place, origin) {
+ const message = new VFileMessage(reason, place, origin);
+ if (this.path) {
+ message.name = this.path + ":" + message.name;
+ message.file = this.path;
+ }
+ message.fatal = false;
+ this.messages.push(message);
+ return message;
+ }
+ info(reason, place, origin) {
+ const message = this.message(reason, place, origin);
+ message.fatal = null;
+ return message;
+ }
+ fail(reason, place, origin) {
+ const message = this.message(reason, place, origin);
+ message.fatal = true;
+ throw message;
+ }
+}
+function assertPart(part, name) {
+ if (part && part.includes(path.sep)) {
+ throw new Error(
+ "`" + name + "` cannot be a path: did not expect `" + path.sep + "`"
+ );
+ }
+}
+function assertNonEmpty(part, name) {
+ if (!part) {
+ throw new Error("`" + name + "` cannot be empty");
+ }
+}
+function assertPath(path2, name) {
+ if (!path2) {
+ throw new Error("Setting `" + name + "` requires `path` to be set too");
+ }
+}
+const unified = base().freeze();
+const own$7 = {}.hasOwnProperty;
+function base() {
+ const transformers = trough();
+ const attachers = [];
+ let namespace = {};
+ let frozen;
+ let freezeIndex = -1;
+ processor.data = data;
+ processor.Parser = void 0;
+ processor.Compiler = void 0;
+ processor.freeze = freeze;
+ processor.attachers = attachers;
+ processor.use = use;
+ processor.parse = parse2;
+ processor.stringify = stringify2;
+ processor.run = run;
+ processor.runSync = runSync;
+ processor.process = process;
+ processor.processSync = processSync;
+ return processor;
+ function processor() {
+ const destination = base();
+ let index2 = -1;
+ while (++index2 < attachers.length) {
+ destination.use(...attachers[index2]);
+ }
+ destination.data(extend(true, {}, namespace));
+ return destination;
+ }
+ function data(key, value) {
+ if (typeof key === "string") {
+ if (arguments.length === 2) {
+ assertUnfrozen("data", frozen);
+ namespace[key] = value;
+ return processor;
+ }
+ return own$7.call(namespace, key) && namespace[key] || null;
+ }
+ if (key) {
+ assertUnfrozen("data", frozen);
+ namespace = key;
+ return processor;
+ }
+ return namespace;
+ }
+ function freeze() {
+ if (frozen) {
+ return processor;
+ }
+ while (++freezeIndex < attachers.length) {
+ const [attacher, ...options] = attachers[freezeIndex];
+ if (options[0] === false) {
+ continue;
+ }
+ if (options[0] === true) {
+ options[0] = void 0;
+ }
+ const transformer = attacher.call(processor, ...options);
+ if (typeof transformer === "function") {
+ transformers.use(transformer);
+ }
+ }
+ frozen = true;
+ freezeIndex = Number.POSITIVE_INFINITY;
+ return processor;
+ }
+ function use(value, ...options) {
+ let settings;
+ assertUnfrozen("use", frozen);
+ if (value === null || value === void 0)
+ ;
+ else if (typeof value === "function") {
+ addPlugin(value, ...options);
+ } else if (typeof value === "object") {
+ if (Array.isArray(value)) {
+ addList(value);
+ } else {
+ addPreset(value);
+ }
+ } else {
+ throw new TypeError("Expected usable value, not `" + value + "`");
+ }
+ if (settings) {
+ namespace.settings = Object.assign(namespace.settings || {}, settings);
+ }
+ return processor;
+ function add(value2) {
+ if (typeof value2 === "function") {
+ addPlugin(value2);
+ } else if (typeof value2 === "object") {
+ if (Array.isArray(value2)) {
+ const [plugin, ...options2] = value2;
+ addPlugin(plugin, ...options2);
+ } else {
+ addPreset(value2);
+ }
+ } else {
+ throw new TypeError("Expected usable value, not `" + value2 + "`");
+ }
+ }
+ function addPreset(result) {
+ addList(result.plugins);
+ if (result.settings) {
+ settings = Object.assign(settings || {}, result.settings);
+ }
+ }
+ function addList(plugins) {
+ let index2 = -1;
+ if (plugins === null || plugins === void 0)
+ ;
+ else if (Array.isArray(plugins)) {
+ while (++index2 < plugins.length) {
+ const thing = plugins[index2];
+ add(thing);
+ }
+ } else {
+ throw new TypeError("Expected a list of plugins, not `" + plugins + "`");
+ }
+ }
+ function addPlugin(plugin, value2) {
+ let index2 = -1;
+ let entry;
+ while (++index2 < attachers.length) {
+ if (attachers[index2][0] === plugin) {
+ entry = attachers[index2];
+ break;
+ }
+ }
+ if (entry) {
+ if (isPlainObject2(entry[1]) && isPlainObject2(value2)) {
+ value2 = extend(true, entry[1], value2);
+ }
+ entry[1] = value2;
+ } else {
+ attachers.push([...arguments]);
+ }
+ }
+ }
+ function parse2(doc) {
+ processor.freeze();
+ const file = vfile(doc);
+ const Parser = processor.Parser;
+ assertParser("parse", Parser);
+ if (newable(Parser, "parse")) {
+ return new Parser(String(file), file).parse();
+ }
+ return Parser(String(file), file);
+ }
+ function stringify2(node, doc) {
+ processor.freeze();
+ const file = vfile(doc);
+ const Compiler = processor.Compiler;
+ assertCompiler("stringify", Compiler);
+ assertNode(node);
+ if (newable(Compiler, "compile")) {
+ return new Compiler(node, file).compile();
+ }
+ return Compiler(node, file);
+ }
+ function run(node, doc, callback) {
+ assertNode(node);
+ processor.freeze();
+ if (!callback && typeof doc === "function") {
+ callback = doc;
+ doc = void 0;
+ }
+ if (!callback) {
+ return new Promise(executor);
+ }
+ executor(null, callback);
+ function executor(resolve, reject) {
+ transformers.run(node, vfile(doc), done);
+ function done(error, tree, file) {
+ tree = tree || node;
+ if (error) {
+ reject(error);
+ } else if (resolve) {
+ resolve(tree);
+ } else {
+ callback(null, tree, file);
+ }
+ }
+ }
+ }
+ function runSync(node, file) {
+ let result;
+ let complete;
+ processor.run(node, file, done);
+ assertDone("runSync", "run", complete);
+ return result;
+ function done(error, tree) {
+ bail(error);
+ result = tree;
+ complete = true;
+ }
+ }
+ function process(doc, callback) {
+ processor.freeze();
+ assertParser("process", processor.Parser);
+ assertCompiler("process", processor.Compiler);
+ if (!callback) {
+ return new Promise(executor);
+ }
+ executor(null, callback);
+ function executor(resolve, reject) {
+ const file = vfile(doc);
+ processor.run(processor.parse(file), file, (error, tree, file2) => {
+ if (error || !tree || !file2) {
+ done(error);
+ } else {
+ const result = processor.stringify(tree, file2);
+ if (result === void 0 || result === null)
+ ;
+ else if (looksLikeAVFileValue(result)) {
+ file2.value = result;
+ } else {
+ file2.result = result;
+ }
+ done(error, file2);
+ }
+ });
+ function done(error, file2) {
+ if (error || !file2) {
+ reject(error);
+ } else if (resolve) {
+ resolve(file2);
+ } else {
+ callback(null, file2);
+ }
+ }
+ }
+ }
+ function processSync(doc) {
+ let complete;
+ processor.freeze();
+ assertParser("processSync", processor.Parser);
+ assertCompiler("processSync", processor.Compiler);
+ const file = vfile(doc);
+ processor.process(file, done);
+ assertDone("processSync", "process", complete);
+ return file;
+ function done(error) {
+ complete = true;
+ bail(error);
+ }
+ }
+}
+function newable(value, name) {
+ return typeof value === "function" && value.prototype && (keys(value.prototype) || name in value.prototype);
+}
+function keys(value) {
+ let key;
+ for (key in value) {
+ if (own$7.call(value, key)) {
+ return true;
+ }
+ }
+ return false;
+}
+function assertParser(name, value) {
+ if (typeof value !== "function") {
+ throw new TypeError("Cannot `" + name + "` without `Parser`");
+ }
+}
+function assertCompiler(name, value) {
+ if (typeof value !== "function") {
+ throw new TypeError("Cannot `" + name + "` without `Compiler`");
+ }
+}
+function assertUnfrozen(name, frozen) {
+ if (frozen) {
+ throw new Error(
+ "Cannot call `" + name + "` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`."
+ );
+ }
+}
+function assertNode(node) {
+ if (!isPlainObject2(node) || typeof node.type !== "string") {
+ throw new TypeError("Expected node, got `" + node + "`");
+ }
+}
+function assertDone(name, asyncName, complete) {
+ if (!complete) {
+ throw new Error(
+ "`" + name + "` finished async. Use `" + asyncName + "` instead"
+ );
+ }
+}
+function vfile(value) {
+ return looksLikeAVFile(value) ? value : new VFile(value);
+}
+function looksLikeAVFile(value) {
+ return Boolean(
+ value && typeof value === "object" && "message" in value && "messages" in value
+ );
+}
+function looksLikeAVFileValue(value) {
+ return typeof value === "string" || isBuffer$1(value);
+}
+if (!window._vue_richtext_widgets) {
+ window._vue_richtext_widgets = {};
+}
+const isWidgetRegistered = (id) => {
+ return !!window._vue_richtext_widgets[id];
+};
+const registerWidget = (id, callback, onDestroy = (el) => {
+}) => {
+ if (window._vue_richtext_widgets[id]) {
+ console.error("Widget for id " + id + " already registered");
+ return;
+ }
+ window._vue_richtext_widgets[id] = {
+ id,
+ callback,
+ onDestroy
+ };
+};
+const renderWidget = (el, { richObjectType, richObject, accessible }) => {
+ if (richObjectType === "open-graph") {
+ return;
+ }
+ if (!window._vue_richtext_widgets[richObjectType]) {
+ console.error("Widget for rich object type " + richObjectType + " not registered");
+ return;
+ }
+ window._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible });
+};
+const destroyWidget = (richObjectType, el) => {
+ if (richObjectType === "open-graph") {
+ return;
+ }
+ if (!window._vue_richtext_widgets[richObjectType]) {
+ return;
+ }
+ window._vue_richtext_widgets[richObjectType].onDestroy(el);
+};
+window._registerWidget = registerWidget;
+const ReferenceWidget_vue_vue_type_style_index_0_scoped_de8147ea_lang = "";
+function normalizeComponent(scriptExports, render3, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
+ var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports;
+ if (render3) {
+ options.render = render3;
+ options.staticRenderFns = staticRenderFns;
+ options._compiled = true;
+ }
+ if (functionalTemplate) {
+ options.functional = true;
+ }
+ if (scopeId) {
+ options._scopeId = "data-v-" + scopeId;
+ }
+ var hook;
+ if (moduleIdentifier) {
+ hook = function(context) {
+ context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext;
+ if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") {
+ context = __VUE_SSR_CONTEXT__;
+ }
+ if (injectStyles) {
+ injectStyles.call(this, context);
+ }
+ if (context && context._registeredComponents) {
+ context._registeredComponents.add(moduleIdentifier);
+ }
+ };
+ options._ssrRegister = hook;
+ } else if (injectStyles) {
+ hook = shadowMode ? function() {
+ injectStyles.call(
+ this,
+ (options.functional ? this.parent : this).$root.$options.shadowRoot
+ );
+ } : injectStyles;
+ }
+ if (hook) {
+ if (options.functional) {
+ options._injectStyles = hook;
+ var originalRender = options.render;
+ options.render = function renderWithStyleInjection(h, context) {
+ hook.call(context);
+ return originalRender(h, context);
+ };
+ } else {
+ var existing = options.beforeCreate;
+ options.beforeCreate = existing ? [].concat(existing, hook) : [hook];
+ }
+ }
+ return {
+ exports: scriptExports,
+ options
+ };
+}
+const _sfc_main$2 = {
+ name: "ReferenceWidget",
+ props: {
+ reference: {
+ type: Object,
+ required: true
+ }
+ },
+ data() {
+ return {
+ compact: 3
+ };
+ },
+ computed: {
+ hasCustomWidget() {
+ return isWidgetRegistered(this.reference.richObjectType);
+ },
+ noAccess() {
+ return this.reference && !this.reference.accessible;
+ },
+ descriptionStyle() {
+ if (this.compact === 0) {
+ return {
+ display: "none"
+ };
+ }
+ const lineClamp = this.compact < 4 ? this.compact : 3;
+ return {
+ lineClamp,
+ webkitLineClamp: lineClamp
+ };
+ },
+ compactLink() {
+ const link2 = this.reference.openGraphObject.link;
+ if (!link2) {
+ return "";
+ }
+ if (link2.startsWith("https://")) {
+ return link2.substring(8);
+ }
+ if (link2.startsWith("http://")) {
+ return link2.substring(7);
+ }
+ return link2;
+ }
+ },
+ mounted() {
+ this.renderWidget();
+ this.observer = new ResizeObserver((entries) => {
+ if (entries[0].contentRect.width < 450) {
+ this.compact = 0;
+ } else if (entries[0].contentRect.width < 550) {
+ this.compact = 1;
+ } else if (entries[0].contentRect.width < 650) {
+ this.compact = 2;
+ } else {
+ this.compact = 3;
+ }
+ });
+ this.observer.observe(this.$el);
+ },
+ beforeDestroy() {
+ this.observer.disconnect();
+ destroyWidget(this.reference.richObjectType, this.$el);
+ },
+ methods: {
+ renderWidget() {
+ var _a;
+ if (this.$refs.customWidget) {
+ this.$refs.customWidget.innerHTML = "";
+ }
+ if (((_a = this == null ? void 0 : this.reference) == null ? void 0 : _a.richObjectType) === "open-graph") {
+ return;
+ }
+ this.$nextTick(() => {
+ renderWidget(this.$refs.customWidget, this.reference);
+ });
+ }
+ }
+};
+var _sfc_render$2 = function render() {
+ var _vm = this, _c = _vm._self._c;
+ return _c("div", [_vm.reference && _vm.hasCustomWidget ? _c("div", { staticClass: "widget-custom" }, [_c("div", { ref: "customWidget" })]) : !_vm.noAccess && _vm.reference && _vm.reference.openGraphObject && !_vm.hasCustomWidget ? _c("a", { staticClass: "widget-default", attrs: { "href": _vm.reference.openGraphObject.link, "rel": "noopener noreferrer", "target": "_blank" } }, [_vm.reference.openGraphObject.thumb ? _c("img", { staticClass: "widget-default--image", attrs: { "src": _vm.reference.openGraphObject.thumb } }) : _vm._e(), _c("div", { staticClass: "widget-default--details" }, [_c("p", { staticClass: "widget-default--title" }, [_vm._v(_vm._s(_vm.reference.openGraphObject.name))]), _c("p", { staticClass: "widget-default--description", style: _vm.descriptionStyle }, [_vm._v(_vm._s(_vm.reference.openGraphObject.description))]), _c("p", { staticClass: "widget-default--link" }, [_vm._v(_vm._s(_vm.compactLink))])])]) : _vm._e()]);
+};
+var _sfc_staticRenderFns$2 = [];
+var __component__$2 = /* @__PURE__ */ normalizeComponent(
+ _sfc_main$2,
+ _sfc_render$2,
+ _sfc_staticRenderFns$2,
+ false,
+ null,
+ "de8147ea",
+ null,
+ null
+);
+const ReferenceWidget = __component__$2.exports;
+const URL_PATTERN = /(\s|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|$)/ig;
+const URL_PATTERN_AUTOLINK = /(\s|\(|^)((https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?::[0-9]+)?(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\s|\)|$)/ig;
+const ReferenceList_vue_vue_type_style_index_0_scoped_5a4fd40e_lang = "";
+const _sfc_main$1 = {
+ name: "ReferenceList",
+ components: { ReferenceWidget },
+ props: {
+ text: {
+ type: String,
+ default: ""
+ },
+ referenceData: {
+ type: Object,
+ default: null
+ },
+ limit: {
+ type: Number,
+ default: 1
+ }
+ },
+ data() {
+ return {
+ references: null,
+ loading: true
+ };
+ },
+ computed: {
+ values() {
+ return this.referenceData ? this.referenceData : this.references ? Object.values(this.references) : [];
+ },
+ firstReference() {
+ var _a;
+ return (_a = this.values[0]) != null ? _a : null;
+ },
+ displayedReferences() {
+ return this.values.slice(0, this.limit);
+ }
+ },
+ watch: {
+ text: "fetch"
+ },
+ mounted() {
+ this.fetch();
+ },
+ methods: {
+ fetch() {
+ this.loading = true;
+ if (this.referenceData) {
+ this.loading = false;
+ return;
+ }
+ if (!new RegExp(URL_PATTERN).exec(this.text)) {
+ this.loading = false;
+ return;
+ }
+ this.resolve().then((response) => {
+ this.references = response.data.ocs.data.references;
+ this.loading = false;
+ }).catch((error) => {
+ console.error("Failed to extract references", error);
+ this.loading = false;
+ });
+ },
+ resolve() {
+ const match = new RegExp(URL_PATTERN).exec(this.text.trim());
+ if (this.limit === 1 && match) {
+ return _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].get((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)("references/resolve", 2) + `?reference=${encodeURIComponent(match[0])}`);
+ }
+ return _nextcloud_axios__WEBPACK_IMPORTED_MODULE_0__["default"].post((0,_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__.generateOcsUrl)("references/extract", 2), {
+ text: this.text,
+ resolve: true,
+ limit: this.limit
+ });
+ }
+ }
+};
+var _sfc_render$1 = function render2() {
+ var _vm = this, _c = _vm._self._c;
+ return _c("div", { staticClass: "widgets--list", class: { "icon-loading": _vm.loading } }, _vm._l(_vm.displayedReferences, function(reference) {
+ return _c("div", { key: reference.openGraphObject.id }, [_c("ReferenceWidget", { attrs: { "reference": reference } })], 1);
+ }), 0);
+};
+var _sfc_staticRenderFns$1 = [];
+var __component__$1 = /* @__PURE__ */ normalizeComponent(
+ _sfc_main$1,
+ _sfc_render$1,
+ _sfc_staticRenderFns$1,
+ false,
+ null,
+ "5a4fd40e",
+ null,
+ null
+);
+const ReferenceList = __component__$1.exports;
+function toString(node, options) {
+ var { includeImageAlt = true } = options || {};
+ return one$1(node, includeImageAlt);
+}
+function one$1(node, includeImageAlt) {
+ return node && typeof node === "object" && (node.value || (includeImageAlt ? node.alt : "") || "children" in node && all$1(node.children, includeImageAlt) || Array.isArray(node) && all$1(node, includeImageAlt)) || "";
+}
+function all$1(values, includeImageAlt) {
+ var result = [];
+ var index2 = -1;
+ while (++index2 < values.length) {
+ result[index2] = one$1(values[index2], includeImageAlt);
+ }
+ return result.join("");
+}
+function splice(list2, start, remove, items) {
+ const end = list2.length;
+ let chunkStart = 0;
+ let parameters;
+ if (start < 0) {
+ start = -start > end ? 0 : end + start;
+ } else {
+ start = start > end ? end : start;
+ }
+ remove = remove > 0 ? remove : 0;
+ if (items.length < 1e4) {
+ parameters = Array.from(items);
+ parameters.unshift(start, remove);
+ [].splice.apply(list2, parameters);
+ } else {
+ if (remove)
+ [].splice.apply(list2, [start, remove]);
+ while (chunkStart < items.length) {
+ parameters = items.slice(chunkStart, chunkStart + 1e4);
+ parameters.unshift(start, 0);
+ [].splice.apply(list2, parameters);
+ chunkStart += 1e4;
+ start += 1e4;
+ }
+ }
+}
+function push(list2, items) {
+ if (list2.length > 0) {
+ splice(list2, list2.length, 0, items);
+ return list2;
+ }
+ return items;
+}
+const hasOwnProperty$1 = {}.hasOwnProperty;
+function combineExtensions(extensions) {
+ const all2 = {};
+ let index2 = -1;
+ while (++index2 < extensions.length) {
+ syntaxExtension(all2, extensions[index2]);
+ }
+ return all2;
+}
+function syntaxExtension(all2, extension2) {
+ let hook;
+ for (hook in extension2) {
+ const maybe = hasOwnProperty$1.call(all2, hook) ? all2[hook] : void 0;
+ const left = maybe || (all2[hook] = {});
+ const right = extension2[hook];
+ let code2;
+ for (code2 in right) {
+ if (!hasOwnProperty$1.call(left, code2))
+ left[code2] = [];
+ const value = right[code2];
+ constructs(
+ left[code2],
+ Array.isArray(value) ? value : value ? [value] : []
+ );
+ }
+ }
+}
+function constructs(existing, list2) {
+ let index2 = -1;
+ const before = [];
+ while (++index2 < list2.length) {
+ (list2[index2].add === "after" ? existing : before).push(list2[index2]);
+ }
+ splice(existing, 0, 0, before);
+}
+const unicodePunctuationRegex = /[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;
+const asciiAlpha = regexCheck(/[A-Za-z]/);
+const asciiDigit = regexCheck(/\d/);
+const asciiHexDigit = regexCheck(/[\dA-Fa-f]/);
+const asciiAlphanumeric = regexCheck(/[\dA-Za-z]/);
+const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);
+const asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/);
+function asciiControl(code2) {
+ return code2 !== null && (code2 < 32 || code2 === 127);
+}
+function markdownLineEndingOrSpace(code2) {
+ return code2 !== null && (code2 < 0 || code2 === 32);
+}
+function markdownLineEnding(code2) {
+ return code2 !== null && code2 < -2;
+}
+function markdownSpace(code2) {
+ return code2 === -2 || code2 === -1 || code2 === 32;
+}
+const unicodeWhitespace = regexCheck(/\s/);
+const unicodePunctuation = regexCheck(unicodePunctuationRegex);
+function regexCheck(regex) {
+ return check;
+ function check(code2) {
+ return code2 !== null && regex.test(String.fromCharCode(code2));
+ }
+}
+function factorySpace(effects, ok2, type, max) {
+ const limit = max ? max - 1 : Number.POSITIVE_INFINITY;
+ let size = 0;
+ return start;
+ function start(code2) {
+ if (markdownSpace(code2)) {
+ effects.enter(type);
+ return prefix(code2);
+ }
+ return ok2(code2);
+ }
+ function prefix(code2) {
+ if (markdownSpace(code2) && size++ < limit) {
+ effects.consume(code2);
+ return prefix;
+ }
+ effects.exit(type);
+ return ok2(code2);
+ }
+}
+const content$1 = {
+ tokenize: initializeContent
+};
+function initializeContent(effects) {
+ const contentStart = effects.attempt(
+ this.parser.constructs.contentInitial,
+ afterContentStartConstruct,
+ paragraphInitial
+ );
+ let previous2;
+ return contentStart;
+ function afterContentStartConstruct(code2) {
+ if (code2 === null) {
+ effects.consume(code2);
+ return;
+ }
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return factorySpace(effects, contentStart, "linePrefix");
+ }
+ function paragraphInitial(code2) {
+ effects.enter("paragraph");
+ return lineStart(code2);
+ }
+ function lineStart(code2) {
+ const token = effects.enter("chunkText", {
+ contentType: "text",
+ previous: previous2
+ });
+ if (previous2) {
+ previous2.next = token;
+ }
+ previous2 = token;
+ return data(code2);
+ }
+ function data(code2) {
+ if (code2 === null) {
+ effects.exit("chunkText");
+ effects.exit("paragraph");
+ effects.consume(code2);
+ return;
+ }
+ if (markdownLineEnding(code2)) {
+ effects.consume(code2);
+ effects.exit("chunkText");
+ return lineStart;
+ }
+ effects.consume(code2);
+ return data;
+ }
+}
+const document$2 = {
+ tokenize: initializeDocument
+};
+const containerConstruct = {
+ tokenize: tokenizeContainer
+};
+function initializeDocument(effects) {
+ const self = this;
+ const stack = [];
+ let continued = 0;
+ let childFlow;
+ let childToken;
+ let lineStartOffset;
+ return start;
+ function start(code2) {
+ if (continued < stack.length) {
+ const item = stack[continued];
+ self.containerState = item[1];
+ return effects.attempt(
+ item[0].continuation,
+ documentContinue,
+ checkNewContainers
+ )(code2);
+ }
+ return checkNewContainers(code2);
+ }
+ function documentContinue(code2) {
+ continued++;
+ if (self.containerState._closeFlow) {
+ self.containerState._closeFlow = void 0;
+ if (childFlow) {
+ closeFlow();
+ }
+ const indexBeforeExits = self.events.length;
+ let indexBeforeFlow = indexBeforeExits;
+ let point2;
+ while (indexBeforeFlow--) {
+ if (self.events[indexBeforeFlow][0] === "exit" && self.events[indexBeforeFlow][1].type === "chunkFlow") {
+ point2 = self.events[indexBeforeFlow][1].end;
+ break;
+ }
+ }
+ exitContainers(continued);
+ let index2 = indexBeforeExits;
+ while (index2 < self.events.length) {
+ self.events[index2][1].end = Object.assign({}, point2);
+ index2++;
+ }
+ splice(
+ self.events,
+ indexBeforeFlow + 1,
+ 0,
+ self.events.slice(indexBeforeExits)
+ );
+ self.events.length = index2;
+ return checkNewContainers(code2);
+ }
+ return start(code2);
+ }
+ function checkNewContainers(code2) {
+ if (continued === stack.length) {
+ if (!childFlow) {
+ return documentContinued(code2);
+ }
+ if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {
+ return flowStart(code2);
+ }
+ self.interrupt = Boolean(
+ childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack
+ );
+ }
+ self.containerState = {};
+ return effects.check(
+ containerConstruct,
+ thereIsANewContainer,
+ thereIsNoNewContainer
+ )(code2);
+ }
+ function thereIsANewContainer(code2) {
+ if (childFlow)
+ closeFlow();
+ exitContainers(continued);
+ return documentContinued(code2);
+ }
+ function thereIsNoNewContainer(code2) {
+ self.parser.lazy[self.now().line] = continued !== stack.length;
+ lineStartOffset = self.now().offset;
+ return flowStart(code2);
+ }
+ function documentContinued(code2) {
+ self.containerState = {};
+ return effects.attempt(
+ containerConstruct,
+ containerContinue,
+ flowStart
+ )(code2);
+ }
+ function containerContinue(code2) {
+ continued++;
+ stack.push([self.currentConstruct, self.containerState]);
+ return documentContinued(code2);
+ }
+ function flowStart(code2) {
+ if (code2 === null) {
+ if (childFlow)
+ closeFlow();
+ exitContainers(0);
+ effects.consume(code2);
+ return;
+ }
+ childFlow = childFlow || self.parser.flow(self.now());
+ effects.enter("chunkFlow", {
+ contentType: "flow",
+ previous: childToken,
+ _tokenizer: childFlow
+ });
+ return flowContinue(code2);
+ }
+ function flowContinue(code2) {
+ if (code2 === null) {
+ writeToChild(effects.exit("chunkFlow"), true);
+ exitContainers(0);
+ effects.consume(code2);
+ return;
+ }
+ if (markdownLineEnding(code2)) {
+ effects.consume(code2);
+ writeToChild(effects.exit("chunkFlow"));
+ continued = 0;
+ self.interrupt = void 0;
+ return start;
+ }
+ effects.consume(code2);
+ return flowContinue;
+ }
+ function writeToChild(token, eof) {
+ const stream = self.sliceStream(token);
+ if (eof)
+ stream.push(null);
+ token.previous = childToken;
+ if (childToken)
+ childToken.next = token;
+ childToken = token;
+ childFlow.defineSkip(token.start);
+ childFlow.write(stream);
+ if (self.parser.lazy[token.start.line]) {
+ let index2 = childFlow.events.length;
+ while (index2--) {
+ if (childFlow.events[index2][1].start.offset < lineStartOffset && (!childFlow.events[index2][1].end || childFlow.events[index2][1].end.offset > lineStartOffset)) {
+ return;
+ }
+ }
+ const indexBeforeExits = self.events.length;
+ let indexBeforeFlow = indexBeforeExits;
+ let seen;
+ let point2;
+ while (indexBeforeFlow--) {
+ if (self.events[indexBeforeFlow][0] === "exit" && self.events[indexBeforeFlow][1].type === "chunkFlow") {
+ if (seen) {
+ point2 = self.events[indexBeforeFlow][1].end;
+ break;
+ }
+ seen = true;
+ }
+ }
+ exitContainers(continued);
+ index2 = indexBeforeExits;
+ while (index2 < self.events.length) {
+ self.events[index2][1].end = Object.assign({}, point2);
+ index2++;
+ }
+ splice(
+ self.events,
+ indexBeforeFlow + 1,
+ 0,
+ self.events.slice(indexBeforeExits)
+ );
+ self.events.length = index2;
+ }
+ }
+ function exitContainers(size) {
+ let index2 = stack.length;
+ while (index2-- > size) {
+ const entry = stack[index2];
+ self.containerState = entry[1];
+ entry[0].exit.call(self, effects);
+ }
+ stack.length = size;
+ }
+ function closeFlow() {
+ childFlow.write([null]);
+ childToken = void 0;
+ childFlow = void 0;
+ self.containerState._closeFlow = void 0;
+ }
+}
+function tokenizeContainer(effects, ok2, nok) {
+ return factorySpace(
+ effects,
+ effects.attempt(this.parser.constructs.document, ok2, nok),
+ "linePrefix",
+ this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
+ );
+}
+function classifyCharacter(code2) {
+ if (code2 === null || markdownLineEndingOrSpace(code2) || unicodeWhitespace(code2)) {
+ return 1;
+ }
+ if (unicodePunctuation(code2)) {
+ return 2;
+ }
+}
+function resolveAll(constructs2, events, context) {
+ const called = [];
+ let index2 = -1;
+ while (++index2 < constructs2.length) {
+ const resolve = constructs2[index2].resolveAll;
+ if (resolve && !called.includes(resolve)) {
+ events = resolve(events, context);
+ called.push(resolve);
+ }
+ }
+ return events;
+}
+const attention = {
+ name: "attention",
+ tokenize: tokenizeAttention,
+ resolveAll: resolveAllAttention
+};
+function resolveAllAttention(events, context) {
+ let index2 = -1;
+ let open;
+ let group;
+ let text2;
+ let openingSequence;
+ let closingSequence;
+ let use;
+ let nextEvents;
+ let offset;
+ while (++index2 < events.length) {
+ if (events[index2][0] === "enter" && events[index2][1].type === "attentionSequence" && events[index2][1]._close) {
+ open = index2;
+ while (open--) {
+ if (events[open][0] === "exit" && events[open][1].type === "attentionSequence" && events[open][1]._open && context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index2][1]).charCodeAt(0)) {
+ if ((events[open][1]._close || events[index2][1]._open) && (events[index2][1].end.offset - events[index2][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index2][1].end.offset - events[index2][1].start.offset) % 3)) {
+ continue;
+ }
+ use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index2][1].end.offset - events[index2][1].start.offset > 1 ? 2 : 1;
+ const start = Object.assign({}, events[open][1].end);
+ const end = Object.assign({}, events[index2][1].start);
+ movePoint(start, -use);
+ movePoint(end, use);
+ openingSequence = {
+ type: use > 1 ? "strongSequence" : "emphasisSequence",
+ start,
+ end: Object.assign({}, events[open][1].end)
+ };
+ closingSequence = {
+ type: use > 1 ? "strongSequence" : "emphasisSequence",
+ start: Object.assign({}, events[index2][1].start),
+ end
+ };
+ text2 = {
+ type: use > 1 ? "strongText" : "emphasisText",
+ start: Object.assign({}, events[open][1].end),
+ end: Object.assign({}, events[index2][1].start)
+ };
+ group = {
+ type: use > 1 ? "strong" : "emphasis",
+ start: Object.assign({}, openingSequence.start),
+ end: Object.assign({}, closingSequence.end)
+ };
+ events[open][1].end = Object.assign({}, openingSequence.start);
+ events[index2][1].start = Object.assign({}, closingSequence.end);
+ nextEvents = [];
+ if (events[open][1].end.offset - events[open][1].start.offset) {
+ nextEvents = push(nextEvents, [
+ ["enter", events[open][1], context],
+ ["exit", events[open][1], context]
+ ]);
+ }
+ nextEvents = push(nextEvents, [
+ ["enter", group, context],
+ ["enter", openingSequence, context],
+ ["exit", openingSequence, context],
+ ["enter", text2, context]
+ ]);
+ nextEvents = push(
+ nextEvents,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + 1, index2),
+ context
+ )
+ );
+ nextEvents = push(nextEvents, [
+ ["exit", text2, context],
+ ["enter", closingSequence, context],
+ ["exit", closingSequence, context],
+ ["exit", group, context]
+ ]);
+ if (events[index2][1].end.offset - events[index2][1].start.offset) {
+ offset = 2;
+ nextEvents = push(nextEvents, [
+ ["enter", events[index2][1], context],
+ ["exit", events[index2][1], context]
+ ]);
+ } else {
+ offset = 0;
+ }
+ splice(events, open - 1, index2 - open + 3, nextEvents);
+ index2 = open + nextEvents.length - offset - 2;
+ break;
+ }
+ }
+ }
+ }
+ index2 = -1;
+ while (++index2 < events.length) {
+ if (events[index2][1].type === "attentionSequence") {
+ events[index2][1].type = "data";
+ }
+ }
+ return events;
+}
+function tokenizeAttention(effects, ok2) {
+ const attentionMarkers2 = this.parser.constructs.attentionMarkers.null;
+ const previous2 = this.previous;
+ const before = classifyCharacter(previous2);
+ let marker;
+ return start;
+ function start(code2) {
+ effects.enter("attentionSequence");
+ marker = code2;
+ return sequence(code2);
+ }
+ function sequence(code2) {
+ if (code2 === marker) {
+ effects.consume(code2);
+ return sequence;
+ }
+ const token = effects.exit("attentionSequence");
+ const after = classifyCharacter(code2);
+ const open = !after || after === 2 && before || attentionMarkers2.includes(code2);
+ const close = !before || before === 2 && after || attentionMarkers2.includes(previous2);
+ token._open = Boolean(marker === 42 ? open : open && (before || !close));
+ token._close = Boolean(marker === 42 ? close : close && (after || !open));
+ return ok2(code2);
+ }
+}
+function movePoint(point2, offset) {
+ point2.column += offset;
+ point2.offset += offset;
+ point2._bufferIndex += offset;
+}
+const autolink = {
+ name: "autolink",
+ tokenize: tokenizeAutolink
+};
+function tokenizeAutolink(effects, ok2, nok) {
+ let size = 1;
+ return start;
+ function start(code2) {
+ effects.enter("autolink");
+ effects.enter("autolinkMarker");
+ effects.consume(code2);
+ effects.exit("autolinkMarker");
+ effects.enter("autolinkProtocol");
+ return open;
+ }
+ function open(code2) {
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ return schemeOrEmailAtext;
+ }
+ return asciiAtext(code2) ? emailAtext(code2) : nok(code2);
+ }
+ function schemeOrEmailAtext(code2) {
+ return code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2) ? schemeInsideOrEmailAtext(code2) : emailAtext(code2);
+ }
+ function schemeInsideOrEmailAtext(code2) {
+ if (code2 === 58) {
+ effects.consume(code2);
+ return urlInside;
+ }
+ if ((code2 === 43 || code2 === 45 || code2 === 46 || asciiAlphanumeric(code2)) && size++ < 32) {
+ effects.consume(code2);
+ return schemeInsideOrEmailAtext;
+ }
+ return emailAtext(code2);
+ }
+ function urlInside(code2) {
+ if (code2 === 62) {
+ effects.exit("autolinkProtocol");
+ return end(code2);
+ }
+ if (code2 === null || code2 === 32 || code2 === 60 || asciiControl(code2)) {
+ return nok(code2);
+ }
+ effects.consume(code2);
+ return urlInside;
+ }
+ function emailAtext(code2) {
+ if (code2 === 64) {
+ effects.consume(code2);
+ size = 0;
+ return emailAtSignOrDot;
+ }
+ if (asciiAtext(code2)) {
+ effects.consume(code2);
+ return emailAtext;
+ }
+ return nok(code2);
+ }
+ function emailAtSignOrDot(code2) {
+ return asciiAlphanumeric(code2) ? emailLabel(code2) : nok(code2);
+ }
+ function emailLabel(code2) {
+ if (code2 === 46) {
+ effects.consume(code2);
+ size = 0;
+ return emailAtSignOrDot;
+ }
+ if (code2 === 62) {
+ effects.exit("autolinkProtocol").type = "autolinkEmail";
+ return end(code2);
+ }
+ return emailValue(code2);
+ }
+ function emailValue(code2) {
+ if ((code2 === 45 || asciiAlphanumeric(code2)) && size++ < 63) {
+ effects.consume(code2);
+ return code2 === 45 ? emailValue : emailLabel;
+ }
+ return nok(code2);
+ }
+ function end(code2) {
+ effects.enter("autolinkMarker");
+ effects.consume(code2);
+ effects.exit("autolinkMarker");
+ effects.exit("autolink");
+ return ok2;
+ }
+}
+const blankLine = {
+ tokenize: tokenizeBlankLine,
+ partial: true
+};
+function tokenizeBlankLine(effects, ok2, nok) {
+ return factorySpace(effects, afterWhitespace, "linePrefix");
+ function afterWhitespace(code2) {
+ return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);
+ }
+}
+const blockQuote = {
+ name: "blockQuote",
+ tokenize: tokenizeBlockQuoteStart,
+ continuation: {
+ tokenize: tokenizeBlockQuoteContinuation
+ },
+ exit
+};
+function tokenizeBlockQuoteStart(effects, ok2, nok) {
+ const self = this;
+ return start;
+ function start(code2) {
+ if (code2 === 62) {
+ const state = self.containerState;
+ if (!state.open) {
+ effects.enter("blockQuote", {
+ _container: true
+ });
+ state.open = true;
+ }
+ effects.enter("blockQuotePrefix");
+ effects.enter("blockQuoteMarker");
+ effects.consume(code2);
+ effects.exit("blockQuoteMarker");
+ return after;
+ }
+ return nok(code2);
+ }
+ function after(code2) {
+ if (markdownSpace(code2)) {
+ effects.enter("blockQuotePrefixWhitespace");
+ effects.consume(code2);
+ effects.exit("blockQuotePrefixWhitespace");
+ effects.exit("blockQuotePrefix");
+ return ok2;
+ }
+ effects.exit("blockQuotePrefix");
+ return ok2(code2);
+ }
+}
+function tokenizeBlockQuoteContinuation(effects, ok2, nok) {
+ return factorySpace(
+ effects,
+ effects.attempt(blockQuote, ok2, nok),
+ "linePrefix",
+ this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
+ );
+}
+function exit(effects) {
+ effects.exit("blockQuote");
+}
+const characterEscape = {
+ name: "characterEscape",
+ tokenize: tokenizeCharacterEscape
+};
+function tokenizeCharacterEscape(effects, ok2, nok) {
+ return start;
+ function start(code2) {
+ effects.enter("characterEscape");
+ effects.enter("escapeMarker");
+ effects.consume(code2);
+ effects.exit("escapeMarker");
+ return open;
+ }
+ function open(code2) {
+ if (asciiPunctuation(code2)) {
+ effects.enter("characterEscapeValue");
+ effects.consume(code2);
+ effects.exit("characterEscapeValue");
+ effects.exit("characterEscape");
+ return ok2;
+ }
+ return nok(code2);
+ }
+}
+const element$1 = document.createElement("i");
+function decodeNamedCharacterReference(value) {
+ const characterReference2 = "&" + value + ";";
+ element$1.innerHTML = characterReference2;
+ const char = element$1.textContent;
+ if (char.charCodeAt(char.length - 1) === 59 && value !== "semi") {
+ return false;
+ }
+ return char === characterReference2 ? false : char;
+}
+const characterReference = {
+ name: "characterReference",
+ tokenize: tokenizeCharacterReference
+};
+function tokenizeCharacterReference(effects, ok2, nok) {
+ const self = this;
+ let size = 0;
+ let max;
+ let test;
+ return start;
+ function start(code2) {
+ effects.enter("characterReference");
+ effects.enter("characterReferenceMarker");
+ effects.consume(code2);
+ effects.exit("characterReferenceMarker");
+ return open;
+ }
+ function open(code2) {
+ if (code2 === 35) {
+ effects.enter("characterReferenceMarkerNumeric");
+ effects.consume(code2);
+ effects.exit("characterReferenceMarkerNumeric");
+ return numeric;
+ }
+ effects.enter("characterReferenceValue");
+ max = 31;
+ test = asciiAlphanumeric;
+ return value(code2);
+ }
+ function numeric(code2) {
+ if (code2 === 88 || code2 === 120) {
+ effects.enter("characterReferenceMarkerHexadecimal");
+ effects.consume(code2);
+ effects.exit("characterReferenceMarkerHexadecimal");
+ effects.enter("characterReferenceValue");
+ max = 6;
+ test = asciiHexDigit;
+ return value;
+ }
+ effects.enter("characterReferenceValue");
+ max = 7;
+ test = asciiDigit;
+ return value(code2);
+ }
+ function value(code2) {
+ let token;
+ if (code2 === 59 && size) {
+ token = effects.exit("characterReferenceValue");
+ if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {
+ return nok(code2);
+ }
+ effects.enter("characterReferenceMarker");
+ effects.consume(code2);
+ effects.exit("characterReferenceMarker");
+ effects.exit("characterReference");
+ return ok2;
+ }
+ if (test(code2) && size++ < max) {
+ effects.consume(code2);
+ return value;
+ }
+ return nok(code2);
+ }
+}
+const codeFenced = {
+ name: "codeFenced",
+ tokenize: tokenizeCodeFenced,
+ concrete: true
+};
+function tokenizeCodeFenced(effects, ok2, nok) {
+ const self = this;
+ const closingFenceConstruct = {
+ tokenize: tokenizeClosingFence,
+ partial: true
+ };
+ const nonLazyLine = {
+ tokenize: tokenizeNonLazyLine,
+ partial: true
+ };
+ const tail = this.events[this.events.length - 1];
+ const initialPrefix = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0;
+ let sizeOpen = 0;
+ let marker;
+ return start;
+ function start(code2) {
+ effects.enter("codeFenced");
+ effects.enter("codeFencedFence");
+ effects.enter("codeFencedFenceSequence");
+ marker = code2;
+ return sequenceOpen(code2);
+ }
+ function sequenceOpen(code2) {
+ if (code2 === marker) {
+ effects.consume(code2);
+ sizeOpen++;
+ return sequenceOpen;
+ }
+ effects.exit("codeFencedFenceSequence");
+ return sizeOpen < 3 ? nok(code2) : factorySpace(effects, infoOpen, "whitespace")(code2);
+ }
+ function infoOpen(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ return openAfter(code2);
+ }
+ effects.enter("codeFencedFenceInfo");
+ effects.enter("chunkString", {
+ contentType: "string"
+ });
+ return info(code2);
+ }
+ function info(code2) {
+ if (code2 === null || markdownLineEndingOrSpace(code2)) {
+ effects.exit("chunkString");
+ effects.exit("codeFencedFenceInfo");
+ return factorySpace(effects, infoAfter, "whitespace")(code2);
+ }
+ if (code2 === 96 && code2 === marker)
+ return nok(code2);
+ effects.consume(code2);
+ return info;
+ }
+ function infoAfter(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ return openAfter(code2);
+ }
+ effects.enter("codeFencedFenceMeta");
+ effects.enter("chunkString", {
+ contentType: "string"
+ });
+ return meta(code2);
+ }
+ function meta(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("chunkString");
+ effects.exit("codeFencedFenceMeta");
+ return openAfter(code2);
+ }
+ if (code2 === 96 && code2 === marker)
+ return nok(code2);
+ effects.consume(code2);
+ return meta;
+ }
+ function openAfter(code2) {
+ effects.exit("codeFencedFence");
+ return self.interrupt ? ok2(code2) : contentStart(code2);
+ }
+ function contentStart(code2) {
+ if (code2 === null) {
+ return after(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ return effects.attempt(
+ nonLazyLine,
+ effects.attempt(
+ closingFenceConstruct,
+ after,
+ initialPrefix ? factorySpace(
+ effects,
+ contentStart,
+ "linePrefix",
+ initialPrefix + 1
+ ) : contentStart
+ ),
+ after
+ )(code2);
+ }
+ effects.enter("codeFlowValue");
+ return contentContinue(code2);
+ }
+ function contentContinue(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("codeFlowValue");
+ return contentStart(code2);
+ }
+ effects.consume(code2);
+ return contentContinue;
+ }
+ function after(code2) {
+ effects.exit("codeFenced");
+ return ok2(code2);
+ }
+ function tokenizeNonLazyLine(effects2, ok3, nok2) {
+ const self2 = this;
+ return start2;
+ function start2(code2) {
+ effects2.enter("lineEnding");
+ effects2.consume(code2);
+ effects2.exit("lineEnding");
+ return lineStart;
+ }
+ function lineStart(code2) {
+ return self2.parser.lazy[self2.now().line] ? nok2(code2) : ok3(code2);
+ }
+ }
+ function tokenizeClosingFence(effects2, ok3, nok2) {
+ let size = 0;
+ return factorySpace(
+ effects2,
+ closingSequenceStart,
+ "linePrefix",
+ this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
+ );
+ function closingSequenceStart(code2) {
+ effects2.enter("codeFencedFence");
+ effects2.enter("codeFencedFenceSequence");
+ return closingSequence(code2);
+ }
+ function closingSequence(code2) {
+ if (code2 === marker) {
+ effects2.consume(code2);
+ size++;
+ return closingSequence;
+ }
+ if (size < sizeOpen)
+ return nok2(code2);
+ effects2.exit("codeFencedFenceSequence");
+ return factorySpace(effects2, closingSequenceEnd, "whitespace")(code2);
+ }
+ function closingSequenceEnd(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects2.exit("codeFencedFence");
+ return ok3(code2);
+ }
+ return nok2(code2);
+ }
+ }
+}
+const codeIndented = {
+ name: "codeIndented",
+ tokenize: tokenizeCodeIndented
+};
+const indentedContent = {
+ tokenize: tokenizeIndentedContent,
+ partial: true
+};
+function tokenizeCodeIndented(effects, ok2, nok) {
+ const self = this;
+ return start;
+ function start(code2) {
+ effects.enter("codeIndented");
+ return factorySpace(effects, afterStartPrefix, "linePrefix", 4 + 1)(code2);
+ }
+ function afterStartPrefix(code2) {
+ const tail = self.events[self.events.length - 1];
+ return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? afterPrefix(code2) : nok(code2);
+ }
+ function afterPrefix(code2) {
+ if (code2 === null) {
+ return after(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ return effects.attempt(indentedContent, afterPrefix, after)(code2);
+ }
+ effects.enter("codeFlowValue");
+ return content2(code2);
+ }
+ function content2(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("codeFlowValue");
+ return afterPrefix(code2);
+ }
+ effects.consume(code2);
+ return content2;
+ }
+ function after(code2) {
+ effects.exit("codeIndented");
+ return ok2(code2);
+ }
+}
+function tokenizeIndentedContent(effects, ok2, nok) {
+ const self = this;
+ return start;
+ function start(code2) {
+ if (self.parser.lazy[self.now().line]) {
+ return nok(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return start;
+ }
+ return factorySpace(effects, afterPrefix, "linePrefix", 4 + 1)(code2);
+ }
+ function afterPrefix(code2) {
+ const tail = self.events[self.events.length - 1];
+ return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok2(code2) : markdownLineEnding(code2) ? start(code2) : nok(code2);
+ }
+}
+const codeText = {
+ name: "codeText",
+ tokenize: tokenizeCodeText,
+ resolve: resolveCodeText,
+ previous
+};
+function resolveCodeText(events) {
+ let tailExitIndex = events.length - 4;
+ let headEnterIndex = 3;
+ let index2;
+ let enter;
+ if ((events[headEnterIndex][1].type === "lineEnding" || events[headEnterIndex][1].type === "space") && (events[tailExitIndex][1].type === "lineEnding" || events[tailExitIndex][1].type === "space")) {
+ index2 = headEnterIndex;
+ while (++index2 < tailExitIndex) {
+ if (events[index2][1].type === "codeTextData") {
+ events[headEnterIndex][1].type = "codeTextPadding";
+ events[tailExitIndex][1].type = "codeTextPadding";
+ headEnterIndex += 2;
+ tailExitIndex -= 2;
+ break;
+ }
+ }
+ }
+ index2 = headEnterIndex - 1;
+ tailExitIndex++;
+ while (++index2 <= tailExitIndex) {
+ if (enter === void 0) {
+ if (index2 !== tailExitIndex && events[index2][1].type !== "lineEnding") {
+ enter = index2;
+ }
+ } else if (index2 === tailExitIndex || events[index2][1].type === "lineEnding") {
+ events[enter][1].type = "codeTextData";
+ if (index2 !== enter + 2) {
+ events[enter][1].end = events[index2 - 1][1].end;
+ events.splice(enter + 2, index2 - enter - 2);
+ tailExitIndex -= index2 - enter - 2;
+ index2 = enter + 2;
+ }
+ enter = void 0;
+ }
+ }
+ return events;
+}
+function previous(code2) {
+ return code2 !== 96 || this.events[this.events.length - 1][1].type === "characterEscape";
+}
+function tokenizeCodeText(effects, ok2, nok) {
+ let sizeOpen = 0;
+ let size;
+ let token;
+ return start;
+ function start(code2) {
+ effects.enter("codeText");
+ effects.enter("codeTextSequence");
+ return openingSequence(code2);
+ }
+ function openingSequence(code2) {
+ if (code2 === 96) {
+ effects.consume(code2);
+ sizeOpen++;
+ return openingSequence;
+ }
+ effects.exit("codeTextSequence");
+ return gap(code2);
+ }
+ function gap(code2) {
+ if (code2 === null) {
+ return nok(code2);
+ }
+ if (code2 === 96) {
+ token = effects.enter("codeTextSequence");
+ size = 0;
+ return closingSequence(code2);
+ }
+ if (code2 === 32) {
+ effects.enter("space");
+ effects.consume(code2);
+ effects.exit("space");
+ return gap;
+ }
+ if (markdownLineEnding(code2)) {
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return gap;
+ }
+ effects.enter("codeTextData");
+ return data(code2);
+ }
+ function data(code2) {
+ if (code2 === null || code2 === 32 || code2 === 96 || markdownLineEnding(code2)) {
+ effects.exit("codeTextData");
+ return gap(code2);
+ }
+ effects.consume(code2);
+ return data;
+ }
+ function closingSequence(code2) {
+ if (code2 === 96) {
+ effects.consume(code2);
+ size++;
+ return closingSequence;
+ }
+ if (size === sizeOpen) {
+ effects.exit("codeTextSequence");
+ effects.exit("codeText");
+ return ok2(code2);
+ }
+ token.type = "codeTextData";
+ return data(code2);
+ }
+}
+function subtokenize(events) {
+ const jumps = {};
+ let index2 = -1;
+ let event;
+ let lineIndex;
+ let otherIndex;
+ let otherEvent;
+ let parameters;
+ let subevents;
+ let more;
+ while (++index2 < events.length) {
+ while (index2 in jumps) {
+ index2 = jumps[index2];
+ }
+ event = events[index2];
+ if (index2 && event[1].type === "chunkFlow" && events[index2 - 1][1].type === "listItemPrefix") {
+ subevents = event[1]._tokenizer.events;
+ otherIndex = 0;
+ if (otherIndex < subevents.length && subevents[otherIndex][1].type === "lineEndingBlank") {
+ otherIndex += 2;
+ }
+ if (otherIndex < subevents.length && subevents[otherIndex][1].type === "content") {
+ while (++otherIndex < subevents.length) {
+ if (subevents[otherIndex][1].type === "content") {
+ break;
+ }
+ if (subevents[otherIndex][1].type === "chunkText") {
+ subevents[otherIndex][1]._isInFirstContentOfListItem = true;
+ otherIndex++;
+ }
+ }
+ }
+ }
+ if (event[0] === "enter") {
+ if (event[1].contentType) {
+ Object.assign(jumps, subcontent(events, index2));
+ index2 = jumps[index2];
+ more = true;
+ }
+ } else if (event[1]._container) {
+ otherIndex = index2;
+ lineIndex = void 0;
+ while (otherIndex--) {
+ otherEvent = events[otherIndex];
+ if (otherEvent[1].type === "lineEnding" || otherEvent[1].type === "lineEndingBlank") {
+ if (otherEvent[0] === "enter") {
+ if (lineIndex) {
+ events[lineIndex][1].type = "lineEndingBlank";
+ }
+ otherEvent[1].type = "lineEnding";
+ lineIndex = otherIndex;
+ }
+ } else {
+ break;
+ }
+ }
+ if (lineIndex) {
+ event[1].end = Object.assign({}, events[lineIndex][1].start);
+ parameters = events.slice(lineIndex, index2);
+ parameters.unshift(event);
+ splice(events, lineIndex, index2 - lineIndex + 1, parameters);
+ }
+ }
+ }
+ return !more;
+}
+function subcontent(events, eventIndex) {
+ const token = events[eventIndex][1];
+ const context = events[eventIndex][2];
+ let startPosition = eventIndex - 1;
+ const startPositions = [];
+ const tokenizer = token._tokenizer || context.parser[token.contentType](token.start);
+ const childEvents = tokenizer.events;
+ const jumps = [];
+ const gaps = {};
+ let stream;
+ let previous2;
+ let index2 = -1;
+ let current = token;
+ let adjust = 0;
+ let start = 0;
+ const breaks = [start];
+ while (current) {
+ while (events[++startPosition][1] !== current) {
+ }
+ startPositions.push(startPosition);
+ if (!current._tokenizer) {
+ stream = context.sliceStream(current);
+ if (!current.next) {
+ stream.push(null);
+ }
+ if (previous2) {
+ tokenizer.defineSkip(current.start);
+ }
+ if (current._isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = true;
+ }
+ tokenizer.write(stream);
+ if (current._isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = void 0;
+ }
+ }
+ previous2 = current;
+ current = current.next;
+ }
+ current = token;
+ while (++index2 < childEvents.length) {
+ if (childEvents[index2][0] === "exit" && childEvents[index2 - 1][0] === "enter" && childEvents[index2][1].type === childEvents[index2 - 1][1].type && childEvents[index2][1].start.line !== childEvents[index2][1].end.line) {
+ start = index2 + 1;
+ breaks.push(start);
+ current._tokenizer = void 0;
+ current.previous = void 0;
+ current = current.next;
+ }
+ }
+ tokenizer.events = [];
+ if (current) {
+ current._tokenizer = void 0;
+ current.previous = void 0;
+ } else {
+ breaks.pop();
+ }
+ index2 = breaks.length;
+ while (index2--) {
+ const slice = childEvents.slice(breaks[index2], breaks[index2 + 1]);
+ const start2 = startPositions.pop();
+ jumps.unshift([start2, start2 + slice.length - 1]);
+ splice(events, start2, 2, slice);
+ }
+ index2 = -1;
+ while (++index2 < jumps.length) {
+ gaps[adjust + jumps[index2][0]] = adjust + jumps[index2][1];
+ adjust += jumps[index2][1] - jumps[index2][0] - 1;
+ }
+ return gaps;
+}
+const content = {
+ tokenize: tokenizeContent,
+ resolve: resolveContent
+};
+const continuationConstruct = {
+ tokenize: tokenizeContinuation,
+ partial: true
+};
+function resolveContent(events) {
+ subtokenize(events);
+ return events;
+}
+function tokenizeContent(effects, ok2) {
+ let previous2;
+ return start;
+ function start(code2) {
+ effects.enter("content");
+ previous2 = effects.enter("chunkContent", {
+ contentType: "content"
+ });
+ return data(code2);
+ }
+ function data(code2) {
+ if (code2 === null) {
+ return contentEnd(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ return effects.check(
+ continuationConstruct,
+ contentContinue,
+ contentEnd
+ )(code2);
+ }
+ effects.consume(code2);
+ return data;
+ }
+ function contentEnd(code2) {
+ effects.exit("chunkContent");
+ effects.exit("content");
+ return ok2(code2);
+ }
+ function contentContinue(code2) {
+ effects.consume(code2);
+ effects.exit("chunkContent");
+ previous2.next = effects.enter("chunkContent", {
+ contentType: "content",
+ previous: previous2
+ });
+ previous2 = previous2.next;
+ return data;
+ }
+}
+function tokenizeContinuation(effects, ok2, nok) {
+ const self = this;
+ return startLookahead;
+ function startLookahead(code2) {
+ effects.exit("chunkContent");
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return factorySpace(effects, prefixed, "linePrefix");
+ }
+ function prefixed(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ return nok(code2);
+ }
+ const tail = self.events[self.events.length - 1];
+ if (!self.parser.constructs.disable.null.includes("codeIndented") && tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4) {
+ return ok2(code2);
+ }
+ return effects.interrupt(self.parser.constructs.flow, nok, ok2)(code2);
+ }
+}
+function factoryDestination(effects, ok2, nok, type, literalType, literalMarkerType, rawType, stringType, max) {
+ const limit = max || Number.POSITIVE_INFINITY;
+ let balance = 0;
+ return start;
+ function start(code2) {
+ if (code2 === 60) {
+ effects.enter(type);
+ effects.enter(literalType);
+ effects.enter(literalMarkerType);
+ effects.consume(code2);
+ effects.exit(literalMarkerType);
+ return destinationEnclosedBefore;
+ }
+ if (code2 === null || code2 === 41 || asciiControl(code2)) {
+ return nok(code2);
+ }
+ effects.enter(type);
+ effects.enter(rawType);
+ effects.enter(stringType);
+ effects.enter("chunkString", {
+ contentType: "string"
+ });
+ return destinationRaw(code2);
+ }
+ function destinationEnclosedBefore(code2) {
+ if (code2 === 62) {
+ effects.enter(literalMarkerType);
+ effects.consume(code2);
+ effects.exit(literalMarkerType);
+ effects.exit(literalType);
+ effects.exit(type);
+ return ok2;
+ }
+ effects.enter(stringType);
+ effects.enter("chunkString", {
+ contentType: "string"
+ });
+ return destinationEnclosed(code2);
+ }
+ function destinationEnclosed(code2) {
+ if (code2 === 62) {
+ effects.exit("chunkString");
+ effects.exit(stringType);
+ return destinationEnclosedBefore(code2);
+ }
+ if (code2 === null || code2 === 60 || markdownLineEnding(code2)) {
+ return nok(code2);
+ }
+ effects.consume(code2);
+ return code2 === 92 ? destinationEnclosedEscape : destinationEnclosed;
+ }
+ function destinationEnclosedEscape(code2) {
+ if (code2 === 60 || code2 === 62 || code2 === 92) {
+ effects.consume(code2);
+ return destinationEnclosed;
+ }
+ return destinationEnclosed(code2);
+ }
+ function destinationRaw(code2) {
+ if (code2 === 40) {
+ if (++balance > limit)
+ return nok(code2);
+ effects.consume(code2);
+ return destinationRaw;
+ }
+ if (code2 === 41) {
+ if (!balance--) {
+ effects.exit("chunkString");
+ effects.exit(stringType);
+ effects.exit(rawType);
+ effects.exit(type);
+ return ok2(code2);
+ }
+ effects.consume(code2);
+ return destinationRaw;
+ }
+ if (code2 === null || markdownLineEndingOrSpace(code2)) {
+ if (balance)
+ return nok(code2);
+ effects.exit("chunkString");
+ effects.exit(stringType);
+ effects.exit(rawType);
+ effects.exit(type);
+ return ok2(code2);
+ }
+ if (asciiControl(code2))
+ return nok(code2);
+ effects.consume(code2);
+ return code2 === 92 ? destinationRawEscape : destinationRaw;
+ }
+ function destinationRawEscape(code2) {
+ if (code2 === 40 || code2 === 41 || code2 === 92) {
+ effects.consume(code2);
+ return destinationRaw;
+ }
+ return destinationRaw(code2);
+ }
+}
+function factoryLabel(effects, ok2, nok, type, markerType, stringType) {
+ const self = this;
+ let size = 0;
+ let data;
+ return start;
+ function start(code2) {
+ effects.enter(type);
+ effects.enter(markerType);
+ effects.consume(code2);
+ effects.exit(markerType);
+ effects.enter(stringType);
+ return atBreak;
+ }
+ function atBreak(code2) {
+ if (code2 === null || code2 === 91 || code2 === 93 && !data || code2 === 94 && !size && "_hiddenFootnoteSupport" in self.parser.constructs || size > 999) {
+ return nok(code2);
+ }
+ if (code2 === 93) {
+ effects.exit(stringType);
+ effects.enter(markerType);
+ effects.consume(code2);
+ effects.exit(markerType);
+ effects.exit(type);
+ return ok2;
+ }
+ if (markdownLineEnding(code2)) {
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return atBreak;
+ }
+ effects.enter("chunkString", {
+ contentType: "string"
+ });
+ return label(code2);
+ }
+ function label(code2) {
+ if (code2 === null || code2 === 91 || code2 === 93 || markdownLineEnding(code2) || size++ > 999) {
+ effects.exit("chunkString");
+ return atBreak(code2);
+ }
+ effects.consume(code2);
+ data = data || !markdownSpace(code2);
+ return code2 === 92 ? labelEscape : label;
+ }
+ function labelEscape(code2) {
+ if (code2 === 91 || code2 === 92 || code2 === 93) {
+ effects.consume(code2);
+ size++;
+ return label;
+ }
+ return label(code2);
+ }
+}
+function factoryTitle(effects, ok2, nok, type, markerType, stringType) {
+ let marker;
+ return start;
+ function start(code2) {
+ effects.enter(type);
+ effects.enter(markerType);
+ effects.consume(code2);
+ effects.exit(markerType);
+ marker = code2 === 40 ? 41 : code2;
+ return atFirstTitleBreak;
+ }
+ function atFirstTitleBreak(code2) {
+ if (code2 === marker) {
+ effects.enter(markerType);
+ effects.consume(code2);
+ effects.exit(markerType);
+ effects.exit(type);
+ return ok2;
+ }
+ effects.enter(stringType);
+ return atTitleBreak(code2);
+ }
+ function atTitleBreak(code2) {
+ if (code2 === marker) {
+ effects.exit(stringType);
+ return atFirstTitleBreak(marker);
+ }
+ if (code2 === null) {
+ return nok(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return factorySpace(effects, atTitleBreak, "linePrefix");
+ }
+ effects.enter("chunkString", {
+ contentType: "string"
+ });
+ return title(code2);
+ }
+ function title(code2) {
+ if (code2 === marker || code2 === null || markdownLineEnding(code2)) {
+ effects.exit("chunkString");
+ return atTitleBreak(code2);
+ }
+ effects.consume(code2);
+ return code2 === 92 ? titleEscape : title;
+ }
+ function titleEscape(code2) {
+ if (code2 === marker || code2 === 92) {
+ effects.consume(code2);
+ return title;
+ }
+ return title(code2);
+ }
+}
+function factoryWhitespace(effects, ok2) {
+ let seen;
+ return start;
+ function start(code2) {
+ if (markdownLineEnding(code2)) {
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ seen = true;
+ return start;
+ }
+ if (markdownSpace(code2)) {
+ return factorySpace(
+ effects,
+ start,
+ seen ? "linePrefix" : "lineSuffix"
+ )(code2);
+ }
+ return ok2(code2);
+ }
+}
+function normalizeIdentifier(value) {
+ return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase();
+}
+const definition = {
+ name: "definition",
+ tokenize: tokenizeDefinition
+};
+const titleConstruct = {
+ tokenize: tokenizeTitle,
+ partial: true
+};
+function tokenizeDefinition(effects, ok2, nok) {
+ const self = this;
+ let identifier;
+ return start;
+ function start(code2) {
+ effects.enter("definition");
+ return factoryLabel.call(
+ self,
+ effects,
+ labelAfter,
+ nok,
+ "definitionLabel",
+ "definitionLabelMarker",
+ "definitionLabelString"
+ )(code2);
+ }
+ function labelAfter(code2) {
+ identifier = normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ );
+ if (code2 === 58) {
+ effects.enter("definitionMarker");
+ effects.consume(code2);
+ effects.exit("definitionMarker");
+ return factoryWhitespace(
+ effects,
+ factoryDestination(
+ effects,
+ effects.attempt(
+ titleConstruct,
+ factorySpace(effects, after, "whitespace"),
+ factorySpace(effects, after, "whitespace")
+ ),
+ nok,
+ "definitionDestination",
+ "definitionDestinationLiteral",
+ "definitionDestinationLiteralMarker",
+ "definitionDestinationRaw",
+ "definitionDestinationString"
+ )
+ );
+ }
+ return nok(code2);
+ }
+ function after(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("definition");
+ if (!self.parser.defined.includes(identifier)) {
+ self.parser.defined.push(identifier);
+ }
+ return ok2(code2);
+ }
+ return nok(code2);
+ }
+}
+function tokenizeTitle(effects, ok2, nok) {
+ return start;
+ function start(code2) {
+ return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, before)(code2) : nok(code2);
+ }
+ function before(code2) {
+ if (code2 === 34 || code2 === 39 || code2 === 40) {
+ return factoryTitle(
+ effects,
+ factorySpace(effects, after, "whitespace"),
+ nok,
+ "definitionTitle",
+ "definitionTitleMarker",
+ "definitionTitleString"
+ )(code2);
+ }
+ return nok(code2);
+ }
+ function after(code2) {
+ return code2 === null || markdownLineEnding(code2) ? ok2(code2) : nok(code2);
+ }
+}
+const hardBreakEscape = {
+ name: "hardBreakEscape",
+ tokenize: tokenizeHardBreakEscape
+};
+function tokenizeHardBreakEscape(effects, ok2, nok) {
+ return start;
+ function start(code2) {
+ effects.enter("hardBreakEscape");
+ effects.enter("escapeMarker");
+ effects.consume(code2);
+ return open;
+ }
+ function open(code2) {
+ if (markdownLineEnding(code2)) {
+ effects.exit("escapeMarker");
+ effects.exit("hardBreakEscape");
+ return ok2(code2);
+ }
+ return nok(code2);
+ }
+}
+const headingAtx = {
+ name: "headingAtx",
+ tokenize: tokenizeHeadingAtx,
+ resolve: resolveHeadingAtx
+};
+function resolveHeadingAtx(events, context) {
+ let contentEnd = events.length - 2;
+ let contentStart = 3;
+ let content2;
+ let text2;
+ if (events[contentStart][1].type === "whitespace") {
+ contentStart += 2;
+ }
+ if (contentEnd - 2 > contentStart && events[contentEnd][1].type === "whitespace") {
+ contentEnd -= 2;
+ }
+ if (events[contentEnd][1].type === "atxHeadingSequence" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === "whitespace")) {
+ contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;
+ }
+ if (contentEnd > contentStart) {
+ content2 = {
+ type: "atxHeadingText",
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end
+ };
+ text2 = {
+ type: "chunkText",
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end,
+ contentType: "text"
+ };
+ splice(events, contentStart, contentEnd - contentStart + 1, [
+ ["enter", content2, context],
+ ["enter", text2, context],
+ ["exit", text2, context],
+ ["exit", content2, context]
+ ]);
+ }
+ return events;
+}
+function tokenizeHeadingAtx(effects, ok2, nok) {
+ const self = this;
+ let size = 0;
+ return start;
+ function start(code2) {
+ effects.enter("atxHeading");
+ effects.enter("atxHeadingSequence");
+ return fenceOpenInside(code2);
+ }
+ function fenceOpenInside(code2) {
+ if (code2 === 35 && size++ < 6) {
+ effects.consume(code2);
+ return fenceOpenInside;
+ }
+ if (code2 === null || markdownLineEndingOrSpace(code2)) {
+ effects.exit("atxHeadingSequence");
+ return self.interrupt ? ok2(code2) : headingBreak(code2);
+ }
+ return nok(code2);
+ }
+ function headingBreak(code2) {
+ if (code2 === 35) {
+ effects.enter("atxHeadingSequence");
+ return sequence(code2);
+ }
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("atxHeading");
+ return ok2(code2);
+ }
+ if (markdownSpace(code2)) {
+ return factorySpace(effects, headingBreak, "whitespace")(code2);
+ }
+ effects.enter("atxHeadingText");
+ return data(code2);
+ }
+ function sequence(code2) {
+ if (code2 === 35) {
+ effects.consume(code2);
+ return sequence;
+ }
+ effects.exit("atxHeadingSequence");
+ return headingBreak(code2);
+ }
+ function data(code2) {
+ if (code2 === null || code2 === 35 || markdownLineEndingOrSpace(code2)) {
+ effects.exit("atxHeadingText");
+ return headingBreak(code2);
+ }
+ effects.consume(code2);
+ return data;
+ }
+}
+const htmlBlockNames = [
+ "address",
+ "article",
+ "aside",
+ "base",
+ "basefont",
+ "blockquote",
+ "body",
+ "caption",
+ "center",
+ "col",
+ "colgroup",
+ "dd",
+ "details",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hr",
+ "html",
+ "iframe",
+ "legend",
+ "li",
+ "link",
+ "main",
+ "menu",
+ "menuitem",
+ "nav",
+ "noframes",
+ "ol",
+ "optgroup",
+ "option",
+ "p",
+ "param",
+ "section",
+ "summary",
+ "table",
+ "tbody",
+ "td",
+ "tfoot",
+ "th",
+ "thead",
+ "title",
+ "tr",
+ "track",
+ "ul"
+];
+const htmlRawNames = ["pre", "script", "style", "textarea"];
+const htmlFlow = {
+ name: "htmlFlow",
+ tokenize: tokenizeHtmlFlow,
+ resolveTo: resolveToHtmlFlow,
+ concrete: true
+};
+const nextBlankConstruct = {
+ tokenize: tokenizeNextBlank,
+ partial: true
+};
+function resolveToHtmlFlow(events) {
+ let index2 = events.length;
+ while (index2--) {
+ if (events[index2][0] === "enter" && events[index2][1].type === "htmlFlow") {
+ break;
+ }
+ }
+ if (index2 > 1 && events[index2 - 2][1].type === "linePrefix") {
+ events[index2][1].start = events[index2 - 2][1].start;
+ events[index2 + 1][1].start = events[index2 - 2][1].start;
+ events.splice(index2 - 2, 2);
+ }
+ return events;
+}
+function tokenizeHtmlFlow(effects, ok2, nok) {
+ const self = this;
+ let kind;
+ let startTag;
+ let buffer;
+ let index2;
+ let marker;
+ return start;
+ function start(code2) {
+ effects.enter("htmlFlow");
+ effects.enter("htmlFlowData");
+ effects.consume(code2);
+ return open;
+ }
+ function open(code2) {
+ if (code2 === 33) {
+ effects.consume(code2);
+ return declarationStart;
+ }
+ if (code2 === 47) {
+ effects.consume(code2);
+ return tagCloseStart;
+ }
+ if (code2 === 63) {
+ effects.consume(code2);
+ kind = 3;
+ return self.interrupt ? ok2 : continuationDeclarationInside;
+ }
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ buffer = String.fromCharCode(code2);
+ startTag = true;
+ return tagName;
+ }
+ return nok(code2);
+ }
+ function declarationStart(code2) {
+ if (code2 === 45) {
+ effects.consume(code2);
+ kind = 2;
+ return commentOpenInside;
+ }
+ if (code2 === 91) {
+ effects.consume(code2);
+ kind = 5;
+ buffer = "CDATA[";
+ index2 = 0;
+ return cdataOpenInside;
+ }
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ kind = 4;
+ return self.interrupt ? ok2 : continuationDeclarationInside;
+ }
+ return nok(code2);
+ }
+ function commentOpenInside(code2) {
+ if (code2 === 45) {
+ effects.consume(code2);
+ return self.interrupt ? ok2 : continuationDeclarationInside;
+ }
+ return nok(code2);
+ }
+ function cdataOpenInside(code2) {
+ if (code2 === buffer.charCodeAt(index2++)) {
+ effects.consume(code2);
+ return index2 === buffer.length ? self.interrupt ? ok2 : continuation : cdataOpenInside;
+ }
+ return nok(code2);
+ }
+ function tagCloseStart(code2) {
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ buffer = String.fromCharCode(code2);
+ return tagName;
+ }
+ return nok(code2);
+ }
+ function tagName(code2) {
+ if (code2 === null || code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {
+ if (code2 !== 47 && startTag && htmlRawNames.includes(buffer.toLowerCase())) {
+ kind = 1;
+ return self.interrupt ? ok2(code2) : continuation(code2);
+ }
+ if (htmlBlockNames.includes(buffer.toLowerCase())) {
+ kind = 6;
+ if (code2 === 47) {
+ effects.consume(code2);
+ return basicSelfClosing;
+ }
+ return self.interrupt ? ok2(code2) : continuation(code2);
+ }
+ kind = 7;
+ return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code2) : startTag ? completeAttributeNameBefore(code2) : completeClosingTagAfter(code2);
+ }
+ if (code2 === 45 || asciiAlphanumeric(code2)) {
+ effects.consume(code2);
+ buffer += String.fromCharCode(code2);
+ return tagName;
+ }
+ return nok(code2);
+ }
+ function basicSelfClosing(code2) {
+ if (code2 === 62) {
+ effects.consume(code2);
+ return self.interrupt ? ok2 : continuation;
+ }
+ return nok(code2);
+ }
+ function completeClosingTagAfter(code2) {
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return completeClosingTagAfter;
+ }
+ return completeEnd(code2);
+ }
+ function completeAttributeNameBefore(code2) {
+ if (code2 === 47) {
+ effects.consume(code2);
+ return completeEnd;
+ }
+ if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) {
+ effects.consume(code2);
+ return completeAttributeName;
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return completeAttributeNameBefore;
+ }
+ return completeEnd(code2);
+ }
+ function completeAttributeName(code2) {
+ if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) {
+ effects.consume(code2);
+ return completeAttributeName;
+ }
+ return completeAttributeNameAfter(code2);
+ }
+ function completeAttributeNameAfter(code2) {
+ if (code2 === 61) {
+ effects.consume(code2);
+ return completeAttributeValueBefore;
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return completeAttributeNameAfter;
+ }
+ return completeAttributeNameBefore(code2);
+ }
+ function completeAttributeValueBefore(code2) {
+ if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) {
+ return nok(code2);
+ }
+ if (code2 === 34 || code2 === 39) {
+ effects.consume(code2);
+ marker = code2;
+ return completeAttributeValueQuoted;
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return completeAttributeValueBefore;
+ }
+ marker = null;
+ return completeAttributeValueUnquoted(code2);
+ }
+ function completeAttributeValueQuoted(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ return nok(code2);
+ }
+ if (code2 === marker) {
+ effects.consume(code2);
+ return completeAttributeValueQuotedAfter;
+ }
+ effects.consume(code2);
+ return completeAttributeValueQuoted;
+ }
+ function completeAttributeValueUnquoted(code2) {
+ if (code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96 || markdownLineEndingOrSpace(code2)) {
+ return completeAttributeNameAfter(code2);
+ }
+ effects.consume(code2);
+ return completeAttributeValueUnquoted;
+ }
+ function completeAttributeValueQuotedAfter(code2) {
+ if (code2 === 47 || code2 === 62 || markdownSpace(code2)) {
+ return completeAttributeNameBefore(code2);
+ }
+ return nok(code2);
+ }
+ function completeEnd(code2) {
+ if (code2 === 62) {
+ effects.consume(code2);
+ return completeAfter;
+ }
+ return nok(code2);
+ }
+ function completeAfter(code2) {
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return completeAfter;
+ }
+ return code2 === null || markdownLineEnding(code2) ? continuation(code2) : nok(code2);
+ }
+ function continuation(code2) {
+ if (code2 === 45 && kind === 2) {
+ effects.consume(code2);
+ return continuationCommentInside;
+ }
+ if (code2 === 60 && kind === 1) {
+ effects.consume(code2);
+ return continuationRawTagOpen;
+ }
+ if (code2 === 62 && kind === 4) {
+ effects.consume(code2);
+ return continuationClose;
+ }
+ if (code2 === 63 && kind === 3) {
+ effects.consume(code2);
+ return continuationDeclarationInside;
+ }
+ if (code2 === 93 && kind === 5) {
+ effects.consume(code2);
+ return continuationCharacterDataInside;
+ }
+ if (markdownLineEnding(code2) && (kind === 6 || kind === 7)) {
+ return effects.check(
+ nextBlankConstruct,
+ continuationClose,
+ continuationAtLineEnding
+ )(code2);
+ }
+ if (code2 === null || markdownLineEnding(code2)) {
+ return continuationAtLineEnding(code2);
+ }
+ effects.consume(code2);
+ return continuation;
+ }
+ function continuationAtLineEnding(code2) {
+ effects.exit("htmlFlowData");
+ return htmlContinueStart(code2);
+ }
+ function htmlContinueStart(code2) {
+ if (code2 === null) {
+ return done(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ return effects.attempt(
+ {
+ tokenize: htmlLineEnd,
+ partial: true
+ },
+ htmlContinueStart,
+ done
+ )(code2);
+ }
+ effects.enter("htmlFlowData");
+ return continuation(code2);
+ }
+ function htmlLineEnd(effects2, ok3, nok2) {
+ return start2;
+ function start2(code2) {
+ effects2.enter("lineEnding");
+ effects2.consume(code2);
+ effects2.exit("lineEnding");
+ return lineStart;
+ }
+ function lineStart(code2) {
+ return self.parser.lazy[self.now().line] ? nok2(code2) : ok3(code2);
+ }
+ }
+ function continuationCommentInside(code2) {
+ if (code2 === 45) {
+ effects.consume(code2);
+ return continuationDeclarationInside;
+ }
+ return continuation(code2);
+ }
+ function continuationRawTagOpen(code2) {
+ if (code2 === 47) {
+ effects.consume(code2);
+ buffer = "";
+ return continuationRawEndTag;
+ }
+ return continuation(code2);
+ }
+ function continuationRawEndTag(code2) {
+ if (code2 === 62 && htmlRawNames.includes(buffer.toLowerCase())) {
+ effects.consume(code2);
+ return continuationClose;
+ }
+ if (asciiAlpha(code2) && buffer.length < 8) {
+ effects.consume(code2);
+ buffer += String.fromCharCode(code2);
+ return continuationRawEndTag;
+ }
+ return continuation(code2);
+ }
+ function continuationCharacterDataInside(code2) {
+ if (code2 === 93) {
+ effects.consume(code2);
+ return continuationDeclarationInside;
+ }
+ return continuation(code2);
+ }
+ function continuationDeclarationInside(code2) {
+ if (code2 === 62) {
+ effects.consume(code2);
+ return continuationClose;
+ }
+ if (code2 === 45 && kind === 2) {
+ effects.consume(code2);
+ return continuationDeclarationInside;
+ }
+ return continuation(code2);
+ }
+ function continuationClose(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("htmlFlowData");
+ return done(code2);
+ }
+ effects.consume(code2);
+ return continuationClose;
+ }
+ function done(code2) {
+ effects.exit("htmlFlow");
+ return ok2(code2);
+ }
+}
+function tokenizeNextBlank(effects, ok2, nok) {
+ return start;
+ function start(code2) {
+ effects.exit("htmlFlowData");
+ effects.enter("lineEndingBlank");
+ effects.consume(code2);
+ effects.exit("lineEndingBlank");
+ return effects.attempt(blankLine, ok2, nok);
+ }
+}
+const htmlText = {
+ name: "htmlText",
+ tokenize: tokenizeHtmlText
+};
+function tokenizeHtmlText(effects, ok2, nok) {
+ const self = this;
+ let marker;
+ let buffer;
+ let index2;
+ let returnState;
+ return start;
+ function start(code2) {
+ effects.enter("htmlText");
+ effects.enter("htmlTextData");
+ effects.consume(code2);
+ return open;
+ }
+ function open(code2) {
+ if (code2 === 33) {
+ effects.consume(code2);
+ return declarationOpen;
+ }
+ if (code2 === 47) {
+ effects.consume(code2);
+ return tagCloseStart;
+ }
+ if (code2 === 63) {
+ effects.consume(code2);
+ return instruction;
+ }
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ return tagOpen;
+ }
+ return nok(code2);
+ }
+ function declarationOpen(code2) {
+ if (code2 === 45) {
+ effects.consume(code2);
+ return commentOpen;
+ }
+ if (code2 === 91) {
+ effects.consume(code2);
+ buffer = "CDATA[";
+ index2 = 0;
+ return cdataOpen;
+ }
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ return declaration;
+ }
+ return nok(code2);
+ }
+ function commentOpen(code2) {
+ if (code2 === 45) {
+ effects.consume(code2);
+ return commentStart;
+ }
+ return nok(code2);
+ }
+ function commentStart(code2) {
+ if (code2 === null || code2 === 62) {
+ return nok(code2);
+ }
+ if (code2 === 45) {
+ effects.consume(code2);
+ return commentStartDash;
+ }
+ return comment(code2);
+ }
+ function commentStartDash(code2) {
+ if (code2 === null || code2 === 62) {
+ return nok(code2);
+ }
+ return comment(code2);
+ }
+ function comment(code2) {
+ if (code2 === null) {
+ return nok(code2);
+ }
+ if (code2 === 45) {
+ effects.consume(code2);
+ return commentClose;
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = comment;
+ return atLineEnding(code2);
+ }
+ effects.consume(code2);
+ return comment;
+ }
+ function commentClose(code2) {
+ if (code2 === 45) {
+ effects.consume(code2);
+ return end;
+ }
+ return comment(code2);
+ }
+ function cdataOpen(code2) {
+ if (code2 === buffer.charCodeAt(index2++)) {
+ effects.consume(code2);
+ return index2 === buffer.length ? cdata : cdataOpen;
+ }
+ return nok(code2);
+ }
+ function cdata(code2) {
+ if (code2 === null) {
+ return nok(code2);
+ }
+ if (code2 === 93) {
+ effects.consume(code2);
+ return cdataClose;
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = cdata;
+ return atLineEnding(code2);
+ }
+ effects.consume(code2);
+ return cdata;
+ }
+ function cdataClose(code2) {
+ if (code2 === 93) {
+ effects.consume(code2);
+ return cdataEnd;
+ }
+ return cdata(code2);
+ }
+ function cdataEnd(code2) {
+ if (code2 === 62) {
+ return end(code2);
+ }
+ if (code2 === 93) {
+ effects.consume(code2);
+ return cdataEnd;
+ }
+ return cdata(code2);
+ }
+ function declaration(code2) {
+ if (code2 === null || code2 === 62) {
+ return end(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = declaration;
+ return atLineEnding(code2);
+ }
+ effects.consume(code2);
+ return declaration;
+ }
+ function instruction(code2) {
+ if (code2 === null) {
+ return nok(code2);
+ }
+ if (code2 === 63) {
+ effects.consume(code2);
+ return instructionClose;
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = instruction;
+ return atLineEnding(code2);
+ }
+ effects.consume(code2);
+ return instruction;
+ }
+ function instructionClose(code2) {
+ return code2 === 62 ? end(code2) : instruction(code2);
+ }
+ function tagCloseStart(code2) {
+ if (asciiAlpha(code2)) {
+ effects.consume(code2);
+ return tagClose;
+ }
+ return nok(code2);
+ }
+ function tagClose(code2) {
+ if (code2 === 45 || asciiAlphanumeric(code2)) {
+ effects.consume(code2);
+ return tagClose;
+ }
+ return tagCloseBetween(code2);
+ }
+ function tagCloseBetween(code2) {
+ if (markdownLineEnding(code2)) {
+ returnState = tagCloseBetween;
+ return atLineEnding(code2);
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return tagCloseBetween;
+ }
+ return end(code2);
+ }
+ function tagOpen(code2) {
+ if (code2 === 45 || asciiAlphanumeric(code2)) {
+ effects.consume(code2);
+ return tagOpen;
+ }
+ if (code2 === 47 || code2 === 62 || markdownLineEndingOrSpace(code2)) {
+ return tagOpenBetween(code2);
+ }
+ return nok(code2);
+ }
+ function tagOpenBetween(code2) {
+ if (code2 === 47) {
+ effects.consume(code2);
+ return end;
+ }
+ if (code2 === 58 || code2 === 95 || asciiAlpha(code2)) {
+ effects.consume(code2);
+ return tagOpenAttributeName;
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = tagOpenBetween;
+ return atLineEnding(code2);
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return tagOpenBetween;
+ }
+ return end(code2);
+ }
+ function tagOpenAttributeName(code2) {
+ if (code2 === 45 || code2 === 46 || code2 === 58 || code2 === 95 || asciiAlphanumeric(code2)) {
+ effects.consume(code2);
+ return tagOpenAttributeName;
+ }
+ return tagOpenAttributeNameAfter(code2);
+ }
+ function tagOpenAttributeNameAfter(code2) {
+ if (code2 === 61) {
+ effects.consume(code2);
+ return tagOpenAttributeValueBefore;
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = tagOpenAttributeNameAfter;
+ return atLineEnding(code2);
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return tagOpenAttributeNameAfter;
+ }
+ return tagOpenBetween(code2);
+ }
+ function tagOpenAttributeValueBefore(code2) {
+ if (code2 === null || code2 === 60 || code2 === 61 || code2 === 62 || code2 === 96) {
+ return nok(code2);
+ }
+ if (code2 === 34 || code2 === 39) {
+ effects.consume(code2);
+ marker = code2;
+ return tagOpenAttributeValueQuoted;
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = tagOpenAttributeValueBefore;
+ return atLineEnding(code2);
+ }
+ if (markdownSpace(code2)) {
+ effects.consume(code2);
+ return tagOpenAttributeValueBefore;
+ }
+ effects.consume(code2);
+ marker = void 0;
+ return tagOpenAttributeValueUnquoted;
+ }
+ function tagOpenAttributeValueQuoted(code2) {
+ if (code2 === marker) {
+ effects.consume(code2);
+ return tagOpenAttributeValueQuotedAfter;
+ }
+ if (code2 === null) {
+ return nok(code2);
+ }
+ if (markdownLineEnding(code2)) {
+ returnState = tagOpenAttributeValueQuoted;
+ return atLineEnding(code2);
+ }
+ effects.consume(code2);
+ return tagOpenAttributeValueQuoted;
+ }
+ function tagOpenAttributeValueQuotedAfter(code2) {
+ if (code2 === 62 || code2 === 47 || markdownLineEndingOrSpace(code2)) {
+ return tagOpenBetween(code2);
+ }
+ return nok(code2);
+ }
+ function tagOpenAttributeValueUnquoted(code2) {
+ if (code2 === null || code2 === 34 || code2 === 39 || code2 === 60 || code2 === 61 || code2 === 96) {
+ return nok(code2);
+ }
+ if (code2 === 62 || markdownLineEndingOrSpace(code2)) {
+ return tagOpenBetween(code2);
+ }
+ effects.consume(code2);
+ return tagOpenAttributeValueUnquoted;
+ }
+ function atLineEnding(code2) {
+ effects.exit("htmlTextData");
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return factorySpace(
+ effects,
+ afterPrefix,
+ "linePrefix",
+ self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
+ );
+ }
+ function afterPrefix(code2) {
+ effects.enter("htmlTextData");
+ return returnState(code2);
+ }
+ function end(code2) {
+ if (code2 === 62) {
+ effects.consume(code2);
+ effects.exit("htmlTextData");
+ effects.exit("htmlText");
+ return ok2;
+ }
+ return nok(code2);
+ }
+}
+const labelEnd = {
+ name: "labelEnd",
+ tokenize: tokenizeLabelEnd,
+ resolveTo: resolveToLabelEnd,
+ resolveAll: resolveAllLabelEnd
+};
+const resourceConstruct = {
+ tokenize: tokenizeResource
+};
+const fullReferenceConstruct = {
+ tokenize: tokenizeFullReference
+};
+const collapsedReferenceConstruct = {
+ tokenize: tokenizeCollapsedReference
+};
+function resolveAllLabelEnd(events) {
+ let index2 = -1;
+ let token;
+ while (++index2 < events.length) {
+ token = events[index2][1];
+ if (token.type === "labelImage" || token.type === "labelLink" || token.type === "labelEnd") {
+ events.splice(index2 + 1, token.type === "labelImage" ? 4 : 2);
+ token.type = "data";
+ index2++;
+ }
+ }
+ return events;
+}
+function resolveToLabelEnd(events, context) {
+ let index2 = events.length;
+ let offset = 0;
+ let token;
+ let open;
+ let close;
+ let media;
+ while (index2--) {
+ token = events[index2][1];
+ if (open) {
+ if (token.type === "link" || token.type === "labelLink" && token._inactive) {
+ break;
+ }
+ if (events[index2][0] === "enter" && token.type === "labelLink") {
+ token._inactive = true;
+ }
+ } else if (close) {
+ if (events[index2][0] === "enter" && (token.type === "labelImage" || token.type === "labelLink") && !token._balanced) {
+ open = index2;
+ if (token.type !== "labelLink") {
+ offset = 2;
+ break;
+ }
+ }
+ } else if (token.type === "labelEnd") {
+ close = index2;
+ }
+ }
+ const group = {
+ type: events[open][1].type === "labelLink" ? "link" : "image",
+ start: Object.assign({}, events[open][1].start),
+ end: Object.assign({}, events[events.length - 1][1].end)
+ };
+ const label = {
+ type: "label",
+ start: Object.assign({}, events[open][1].start),
+ end: Object.assign({}, events[close][1].end)
+ };
+ const text2 = {
+ type: "labelText",
+ start: Object.assign({}, events[open + offset + 2][1].end),
+ end: Object.assign({}, events[close - 2][1].start)
+ };
+ media = [
+ ["enter", group, context],
+ ["enter", label, context]
+ ];
+ media = push(media, events.slice(open + 1, open + offset + 3));
+ media = push(media, [["enter", text2, context]]);
+ media = push(
+ media,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + offset + 4, close - 3),
+ context
+ )
+ );
+ media = push(media, [
+ ["exit", text2, context],
+ events[close - 2],
+ events[close - 1],
+ ["exit", label, context]
+ ]);
+ media = push(media, events.slice(close + 1));
+ media = push(media, [["exit", group, context]]);
+ splice(events, open, events.length, media);
+ return events;
+}
+function tokenizeLabelEnd(effects, ok2, nok) {
+ const self = this;
+ let index2 = self.events.length;
+ let labelStart;
+ let defined;
+ while (index2--) {
+ if ((self.events[index2][1].type === "labelImage" || self.events[index2][1].type === "labelLink") && !self.events[index2][1]._balanced) {
+ labelStart = self.events[index2][1];
+ break;
+ }
+ }
+ return start;
+ function start(code2) {
+ if (!labelStart) {
+ return nok(code2);
+ }
+ if (labelStart._inactive)
+ return balanced(code2);
+ defined = self.parser.defined.includes(
+ normalizeIdentifier(
+ self.sliceSerialize({
+ start: labelStart.end,
+ end: self.now()
+ })
+ )
+ );
+ effects.enter("labelEnd");
+ effects.enter("labelMarker");
+ effects.consume(code2);
+ effects.exit("labelMarker");
+ effects.exit("labelEnd");
+ return afterLabelEnd;
+ }
+ function afterLabelEnd(code2) {
+ if (code2 === 40) {
+ return effects.attempt(
+ resourceConstruct,
+ ok2,
+ defined ? ok2 : balanced
+ )(code2);
+ }
+ if (code2 === 91) {
+ return effects.attempt(
+ fullReferenceConstruct,
+ ok2,
+ defined ? effects.attempt(collapsedReferenceConstruct, ok2, balanced) : balanced
+ )(code2);
+ }
+ return defined ? ok2(code2) : balanced(code2);
+ }
+ function balanced(code2) {
+ labelStart._balanced = true;
+ return nok(code2);
+ }
+}
+function tokenizeResource(effects, ok2, nok) {
+ return start;
+ function start(code2) {
+ effects.enter("resource");
+ effects.enter("resourceMarker");
+ effects.consume(code2);
+ effects.exit("resourceMarker");
+ return factoryWhitespace(effects, open);
+ }
+ function open(code2) {
+ if (code2 === 41) {
+ return end(code2);
+ }
+ return factoryDestination(
+ effects,
+ destinationAfter,
+ nok,
+ "resourceDestination",
+ "resourceDestinationLiteral",
+ "resourceDestinationLiteralMarker",
+ "resourceDestinationRaw",
+ "resourceDestinationString",
+ 32
+ )(code2);
+ }
+ function destinationAfter(code2) {
+ return markdownLineEndingOrSpace(code2) ? factoryWhitespace(effects, between)(code2) : end(code2);
+ }
+ function between(code2) {
+ if (code2 === 34 || code2 === 39 || code2 === 40) {
+ return factoryTitle(
+ effects,
+ factoryWhitespace(effects, end),
+ nok,
+ "resourceTitle",
+ "resourceTitleMarker",
+ "resourceTitleString"
+ )(code2);
+ }
+ return end(code2);
+ }
+ function end(code2) {
+ if (code2 === 41) {
+ effects.enter("resourceMarker");
+ effects.consume(code2);
+ effects.exit("resourceMarker");
+ effects.exit("resource");
+ return ok2;
+ }
+ return nok(code2);
+ }
+}
+function tokenizeFullReference(effects, ok2, nok) {
+ const self = this;
+ return start;
+ function start(code2) {
+ return factoryLabel.call(
+ self,
+ effects,
+ afterLabel,
+ nok,
+ "reference",
+ "referenceMarker",
+ "referenceString"
+ )(code2);
+ }
+ function afterLabel(code2) {
+ return self.parser.defined.includes(
+ normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+ ) ? ok2(code2) : nok(code2);
+ }
+}
+function tokenizeCollapsedReference(effects, ok2, nok) {
+ return start;
+ function start(code2) {
+ effects.enter("reference");
+ effects.enter("referenceMarker");
+ effects.consume(code2);
+ effects.exit("referenceMarker");
+ return open;
+ }
+ function open(code2) {
+ if (code2 === 93) {
+ effects.enter("referenceMarker");
+ effects.consume(code2);
+ effects.exit("referenceMarker");
+ effects.exit("reference");
+ return ok2;
+ }
+ return nok(code2);
+ }
+}
+const labelStartImage = {
+ name: "labelStartImage",
+ tokenize: tokenizeLabelStartImage,
+ resolveAll: labelEnd.resolveAll
+};
+function tokenizeLabelStartImage(effects, ok2, nok) {
+ const self = this;
+ return start;
+ function start(code2) {
+ effects.enter("labelImage");
+ effects.enter("labelImageMarker");
+ effects.consume(code2);
+ effects.exit("labelImageMarker");
+ return open;
+ }
+ function open(code2) {
+ if (code2 === 91) {
+ effects.enter("labelMarker");
+ effects.consume(code2);
+ effects.exit("labelMarker");
+ effects.exit("labelImage");
+ return after;
+ }
+ return nok(code2);
+ }
+ function after(code2) {
+ return code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code2) : ok2(code2);
+ }
+}
+const labelStartLink = {
+ name: "labelStartLink",
+ tokenize: tokenizeLabelStartLink,
+ resolveAll: labelEnd.resolveAll
+};
+function tokenizeLabelStartLink(effects, ok2, nok) {
+ const self = this;
+ return start;
+ function start(code2) {
+ effects.enter("labelLink");
+ effects.enter("labelMarker");
+ effects.consume(code2);
+ effects.exit("labelMarker");
+ effects.exit("labelLink");
+ return after;
+ }
+ function after(code2) {
+ return code2 === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code2) : ok2(code2);
+ }
+}
+const lineEnding = {
+ name: "lineEnding",
+ tokenize: tokenizeLineEnding
+};
+function tokenizeLineEnding(effects, ok2) {
+ return start;
+ function start(code2) {
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ return factorySpace(effects, ok2, "linePrefix");
+ }
+}
+const thematicBreak$1 = {
+ name: "thematicBreak",
+ tokenize: tokenizeThematicBreak
+};
+function tokenizeThematicBreak(effects, ok2, nok) {
+ let size = 0;
+ let marker;
+ return start;
+ function start(code2) {
+ effects.enter("thematicBreak");
+ marker = code2;
+ return atBreak(code2);
+ }
+ function atBreak(code2) {
+ if (code2 === marker) {
+ effects.enter("thematicBreakSequence");
+ return sequence(code2);
+ }
+ if (markdownSpace(code2)) {
+ return factorySpace(effects, atBreak, "whitespace")(code2);
+ }
+ if (size < 3 || code2 !== null && !markdownLineEnding(code2)) {
+ return nok(code2);
+ }
+ effects.exit("thematicBreak");
+ return ok2(code2);
+ }
+ function sequence(code2) {
+ if (code2 === marker) {
+ effects.consume(code2);
+ size++;
+ return sequence;
+ }
+ effects.exit("thematicBreakSequence");
+ return atBreak(code2);
+ }
+}
+const list$1 = {
+ name: "list",
+ tokenize: tokenizeListStart,
+ continuation: {
+ tokenize: tokenizeListContinuation
+ },
+ exit: tokenizeListEnd
+};
+const listItemPrefixWhitespaceConstruct = {
+ tokenize: tokenizeListItemPrefixWhitespace,
+ partial: true
+};
+const indentConstruct = {
+ tokenize: tokenizeIndent,
+ partial: true
+};
+function tokenizeListStart(effects, ok2, nok) {
+ const self = this;
+ const tail = self.events[self.events.length - 1];
+ let initialSize = tail && tail[1].type === "linePrefix" ? tail[2].sliceSerialize(tail[1], true).length : 0;
+ let size = 0;
+ return start;
+ function start(code2) {
+ const kind = self.containerState.type || (code2 === 42 || code2 === 43 || code2 === 45 ? "listUnordered" : "listOrdered");
+ if (kind === "listUnordered" ? !self.containerState.marker || code2 === self.containerState.marker : asciiDigit(code2)) {
+ if (!self.containerState.type) {
+ self.containerState.type = kind;
+ effects.enter(kind, {
+ _container: true
+ });
+ }
+ if (kind === "listUnordered") {
+ effects.enter("listItemPrefix");
+ return code2 === 42 || code2 === 45 ? effects.check(thematicBreak$1, nok, atMarker)(code2) : atMarker(code2);
+ }
+ if (!self.interrupt || code2 === 49) {
+ effects.enter("listItemPrefix");
+ effects.enter("listItemValue");
+ return inside(code2);
+ }
+ }
+ return nok(code2);
+ }
+ function inside(code2) {
+ if (asciiDigit(code2) && ++size < 10) {
+ effects.consume(code2);
+ return inside;
+ }
+ if ((!self.interrupt || size < 2) && (self.containerState.marker ? code2 === self.containerState.marker : code2 === 41 || code2 === 46)) {
+ effects.exit("listItemValue");
+ return atMarker(code2);
+ }
+ return nok(code2);
+ }
+ function atMarker(code2) {
+ effects.enter("listItemMarker");
+ effects.consume(code2);
+ effects.exit("listItemMarker");
+ self.containerState.marker = self.containerState.marker || code2;
+ return effects.check(
+ blankLine,
+ self.interrupt ? nok : onBlank,
+ effects.attempt(
+ listItemPrefixWhitespaceConstruct,
+ endOfPrefix,
+ otherPrefix
+ )
+ );
+ }
+ function onBlank(code2) {
+ self.containerState.initialBlankLine = true;
+ initialSize++;
+ return endOfPrefix(code2);
+ }
+ function otherPrefix(code2) {
+ if (markdownSpace(code2)) {
+ effects.enter("listItemPrefixWhitespace");
+ effects.consume(code2);
+ effects.exit("listItemPrefixWhitespace");
+ return endOfPrefix;
+ }
+ return nok(code2);
+ }
+ function endOfPrefix(code2) {
+ self.containerState.size = initialSize + self.sliceSerialize(effects.exit("listItemPrefix"), true).length;
+ return ok2(code2);
+ }
+}
+function tokenizeListContinuation(effects, ok2, nok) {
+ const self = this;
+ self.containerState._closeFlow = void 0;
+ return effects.check(blankLine, onBlank, notBlank);
+ function onBlank(code2) {
+ self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;
+ return factorySpace(
+ effects,
+ ok2,
+ "listItemIndent",
+ self.containerState.size + 1
+ )(code2);
+ }
+ function notBlank(code2) {
+ if (self.containerState.furtherBlankLines || !markdownSpace(code2)) {
+ self.containerState.furtherBlankLines = void 0;
+ self.containerState.initialBlankLine = void 0;
+ return notInCurrentItem(code2);
+ }
+ self.containerState.furtherBlankLines = void 0;
+ self.containerState.initialBlankLine = void 0;
+ return effects.attempt(indentConstruct, ok2, notInCurrentItem)(code2);
+ }
+ function notInCurrentItem(code2) {
+ self.containerState._closeFlow = true;
+ self.interrupt = void 0;
+ return factorySpace(
+ effects,
+ effects.attempt(list$1, ok2, nok),
+ "linePrefix",
+ self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4
+ )(code2);
+ }
+}
+function tokenizeIndent(effects, ok2, nok) {
+ const self = this;
+ return factorySpace(
+ effects,
+ afterPrefix,
+ "listItemIndent",
+ self.containerState.size + 1
+ );
+ function afterPrefix(code2) {
+ const tail = self.events[self.events.length - 1];
+ return tail && tail[1].type === "listItemIndent" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok2(code2) : nok(code2);
+ }
+}
+function tokenizeListEnd(effects) {
+ effects.exit(this.containerState.type);
+}
+function tokenizeListItemPrefixWhitespace(effects, ok2, nok) {
+ const self = this;
+ return factorySpace(
+ effects,
+ afterPrefix,
+ "listItemPrefixWhitespace",
+ self.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4 + 1
+ );
+ function afterPrefix(code2) {
+ const tail = self.events[self.events.length - 1];
+ return !markdownSpace(code2) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok2(code2) : nok(code2);
+ }
+}
+const setextUnderline = {
+ name: "setextUnderline",
+ tokenize: tokenizeSetextUnderline,
+ resolveTo: resolveToSetextUnderline
+};
+function resolveToSetextUnderline(events, context) {
+ let index2 = events.length;
+ let content2;
+ let text2;
+ let definition2;
+ while (index2--) {
+ if (events[index2][0] === "enter") {
+ if (events[index2][1].type === "content") {
+ content2 = index2;
+ break;
+ }
+ if (events[index2][1].type === "paragraph") {
+ text2 = index2;
+ }
+ } else {
+ if (events[index2][1].type === "content") {
+ events.splice(index2, 1);
+ }
+ if (!definition2 && events[index2][1].type === "definition") {
+ definition2 = index2;
+ }
+ }
+ }
+ const heading2 = {
+ type: "setextHeading",
+ start: Object.assign({}, events[text2][1].start),
+ end: Object.assign({}, events[events.length - 1][1].end)
+ };
+ events[text2][1].type = "setextHeadingText";
+ if (definition2) {
+ events.splice(text2, 0, ["enter", heading2, context]);
+ events.splice(definition2 + 1, 0, ["exit", events[content2][1], context]);
+ events[content2][1].end = Object.assign({}, events[definition2][1].end);
+ } else {
+ events[content2][1] = heading2;
+ }
+ events.push(["exit", heading2, context]);
+ return events;
+}
+function tokenizeSetextUnderline(effects, ok2, nok) {
+ const self = this;
+ let index2 = self.events.length;
+ let marker;
+ let paragraph2;
+ while (index2--) {
+ if (self.events[index2][1].type !== "lineEnding" && self.events[index2][1].type !== "linePrefix" && self.events[index2][1].type !== "content") {
+ paragraph2 = self.events[index2][1].type === "paragraph";
+ break;
+ }
+ }
+ return start;
+ function start(code2) {
+ if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph2)) {
+ effects.enter("setextHeadingLine");
+ effects.enter("setextHeadingLineSequence");
+ marker = code2;
+ return closingSequence(code2);
+ }
+ return nok(code2);
+ }
+ function closingSequence(code2) {
+ if (code2 === marker) {
+ effects.consume(code2);
+ return closingSequence;
+ }
+ effects.exit("setextHeadingLineSequence");
+ return factorySpace(effects, closingSequenceEnd, "lineSuffix")(code2);
+ }
+ function closingSequenceEnd(code2) {
+ if (code2 === null || markdownLineEnding(code2)) {
+ effects.exit("setextHeadingLine");
+ return ok2(code2);
+ }
+ return nok(code2);
+ }
+}
+const flow$1 = {
+ tokenize: initializeFlow
+};
+function initializeFlow(effects) {
+ const self = this;
+ const initial = effects.attempt(
+ blankLine,
+ atBlankEnding,
+ effects.attempt(
+ this.parser.constructs.flowInitial,
+ afterConstruct,
+ factorySpace(
+ effects,
+ effects.attempt(
+ this.parser.constructs.flow,
+ afterConstruct,
+ effects.attempt(content, afterConstruct)
+ ),
+ "linePrefix"
+ )
+ )
+ );
+ return initial;
+ function atBlankEnding(code2) {
+ if (code2 === null) {
+ effects.consume(code2);
+ return;
+ }
+ effects.enter("lineEndingBlank");
+ effects.consume(code2);
+ effects.exit("lineEndingBlank");
+ self.currentConstruct = void 0;
+ return initial;
+ }
+ function afterConstruct(code2) {
+ if (code2 === null) {
+ effects.consume(code2);
+ return;
+ }
+ effects.enter("lineEnding");
+ effects.consume(code2);
+ effects.exit("lineEnding");
+ self.currentConstruct = void 0;
+ return initial;
+ }
+}
+const resolver = {
+ resolveAll: createResolver()
+};
+const string$1 = initializeFactory("string");
+const text$3 = initializeFactory("text");
+function initializeFactory(field) {
+ return {
+ tokenize: initializeText,
+ resolveAll: createResolver(
+ field === "text" ? resolveAllLineSuffixes : void 0
+ )
+ };
+ function initializeText(effects) {
+ const self = this;
+ const constructs2 = this.parser.constructs[field];
+ const text2 = effects.attempt(constructs2, start, notText);
+ return start;
+ function start(code2) {
+ return atBreak(code2) ? text2(code2) : notText(code2);
+ }
+ function notText(code2) {
+ if (code2 === null) {
+ effects.consume(code2);
+ return;
+ }
+ effects.enter("data");
+ effects.consume(code2);
+ return data;
+ }
+ function data(code2) {
+ if (atBreak(code2)) {
+ effects.exit("data");
+ return text2(code2);
+ }
+ effects.consume(code2);
+ return data;
+ }
+ function atBreak(code2) {
+ if (code2 === null) {
+ return true;
+ }
+ const list2 = constructs2[code2];
+ let index2 = -1;
+ if (list2) {
+ while (++index2 < list2.length) {
+ const item = list2[index2];
+ if (!item.previous || item.previous.call(self, self.previous)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ }
+}
+function createResolver(extraResolver) {
+ return resolveAllText;
+ function resolveAllText(events, context) {
+ let index2 = -1;
+ let enter;
+ while (++index2 <= events.length) {
+ if (enter === void 0) {
+ if (events[index2] && events[index2][1].type === "data") {
+ enter = index2;
+ index2++;
+ }
+ } else if (!events[index2] || events[index2][1].type !== "data") {
+ if (index2 !== enter + 2) {
+ events[enter][1].end = events[index2 - 1][1].end;
+ events.splice(enter + 2, index2 - enter - 2);
+ index2 = enter + 2;
+ }
+ enter = void 0;
+ }
+ }
+ return extraResolver ? extraResolver(events, context) : events;
+ }
+}
+function resolveAllLineSuffixes(events, context) {
+ let eventIndex = 0;
+ while (++eventIndex <= events.length) {
+ if ((eventIndex === events.length || events[eventIndex][1].type === "lineEnding") && events[eventIndex - 1][1].type === "data") {
+ const data = events[eventIndex - 1][1];
+ const chunks = context.sliceStream(data);
+ let index2 = chunks.length;
+ let bufferIndex = -1;
+ let size = 0;
+ let tabs;
+ while (index2--) {
+ const chunk = chunks[index2];
+ if (typeof chunk === "string") {
+ bufferIndex = chunk.length;
+ while (chunk.charCodeAt(bufferIndex - 1) === 32) {
+ size++;
+ bufferIndex--;
+ }
+ if (bufferIndex)
+ break;
+ bufferIndex = -1;
+ } else if (chunk === -2) {
+ tabs = true;
+ size++;
+ } else if (chunk === -1)
+ ;
+ else {
+ index2++;
+ break;
+ }
+ }
+ if (size) {
+ const token = {
+ type: eventIndex === events.length || tabs || size < 2 ? "lineSuffix" : "hardBreakTrailing",
+ start: {
+ line: data.end.line,
+ column: data.end.column - size,
+ offset: data.end.offset - size,
+ _index: data.start._index + index2,
+ _bufferIndex: index2 ? bufferIndex : data.start._bufferIndex + bufferIndex
+ },
+ end: Object.assign({}, data.end)
+ };
+ data.end = Object.assign({}, token.start);
+ if (data.start.offset === data.end.offset) {
+ Object.assign(data, token);
+ } else {
+ events.splice(
+ eventIndex,
+ 0,
+ ["enter", token, context],
+ ["exit", token, context]
+ );
+ eventIndex += 2;
+ }
+ }
+ eventIndex++;
+ }
+ }
+ return events;
+}
+function createTokenizer(parser, initialize, from) {
+ let point2 = Object.assign(
+ from ? Object.assign({}, from) : {
+ line: 1,
+ column: 1,
+ offset: 0
+ },
+ {
+ _index: 0,
+ _bufferIndex: -1
+ }
+ );
+ const columnStart = {};
+ const resolveAllConstructs = [];
+ let chunks = [];
+ let stack = [];
+ const effects = {
+ consume,
+ enter,
+ exit: exit2,
+ attempt: constructFactory(onsuccessfulconstruct),
+ check: constructFactory(onsuccessfulcheck),
+ interrupt: constructFactory(onsuccessfulcheck, {
+ interrupt: true
+ })
+ };
+ const context = {
+ previous: null,
+ code: null,
+ containerState: {},
+ events: [],
+ parser,
+ sliceStream,
+ sliceSerialize,
+ now,
+ defineSkip,
+ write
+ };
+ let state = initialize.tokenize.call(context, effects);
+ if (initialize.resolveAll) {
+ resolveAllConstructs.push(initialize);
+ }
+ return context;
+ function write(slice) {
+ chunks = push(chunks, slice);
+ main();
+ if (chunks[chunks.length - 1] !== null) {
+ return [];
+ }
+ addResult(initialize, 0);
+ context.events = resolveAll(resolveAllConstructs, context.events, context);
+ return context.events;
+ }
+ function sliceSerialize(token, expandTabs) {
+ return serializeChunks(sliceStream(token), expandTabs);
+ }
+ function sliceStream(token) {
+ return sliceChunks(chunks, token);
+ }
+ function now() {
+ return Object.assign({}, point2);
+ }
+ function defineSkip(value) {
+ columnStart[value.line] = value.column;
+ accountForPotentialSkip();
+ }
+ function main() {
+ let chunkIndex;
+ while (point2._index < chunks.length) {
+ const chunk = chunks[point2._index];
+ if (typeof chunk === "string") {
+ chunkIndex = point2._index;
+ if (point2._bufferIndex < 0) {
+ point2._bufferIndex = 0;
+ }
+ while (point2._index === chunkIndex && point2._bufferIndex < chunk.length) {
+ go(chunk.charCodeAt(point2._bufferIndex));
+ }
+ } else {
+ go(chunk);
+ }
+ }
+ }
+ function go(code2) {
+ state = state(code2);
+ }
+ function consume(code2) {
+ if (markdownLineEnding(code2)) {
+ point2.line++;
+ point2.column = 1;
+ point2.offset += code2 === -3 ? 2 : 1;
+ accountForPotentialSkip();
+ } else if (code2 !== -1) {
+ point2.column++;
+ point2.offset++;
+ }
+ if (point2._bufferIndex < 0) {
+ point2._index++;
+ } else {
+ point2._bufferIndex++;
+ if (point2._bufferIndex === chunks[point2._index].length) {
+ point2._bufferIndex = -1;
+ point2._index++;
+ }
+ }
+ context.previous = code2;
+ }
+ function enter(type, fields) {
+ const token = fields || {};
+ token.type = type;
+ token.start = now();
+ context.events.push(["enter", token, context]);
+ stack.push(token);
+ return token;
+ }
+ function exit2(type) {
+ const token = stack.pop();
+ token.end = now();
+ context.events.push(["exit", token, context]);
+ return token;
+ }
+ function onsuccessfulconstruct(construct, info) {
+ addResult(construct, info.from);
+ }
+ function onsuccessfulcheck(_, info) {
+ info.restore();
+ }
+ function constructFactory(onreturn, fields) {
+ return hook;
+ function hook(constructs2, returnState, bogusState) {
+ let listOfConstructs;
+ let constructIndex;
+ let currentConstruct;
+ let info;
+ return Array.isArray(constructs2) ? handleListOfConstructs(constructs2) : "tokenize" in constructs2 ? handleListOfConstructs([constructs2]) : handleMapOfConstructs(constructs2);
+ function handleMapOfConstructs(map) {
+ return start;
+ function start(code2) {
+ const def = code2 !== null && map[code2];
+ const all2 = code2 !== null && map.null;
+ const list2 = [
+ ...Array.isArray(def) ? def : def ? [def] : [],
+ ...Array.isArray(all2) ? all2 : all2 ? [all2] : []
+ ];
+ return handleListOfConstructs(list2)(code2);
+ }
+ }
+ function handleListOfConstructs(list2) {
+ listOfConstructs = list2;
+ constructIndex = 0;
+ if (list2.length === 0) {
+ return bogusState;
+ }
+ return handleConstruct(list2[constructIndex]);
+ }
+ function handleConstruct(construct) {
+ return start;
+ function start(code2) {
+ info = store();
+ currentConstruct = construct;
+ if (!construct.partial) {
+ context.currentConstruct = construct;
+ }
+ if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {
+ return nok();
+ }
+ return construct.tokenize.call(
+ fields ? Object.assign(Object.create(context), fields) : context,
+ effects,
+ ok2,
+ nok
+ )(code2);
+ }
+ }
+ function ok2(code2) {
+ onreturn(currentConstruct, info);
+ return returnState;
+ }
+ function nok(code2) {
+ info.restore();
+ if (++constructIndex < listOfConstructs.length) {
+ return handleConstruct(listOfConstructs[constructIndex]);
+ }
+ return bogusState;
+ }
+ }
+ }
+ function addResult(construct, from2) {
+ if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {
+ resolveAllConstructs.push(construct);
+ }
+ if (construct.resolve) {
+ splice(
+ context.events,
+ from2,
+ context.events.length - from2,
+ construct.resolve(context.events.slice(from2), context)
+ );
+ }
+ if (construct.resolveTo) {
+ context.events = construct.resolveTo(context.events, context);
+ }
+ }
+ function store() {
+ const startPoint = now();
+ const startPrevious = context.previous;
+ const startCurrentConstruct = context.currentConstruct;
+ const startEventsIndex = context.events.length;
+ const startStack = Array.from(stack);
+ return {
+ restore,
+ from: startEventsIndex
+ };
+ function restore() {
+ point2 = startPoint;
+ context.previous = startPrevious;
+ context.currentConstruct = startCurrentConstruct;
+ context.events.length = startEventsIndex;
+ stack = startStack;
+ accountForPotentialSkip();
+ }
+ }
+ function accountForPotentialSkip() {
+ if (point2.line in columnStart && point2.column < 2) {
+ point2.column = columnStart[point2.line];
+ point2.offset += columnStart[point2.line] - 1;
+ }
+ }
+}
+function sliceChunks(chunks, token) {
+ const startIndex = token.start._index;
+ const startBufferIndex = token.start._bufferIndex;
+ const endIndex = token.end._index;
+ const endBufferIndex = token.end._bufferIndex;
+ let view;
+ if (startIndex === endIndex) {
+ view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];
+ } else {
+ view = chunks.slice(startIndex, endIndex);
+ if (startBufferIndex > -1) {
+ view[0] = view[0].slice(startBufferIndex);
+ }
+ if (endBufferIndex > 0) {
+ view.push(chunks[endIndex].slice(0, endBufferIndex));
+ }
+ }
+ return view;
+}
+function serializeChunks(chunks, expandTabs) {
+ let index2 = -1;
+ const result = [];
+ let atTab;
+ while (++index2 < chunks.length) {
+ const chunk = chunks[index2];
+ let value;
+ if (typeof chunk === "string") {
+ value = chunk;
+ } else
+ switch (chunk) {
+ case -5: {
+ value = "\r";
+ break;
+ }
+ case -4: {
+ value = "\n";
+ break;
+ }
+ case -3: {
+ value = "\r\n";
+ break;
+ }
+ case -2: {
+ value = expandTabs ? " " : " ";
+ break;
+ }
+ case -1: {
+ if (!expandTabs && atTab)
+ continue;
+ value = " ";
+ break;
+ }
+ default: {
+ value = String.fromCharCode(chunk);
+ }
+ }
+ atTab = chunk === -2;
+ result.push(value);
+ }
+ return result.join("");
+}
+const document$1 = {
+ [42]: list$1,
+ [43]: list$1,
+ [45]: list$1,
+ [48]: list$1,
+ [49]: list$1,
+ [50]: list$1,
+ [51]: list$1,
+ [52]: list$1,
+ [53]: list$1,
+ [54]: list$1,
+ [55]: list$1,
+ [56]: list$1,
+ [57]: list$1,
+ [62]: blockQuote
+};
+const contentInitial = {
+ [91]: definition
+};
+const flowInitial = {
+ [-2]: codeIndented,
+ [-1]: codeIndented,
+ [32]: codeIndented
+};
+const flow = {
+ [35]: headingAtx,
+ [42]: thematicBreak$1,
+ [45]: [setextUnderline, thematicBreak$1],
+ [60]: htmlFlow,
+ [61]: setextUnderline,
+ [95]: thematicBreak$1,
+ [96]: codeFenced,
+ [126]: codeFenced
+};
+const string = {
+ [38]: characterReference,
+ [92]: characterEscape
+};
+const text$2 = {
+ [-5]: lineEnding,
+ [-4]: lineEnding,
+ [-3]: lineEnding,
+ [33]: labelStartImage,
+ [38]: characterReference,
+ [42]: attention,
+ [60]: [autolink, htmlText],
+ [91]: labelStartLink,
+ [92]: [hardBreakEscape, characterEscape],
+ [93]: labelEnd,
+ [95]: attention,
+ [96]: codeText
+};
+const insideSpan = {
+ null: [attention, resolver]
+};
+const attentionMarkers = {
+ null: [42, 95]
+};
+const disable = {
+ null: []
+};
+const defaultConstructs = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ document: document$1,
+ contentInitial,
+ flowInitial,
+ flow,
+ string,
+ text: text$2,
+ insideSpan,
+ attentionMarkers,
+ disable
+}, Symbol.toStringTag, { value: "Module" }));
+function parse$2(options = {}) {
+ const constructs2 = combineExtensions(
+ [defaultConstructs].concat(options.extensions || [])
+ );
+ const parser = {
+ defined: [],
+ lazy: {},
+ constructs: constructs2,
+ content: create2(content$1),
+ document: create2(document$2),
+ flow: create2(flow$1),
+ string: create2(string$1),
+ text: create2(text$3)
+ };
+ return parser;
+ function create2(initial) {
+ return creator;
+ function creator(from) {
+ return createTokenizer(parser, initial, from);
+ }
+ }
+}
+const search = /[\0\t\n\r]/g;
+function preprocess() {
+ let column = 1;
+ let buffer = "";
+ let start = true;
+ let atCarriageReturn;
+ return preprocessor;
+ function preprocessor(value, encoding, end) {
+ const chunks = [];
+ let match;
+ let next;
+ let startPosition;
+ let endPosition;
+ let code2;
+ value = buffer + value.toString(encoding);
+ startPosition = 0;
+ buffer = "";
+ if (start) {
+ if (value.charCodeAt(0) === 65279) {
+ startPosition++;
+ }
+ start = void 0;
+ }
+ while (startPosition < value.length) {
+ search.lastIndex = startPosition;
+ match = search.exec(value);
+ endPosition = match && match.index !== void 0 ? match.index : value.length;
+ code2 = value.charCodeAt(endPosition);
+ if (!match) {
+ buffer = value.slice(startPosition);
+ break;
+ }
+ if (code2 === 10 && startPosition === endPosition && atCarriageReturn) {
+ chunks.push(-3);
+ atCarriageReturn = void 0;
+ } else {
+ if (atCarriageReturn) {
+ chunks.push(-5);
+ atCarriageReturn = void 0;
+ }
+ if (startPosition < endPosition) {
+ chunks.push(value.slice(startPosition, endPosition));
+ column += endPosition - startPosition;
+ }
+ switch (code2) {
+ case 0: {
+ chunks.push(65533);
+ column++;
+ break;
+ }
+ case 9: {
+ next = Math.ceil(column / 4) * 4;
+ chunks.push(-2);
+ while (column++ < next)
+ chunks.push(-1);
+ break;
+ }
+ case 10: {
+ chunks.push(-4);
+ column = 1;
+ break;
+ }
+ default: {
+ atCarriageReturn = true;
+ column = 1;
+ }
+ }
+ }
+ startPosition = endPosition + 1;
+ }
+ if (end) {
+ if (atCarriageReturn)
+ chunks.push(-5);
+ if (buffer)
+ chunks.push(buffer);
+ chunks.push(null);
+ }
+ return chunks;
+ }
+}
+function postprocess(events) {
+ while (!subtokenize(events)) {
+ }
+ return events;
+}
+function decodeNumericCharacterReference(value, base2) {
+ const code2 = Number.parseInt(value, base2);
+ if (code2 < 9 || code2 === 11 || code2 > 13 && code2 < 32 || code2 > 126 && code2 < 160 || code2 > 55295 && code2 < 57344 || code2 > 64975 && code2 < 65008 || (code2 & 65535) === 65535 || (code2 & 65535) === 65534 || code2 > 1114111) {
+ return "\uFFFD";
+ }
+ return String.fromCharCode(code2);
+}
+const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
+function decodeString(value) {
+ return value.replace(characterEscapeOrReference, decode);
+}
+function decode($0, $1, $2) {
+ if ($1) {
+ return $1;
+ }
+ const head = $2.charCodeAt(0);
+ if (head === 35) {
+ const head2 = $2.charCodeAt(1);
+ const hex = head2 === 120 || head2 === 88;
+ return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);
+ }
+ return decodeNamedCharacterReference($2) || $0;
+}
+const own$6 = {}.hasOwnProperty;
+const fromMarkdown = function(value, encoding, options) {
+ if (typeof encoding !== "string") {
+ options = encoding;
+ encoding = void 0;
+ }
+ return compiler(options)(
+ postprocess(
+ parse$2(options).document().write(preprocess()(value, encoding, true))
+ )
+ );
+};
+function compiler(options = {}) {
+ const config = configure(
+ {
+ transforms: [],
+ canContainEols: [
+ "emphasis",
+ "fragment",
+ "heading",
+ "paragraph",
+ "strong"
+ ],
+ enter: {
+ autolink: opener(link2),
+ autolinkProtocol: onenterdata,
+ autolinkEmail: onenterdata,
+ atxHeading: opener(heading2),
+ blockQuote: opener(blockQuote2),
+ characterEscape: onenterdata,
+ characterReference: onenterdata,
+ codeFenced: opener(codeFlow),
+ codeFencedFenceInfo: buffer,
+ codeFencedFenceMeta: buffer,
+ codeIndented: opener(codeFlow, buffer),
+ codeText: opener(codeText2, buffer),
+ codeTextData: onenterdata,
+ data: onenterdata,
+ codeFlowValue: onenterdata,
+ definition: opener(definition2),
+ definitionDestinationString: buffer,
+ definitionLabelString: buffer,
+ definitionTitleString: buffer,
+ emphasis: opener(emphasis2),
+ hardBreakEscape: opener(hardBreak2),
+ hardBreakTrailing: opener(hardBreak2),
+ htmlFlow: opener(html2, buffer),
+ htmlFlowData: onenterdata,
+ htmlText: opener(html2, buffer),
+ htmlTextData: onenterdata,
+ image: opener(image2),
+ label: buffer,
+ link: opener(link2),
+ listItem: opener(listItem2),
+ listItemValue: onenterlistitemvalue,
+ listOrdered: opener(list2, onenterlistordered),
+ listUnordered: opener(list2),
+ paragraph: opener(paragraph2),
+ reference: onenterreference,
+ referenceString: buffer,
+ resourceDestinationString: buffer,
+ resourceTitleString: buffer,
+ setextHeading: opener(heading2),
+ strong: opener(strong2),
+ thematicBreak: opener(thematicBreak2)
+ },
+ exit: {
+ atxHeading: closer(),
+ atxHeadingSequence: onexitatxheadingsequence,
+ autolink: closer(),
+ autolinkEmail: onexitautolinkemail,
+ autolinkProtocol: onexitautolinkprotocol,
+ blockQuote: closer(),
+ characterEscapeValue: onexitdata,
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
+ characterReferenceValue: onexitcharacterreferencevalue,
+ codeFenced: closer(onexitcodefenced),
+ codeFencedFence: onexitcodefencedfence,
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
+ codeFencedFenceMeta: onexitcodefencedfencemeta,
+ codeFlowValue: onexitdata,
+ codeIndented: closer(onexitcodeindented),
+ codeText: closer(onexitcodetext),
+ codeTextData: onexitdata,
+ data: onexitdata,
+ definition: closer(),
+ definitionDestinationString: onexitdefinitiondestinationstring,
+ definitionLabelString: onexitdefinitionlabelstring,
+ definitionTitleString: onexitdefinitiontitlestring,
+ emphasis: closer(),
+ hardBreakEscape: closer(onexithardbreak),
+ hardBreakTrailing: closer(onexithardbreak),
+ htmlFlow: closer(onexithtmlflow),
+ htmlFlowData: onexitdata,
+ htmlText: closer(onexithtmltext),
+ htmlTextData: onexitdata,
+ image: closer(onexitimage),
+ label: onexitlabel,
+ labelText: onexitlabeltext,
+ lineEnding: onexitlineending,
+ link: closer(onexitlink),
+ listItem: closer(),
+ listOrdered: closer(),
+ listUnordered: closer(),
+ paragraph: closer(),
+ referenceString: onexitreferencestring,
+ resourceDestinationString: onexitresourcedestinationstring,
+ resourceTitleString: onexitresourcetitlestring,
+ resource: onexitresource,
+ setextHeading: closer(onexitsetextheading),
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
+ setextHeadingText: onexitsetextheadingtext,
+ strong: closer(),
+ thematicBreak: closer()
+ }
+ },
+ options.mdastExtensions || []
+ );
+ const data = {};
+ return compile;
+ function compile(events) {
+ let tree = {
+ type: "root",
+ children: []
+ };
+ const stack = [tree];
+ const tokenStack = [];
+ const listStack = [];
+ const context = {
+ stack,
+ tokenStack,
+ config,
+ enter,
+ exit: exit2,
+ buffer,
+ resume,
+ setData,
+ getData
+ };
+ let index2 = -1;
+ while (++index2 < events.length) {
+ if (events[index2][1].type === "listOrdered" || events[index2][1].type === "listUnordered") {
+ if (events[index2][0] === "enter") {
+ listStack.push(index2);
+ } else {
+ const tail = listStack.pop();
+ index2 = prepareList(events, tail, index2);
+ }
+ }
+ }
+ index2 = -1;
+ while (++index2 < events.length) {
+ const handler = config[events[index2][0]];
+ if (own$6.call(handler, events[index2][1].type)) {
+ handler[events[index2][1].type].call(
+ Object.assign(
+ {
+ sliceSerialize: events[index2][2].sliceSerialize
+ },
+ context
+ ),
+ events[index2][1]
+ );
+ }
+ }
+ if (tokenStack.length > 0) {
+ const tail = tokenStack[tokenStack.length - 1];
+ const handler = tail[1] || defaultOnError;
+ handler.call(context, void 0, tail[0]);
+ }
+ tree.position = {
+ start: point2(
+ events.length > 0 ? events[0][1].start : {
+ line: 1,
+ column: 1,
+ offset: 0
+ }
+ ),
+ end: point2(
+ events.length > 0 ? events[events.length - 2][1].end : {
+ line: 1,
+ column: 1,
+ offset: 0
+ }
+ )
+ };
+ index2 = -1;
+ while (++index2 < config.transforms.length) {
+ tree = config.transforms[index2](tree) || tree;
+ }
+ return tree;
+ }
+ function prepareList(events, start, length) {
+ let index2 = start - 1;
+ let containerBalance = -1;
+ let listSpread = false;
+ let listItem3;
+ let lineIndex;
+ let firstBlankLineIndex;
+ let atMarker;
+ while (++index2 <= length) {
+ const event = events[index2];
+ if (event[1].type === "listUnordered" || event[1].type === "listOrdered" || event[1].type === "blockQuote") {
+ if (event[0] === "enter") {
+ containerBalance++;
+ } else {
+ containerBalance--;
+ }
+ atMarker = void 0;
+ } else if (event[1].type === "lineEndingBlank") {
+ if (event[0] === "enter") {
+ if (listItem3 && !atMarker && !containerBalance && !firstBlankLineIndex) {
+ firstBlankLineIndex = index2;
+ }
+ atMarker = void 0;
+ }
+ } else if (event[1].type === "linePrefix" || event[1].type === "listItemValue" || event[1].type === "listItemMarker" || event[1].type === "listItemPrefix" || event[1].type === "listItemPrefixWhitespace")
+ ;
+ else {
+ atMarker = void 0;
+ }
+ if (!containerBalance && event[0] === "enter" && event[1].type === "listItemPrefix" || containerBalance === -1 && event[0] === "exit" && (event[1].type === "listUnordered" || event[1].type === "listOrdered")) {
+ if (listItem3) {
+ let tailIndex = index2;
+ lineIndex = void 0;
+ while (tailIndex--) {
+ const tailEvent = events[tailIndex];
+ if (tailEvent[1].type === "lineEnding" || tailEvent[1].type === "lineEndingBlank") {
+ if (tailEvent[0] === "exit")
+ continue;
+ if (lineIndex) {
+ events[lineIndex][1].type = "lineEndingBlank";
+ listSpread = true;
+ }
+ tailEvent[1].type = "lineEnding";
+ lineIndex = tailIndex;
+ } else if (tailEvent[1].type === "linePrefix" || tailEvent[1].type === "blockQuotePrefix" || tailEvent[1].type === "blockQuotePrefixWhitespace" || tailEvent[1].type === "blockQuoteMarker" || tailEvent[1].type === "listItemIndent")
+ ;
+ else {
+ break;
+ }
+ }
+ if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {
+ listItem3._spread = true;
+ }
+ listItem3.end = Object.assign(
+ {},
+ lineIndex ? events[lineIndex][1].start : event[1].end
+ );
+ events.splice(lineIndex || index2, 0, ["exit", listItem3, event[2]]);
+ index2++;
+ length++;
+ }
+ if (event[1].type === "listItemPrefix") {
+ listItem3 = {
+ type: "listItem",
+ _spread: false,
+ start: Object.assign({}, event[1].start)
+ };
+ events.splice(index2, 0, ["enter", listItem3, event[2]]);
+ index2++;
+ length++;
+ firstBlankLineIndex = void 0;
+ atMarker = true;
+ }
+ }
+ }
+ events[start][1]._spread = listSpread;
+ return length;
+ }
+ function setData(key, value) {
+ data[key] = value;
+ }
+ function getData(key) {
+ return data[key];
+ }
+ function point2(d) {
+ return {
+ line: d.line,
+ column: d.column,
+ offset: d.offset
+ };
+ }
+ function opener(create2, and) {
+ return open;
+ function open(token) {
+ enter.call(this, create2(token), token);
+ if (and)
+ and.call(this, token);
+ }
+ }
+ function buffer() {
+ this.stack.push({
+ type: "fragment",
+ children: []
+ });
+ }
+ function enter(node, token, errorHandler) {
+ const parent = this.stack[this.stack.length - 1];
+ parent.children.push(node);
+ this.stack.push(node);
+ this.tokenStack.push([token, errorHandler]);
+ node.position = {
+ start: point2(token.start)
+ };
+ return node;
+ }
+ function closer(and) {
+ return close;
+ function close(token) {
+ if (and)
+ and.call(this, token);
+ exit2.call(this, token);
+ }
+ }
+ function exit2(token, onExitError) {
+ const node = this.stack.pop();
+ const open = this.tokenStack.pop();
+ if (!open) {
+ throw new Error(
+ "Cannot close `" + token.type + "` (" + stringifyPosition({
+ start: token.start,
+ end: token.end
+ }) + "): it\u2019s not open"
+ );
+ } else if (open[0].type !== token.type) {
+ if (onExitError) {
+ onExitError.call(this, token, open[0]);
+ } else {
+ const handler = open[1] || defaultOnError;
+ handler.call(this, token, open[0]);
+ }
+ }
+ node.position.end = point2(token.end);
+ return node;
+ }
+ function resume() {
+ return toString(this.stack.pop());
+ }
+ function onenterlistordered() {
+ setData("expectingFirstListItemValue", true);
+ }
+ function onenterlistitemvalue(token) {
+ if (getData("expectingFirstListItemValue")) {
+ const ancestor = this.stack[this.stack.length - 2];
+ ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);
+ setData("expectingFirstListItemValue");
+ }
+ }
+ function onexitcodefencedfenceinfo() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.lang = data2;
+ }
+ function onexitcodefencedfencemeta() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.meta = data2;
+ }
+ function onexitcodefencedfence() {
+ if (getData("flowCodeInside"))
+ return;
+ this.buffer();
+ setData("flowCodeInside", true);
+ }
+ function onexitcodefenced() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.value = data2.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g, "");
+ setData("flowCodeInside");
+ }
+ function onexitcodeindented() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.value = data2.replace(/(\r?\n|\r)$/g, "");
+ }
+ function onexitdefinitionlabelstring(token) {
+ const label = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.label = label;
+ node.identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase();
+ }
+ function onexitdefinitiontitlestring() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.title = data2;
+ }
+ function onexitdefinitiondestinationstring() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.url = data2;
+ }
+ function onexitatxheadingsequence(token) {
+ const node = this.stack[this.stack.length - 1];
+ if (!node.depth) {
+ const depth = this.sliceSerialize(token).length;
+ node.depth = depth;
+ }
+ }
+ function onexitsetextheadingtext() {
+ setData("setextHeadingSlurpLineEnding", true);
+ }
+ function onexitsetextheadinglinesequence(token) {
+ const node = this.stack[this.stack.length - 1];
+ node.depth = this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2;
+ }
+ function onexitsetextheading() {
+ setData("setextHeadingSlurpLineEnding");
+ }
+ function onenterdata(token) {
+ const parent = this.stack[this.stack.length - 1];
+ let tail = parent.children[parent.children.length - 1];
+ if (!tail || tail.type !== "text") {
+ tail = text2();
+ tail.position = {
+ start: point2(token.start)
+ };
+ parent.children.push(tail);
+ }
+ this.stack.push(tail);
+ }
+ function onexitdata(token) {
+ const tail = this.stack.pop();
+ tail.value += this.sliceSerialize(token);
+ tail.position.end = point2(token.end);
+ }
+ function onexitlineending(token) {
+ const context = this.stack[this.stack.length - 1];
+ if (getData("atHardBreak")) {
+ const tail = context.children[context.children.length - 1];
+ tail.position.end = point2(token.end);
+ setData("atHardBreak");
+ return;
+ }
+ if (!getData("setextHeadingSlurpLineEnding") && config.canContainEols.includes(context.type)) {
+ onenterdata.call(this, token);
+ onexitdata.call(this, token);
+ }
+ }
+ function onexithardbreak() {
+ setData("atHardBreak", true);
+ }
+ function onexithtmlflow() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.value = data2;
+ }
+ function onexithtmltext() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.value = data2;
+ }
+ function onexitcodetext() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.value = data2;
+ }
+ function onexitlink() {
+ const context = this.stack[this.stack.length - 1];
+ if (getData("inReference")) {
+ context.type += "Reference";
+ context.referenceType = getData("referenceType") || "shortcut";
+ delete context.url;
+ delete context.title;
+ } else {
+ delete context.identifier;
+ delete context.label;
+ }
+ setData("referenceType");
+ }
+ function onexitimage() {
+ const context = this.stack[this.stack.length - 1];
+ if (getData("inReference")) {
+ context.type += "Reference";
+ context.referenceType = getData("referenceType") || "shortcut";
+ delete context.url;
+ delete context.title;
+ } else {
+ delete context.identifier;
+ delete context.label;
+ }
+ setData("referenceType");
+ }
+ function onexitlabeltext(token) {
+ const ancestor = this.stack[this.stack.length - 2];
+ const string2 = this.sliceSerialize(token);
+ ancestor.label = decodeString(string2);
+ ancestor.identifier = normalizeIdentifier(string2).toLowerCase();
+ }
+ function onexitlabel() {
+ const fragment = this.stack[this.stack.length - 1];
+ const value = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ setData("inReference", true);
+ if (node.type === "link") {
+ node.children = fragment.children;
+ } else {
+ node.alt = value;
+ }
+ }
+ function onexitresourcedestinationstring() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.url = data2;
+ }
+ function onexitresourcetitlestring() {
+ const data2 = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.title = data2;
+ }
+ function onexitresource() {
+ setData("inReference");
+ }
+ function onenterreference() {
+ setData("referenceType", "collapsed");
+ }
+ function onexitreferencestring(token) {
+ const label = this.resume();
+ const node = this.stack[this.stack.length - 1];
+ node.label = label;
+ node.identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase();
+ setData("referenceType", "full");
+ }
+ function onexitcharacterreferencemarker(token) {
+ setData("characterReferenceType", token.type);
+ }
+ function onexitcharacterreferencevalue(token) {
+ const data2 = this.sliceSerialize(token);
+ const type = getData("characterReferenceType");
+ let value;
+ if (type) {
+ value = decodeNumericCharacterReference(
+ data2,
+ type === "characterReferenceMarkerNumeric" ? 10 : 16
+ );
+ setData("characterReferenceType");
+ } else {
+ value = decodeNamedCharacterReference(data2);
+ }
+ const tail = this.stack.pop();
+ tail.value += value;
+ tail.position.end = point2(token.end);
+ }
+ function onexitautolinkprotocol(token) {
+ onexitdata.call(this, token);
+ const node = this.stack[this.stack.length - 1];
+ node.url = this.sliceSerialize(token);
+ }
+ function onexitautolinkemail(token) {
+ onexitdata.call(this, token);
+ const node = this.stack[this.stack.length - 1];
+ node.url = "mailto:" + this.sliceSerialize(token);
+ }
+ function blockQuote2() {
+ return {
+ type: "blockquote",
+ children: []
+ };
+ }
+ function codeFlow() {
+ return {
+ type: "code",
+ lang: null,
+ meta: null,
+ value: ""
+ };
+ }
+ function codeText2() {
+ return {
+ type: "inlineCode",
+ value: ""
+ };
+ }
+ function definition2() {
+ return {
+ type: "definition",
+ identifier: "",
+ label: null,
+ title: null,
+ url: ""
+ };
+ }
+ function emphasis2() {
+ return {
+ type: "emphasis",
+ children: []
+ };
+ }
+ function heading2() {
+ return {
+ type: "heading",
+ depth: void 0,
+ children: []
+ };
+ }
+ function hardBreak2() {
+ return {
+ type: "break"
+ };
+ }
+ function html2() {
+ return {
+ type: "html",
+ value: ""
+ };
+ }
+ function image2() {
+ return {
+ type: "image",
+ title: null,
+ url: "",
+ alt: null
+ };
+ }
+ function link2() {
+ return {
+ type: "link",
+ title: null,
+ url: "",
+ children: []
+ };
+ }
+ function list2(token) {
+ return {
+ type: "list",
+ ordered: token.type === "listOrdered",
+ start: null,
+ spread: token._spread,
+ children: []
+ };
+ }
+ function listItem2(token) {
+ return {
+ type: "listItem",
+ spread: token._spread,
+ checked: null,
+ children: []
+ };
+ }
+ function paragraph2() {
+ return {
+ type: "paragraph",
+ children: []
+ };
+ }
+ function strong2() {
+ return {
+ type: "strong",
+ children: []
+ };
+ }
+ function text2() {
+ return {
+ type: "text",
+ value: ""
+ };
+ }
+ function thematicBreak2() {
+ return {
+ type: "thematicBreak"
+ };
+ }
+}
+function configure(combined, extensions) {
+ let index2 = -1;
+ while (++index2 < extensions.length) {
+ const value = extensions[index2];
+ if (Array.isArray(value)) {
+ configure(combined, value);
+ } else {
+ extension(combined, value);
+ }
+ }
+ return combined;
+}
+function extension(combined, extension2) {
+ let key;
+ for (key in extension2) {
+ if (own$6.call(extension2, key)) {
+ const list2 = key === "canContainEols" || key === "transforms";
+ const maybe = own$6.call(combined, key) ? combined[key] : void 0;
+ const left = maybe || (combined[key] = list2 ? [] : {});
+ const right = extension2[key];
+ if (right) {
+ if (list2) {
+ combined[key] = [...left, ...right];
+ } else {
+ Object.assign(left, right);
+ }
+ }
+ }
+ }
+}
+function defaultOnError(left, right) {
+ if (left) {
+ throw new Error(
+ "Cannot close `" + left.type + "` (" + stringifyPosition({
+ start: left.start,
+ end: left.end
+ }) + "): a different token (`" + right.type + "`, " + stringifyPosition({
+ start: right.start,
+ end: right.end
+ }) + ") is open"
+ );
+ } else {
+ throw new Error(
+ "Cannot close document, a token (`" + right.type + "`, " + stringifyPosition({
+ start: right.start,
+ end: right.end
+ }) + ") is still open"
+ );
+ }
+}
+function remarkParse(options) {
+ const parser = (doc) => {
+ const settings = this.data("settings");
+ return fromMarkdown(
+ doc,
+ Object.assign({}, settings, options, {
+ extensions: this.data("micromarkExtensions") || [],
+ mdastExtensions: this.data("fromMarkdownExtensions") || []
+ })
+ );
+ };
+ Object.assign(this, { Parser: parser });
+}
+const convert$2 = function(test) {
+ if (test === void 0 || test === null) {
+ return ok$1;
+ }
+ if (typeof test === "string") {
+ return typeFactory$1(test);
+ }
+ if (typeof test === "object") {
+ return Array.isArray(test) ? anyFactory$1(test) : propsFactory(test);
+ }
+ if (typeof test === "function") {
+ return castFactory(test);
+ }
+ throw new Error("Expected function, string, or object as test");
+};
+function anyFactory$1(tests) {
+ const checks2 = [];
+ let index2 = -1;
+ while (++index2 < tests.length) {
+ checks2[index2] = convert$2(tests[index2]);
+ }
+ return castFactory(any);
+ function any(...parameters) {
+ let index3 = -1;
+ while (++index3 < checks2.length) {
+ if (checks2[index3].call(this, ...parameters))
+ return true;
+ }
+ return false;
+ }
+}
+function propsFactory(check) {
+ return castFactory(all2);
+ function all2(node) {
+ let key;
+ for (key in check) {
+ if (node[key] !== check[key])
+ return false;
+ }
+ return true;
+ }
+}
+function typeFactory$1(check) {
+ return castFactory(type);
+ function type(node) {
+ return node && node.type === check;
+ }
+}
+function castFactory(check) {
+ return assertion;
+ function assertion(...parameters) {
+ return Boolean(check.call(this, ...parameters));
+ }
+}
+function ok$1() {
+ return true;
+}
+function color(d) {
+ return d;
+}
+const CONTINUE$2 = true;
+const SKIP$2 = "skip";
+const EXIT$2 = false;
+const visitParents$2 = function(tree, test, visitor2, reverse) {
+ if (typeof test === "function" && typeof visitor2 !== "function") {
+ reverse = visitor2;
+ visitor2 = test;
+ test = null;
+ }
+ const is = convert$2(test);
+ const step = reverse ? -1 : 1;
+ factory2(tree, null, [])();
+ function factory2(node, index2, parents) {
+ const value = typeof node === "object" && node !== null ? node : {};
+ let name;
+ if (typeof value.type === "string") {
+ name = typeof value.tagName === "string" ? value.tagName : typeof value.name === "string" ? value.name : void 0;
+ Object.defineProperty(visit2, "name", {
+ value: "node (" + color(value.type + (name ? "<" + name + ">" : "")) + ")"
+ });
+ }
+ return visit2;
+ function visit2() {
+ let result = [];
+ let subresult;
+ let offset;
+ let grandparents;
+ if (!test || is(node, index2, parents[parents.length - 1] || null)) {
+ result = toResult$1(visitor2(node, parents));
+ if (result[0] === EXIT$2) {
+ return result;
+ }
+ }
+ if (node.children && result[0] !== SKIP$2) {
+ offset = (reverse ? node.children.length : -1) + step;
+ grandparents = parents.concat(node);
+ while (offset > -1 && offset < node.children.length) {
+ subresult = factory2(node.children[offset], offset, grandparents)();
+ if (subresult[0] === EXIT$2) {
+ return subresult;
+ }
+ offset = typeof subresult[1] === "number" ? subresult[1] : offset + step;
+ }
+ }
+ return result;
+ }
+ }
+};
+function toResult$1(value) {
+ if (Array.isArray(value)) {
+ return value;
+ }
+ if (typeof value === "number") {
+ return [CONTINUE$2, value];
+ }
+ return [value];
+}
+const visit$2 = function(tree, test, visitor2, reverse) {
+ if (typeof test === "function" && typeof visitor2 !== "function") {
+ reverse = visitor2;
+ visitor2 = test;
+ test = null;
+ }
+ visitParents$2(tree, test, overload, reverse);
+ function overload(node, parents) {
+ const parent = parents[parents.length - 1];
+ return visitor2(
+ node,
+ parent ? parent.children.indexOf(node) : null,
+ parent
+ );
+ }
+};
+const find$1 = /[\t ]*(?:\r?\n|\r)/g;
+function remarkBreaks() {
+ return (tree) => {
+ visit$2(tree, "text", (node, index2, parent) => {
+ const result = [];
+ let start = 0;
+ find$1.lastIndex = 0;
+ let match = find$1.exec(node.value);
+ while (match) {
+ const position2 = match.index;
+ if (start !== position2) {
+ result.push({ type: "text", value: node.value.slice(start, position2) });
+ }
+ result.push({ type: "break" });
+ start = position2 + match[0].length;
+ match = find$1.exec(node.value);
+ }
+ if (result.length > 0 && parent && typeof index2 === "number") {
+ if (start < node.value.length) {
+ result.push({ type: "text", value: node.value.slice(start) });
+ }
+ parent.children.splice(index2, 1, ...result);
+ return index2 + result.length;
+ }
+ });
+ };
+}
+var u = function(type, props, value) {
+ var node = { type: String(type) };
+ if ((value === void 0 || value === null) && (typeof props === "string" || Array.isArray(props))) {
+ value = props;
+ } else {
+ Object.assign(node, props);
+ }
+ if (Array.isArray(value)) {
+ node.children = value;
+ } else if (value !== void 0 && value !== null) {
+ node.value = String(value);
+ }
+ return node;
+};
+const own$5 = {}.hasOwnProperty;
+function unknown(h, node) {
+ const data = node.data || {};
+ if ("value" in node && !(own$5.call(data, "hName") || own$5.call(data, "hProperties") || own$5.call(data, "hChildren"))) {
+ return h.augment(node, u("text", node.value));
+ }
+ return h(node, "div", all(h, node));
+}
+function one(h, node, parent) {
+ const type = node && node.type;
+ let fn;
+ if (!type) {
+ throw new Error("Expected node, got `" + node + "`");
+ }
+ if (own$5.call(h.handlers, type)) {
+ fn = h.handlers[type];
+ } else if (h.passThrough && h.passThrough.includes(type)) {
+ fn = returnNode;
+ } else {
+ fn = h.unknownHandler;
+ }
+ return (typeof fn === "function" ? fn : unknown)(h, node, parent);
+}
+function returnNode(h, node) {
+ return "children" in node ? { ...node, children: all(h, node) } : node;
+}
+function all(h, parent) {
+ const values = [];
+ if ("children" in parent) {
+ const nodes = parent.children;
+ let index2 = -1;
+ while (++index2 < nodes.length) {
+ const result = one(h, nodes[index2], parent);
+ if (result) {
+ if (index2 && nodes[index2 - 1].type === "break") {
+ if (!Array.isArray(result) && result.type === "text") {
+ result.value = result.value.replace(/^\s+/, "");
+ }
+ if (!Array.isArray(result) && result.type === "element") {
+ const head = result.children[0];
+ if (head && head.type === "text") {
+ head.value = head.value.replace(/^\s+/, "");
+ }
+ }
+ }
+ if (Array.isArray(result)) {
+ values.push(...result);
+ } else {
+ values.push(result);
+ }
+ }
+ }
+ }
+ return values;
+}
+const pointStart = point("start");
+const pointEnd = point("end");
+function point(type) {
+ return point2;
+ function point2(node) {
+ const point3 = node && node.position && node.position[type] || {};
+ return {
+ line: point3.line || null,
+ column: point3.column || null,
+ offset: point3.offset > -1 ? point3.offset : null
+ };
+ }
+}
+function generated(node) {
+ return !node || !node.position || !node.position.start || !node.position.start.line || !node.position.start.column || !node.position.end || !node.position.end.line || !node.position.end.column;
+}
+const own$4 = {}.hasOwnProperty;
+function definitions(node) {
+ const cache = /* @__PURE__ */ Object.create(null);
+ if (!node || !node.type) {
+ throw new Error("mdast-util-definitions expected node");
+ }
+ visit$2(node, "definition", (definition3) => {
+ const id = clean(definition3.identifier);
+ if (id && !own$4.call(cache, id)) {
+ cache[id] = definition3;
+ }
+ });
+ return definition2;
+ function definition2(identifier) {
+ const id = clean(identifier);
+ return id && own$4.call(cache, id) ? cache[id] : null;
+ }
+}
+function clean(value) {
+ return String(value || "").toUpperCase();
+}
+const characterReferences = { '"': "quot", "&": "amp", "<": "lt", ">": "gt" };
+function encode$1(value) {
+ return value.replace(/["&<>]/g, replace);
+ function replace(value2) {
+ return "&" + characterReferences[value2] + ";";
+ }
+}
+function sanitizeUri(url, protocol) {
+ const value = encode$1(normalizeUri(url || ""));
+ if (!protocol) {
+ return value;
+ }
+ const colon = value.indexOf(":");
+ const questionMark = value.indexOf("?");
+ const numberSign = value.indexOf("#");
+ const slash = value.indexOf("/");
+ if (colon < 0 || slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign || protocol.test(value.slice(0, colon))) {
+ return value;
+ }
+ return "";
+}
+function normalizeUri(value) {
+ const result = [];
+ let index2 = -1;
+ let start = 0;
+ let skip = 0;
+ while (++index2 < value.length) {
+ const code2 = value.charCodeAt(index2);
+ let replace = "";
+ if (code2 === 37 && asciiAlphanumeric(value.charCodeAt(index2 + 1)) && asciiAlphanumeric(value.charCodeAt(index2 + 2))) {
+ skip = 2;
+ } else if (code2 < 128) {
+ if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code2))) {
+ replace = String.fromCharCode(code2);
+ }
+ } else if (code2 > 55295 && code2 < 57344) {
+ const next = value.charCodeAt(index2 + 1);
+ if (code2 < 56320 && next > 56319 && next < 57344) {
+ replace = String.fromCharCode(code2, next);
+ skip = 1;
+ } else {
+ replace = "\uFFFD";
+ }
+ } else {
+ replace = String.fromCharCode(code2);
+ }
+ if (replace) {
+ result.push(value.slice(start, index2), encodeURIComponent(replace));
+ start = index2 + skip + 1;
+ replace = "";
+ }
+ if (skip) {
+ index2 += skip;
+ skip = 0;
+ }
+ }
+ return result.join("") + value.slice(start);
+}
+function wrap(nodes, loose) {
+ const result = [];
+ let index2 = -1;
+ if (loose) {
+ result.push(u("text", "\n"));
+ }
+ while (++index2 < nodes.length) {
+ if (index2)
+ result.push(u("text", "\n"));
+ result.push(nodes[index2]);
+ }
+ if (loose && nodes.length > 0) {
+ result.push(u("text", "\n"));
+ }
+ return result;
+}
+function footer(h) {
+ let index2 = -1;
+ const listItems = [];
+ while (++index2 < h.footnoteOrder.length) {
+ const def = h.footnoteById[h.footnoteOrder[index2].toUpperCase()];
+ if (!def) {
+ continue;
+ }
+ const content2 = all(h, def);
+ const id = String(def.identifier);
+ const safeId = sanitizeUri(id.toLowerCase());
+ let referenceIndex = 0;
+ const backReferences = [];
+ while (++referenceIndex <= h.footnoteCounts[id]) {
+ const backReference = {
+ type: "element",
+ tagName: "a",
+ properties: {
+ href: "#" + h.clobberPrefix + "fnref-" + safeId + (referenceIndex > 1 ? "-" + referenceIndex : ""),
+ dataFootnoteBackref: true,
+ className: ["data-footnote-backref"],
+ ariaLabel: h.footnoteBackLabel
+ },
+ children: [{ type: "text", value: "\u21A9" }]
+ };
+ if (referenceIndex > 1) {
+ backReference.children.push({
+ type: "element",
+ tagName: "sup",
+ children: [{ type: "text", value: String(referenceIndex) }]
+ });
+ }
+ if (backReferences.length > 0) {
+ backReferences.push({ type: "text", value: " " });
+ }
+ backReferences.push(backReference);
+ }
+ const tail = content2[content2.length - 1];
+ if (tail && tail.type === "element" && tail.tagName === "p") {
+ const tailTail = tail.children[tail.children.length - 1];
+ if (tailTail && tailTail.type === "text") {
+ tailTail.value += " ";
+ } else {
+ tail.children.push({ type: "text", value: " " });
+ }
+ tail.children.push(...backReferences);
+ } else {
+ content2.push(...backReferences);
+ }
+ const listItem2 = {
+ type: "element",
+ tagName: "li",
+ properties: { id: h.clobberPrefix + "fn-" + safeId },
+ children: wrap(content2, true)
+ };
+ if (def.position) {
+ listItem2.position = def.position;
+ }
+ listItems.push(listItem2);
+ }
+ if (listItems.length === 0) {
+ return null;
+ }
+ return {
+ type: "element",
+ tagName: "section",
+ properties: { dataFootnotes: true, className: ["footnotes"] },
+ children: [
+ {
+ type: "element",
+ tagName: h.footnoteLabelTagName,
+ properties: JSON.parse(JSON.stringify(h.footnoteLabelProperties)),
+ children: [u("text", h.footnoteLabel)]
+ },
+ { type: "text", value: "\n" },
+ {
+ type: "element",
+ tagName: "ol",
+ properties: {},
+ children: wrap(listItems, true)
+ },
+ { type: "text", value: "\n" }
+ ]
+ };
+}
+function blockquote(h, node) {
+ return h(node, "blockquote", wrap(all(h, node), true));
+}
+function hardBreak(h, node) {
+ return [h(node, "br"), u("text", "\n")];
+}
+function code(h, node) {
+ const value = node.value ? node.value + "\n" : "";
+ const lang = node.lang && node.lang.match(/^[^ \t]+(?=[ \t]|$)/);
+ const props = {};
+ if (lang) {
+ props.className = ["language-" + lang];
+ }
+ const code2 = h(node, "code", props, [u("text", value)]);
+ if (node.meta) {
+ code2.data = { meta: node.meta };
+ }
+ return h(node.position, "pre", [code2]);
+}
+function strikethrough(h, node) {
+ return h(node, "del", all(h, node));
+}
+function emphasis(h, node) {
+ return h(node, "em", all(h, node));
+}
+function footnoteReference(h, node) {
+ const id = String(node.identifier);
+ const safeId = sanitizeUri(id.toLowerCase());
+ const index2 = h.footnoteOrder.indexOf(id);
+ let counter;
+ if (index2 === -1) {
+ h.footnoteOrder.push(id);
+ h.footnoteCounts[id] = 1;
+ counter = h.footnoteOrder.length;
+ } else {
+ h.footnoteCounts[id]++;
+ counter = index2 + 1;
+ }
+ const reuseCounter = h.footnoteCounts[id];
+ return h(node, "sup", [
+ h(
+ node.position,
+ "a",
+ {
+ href: "#" + h.clobberPrefix + "fn-" + safeId,
+ id: h.clobberPrefix + "fnref-" + safeId + (reuseCounter > 1 ? "-" + reuseCounter : ""),
+ dataFootnoteRef: true,
+ ariaDescribedBy: "footnote-label"
+ },
+ [u("text", String(counter))]
+ )
+ ]);
+}
+function footnote(h, node) {
+ const footnoteById = h.footnoteById;
+ let no = 1;
+ while (no in footnoteById)
+ no++;
+ const identifier = String(no);
+ footnoteById[identifier] = {
+ type: "footnoteDefinition",
+ identifier,
+ children: [{ type: "paragraph", children: node.children }],
+ position: node.position
+ };
+ return footnoteReference(h, {
+ type: "footnoteReference",
+ identifier,
+ position: node.position
+ });
+}
+function heading(h, node) {
+ return h(node, "h" + node.depth, all(h, node));
+}
+function html$2(h, node) {
+ return h.dangerous ? h.augment(node, u("raw", node.value)) : null;
+}
+var encodeCache = {};
+function getEncodeCache(exclude) {
+ var i, ch, cache = encodeCache[exclude];
+ if (cache) {
+ return cache;
+ }
+ cache = encodeCache[exclude] = [];
+ for (i = 0; i < 128; i++) {
+ ch = String.fromCharCode(i);
+ if (/^[0-9a-z]$/i.test(ch)) {
+ cache.push(ch);
+ } else {
+ cache.push("%" + ("0" + i.toString(16).toUpperCase()).slice(-2));
+ }
+ }
+ for (i = 0; i < exclude.length; i++) {
+ cache[exclude.charCodeAt(i)] = exclude[i];
+ }
+ return cache;
+}
+function encode(string2, exclude, keepEscaped) {
+ var i, l, code2, nextCode, cache, result = "";
+ if (typeof exclude !== "string") {
+ keepEscaped = exclude;
+ exclude = encode.defaultChars;
+ }
+ if (typeof keepEscaped === "undefined") {
+ keepEscaped = true;
+ }
+ cache = getEncodeCache(exclude);
+ for (i = 0, l = string2.length; i < l; i++) {
+ code2 = string2.charCodeAt(i);
+ if (keepEscaped && code2 === 37 && i + 2 < l) {
+ if (/^[0-9a-f]{2}$/i.test(string2.slice(i + 1, i + 3))) {
+ result += string2.slice(i, i + 3);
+ i += 2;
+ continue;
+ }
+ }
+ if (code2 < 128) {
+ result += cache[code2];
+ continue;
+ }
+ if (code2 >= 55296 && code2 <= 57343) {
+ if (code2 >= 55296 && code2 <= 56319 && i + 1 < l) {
+ nextCode = string2.charCodeAt(i + 1);
+ if (nextCode >= 56320 && nextCode <= 57343) {
+ result += encodeURIComponent(string2[i] + string2[i + 1]);
+ i++;
+ continue;
+ }
+ }
+ result += "%EF%BF%BD";
+ continue;
+ }
+ result += encodeURIComponent(string2[i]);
+ }
+ return result;
+}
+encode.defaultChars = ";/?:@&=+$,-_.!~*'()#";
+encode.componentChars = "-_.!~*'()";
+var encode_1 = encode;
+function revert(h, node) {
+ const subtype = node.referenceType;
+ let suffix = "]";
+ if (subtype === "collapsed") {
+ suffix += "[]";
+ } else if (subtype === "full") {
+ suffix += "[" + (node.label || node.identifier) + "]";
+ }
+ if (node.type === "imageReference") {
+ return u("text", "![" + node.alt + suffix);
+ }
+ const contents = all(h, node);
+ const head = contents[0];
+ if (head && head.type === "text") {
+ head.value = "[" + head.value;
+ } else {
+ contents.unshift(u("text", "["));
+ }
+ const tail = contents[contents.length - 1];
+ if (tail && tail.type === "text") {
+ tail.value += suffix;
+ } else {
+ contents.push(u("text", suffix));
+ }
+ return contents;
+}
+function imageReference(h, node) {
+ const def = h.definition(node.identifier);
+ if (!def) {
+ return revert(h, node);
+ }
+ const props = { src: encode_1(def.url || ""), alt: node.alt };
+ if (def.title !== null && def.title !== void 0) {
+ props.title = def.title;
+ }
+ return h(node, "img", props);
+}
+function image(h, node) {
+ const props = { src: encode_1(node.url), alt: node.alt };
+ if (node.title !== null && node.title !== void 0) {
+ props.title = node.title;
+ }
+ return h(node, "img", props);
+}
+function inlineCode(h, node) {
+ return h(node, "code", [u("text", node.value.replace(/\r?\n|\r/g, " "))]);
+}
+function linkReference(h, node) {
+ const def = h.definition(node.identifier);
+ if (!def) {
+ return revert(h, node);
+ }
+ const props = { href: encode_1(def.url || "") };
+ if (def.title !== null && def.title !== void 0) {
+ props.title = def.title;
+ }
+ return h(node, "a", props, all(h, node));
+}
+function link(h, node) {
+ const props = { href: encode_1(node.url) };
+ if (node.title !== null && node.title !== void 0) {
+ props.title = node.title;
+ }
+ return h(node, "a", props, all(h, node));
+}
+function listItem(h, node, parent) {
+ const result = all(h, node);
+ const loose = parent ? listLoose(parent) : listItemLoose(node);
+ const props = {};
+ const wrapped = [];
+ if (typeof node.checked === "boolean") {
+ let paragraph2;
+ if (result[0] && result[0].type === "element" && result[0].tagName === "p") {
+ paragraph2 = result[0];
+ } else {
+ paragraph2 = h(null, "p", []);
+ result.unshift(paragraph2);
+ }
+ if (paragraph2.children.length > 0) {
+ paragraph2.children.unshift(u("text", " "));
+ }
+ paragraph2.children.unshift(
+ h(null, "input", {
+ type: "checkbox",
+ checked: node.checked,
+ disabled: true
+ })
+ );
+ props.className = ["task-list-item"];
+ }
+ let index2 = -1;
+ while (++index2 < result.length) {
+ const child = result[index2];
+ if (loose || index2 !== 0 || child.type !== "element" || child.tagName !== "p") {
+ wrapped.push(u("text", "\n"));
+ }
+ if (child.type === "element" && child.tagName === "p" && !loose) {
+ wrapped.push(...child.children);
+ } else {
+ wrapped.push(child);
+ }
+ }
+ const tail = result[result.length - 1];
+ if (tail && (loose || !("tagName" in tail) || tail.tagName !== "p")) {
+ wrapped.push(u("text", "\n"));
+ }
+ return h(node, "li", props, wrapped);
+}
+function listLoose(node) {
+ let loose = node.spread;
+ const children = node.children;
+ let index2 = -1;
+ while (!loose && ++index2 < children.length) {
+ loose = listItemLoose(children[index2]);
+ }
+ return Boolean(loose);
+}
+function listItemLoose(node) {
+ const spread = node.spread;
+ return spread === void 0 || spread === null ? node.children.length > 1 : spread;
+}
+function list(h, node) {
+ const props = {};
+ const name = node.ordered ? "ol" : "ul";
+ const items = all(h, node);
+ let index2 = -1;
+ if (typeof node.start === "number" && node.start !== 1) {
+ props.start = node.start;
+ }
+ while (++index2 < items.length) {
+ const item = items[index2];
+ if (item.type === "element" && item.tagName === "li" && item.properties && Array.isArray(item.properties.className) && item.properties.className.includes("task-list-item")) {
+ props.className = ["contains-task-list"];
+ break;
+ }
+ }
+ return h(node, name, props, wrap(items, true));
+}
+function paragraph(h, node) {
+ return h(node, "p", all(h, node));
+}
+function root$1(h, node) {
+ return h.augment(node, u("root", wrap(all(h, node))));
+}
+function strong(h, node) {
+ return h(node, "strong", all(h, node));
+}
+function table(h, node) {
+ const rows = node.children;
+ let index2 = -1;
+ const align = node.align || [];
+ const result = [];
+ while (++index2 < rows.length) {
+ const row = rows[index2].children;
+ const name = index2 === 0 ? "th" : "td";
+ const out = [];
+ let cellIndex = -1;
+ const length = node.align ? align.length : row.length;
+ while (++cellIndex < length) {
+ const cell = row[cellIndex];
+ out.push(
+ h(cell, name, { align: align[cellIndex] }, cell ? all(h, cell) : [])
+ );
+ }
+ result[index2] = h(rows[index2], "tr", wrap(out, true));
+ }
+ return h(
+ node,
+ "table",
+ wrap(
+ [h(result[0].position, "thead", wrap([result[0]], true))].concat(
+ result[1] ? h(
+ {
+ start: pointStart(result[1]),
+ end: pointEnd(result[result.length - 1])
+ },
+ "tbody",
+ wrap(result.slice(1), true)
+ ) : []
+ ),
+ true
+ )
+ );
+}
+const tab = 9;
+const space = 32;
+function trimLines(value) {
+ const source = String(value);
+ const search2 = /\r?\n|\r/g;
+ let match = search2.exec(source);
+ let last = 0;
+ const lines = [];
+ while (match) {
+ lines.push(
+ trimLine(source.slice(last, match.index), last > 0, true),
+ match[0]
+ );
+ last = match.index + match[0].length;
+ match = search2.exec(source);
+ }
+ lines.push(trimLine(source.slice(last), last > 0, false));
+ return lines.join("");
+}
+function trimLine(value, start, end) {
+ let startIndex = 0;
+ let endIndex = value.length;
+ if (start) {
+ let code2 = value.codePointAt(startIndex);
+ while (code2 === tab || code2 === space) {
+ startIndex++;
+ code2 = value.codePointAt(startIndex);
+ }
+ }
+ if (end) {
+ let code2 = value.codePointAt(endIndex - 1);
+ while (code2 === tab || code2 === space) {
+ endIndex--;
+ code2 = value.codePointAt(endIndex - 1);
+ }
+ }
+ return endIndex > startIndex ? value.slice(startIndex, endIndex) : "";
+}
+function text$1(h, node) {
+ return h.augment(node, u("text", trimLines(String(node.value))));
+}
+function thematicBreak(h, node) {
+ return h(node, "hr");
+}
+const handlers = {
+ blockquote,
+ break: hardBreak,
+ code,
+ delete: strikethrough,
+ emphasis,
+ footnoteReference,
+ footnote,
+ heading,
+ html: html$2,
+ imageReference,
+ image,
+ inlineCode,
+ linkReference,
+ link,
+ listItem,
+ list,
+ paragraph,
+ root: root$1,
+ strong,
+ table,
+ text: text$1,
+ thematicBreak,
+ toml: ignore,
+ yaml: ignore,
+ definition: ignore,
+ footnoteDefinition: ignore
+};
+function ignore() {
+ return null;
+}
+const own$3 = {}.hasOwnProperty;
+function factory(tree, options) {
+ const settings = options || {};
+ const dangerous = settings.allowDangerousHtml || false;
+ const footnoteById = {};
+ h.dangerous = dangerous;
+ h.clobberPrefix = settings.clobberPrefix === void 0 || settings.clobberPrefix === null ? "user-content-" : settings.clobberPrefix;
+ h.footnoteLabel = settings.footnoteLabel || "Footnotes";
+ h.footnoteLabelTagName = settings.footnoteLabelTagName || "h2";
+ h.footnoteLabelProperties = settings.footnoteLabelProperties || {
+ id: "footnote-label",
+ className: ["sr-only"]
+ };
+ h.footnoteBackLabel = settings.footnoteBackLabel || "Back to content";
+ h.definition = definitions(tree);
+ h.footnoteById = footnoteById;
+ h.footnoteOrder = [];
+ h.footnoteCounts = {};
+ h.augment = augment;
+ h.handlers = { ...handlers, ...settings.handlers };
+ h.unknownHandler = settings.unknownHandler;
+ h.passThrough = settings.passThrough;
+ visit$2(tree, "footnoteDefinition", (definition2) => {
+ const id = String(definition2.identifier).toUpperCase();
+ if (!own$3.call(footnoteById, id)) {
+ footnoteById[id] = definition2;
+ }
+ });
+ return h;
+ function augment(left, right) {
+ if (left && "data" in left && left.data) {
+ const data = left.data;
+ if (data.hName) {
+ if (right.type !== "element") {
+ right = {
+ type: "element",
+ tagName: "",
+ properties: {},
+ children: []
+ };
+ }
+ right.tagName = data.hName;
+ }
+ if (right.type === "element" && data.hProperties) {
+ right.properties = { ...right.properties, ...data.hProperties };
+ }
+ if ("children" in right && right.children && data.hChildren) {
+ right.children = data.hChildren;
+ }
+ }
+ if (left) {
+ const ctx = "type" in left ? left : { position: left };
+ if (!generated(ctx)) {
+ right.position = { start: pointStart(ctx), end: pointEnd(ctx) };
+ }
+ }
+ return right;
+ }
+ function h(node, tagName, props, children) {
+ if (Array.isArray(props)) {
+ children = props;
+ props = {};
+ }
+ return augment(node, {
+ type: "element",
+ tagName,
+ properties: props || {},
+ children: children || []
+ });
+ }
+}
+function toHast(tree, options) {
+ const h = factory(tree, options);
+ const node = one(h, tree, null);
+ const foot = footer(h);
+ if (foot) {
+ node.children.push(u("text", "\n"), foot);
+ }
+ return Array.isArray(node) ? { type: "root", children: node } : node;
+}
+const remarkRehype = function(destination, options) {
+ return destination && "run" in destination ? bridge(destination, options) : mutate(destination || options);
+};
+const remark2rehype = remarkRehype;
+function bridge(destination, options) {
+ return (node, file, next) => {
+ destination.run(toHast(node, options), file, (error) => {
+ next(error);
+ });
+ };
+}
+function mutate(options) {
+ return (node) => toHast(node, options);
+}
+class Schema {
+ constructor(property, normal, space2) {
+ this.property = property;
+ this.normal = normal;
+ if (space2) {
+ this.space = space2;
+ }
+ }
+}
+Schema.prototype.property = {};
+Schema.prototype.normal = {};
+Schema.prototype.space = null;
+function merge(definitions2, space2) {
+ const property = {};
+ const normal = {};
+ let index2 = -1;
+ while (++index2 < definitions2.length) {
+ Object.assign(property, definitions2[index2].property);
+ Object.assign(normal, definitions2[index2].normal);
+ }
+ return new Schema(property, normal, space2);
+}
+function normalize(value) {
+ return value.toLowerCase();
+}
+class Info {
+ constructor(property, attribute) {
+ this.property = property;
+ this.attribute = attribute;
+ }
+}
+Info.prototype.space = null;
+Info.prototype.boolean = false;
+Info.prototype.booleanish = false;
+Info.prototype.overloadedBoolean = false;
+Info.prototype.number = false;
+Info.prototype.commaSeparated = false;
+Info.prototype.spaceSeparated = false;
+Info.prototype.commaOrSpaceSeparated = false;
+Info.prototype.mustUseProperty = false;
+Info.prototype.defined = false;
+let powers = 0;
+const boolean = increment();
+const booleanish = increment();
+const overloadedBoolean = increment();
+const number = increment();
+const spaceSeparated = increment();
+const commaSeparated = increment();
+const commaOrSpaceSeparated = increment();
+function increment() {
+ return 2 ** ++powers;
+}
+const types = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
+ __proto__: null,
+ boolean,
+ booleanish,
+ overloadedBoolean,
+ number,
+ spaceSeparated,
+ commaSeparated,
+ commaOrSpaceSeparated
+}, Symbol.toStringTag, { value: "Module" }));
+const checks = Object.keys(types);
+class DefinedInfo extends Info {
+ constructor(property, attribute, mask, space2) {
+ let index2 = -1;
+ super(property, attribute);
+ mark(this, "space", space2);
+ if (typeof mask === "number") {
+ while (++index2 < checks.length) {
+ const check = checks[index2];
+ mark(this, checks[index2], (mask & types[check]) === types[check]);
+ }
+ }
+ }
+}
+DefinedInfo.prototype.defined = true;
+function mark(values, key, value) {
+ if (value) {
+ values[key] = value;
+ }
+}
+const own$2 = {}.hasOwnProperty;
+function create(definition2) {
+ const property = {};
+ const normal = {};
+ let prop;
+ for (prop in definition2.properties) {
+ if (own$2.call(definition2.properties, prop)) {
+ const value = definition2.properties[prop];
+ const info = new DefinedInfo(
+ prop,
+ definition2.transform(definition2.attributes || {}, prop),
+ value,
+ definition2.space
+ );
+ if (definition2.mustUseProperty && definition2.mustUseProperty.includes(prop)) {
+ info.mustUseProperty = true;
+ }
+ property[prop] = info;
+ normal[normalize(prop)] = prop;
+ normal[normalize(info.attribute)] = prop;
+ }
+ }
+ return new Schema(property, normal, definition2.space);
+}
+const xlink = create({
+ space: "xlink",
+ transform(_, prop) {
+ return "xlink:" + prop.slice(5).toLowerCase();
+ },
+ properties: {
+ xLinkActuate: null,
+ xLinkArcRole: null,
+ xLinkHref: null,
+ xLinkRole: null,
+ xLinkShow: null,
+ xLinkTitle: null,
+ xLinkType: null
+ }
+});
+const xml = create({
+ space: "xml",
+ transform(_, prop) {
+ return "xml:" + prop.slice(3).toLowerCase();
+ },
+ properties: { xmlLang: null, xmlBase: null, xmlSpace: null }
+});
+function caseSensitiveTransform(attributes, attribute) {
+ return attribute in attributes ? attributes[attribute] : attribute;
+}
+function caseInsensitiveTransform(attributes, property) {
+ return caseSensitiveTransform(attributes, property.toLowerCase());
+}
+const xmlns = create({
+ space: "xmlns",
+ attributes: { xmlnsxlink: "xmlns:xlink" },
+ transform: caseInsensitiveTransform,
+ properties: { xmlns: null, xmlnsXLink: null }
+});
+const aria = create({
+ transform(_, prop) {
+ return prop === "role" ? prop : "aria-" + prop.slice(4).toLowerCase();
+ },
+ properties: {
+ ariaActiveDescendant: null,
+ ariaAtomic: booleanish,
+ ariaAutoComplete: null,
+ ariaBusy: booleanish,
+ ariaChecked: booleanish,
+ ariaColCount: number,
+ ariaColIndex: number,
+ ariaColSpan: number,
+ ariaControls: spaceSeparated,
+ ariaCurrent: null,
+ ariaDescribedBy: spaceSeparated,
+ ariaDetails: null,
+ ariaDisabled: booleanish,
+ ariaDropEffect: spaceSeparated,
+ ariaErrorMessage: null,
+ ariaExpanded: booleanish,
+ ariaFlowTo: spaceSeparated,
+ ariaGrabbed: booleanish,
+ ariaHasPopup: null,
+ ariaHidden: booleanish,
+ ariaInvalid: null,
+ ariaKeyShortcuts: null,
+ ariaLabel: null,
+ ariaLabelledBy: spaceSeparated,
+ ariaLevel: number,
+ ariaLive: null,
+ ariaModal: booleanish,
+ ariaMultiLine: booleanish,
+ ariaMultiSelectable: booleanish,
+ ariaOrientation: null,
+ ariaOwns: spaceSeparated,
+ ariaPlaceholder: null,
+ ariaPosInSet: number,
+ ariaPressed: booleanish,
+ ariaReadOnly: booleanish,
+ ariaRelevant: null,
+ ariaRequired: booleanish,
+ ariaRoleDescription: spaceSeparated,
+ ariaRowCount: number,
+ ariaRowIndex: number,
+ ariaRowSpan: number,
+ ariaSelected: booleanish,
+ ariaSetSize: number,
+ ariaSort: null,
+ ariaValueMax: number,
+ ariaValueMin: number,
+ ariaValueNow: number,
+ ariaValueText: null,
+ role: null
+ }
+});
+const html$1 = create({
+ space: "html",
+ attributes: {
+ acceptcharset: "accept-charset",
+ classname: "class",
+ htmlfor: "for",
+ httpequiv: "http-equiv"
+ },
+ transform: caseInsensitiveTransform,
+ mustUseProperty: ["checked", "multiple", "muted", "selected"],
+ properties: {
+ abbr: null,
+ accept: commaSeparated,
+ acceptCharset: spaceSeparated,
+ accessKey: spaceSeparated,
+ action: null,
+ allow: null,
+ allowFullScreen: boolean,
+ allowPaymentRequest: boolean,
+ allowUserMedia: boolean,
+ alt: null,
+ as: null,
+ async: boolean,
+ autoCapitalize: null,
+ autoComplete: spaceSeparated,
+ autoFocus: boolean,
+ autoPlay: boolean,
+ capture: boolean,
+ charSet: null,
+ checked: boolean,
+ cite: null,
+ className: spaceSeparated,
+ cols: number,
+ colSpan: null,
+ content: null,
+ contentEditable: booleanish,
+ controls: boolean,
+ controlsList: spaceSeparated,
+ coords: number | commaSeparated,
+ crossOrigin: null,
+ data: null,
+ dateTime: null,
+ decoding: null,
+ default: boolean,
+ defer: boolean,
+ dir: null,
+ dirName: null,
+ disabled: boolean,
+ download: overloadedBoolean,
+ draggable: booleanish,
+ encType: null,
+ enterKeyHint: null,
+ form: null,
+ formAction: null,
+ formEncType: null,
+ formMethod: null,
+ formNoValidate: boolean,
+ formTarget: null,
+ headers: spaceSeparated,
+ height: number,
+ hidden: boolean,
+ high: number,
+ href: null,
+ hrefLang: null,
+ htmlFor: spaceSeparated,
+ httpEquiv: spaceSeparated,
+ id: null,
+ imageSizes: null,
+ imageSrcSet: null,
+ inputMode: null,
+ integrity: null,
+ is: null,
+ isMap: boolean,
+ itemId: null,
+ itemProp: spaceSeparated,
+ itemRef: spaceSeparated,
+ itemScope: boolean,
+ itemType: spaceSeparated,
+ kind: null,
+ label: null,
+ lang: null,
+ language: null,
+ list: null,
+ loading: null,
+ loop: boolean,
+ low: number,
+ manifest: null,
+ max: null,
+ maxLength: number,
+ media: null,
+ method: null,
+ min: null,
+ minLength: number,
+ multiple: boolean,
+ muted: boolean,
+ name: null,
+ nonce: null,
+ noModule: boolean,
+ noValidate: boolean,
+ onAbort: null,
+ onAfterPrint: null,
+ onAuxClick: null,
+ onBeforePrint: null,
+ onBeforeUnload: null,
+ onBlur: null,
+ onCancel: null,
+ onCanPlay: null,
+ onCanPlayThrough: null,
+ onChange: null,
+ onClick: null,
+ onClose: null,
+ onContextLost: null,
+ onContextMenu: null,
+ onContextRestored: null,
+ onCopy: null,
+ onCueChange: null,
+ onCut: null,
+ onDblClick: null,
+ onDrag: null,
+ onDragEnd: null,
+ onDragEnter: null,
+ onDragExit: null,
+ onDragLeave: null,
+ onDragOver: null,
+ onDragStart: null,
+ onDrop: null,
+ onDurationChange: null,
+ onEmptied: null,
+ onEnded: null,
+ onError: null,
+ onFocus: null,
+ onFormData: null,
+ onHashChange: null,
+ onInput: null,
+ onInvalid: null,
+ onKeyDown: null,
+ onKeyPress: null,
+ onKeyUp: null,
+ onLanguageChange: null,
+ onLoad: null,
+ onLoadedData: null,
+ onLoadedMetadata: null,
+ onLoadEnd: null,
+ onLoadStart: null,
+ onMessage: null,
+ onMessageError: null,
+ onMouseDown: null,
+ onMouseEnter: null,
+ onMouseLeave: null,
+ onMouseMove: null,
+ onMouseOut: null,
+ onMouseOver: null,
+ onMouseUp: null,
+ onOffline: null,
+ onOnline: null,
+ onPageHide: null,
+ onPageShow: null,
+ onPaste: null,
+ onPause: null,
+ onPlay: null,
+ onPlaying: null,
+ onPopState: null,
+ onProgress: null,
+ onRateChange: null,
+ onRejectionHandled: null,
+ onReset: null,
+ onResize: null,
+ onScroll: null,
+ onSecurityPolicyViolation: null,
+ onSeeked: null,
+ onSeeking: null,
+ onSelect: null,
+ onSlotChange: null,
+ onStalled: null,
+ onStorage: null,
+ onSubmit: null,
+ onSuspend: null,
+ onTimeUpdate: null,
+ onToggle: null,
+ onUnhandledRejection: null,
+ onUnload: null,
+ onVolumeChange: null,
+ onWaiting: null,
+ onWheel: null,
+ open: boolean,
+ optimum: number,
+ pattern: null,
+ ping: spaceSeparated,
+ placeholder: null,
+ playsInline: boolean,
+ poster: null,
+ preload: null,
+ readOnly: boolean,
+ referrerPolicy: null,
+ rel: spaceSeparated,
+ required: boolean,
+ reversed: boolean,
+ rows: number,
+ rowSpan: number,
+ sandbox: spaceSeparated,
+ scope: null,
+ scoped: boolean,
+ seamless: boolean,
+ selected: boolean,
+ shape: null,
+ size: number,
+ sizes: null,
+ slot: null,
+ span: number,
+ spellCheck: booleanish,
+ src: null,
+ srcDoc: null,
+ srcLang: null,
+ srcSet: null,
+ start: number,
+ step: null,
+ style: null,
+ tabIndex: number,
+ target: null,
+ title: null,
+ translate: null,
+ type: null,
+ typeMustMatch: boolean,
+ useMap: null,
+ value: booleanish,
+ width: number,
+ wrap: null,
+ align: null,
+ aLink: null,
+ archive: spaceSeparated,
+ axis: null,
+ background: null,
+ bgColor: null,
+ border: number,
+ borderColor: null,
+ bottomMargin: number,
+ cellPadding: null,
+ cellSpacing: null,
+ char: null,
+ charOff: null,
+ classId: null,
+ clear: null,
+ code: null,
+ codeBase: null,
+ codeType: null,
+ color: null,
+ compact: boolean,
+ declare: boolean,
+ event: null,
+ face: null,
+ frame: null,
+ frameBorder: null,
+ hSpace: number,
+ leftMargin: number,
+ link: null,
+ longDesc: null,
+ lowSrc: null,
+ marginHeight: number,
+ marginWidth: number,
+ noResize: boolean,
+ noHref: boolean,
+ noShade: boolean,
+ noWrap: boolean,
+ object: null,
+ profile: null,
+ prompt: null,
+ rev: null,
+ rightMargin: number,
+ rules: null,
+ scheme: null,
+ scrolling: booleanish,
+ standby: null,
+ summary: null,
+ text: null,
+ topMargin: number,
+ valueType: null,
+ version: null,
+ vAlign: null,
+ vLink: null,
+ vSpace: number,
+ allowTransparency: null,
+ autoCorrect: null,
+ autoSave: null,
+ disablePictureInPicture: boolean,
+ disableRemotePlayback: boolean,
+ prefix: null,
+ property: null,
+ results: number,
+ security: null,
+ unselectable: null
+ }
+});
+const svg$1 = create({
+ space: "svg",
+ attributes: {
+ accentHeight: "accent-height",
+ alignmentBaseline: "alignment-baseline",
+ arabicForm: "arabic-form",
+ baselineShift: "baseline-shift",
+ capHeight: "cap-height",
+ className: "class",
+ clipPath: "clip-path",
+ clipRule: "clip-rule",
+ colorInterpolation: "color-interpolation",
+ colorInterpolationFilters: "color-interpolation-filters",
+ colorProfile: "color-profile",
+ colorRendering: "color-rendering",
+ crossOrigin: "crossorigin",
+ dataType: "datatype",
+ dominantBaseline: "dominant-baseline",
+ enableBackground: "enable-background",
+ fillOpacity: "fill-opacity",
+ fillRule: "fill-rule",
+ floodColor: "flood-color",
+ floodOpacity: "flood-opacity",
+ fontFamily: "font-family",
+ fontSize: "font-size",
+ fontSizeAdjust: "font-size-adjust",
+ fontStretch: "font-stretch",
+ fontStyle: "font-style",
+ fontVariant: "font-variant",
+ fontWeight: "font-weight",
+ glyphName: "glyph-name",
+ glyphOrientationHorizontal: "glyph-orientation-horizontal",
+ glyphOrientationVertical: "glyph-orientation-vertical",
+ hrefLang: "hreflang",
+ horizAdvX: "horiz-adv-x",
+ horizOriginX: "horiz-origin-x",
+ horizOriginY: "horiz-origin-y",
+ imageRendering: "image-rendering",
+ letterSpacing: "letter-spacing",
+ lightingColor: "lighting-color",
+ markerEnd: "marker-end",
+ markerMid: "marker-mid",
+ markerStart: "marker-start",
+ navDown: "nav-down",
+ navDownLeft: "nav-down-left",
+ navDownRight: "nav-down-right",
+ navLeft: "nav-left",
+ navNext: "nav-next",
+ navPrev: "nav-prev",
+ navRight: "nav-right",
+ navUp: "nav-up",
+ navUpLeft: "nav-up-left",
+ navUpRight: "nav-up-right",
+ onAbort: "onabort",
+ onActivate: "onactivate",
+ onAfterPrint: "onafterprint",
+ onBeforePrint: "onbeforeprint",
+ onBegin: "onbegin",
+ onCancel: "oncancel",
+ onCanPlay: "oncanplay",
+ onCanPlayThrough: "oncanplaythrough",
+ onChange: "onchange",
+ onClick: "onclick",
+ onClose: "onclose",
+ onCopy: "oncopy",
+ onCueChange: "oncuechange",
+ onCut: "oncut",
+ onDblClick: "ondblclick",
+ onDrag: "ondrag",
+ onDragEnd: "ondragend",
+ onDragEnter: "ondragenter",
+ onDragExit: "ondragexit",
+ onDragLeave: "ondragleave",
+ onDragOver: "ondragover",
+ onDragStart: "ondragstart",
+ onDrop: "ondrop",
+ onDurationChange: "ondurationchange",
+ onEmptied: "onemptied",
+ onEnd: "onend",
+ onEnded: "onended",
+ onError: "onerror",
+ onFocus: "onfocus",
+ onFocusIn: "onfocusin",
+ onFocusOut: "onfocusout",
+ onHashChange: "onhashchange",
+ onInput: "oninput",
+ onInvalid: "oninvalid",
+ onKeyDown: "onkeydown",
+ onKeyPress: "onkeypress",
+ onKeyUp: "onkeyup",
+ onLoad: "onload",
+ onLoadedData: "onloadeddata",
+ onLoadedMetadata: "onloadedmetadata",
+ onLoadStart: "onloadstart",
+ onMessage: "onmessage",
+ onMouseDown: "onmousedown",
+ onMouseEnter: "onmouseenter",
+ onMouseLeave: "onmouseleave",
+ onMouseMove: "onmousemove",
+ onMouseOut: "onmouseout",
+ onMouseOver: "onmouseover",
+ onMouseUp: "onmouseup",
+ onMouseWheel: "onmousewheel",
+ onOffline: "onoffline",
+ onOnline: "ononline",
+ onPageHide: "onpagehide",
+ onPageShow: "onpageshow",
+ onPaste: "onpaste",
+ onPause: "onpause",
+ onPlay: "onplay",
+ onPlaying: "onplaying",
+ onPopState: "onpopstate",
+ onProgress: "onprogress",
+ onRateChange: "onratechange",
+ onRepeat: "onrepeat",
+ onReset: "onreset",
+ onResize: "onresize",
+ onScroll: "onscroll",
+ onSeeked: "onseeked",
+ onSeeking: "onseeking",
+ onSelect: "onselect",
+ onShow: "onshow",
+ onStalled: "onstalled",
+ onStorage: "onstorage",
+ onSubmit: "onsubmit",
+ onSuspend: "onsuspend",
+ onTimeUpdate: "ontimeupdate",
+ onToggle: "ontoggle",
+ onUnload: "onunload",
+ onVolumeChange: "onvolumechange",
+ onWaiting: "onwaiting",
+ onZoom: "onzoom",
+ overlinePosition: "overline-position",
+ overlineThickness: "overline-thickness",
+ paintOrder: "paint-order",
+ panose1: "panose-1",
+ pointerEvents: "pointer-events",
+ referrerPolicy: "referrerpolicy",
+ renderingIntent: "rendering-intent",
+ shapeRendering: "shape-rendering",
+ stopColor: "stop-color",
+ stopOpacity: "stop-opacity",
+ strikethroughPosition: "strikethrough-position",
+ strikethroughThickness: "strikethrough-thickness",
+ strokeDashArray: "stroke-dasharray",
+ strokeDashOffset: "stroke-dashoffset",
+ strokeLineCap: "stroke-linecap",
+ strokeLineJoin: "stroke-linejoin",
+ strokeMiterLimit: "stroke-miterlimit",
+ strokeOpacity: "stroke-opacity",
+ strokeWidth: "stroke-width",
+ tabIndex: "tabindex",
+ textAnchor: "text-anchor",
+ textDecoration: "text-decoration",
+ textRendering: "text-rendering",
+ typeOf: "typeof",
+ underlinePosition: "underline-position",
+ underlineThickness: "underline-thickness",
+ unicodeBidi: "unicode-bidi",
+ unicodeRange: "unicode-range",
+ unitsPerEm: "units-per-em",
+ vAlphabetic: "v-alphabetic",
+ vHanging: "v-hanging",
+ vIdeographic: "v-ideographic",
+ vMathematical: "v-mathematical",
+ vectorEffect: "vector-effect",
+ vertAdvY: "vert-adv-y",
+ vertOriginX: "vert-origin-x",
+ vertOriginY: "vert-origin-y",
+ wordSpacing: "word-spacing",
+ writingMode: "writing-mode",
+ xHeight: "x-height",
+ playbackOrder: "playbackorder",
+ timelineBegin: "timelinebegin"
+ },
+ transform: caseSensitiveTransform,
+ properties: {
+ about: commaOrSpaceSeparated,
+ accentHeight: number,
+ accumulate: null,
+ additive: null,
+ alignmentBaseline: null,
+ alphabetic: number,
+ amplitude: number,
+ arabicForm: null,
+ ascent: number,
+ attributeName: null,
+ attributeType: null,
+ azimuth: number,
+ bandwidth: null,
+ baselineShift: null,
+ baseFrequency: null,
+ baseProfile: null,
+ bbox: null,
+ begin: null,
+ bias: number,
+ by: null,
+ calcMode: null,
+ capHeight: number,
+ className: spaceSeparated,
+ clip: null,
+ clipPath: null,
+ clipPathUnits: null,
+ clipRule: null,
+ color: null,
+ colorInterpolation: null,
+ colorInterpolationFilters: null,
+ colorProfile: null,
+ colorRendering: null,
+ content: null,
+ contentScriptType: null,
+ contentStyleType: null,
+ crossOrigin: null,
+ cursor: null,
+ cx: null,
+ cy: null,
+ d: null,
+ dataType: null,
+ defaultAction: null,
+ descent: number,
+ diffuseConstant: number,
+ direction: null,
+ display: null,
+ dur: null,
+ divisor: number,
+ dominantBaseline: null,
+ download: boolean,
+ dx: null,
+ dy: null,
+ edgeMode: null,
+ editable: null,
+ elevation: number,
+ enableBackground: null,
+ end: null,
+ event: null,
+ exponent: number,
+ externalResourcesRequired: null,
+ fill: null,
+ fillOpacity: number,
+ fillRule: null,
+ filter: null,
+ filterRes: null,
+ filterUnits: null,
+ floodColor: null,
+ floodOpacity: null,
+ focusable: null,
+ focusHighlight: null,
+ fontFamily: null,
+ fontSize: null,
+ fontSizeAdjust: null,
+ fontStretch: null,
+ fontStyle: null,
+ fontVariant: null,
+ fontWeight: null,
+ format: null,
+ fr: null,
+ from: null,
+ fx: null,
+ fy: null,
+ g1: commaSeparated,
+ g2: commaSeparated,
+ glyphName: commaSeparated,
+ glyphOrientationHorizontal: null,
+ glyphOrientationVertical: null,
+ glyphRef: null,
+ gradientTransform: null,
+ gradientUnits: null,
+ handler: null,
+ hanging: number,
+ hatchContentUnits: null,
+ hatchUnits: null,
+ height: null,
+ href: null,
+ hrefLang: null,
+ horizAdvX: number,
+ horizOriginX: number,
+ horizOriginY: number,
+ id: null,
+ ideographic: number,
+ imageRendering: null,
+ initialVisibility: null,
+ in: null,
+ in2: null,
+ intercept: number,
+ k: number,
+ k1: number,
+ k2: number,
+ k3: number,
+ k4: number,
+ kernelMatrix: commaOrSpaceSeparated,
+ kernelUnitLength: null,
+ keyPoints: null,
+ keySplines: null,
+ keyTimes: null,
+ kerning: null,
+ lang: null,
+ lengthAdjust: null,
+ letterSpacing: null,
+ lightingColor: null,
+ limitingConeAngle: number,
+ local: null,
+ markerEnd: null,
+ markerMid: null,
+ markerStart: null,
+ markerHeight: null,
+ markerUnits: null,
+ markerWidth: null,
+ mask: null,
+ maskContentUnits: null,
+ maskUnits: null,
+ mathematical: null,
+ max: null,
+ media: null,
+ mediaCharacterEncoding: null,
+ mediaContentEncodings: null,
+ mediaSize: number,
+ mediaTime: null,
+ method: null,
+ min: null,
+ mode: null,
+ name: null,
+ navDown: null,
+ navDownLeft: null,
+ navDownRight: null,
+ navLeft: null,
+ navNext: null,
+ navPrev: null,
+ navRight: null,
+ navUp: null,
+ navUpLeft: null,
+ navUpRight: null,
+ numOctaves: null,
+ observer: null,
+ offset: null,
+ onAbort: null,
+ onActivate: null,
+ onAfterPrint: null,
+ onBeforePrint: null,
+ onBegin: null,
+ onCancel: null,
+ onCanPlay: null,
+ onCanPlayThrough: null,
+ onChange: null,
+ onClick: null,
+ onClose: null,
+ onCopy: null,
+ onCueChange: null,
+ onCut: null,
+ onDblClick: null,
+ onDrag: null,
+ onDragEnd: null,
+ onDragEnter: null,
+ onDragExit: null,
+ onDragLeave: null,
+ onDragOver: null,
+ onDragStart: null,
+ onDrop: null,
+ onDurationChange: null,
+ onEmptied: null,
+ onEnd: null,
+ onEnded: null,
+ onError: null,
+ onFocus: null,
+ onFocusIn: null,
+ onFocusOut: null,
+ onHashChange: null,
+ onInput: null,
+ onInvalid: null,
+ onKeyDown: null,
+ onKeyPress: null,
+ onKeyUp: null,
+ onLoad: null,
+ onLoadedData: null,
+ onLoadedMetadata: null,
+ onLoadStart: null,
+ onMessage: null,
+ onMouseDown: null,
+ onMouseEnter: null,
+ onMouseLeave: null,
+ onMouseMove: null,
+ onMouseOut: null,
+ onMouseOver: null,
+ onMouseUp: null,
+ onMouseWheel: null,
+ onOffline: null,
+ onOnline: null,
+ onPageHide: null,
+ onPageShow: null,
+ onPaste: null,
+ onPause: null,
+ onPlay: null,
+ onPlaying: null,
+ onPopState: null,
+ onProgress: null,
+ onRateChange: null,
+ onRepeat: null,
+ onReset: null,
+ onResize: null,
+ onScroll: null,
+ onSeeked: null,
+ onSeeking: null,
+ onSelect: null,
+ onShow: null,
+ onStalled: null,
+ onStorage: null,
+ onSubmit: null,
+ onSuspend: null,
+ onTimeUpdate: null,
+ onToggle: null,
+ onUnload: null,
+ onVolumeChange: null,
+ onWaiting: null,
+ onZoom: null,
+ opacity: null,
+ operator: null,
+ order: null,
+ orient: null,
+ orientation: null,
+ origin: null,
+ overflow: null,
+ overlay: null,
+ overlinePosition: number,
+ overlineThickness: number,
+ paintOrder: null,
+ panose1: null,
+ path: null,
+ pathLength: number,
+ patternContentUnits: null,
+ patternTransform: null,
+ patternUnits: null,
+ phase: null,
+ ping: spaceSeparated,
+ pitch: null,
+ playbackOrder: null,
+ pointerEvents: null,
+ points: null,
+ pointsAtX: number,
+ pointsAtY: number,
+ pointsAtZ: number,
+ preserveAlpha: null,
+ preserveAspectRatio: null,
+ primitiveUnits: null,
+ propagate: null,
+ property: commaOrSpaceSeparated,
+ r: null,
+ radius: null,
+ referrerPolicy: null,
+ refX: null,
+ refY: null,
+ rel: commaOrSpaceSeparated,
+ rev: commaOrSpaceSeparated,
+ renderingIntent: null,
+ repeatCount: null,
+ repeatDur: null,
+ requiredExtensions: commaOrSpaceSeparated,
+ requiredFeatures: commaOrSpaceSeparated,
+ requiredFonts: commaOrSpaceSeparated,
+ requiredFormats: commaOrSpaceSeparated,
+ resource: null,
+ restart: null,
+ result: null,
+ rotate: null,
+ rx: null,
+ ry: null,
+ scale: null,
+ seed: null,
+ shapeRendering: null,
+ side: null,
+ slope: null,
+ snapshotTime: null,
+ specularConstant: number,
+ specularExponent: number,
+ spreadMethod: null,
+ spacing: null,
+ startOffset: null,
+ stdDeviation: null,
+ stemh: null,
+ stemv: null,
+ stitchTiles: null,
+ stopColor: null,
+ stopOpacity: null,
+ strikethroughPosition: number,
+ strikethroughThickness: number,
+ string: null,
+ stroke: null,
+ strokeDashArray: commaOrSpaceSeparated,
+ strokeDashOffset: null,
+ strokeLineCap: null,
+ strokeLineJoin: null,
+ strokeMiterLimit: number,
+ strokeOpacity: number,
+ strokeWidth: null,
+ style: null,
+ surfaceScale: number,
+ syncBehavior: null,
+ syncBehaviorDefault: null,
+ syncMaster: null,
+ syncTolerance: null,
+ syncToleranceDefault: null,
+ systemLanguage: commaOrSpaceSeparated,
+ tabIndex: number,
+ tableValues: null,
+ target: null,
+ targetX: number,
+ targetY: number,
+ textAnchor: null,
+ textDecoration: null,
+ textRendering: null,
+ textLength: null,
+ timelineBegin: null,
+ title: null,
+ transformBehavior: null,
+ type: null,
+ typeOf: commaOrSpaceSeparated,
+ to: null,
+ transform: null,
+ u1: null,
+ u2: null,
+ underlinePosition: number,
+ underlineThickness: number,
+ unicode: null,
+ unicodeBidi: null,
+ unicodeRange: null,
+ unitsPerEm: number,
+ values: null,
+ vAlphabetic: number,
+ vMathematical: number,
+ vectorEffect: null,
+ vHanging: number,
+ vIdeographic: number,
+ version: null,
+ vertAdvY: number,
+ vertOriginX: number,
+ vertOriginY: number,
+ viewBox: null,
+ viewTarget: null,
+ visibility: null,
+ width: null,
+ widths: null,
+ wordSpacing: null,
+ writingMode: null,
+ x: null,
+ x1: null,
+ x2: null,
+ xChannelSelector: null,
+ xHeight: number,
+ y: null,
+ y1: null,
+ y2: null,
+ yChannelSelector: null,
+ z: null,
+ zoomAndPan: null
+ }
+});
+const valid = /^data[-\w.:]+$/i;
+const dash = /-[a-z]/g;
+const cap = /[A-Z]/g;
+function find(schema, value) {
+ const normal = normalize(value);
+ let prop = value;
+ let Type = Info;
+ if (normal in schema.normal) {
+ return schema.property[schema.normal[normal]];
+ }
+ if (normal.length > 4 && normal.slice(0, 4) === "data" && valid.test(value)) {
+ if (value.charAt(4) === "-") {
+ const rest = value.slice(5).replace(dash, camelcase);
+ prop = "data" + rest.charAt(0).toUpperCase() + rest.slice(1);
+ } else {
+ const rest = value.slice(4);
+ if (!dash.test(rest)) {
+ let dashes = rest.replace(cap, kebab);
+ if (dashes.charAt(0) !== "-") {
+ dashes = "-" + dashes;
+ }
+ value = "data" + dashes;
+ }
+ }
+ Type = DefinedInfo;
+ }
+ return new Type(prop, value);
+}
+function kebab($0) {
+ return "-" + $0.toLowerCase();
+}
+function camelcase($0) {
+ return $0.charAt(1).toUpperCase();
+}
+const hastToReact = {
+ classId: "classID",
+ dataType: "datatype",
+ itemId: "itemID",
+ strokeDashArray: "strokeDasharray",
+ strokeDashOffset: "strokeDashoffset",
+ strokeLineCap: "strokeLinecap",
+ strokeLineJoin: "strokeLinejoin",
+ strokeMiterLimit: "strokeMiterlimit",
+ typeOf: "typeof",
+ xLinkActuate: "xlinkActuate",
+ xLinkArcRole: "xlinkArcrole",
+ xLinkHref: "xlinkHref",
+ xLinkRole: "xlinkRole",
+ xLinkShow: "xlinkShow",
+ xLinkTitle: "xlinkTitle",
+ xLinkType: "xlinkType",
+ xmlnsXLink: "xmlnsXlink"
+};
+const html = merge([xml, xlink, xmlns, aria, html$1], "html");
+const svg = merge([xml, xlink, xmlns, aria, svg$1], "svg");
+function stringify$1(values) {
+ return values.join(" ").trim();
+}
+function stringify(values, options) {
+ var settings = options || {};
+ if (values[values.length - 1] === "") {
+ values = values.concat("");
+ }
+ return values.join(
+ (settings.padRight ? " " : "") + "," + (settings.padLeft === false ? "" : " ")
+ ).trim();
+}
+var COMMENT_REGEX = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
+var NEWLINE_REGEX = /\n/g;
+var WHITESPACE_REGEX = /^\s*/;
+var PROPERTY_REGEX = /^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/;
+var COLON_REGEX = /^:\s*/;
+var VALUE_REGEX = /^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/;
+var SEMICOLON_REGEX = /^[;\s]*/;
+var TRIM_REGEX = /^\s+|\s+$/g;
+var NEWLINE = "\n";
+var FORWARD_SLASH = "/";
+var ASTERISK = "*";
+var EMPTY_STRING = "";
+var TYPE_COMMENT = "comment";
+var TYPE_DECLARATION = "declaration";
+var inlineStyleParser = function(style, options) {
+ if (typeof style !== "string") {
+ throw new TypeError("First argument must be a string");
+ }
+ if (!style)
+ return [];
+ options = options || {};
+ var lineno = 1;
+ var column = 1;
+ function updatePosition(str) {
+ var lines = str.match(NEWLINE_REGEX);
+ if (lines)
+ lineno += lines.length;
+ var i = str.lastIndexOf(NEWLINE);
+ column = ~i ? str.length - i : column + str.length;
+ }
+ function position2() {
+ var start = { line: lineno, column };
+ return function(node) {
+ node.position = new Position(start);
+ whitespace2();
+ return node;
+ };
+ }
+ function Position(start) {
+ this.start = start;
+ this.end = { line: lineno, column };
+ this.source = options.source;
+ }
+ Position.prototype.content = style;
+ function error(msg) {
+ var err = new Error(
+ options.source + ":" + lineno + ":" + column + ": " + msg
+ );
+ err.reason = msg;
+ err.filename = options.source;
+ err.line = lineno;
+ err.column = column;
+ err.source = style;
+ if (options.silent)
+ ;
+ else {
+ throw err;
+ }
+ }
+ function match(re) {
+ var m = re.exec(style);
+ if (!m)
+ return;
+ var str = m[0];
+ updatePosition(str);
+ style = style.slice(str.length);
+ return m;
+ }
+ function whitespace2() {
+ match(WHITESPACE_REGEX);
+ }
+ function comments(rules) {
+ var c;
+ rules = rules || [];
+ while (c = comment()) {
+ if (c !== false) {
+ rules.push(c);
+ }
+ }
+ return rules;
+ }
+ function comment() {
+ var pos = position2();
+ if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1))
+ return;
+ var i = 2;
+ while (EMPTY_STRING != style.charAt(i) && (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))) {
+ ++i;
+ }
+ i += 2;
+ if (EMPTY_STRING === style.charAt(i - 1)) {
+ return error("End of comment missing");
+ }
+ var str = style.slice(2, i - 2);
+ column += 2;
+ updatePosition(str);
+ style = style.slice(i);
+ column += 2;
+ return pos({
+ type: TYPE_COMMENT,
+ comment: str
+ });
+ }
+ function declaration() {
+ var pos = position2();
+ var prop = match(PROPERTY_REGEX);
+ if (!prop)
+ return;
+ comment();
+ if (!match(COLON_REGEX))
+ return error("property missing ':'");
+ var val = match(VALUE_REGEX);
+ var ret = pos({
+ type: TYPE_DECLARATION,
+ property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),
+ value: val ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING)) : EMPTY_STRING
+ });
+ match(SEMICOLON_REGEX);
+ return ret;
+ }
+ function declarations() {
+ var decls = [];
+ comments(decls);
+ var decl;
+ while (decl = declaration()) {
+ if (decl !== false) {
+ decls.push(decl);
+ comments(decls);
+ }
+ }
+ return decls;
+ }
+ whitespace2();
+ return declarations();
+};
+function trim(str) {
+ return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;
+}
+var parse$1 = inlineStyleParser;
+function StyleToObject(style, iterator) {
+ var output = null;
+ if (!style || typeof style !== "string") {
+ return output;
+ }
+ var declaration;
+ var declarations = parse$1(style);
+ var hasIterator = typeof iterator === "function";
+ var property;
+ var value;
+ for (var i = 0, len = declarations.length; i < len; i++) {
+ declaration = declarations[i];
+ property = declaration.property;
+ value = declaration.value;
+ if (hasIterator) {
+ iterator(property, value, declaration);
+ } else if (value) {
+ output || (output = {});
+ output[property] = value;
+ }
+ }
+ return output;
+}
+var styleToObject = StyleToObject;
+const webNamespaces = {
+ html: "http://www.w3.org/1999/xhtml",
+ mathml: "http://www.w3.org/1998/Math/MathML",
+ svg: "http://www.w3.org/2000/svg",
+ xlink: "http://www.w3.org/1999/xlink",
+ xml: "http://www.w3.org/XML/1998/namespace",
+ xmlns: "http://www.w3.org/2000/xmlns/"
+};
+const ns = webNamespaces;
+const toReact = hastToReact;
+const own$1 = {}.hasOwnProperty;
+const root = convert$2("root");
+const element = convert$2("element");
+const text = convert$2("text");
+function toH(h, tree, options) {
+ if (typeof h !== "function") {
+ throw new TypeError("h is not a function");
+ }
+ const r = react(h);
+ const v = vue(h);
+ const vd = vdom(h);
+ let prefix;
+ let node;
+ if (typeof options === "string" || typeof options === "boolean") {
+ prefix = options;
+ options = {};
+ } else {
+ if (!options)
+ options = {};
+ prefix = options.prefix;
+ }
+ if (root(tree)) {
+ node = tree.children.length === 1 && element(tree.children[0]) ? tree.children[0] : {
+ type: "element",
+ tagName: "div",
+ properties: {},
+ children: tree.children
+ };
+ } else if (element(tree)) {
+ node = tree;
+ } else {
+ throw new Error(
+ "Expected root or element, not `" + (tree && tree.type || tree) + "`"
+ );
+ }
+ return transform(h, node, {
+ schema: options.space === "svg" ? svg : html,
+ prefix: prefix === void 0 || prefix === null ? r || v || vd ? "h-" : null : typeof prefix === "string" ? prefix : prefix ? "h-" : null,
+ key: 0,
+ react: r,
+ vue: v,
+ vdom: vd,
+ hyperscript: hyperscript(h)
+ });
+}
+function transform(h, node, ctx) {
+ const parentSchema = ctx.schema;
+ let schema = parentSchema;
+ let name = node.tagName;
+ const attributes = {};
+ const nodes = [];
+ let index2 = -1;
+ let key;
+ if (parentSchema.space === "html" && name.toLowerCase() === "svg") {
+ schema = svg;
+ ctx.schema = schema;
+ }
+ for (key in node.properties) {
+ if (node.properties && own$1.call(node.properties, key)) {
+ addAttribute(attributes, key, node.properties[key], ctx, name);
+ }
+ }
+ if (ctx.vdom) {
+ if (schema.space === "html") {
+ name = name.toUpperCase();
+ } else if (schema.space) {
+ attributes.namespace = ns[schema.space];
+ }
+ }
+ if (ctx.prefix) {
+ ctx.key++;
+ attributes.key = ctx.prefix + ctx.key;
+ }
+ if (node.children) {
+ while (++index2 < node.children.length) {
+ const value = node.children[index2];
+ if (element(value)) {
+ nodes.push(transform(h, value, ctx));
+ } else if (text(value)) {
+ nodes.push(value.value);
+ }
+ }
+ }
+ ctx.schema = parentSchema;
+ return nodes.length > 0 ? h.call(node, name, attributes, nodes) : h.call(node, name, attributes);
+}
+function addAttribute(props, prop, value, ctx, name) {
+ const info = find(ctx.schema, prop);
+ let subprop;
+ if (value === void 0 || value === null || typeof value === "number" && Number.isNaN(value) || value === false && (ctx.vue || ctx.vdom || ctx.hyperscript) || !value && info.boolean && (ctx.vue || ctx.vdom || ctx.hyperscript)) {
+ return;
+ }
+ if (Array.isArray(value)) {
+ value = info.commaSeparated ? stringify(value) : stringify$1(value);
+ }
+ if (info.boolean && ctx.hyperscript) {
+ value = "";
+ }
+ if (info.property === "style" && typeof value === "string" && (ctx.react || ctx.vue || ctx.vdom)) {
+ value = parseStyle(value, name);
+ }
+ if (ctx.vue) {
+ if (info.property !== "style")
+ subprop = "attrs";
+ } else if (!info.mustUseProperty) {
+ if (ctx.vdom) {
+ if (info.property !== "style")
+ subprop = "attributes";
+ } else if (ctx.hyperscript) {
+ subprop = "attrs";
+ }
+ }
+ if (subprop) {
+ props[subprop] = Object.assign(props[subprop] || {}, {
+ [info.attribute]: value
+ });
+ } else if (info.space && ctx.react) {
+ props[toReact[info.property] || info.property] = value;
+ } else {
+ props[info.attribute] = value;
+ }
+}
+function react(h) {
+ const node = h("div", {});
+ return Boolean(
+ node && ("_owner" in node || "_store" in node) && (node.key === void 0 || node.key === null)
+ );
+}
+function hyperscript(h) {
+ return "context" in h && "cleanup" in h;
+}
+function vdom(h) {
+ const node = h("div", {});
+ return node.type === "VirtualNode";
+}
+function vue(h) {
+ const node = h("div", {});
+ return Boolean(node && node.context && node.context._isVue);
+}
+function parseStyle(value, tagName) {
+ const result = {};
+ try {
+ styleToObject(value, (name, value2) => {
+ if (name.slice(0, 4) === "-ms-")
+ name = "ms-" + name.slice(4);
+ result[name.replace(
+ /-([a-z])/g,
+ (_, $1) => $1.toUpperCase()
+ )] = value2;
+ });
+ } catch (error) {
+ error.message = tagName + "[style]" + error.message.slice("undefined".length);
+ throw error;
+ }
+ return result;
+}
+var convert_1 = convert$1;
+function convert$1(test) {
+ if (typeof test === "string") {
+ return typeFactory(test);
+ }
+ if (test === null || test === void 0) {
+ return ok;
+ }
+ if (typeof test === "object") {
+ return ("length" in test ? anyFactory : matchesFactory)(test);
+ }
+ if (typeof test === "function") {
+ return test;
+ }
+ throw new Error("Expected function, string, or object as test");
+}
+function convertAll(tests) {
+ var results = [];
+ var length = tests.length;
+ var index2 = -1;
+ while (++index2 < length) {
+ results[index2] = convert$1(tests[index2]);
+ }
+ return results;
+}
+function matchesFactory(test) {
+ return matches;
+ function matches(node) {
+ var key;
+ for (key in test) {
+ if (node[key] !== test[key]) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
+function anyFactory(tests) {
+ var checks2 = convertAll(tests);
+ var length = checks2.length;
+ return matches;
+ function matches() {
+ var index2 = -1;
+ while (++index2 < length) {
+ if (checks2[index2].apply(this, arguments)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+function typeFactory(test) {
+ return type;
+ function type(node) {
+ return Boolean(node && node.type === test);
+ }
+}
+function ok() {
+ return true;
+}
+var unistUtilVisitParents = visitParents$1;
+var convert = convert_1;
+var CONTINUE$1 = true;
+var SKIP$1 = "skip";
+var EXIT$1 = false;
+visitParents$1.CONTINUE = CONTINUE$1;
+visitParents$1.SKIP = SKIP$1;
+visitParents$1.EXIT = EXIT$1;
+function visitParents$1(tree, test, visitor2, reverse) {
+ var is;
+ if (typeof test === "function" && typeof visitor2 !== "function") {
+ reverse = visitor2;
+ visitor2 = test;
+ test = null;
+ }
+ is = convert(test);
+ one2(tree, null, []);
+ function one2(node, index2, parents) {
+ var result = [];
+ var subresult;
+ if (!test || is(node, index2, parents[parents.length - 1] || null)) {
+ result = toResult(visitor2(node, parents));
+ if (result[0] === EXIT$1) {
+ return result;
+ }
+ }
+ if (node.children && result[0] !== SKIP$1) {
+ subresult = toResult(all2(node.children, parents.concat(node)));
+ return subresult[0] === EXIT$1 ? subresult : result;
+ }
+ return result;
+ }
+ function all2(children, parents) {
+ var min = -1;
+ var step = reverse ? -1 : 1;
+ var index2 = (reverse ? children.length : min) + step;
+ var result;
+ while (index2 > min && index2 < children.length) {
+ result = one2(children[index2], index2, parents);
+ if (result[0] === EXIT$1) {
+ return result;
+ }
+ index2 = typeof result[1] === "number" ? result[1] : index2 + step;
+ }
+ }
+}
+function toResult(value) {
+ if (value !== null && typeof value === "object" && "length" in value) {
+ return value;
+ }
+ if (typeof value === "number") {
+ return [CONTINUE$1, value];
+ }
+ return [value];
+}
+var unistUtilVisit = visit$1;
+var visitParents = unistUtilVisitParents;
+var CONTINUE = visitParents.CONTINUE;
+var SKIP = visitParents.SKIP;
+var EXIT = visitParents.EXIT;
+visit$1.CONTINUE = CONTINUE;
+visit$1.SKIP = SKIP;
+visit$1.EXIT = EXIT;
+function visit$1(tree, test, visitor2, reverse) {
+ if (typeof test === "function" && typeof visitor2 !== "function") {
+ reverse = visitor2;
+ visitor2 = test;
+ test = null;
+ }
+ visitParents(tree, test, overload, reverse);
+ function overload(node, parents) {
+ var parent = parents[parents.length - 1];
+ var index2 = parent ? parent.children.indexOf(node) : null;
+ return visitor2(node, index2, parent);
+ }
+}
+var visit = unistUtilVisit;
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+var hastCssPropertyMap = {
+ align: "text-align",
+ valign: "vertical-align",
+ height: "height",
+ width: "width"
+};
+var hastUtilTableCellStyle = function tableCellStyle(node) {
+ visit(node, "element", visitor);
+ return node;
+};
+function visitor(node) {
+ if (node.tagName !== "tr" && node.tagName !== "td" && node.tagName !== "th") {
+ return;
+ }
+ var hastName;
+ var cssName;
+ for (hastName in hastCssPropertyMap) {
+ if (!hasOwnProperty.call(hastCssPropertyMap, hastName) || node.properties[hastName] === void 0) {
+ continue;
+ }
+ cssName = hastCssPropertyMap[hastName];
+ appendStyle(node, cssName, node.properties[hastName]);
+ delete node.properties[hastName];
+ }
+}
+function appendStyle(node, property, value) {
+ var prevStyle = (node.properties.style || "").trim();
+ if (prevStyle && !/;\s*/.test(prevStyle)) {
+ prevStyle += ";";
+ }
+ if (prevStyle) {
+ prevStyle += " ";
+ }
+ var nextStyle = prevStyle + property + ": " + value + ";";
+ node.properties.style = nextStyle;
+}
+const tableCellStyle2 = hastUtilTableCellStyle;
+function whitespace(thing) {
+ var value = thing && typeof thing === "object" && thing.type === "text" ? thing.value || "" : thing;
+ return typeof value === "string" && value.replace(/[ \t\n\f\r]/g, "") === "";
+}
+const own = {}.hasOwnProperty;
+const tableElements = /* @__PURE__ */ new Set([
+ "table",
+ "thead",
+ "tbody",
+ "tfoot",
+ "tr",
+ "th",
+ "td"
+]);
+function rehypeReact(options) {
+ if (!options || typeof options.createElement !== "function") {
+ throw new TypeError("createElement is not a function");
+ }
+ const createElement = options.createElement;
+ Object.assign(this, { Compiler: compiler2 });
+ function compiler2(node) {
+ let result = toH(h, tableCellStyle2(node), options.prefix);
+ if (node.type === "root") {
+ result = result && typeof result === "object" && "type" in result && "props" in result && result.type === "div" && (node.children.length !== 1 || node.children[0].type !== "element") ? result.props.children : [result];
+ return createElement(options.Fragment || "div", {}, result);
+ }
+ return result;
+ }
+ function h(name, props, children) {
+ if (children && tableElements.has(name)) {
+ children = children.filter((child) => !whitespace(child));
+ }
+ if (options.components && own.call(options.components, name)) {
+ const component = options.components[name];
+ if (options.passNode && typeof component === "function") {
+ props = Object.assign({ node: this }, props);
+ }
+ return createElement(component, props, children);
+ }
+ return createElement(name, props, children);
+ }
+}
+function parse(value) {
+ const input = String(value || "").trim();
+ return input ? input.split(/[ \t\n\r\f]+/g) : [];
+}
+const ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/;
+const WINDOWS_PATH_REGEX = /^[a-zA-Z]:\\/;
+function isAbsoluteUrl(url) {
+ if (typeof url !== "string") {
+ throw new TypeError(`Expected a \`string\`, got \`${typeof url}\``);
+ }
+ if (WINDOWS_PATH_REGEX.test(url)) {
+ return false;
+ }
+ return ABSOLUTE_URL_REGEX.test(url);
+}
+const defaultTarget = "_blank";
+const defaultRel = ["nofollow", "noopener", "noreferrer"];
+const defaultProtocols = ["http", "https"];
+function remarkExternalLinks(options = {}) {
+ const target = options.target;
+ const rel = typeof options.rel === "string" ? parse(options.rel) : options.rel;
+ const protocols = options.protocols || defaultProtocols;
+ const content2 = options.content && !Array.isArray(options.content) ? [options.content] : options.content;
+ const contentProperties = options.contentProperties || {};
+ return (tree) => {
+ const definition2 = definitions(tree);
+ visit$2(tree, (node) => {
+ if (node.type === "link" || node.type === "linkReference") {
+ const ctx = node.type === "link" ? node : definition2(node.identifier);
+ if (!ctx)
+ return;
+ const protocol = ctx.url.slice(0, ctx.url.indexOf(":"));
+ if (isAbsoluteUrl(ctx.url) && protocols.includes(protocol)) {
+ const data = node.data || (node.data = {});
+ const props = data.hProperties || (data.hProperties = {});
+ if (target !== false) {
+ props.target = target || defaultTarget;
+ }
+ if (rel !== false) {
+ props.rel = (rel || defaultRel).concat();
+ }
+ if (content2) {
+ node.children.push({
+ type: "fragment",
+ children: [],
+ data: {
+ hName: "span",
+ hProperties: extend(true, contentProperties),
+ hChildren: extend(true, content2)
+ }
+ });
+ }
+ }
+ }
+ });
+ };
+}
+const Link = {
+ name: "Link",
+ functional: true,
+ props: {
+ href: {
+ type: String,
+ required: true
+ }
+ },
+ render(h, { data, props }) {
+ return h("a", {
+ attrs: {
+ href: props.href,
+ rel: "noopener noreferrer",
+ target: "_blank",
+ class: "rich-text--external-link"
+ }
+ }, [props.href.trim()]);
+ }
+};
+const remarkAutolink = function({ autolink: autolink2, useMarkdown }) {
+ return function(tree) {
+ if (!useMarkdown || !autolink2) {
+ return;
+ }
+ visit$2(tree, (node) => node.type === "text", (node, index2, parent) => {
+ let parsed = parseUrl(node.value);
+ parsed = parsed.map((n) => {
+ if (typeof n === "string") {
+ return u("text", n);
+ }
+ return u("link", {
+ url: n.props.href
+ }, [u("text", n.props.href)]);
+ }).filter((x) => x);
+ parent.children.splice(index2, 1, ...parsed.flat());
+ return [SKIP$2, index2 + parsed.flat().length];
+ });
+ };
+};
+const parseUrl = (text2, linkComponent) => {
+ let match = URL_PATTERN_AUTOLINK.exec(text2);
+ const list2 = [];
+ let start = 0;
+ while (match !== null) {
+ let href = match[2];
+ let textAfter;
+ let textBefore = text2.substring(start, match.index + match[1].length);
+ if (href[0] === " ") {
+ textBefore += href[0];
+ href = href.substring(1).trim();
+ }
+ const lastChar = href[href.length - 1];
+ if (lastChar === "." || lastChar === "," || lastChar === ";" || match[0][0] === "(" && lastChar === ")") {
+ href = href.substring(0, href.length - 1);
+ textAfter = lastChar;
+ }
+ list2.push(textBefore);
+ list2.push({ component: Link, props: { href } });
+ if (textAfter) {
+ list2.push(textAfter);
+ }
+ start = match.index + match[0].length;
+ match = URL_PATTERN_AUTOLINK.exec(text2);
+ }
+ list2.push(text2.substring(start));
+ const joinedText = list2.map((item) => typeof item === "string" ? item : item.props.href).join("");
+ if (text2 === joinedText) {
+ return list2;
+ }
+ console.error("Failed to reassemble the chunked text: " + text2);
+ return text2;
+};
+const remarkPlaceholder = function() {
+ return function(ast) {
+ visit$2(ast, (node) => node.type === "text", visitor2);
+ function visitor2(node, index2, parent) {
+ const placeholders = node.value.split(/(\{[a-z\-_.0-9]+\})/ig).map((entry, index3, list2) => {
+ const matches = entry.match(/^\{([a-z\-_.0-9]+)\}$/i);
+ if (!matches) {
+ return u("text", entry);
+ }
+ const [, component] = matches;
+ return u("element", {
+ tagName: `#${component}`
+ });
+ });
+ node = u("element", { tagName: "span" }, [
+ ...placeholders
+ ]);
+ parent.children[index2] = node;
+ }
+ };
+};
+const prepareTextNode = ({ h, context }, text2) => {
+ if (context.autolink) {
+ text2 = parseUrl(text2);
+ }
+ if (Array.isArray(text2)) {
+ return text2.map((entry) => {
+ if (typeof entry === "string") {
+ return entry;
+ }
+ const { component, props } = entry;
+ return h(component, {
+ props,
+ class: "rich-text--component"
+ });
+ });
+ }
+ return text2;
+};
+const RichText_vue_vue_type_style_index_0_scoped_a8ade67f_lang = "";
+const _sfc_main = {
+ name: "RichText",
+ components: {
+ ReferenceList
+ },
+ props: {
+ text: {
+ type: String,
+ default: ""
+ },
+ arguments: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ referenceLimit: {
+ type: Number,
+ default: 0
+ },
+ references: {
+ type: Object,
+ default: null
+ },
+ markdownCssClasses: {
+ type: Object,
+ default: () => {
+ return {
+ a: "rich-text--external-link",
+ ol: "rich-text--ordered-list",
+ ul: "rich-text--un-ordered-list",
+ li: "rich-text--list-item",
+ strong: "rich-text--strong",
+ em: "rich-text--italic",
+ h1: "rich-text--heading rich-text--heading-1",
+ h2: "rich-text--heading rich-text--heading-2",
+ h3: "rich-text--heading rich-text--heading-3",
+ h4: "rich-text--heading rich-text--heading-4",
+ h5: "rich-text--heading rich-text--heading-5",
+ h6: "rich-text--heading rich-text--heading-6",
+ hr: "rich-text--hr",
+ table: "rich-text--table",
+ pre: "rich-text--pre",
+ code: "rich-text--code",
+ blockquote: "rich-text--blockquote"
+ };
+ }
+ },
+ useMarkdown: {
+ type: Boolean,
+ default: false
+ },
+ autolink: {
+ type: Boolean,
+ default: true
+ }
+ },
+ methods: {
+ renderPlaintext(h) {
+ const context = this;
+ const placeholders = this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map(function(entry, index2, list2) {
+ const matches = entry.match(/^\{([a-z\-_.0-9]+)\}$/i);
+ if (!matches) {
+ return prepareTextNode({ h, context }, entry);
+ }
+ const argumentId = matches[1];
+ const argument = context.arguments[argumentId];
+ if (typeof argument === "object") {
+ const { component, props } = argument;
+ return h(component, {
+ props,
+ class: "rich-text--component"
+ });
+ }
+ if (argument) {
+ return h("span", { class: "rich-text--fallback" }, argument);
+ }
+ return entry;
+ });
+ return h("div", { class: "rich-text--wrapper" }, [
+ h("div", {}, placeholders.flat()),
+ this.referenceLimit > 0 ? h("div", { class: "rich-text--reference-widget" }, [
+ h(ReferenceList, { props: { text: this.text, referenceData: this.references } })
+ ]) : null
+ ]);
+ },
+ renderMarkdown(h) {
+ const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {
+ autolink: this.autolink,
+ useMarkdown: this.useMarkdown
+ }).use(remarkExternalLinks, {
+ target: "_blank",
+ rel: ["noopener noreferrer"]
+ }).use(remarkBreaks).use(remark2rehype, {
+ handlers: {
+ component(toHast2, node) {
+ return toHast2(node, node.component, { value: node.value });
+ }
+ }
+ }).use(remarkPlaceholder).use(rehypeReact, {
+ createElement: (tag, attrs, children) => {
+ if (!tag.startsWith("#")) {
+ return h(tag, attrs, children);
+ }
+ const placeholder = this.arguments[tag.slice(1)];
+ if (!placeholder) {
+ return h("span", { ...{ attrs }, ...{ class: "rich-text--fallback" } }, [`{${tag.slice(1)}}`]);
+ }
+ if (!placeholder.component) {
+ return h("span", attrs, [placeholder]);
+ }
+ return h(
+ placeholder.component,
+ {
+ attrs,
+ props: placeholder.props,
+ class: "rich-text--component"
+ },
+ children
+ );
+ },
+ prefix: false
+ }).processSync(this.text).result;
+ return h("div", { class: "rich-text--wrapper" }, [
+ renderedMarkdown,
+ this.referenceLimit > 0 ? h("div", { class: "rich-text--reference-widget" }, [
+ h(ReferenceList, { props: { text: this.text, referenceData: this.references } })
+ ]) : null
+ ]);
+ }
+ },
+ render(h) {
+ if (!this.useMarkdown) {
+ return this.renderPlaintext(h);
+ }
+ return this.renderMarkdown(h);
+ }
+};
+const _sfc_render = null;
+const _sfc_staticRenderFns = null;
+var __component__ = /* @__PURE__ */ normalizeComponent(
+ _sfc_main,
+ _sfc_render,
+ _sfc_staticRenderFns,
+ false,
+ null,
+ "a8ade67f",
+ null,
+ null
+);
+const RichText = __component__.exports;
+
+
+
+/***/ }),
+
+/***/ "./node_modules/@nextcloud/vue/dist/Components/NcAvatar.js":
+/*!*****************************************************************!*\
+ !*** ./node_modules/@nextcloud/vue/dist/Components/NcAvatar.js ***!
+ \*****************************************************************/
+/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
+
+/*! For license information please see NcAvatar.js.LICENSE.txt */
+!function(t,e){ true?module.exports=e():0}(self,(()=>(()=>{var t={5378:(t,e,a)=>{"use strict";a.d(e,{default:()=>k});const n={name:"NcLoadingIcon",props:{size:{type:Number,default:20},appearance:{type:String,validator:function(t){return["auto","light","dark"].includes(t)},default:"auto"},title:{type:String,default:""}},computed:{colors:function(){var t=["#777","#CCC"];return"light"===this.appearance?t:"dark"===this.appearance?t.reverse():["var(--color-loading-light)","var(--color-loading-dark)"]}}};var i=a(3379),o=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),u=a(3565),d=a.n(u),m=a(9216),p=a.n(m),h=a(4589),g=a.n(h),v=a(5030),f={};f.styleTagTransform=g(),f.setAttributes=d(),f.insert=c().bind(null,"head"),f.domAPI=s(),f.insertStyleElement=p();o()(v.Z,f);v.Z&&v.Z.locals&&v.Z.locals;var A=a(1900),b=a(9280),y=a.n(b),C=(0,A.Z)(n,(function(){var t=this,e=t._self._c;return e("span",{staticClass:"material-design-icon loading-icon",attrs:{"aria-label":t.title,role:"img"}},[e("svg",{attrs:{width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{fill:t.colors[0],d:"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z"}}),t._v(" "),e("path",{attrs:{fill:t.colors[1],d:"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,"c4a9cada",null);"function"==typeof y()&&y()(C);const k=C.exports},8563:(t,e,a)=>{"use strict";a.d(e,{default:()=>E});var n=a(9454),i=a(4505),o=a(1206),r=a(5108);function s(t){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s(t)}function l(){l=function(){return t};var t={},e=Object.prototype,a=e.hasOwnProperty,n=Object.defineProperty||function(t,e,a){t[e]=a.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",r=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function u(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{u({},"")}catch(t){u=function(t,e,a){return t[e]=a}}function d(t,e,a,i){var o=e&&e.prototype instanceof h?e:h,r=Object.create(o.prototype),s=new N(i||[]);return n(r,"_invoke",{value:w(t,a,s)}),r}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var p={};function h(){}function g(){}function v(){}var f={};u(f,o,(function(){return this}));var A=Object.getPrototypeOf,b=A&&A(A(z([])));b&&b!==e&&a.call(b,o)&&(f=b);var y=v.prototype=h.prototype=Object.create(f);function C(t){["next","throw","return"].forEach((function(e){u(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function i(n,o,r,l){var c=m(t[n],t,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==s(d)&&a.call(d,"__await")?e.resolve(d.__await).then((function(t){i("next",t,r,l)}),(function(t){i("throw",t,r,l)})):e.resolve(d).then((function(t){u.value=t,r(u)}),(function(t){return i("throw",t,r,l)}))}l(c.arg)}var o;n(this,"_invoke",{value:function(t,a){function n(){return new e((function(e,n){i(t,a,e,n)}))}return o=o?o.then(n,n):n()}})}function w(t,e,a){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return P()}for(a.method=i,a.arg=o;;){var r=a.delegate;if(r){var s=S(r,a);if(s){if(s===p)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if("suspendedStart"===n)throw n="completed",a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);n="executing";var l=m(t,e,a);if("normal"===l.type){if(n=a.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(n="completed",a.method="throw",a.arg=l.arg)}}}function S(t,e){var a=e.method,n=t.iterator[a];if(void 0===n)return e.delegate=null,"throw"===a&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==a&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+a+"' method")),p;var i=m(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,p;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function z(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var o=this.tryEntries[i],r=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),j(a),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var n=a.completion;if("throw"===n.type){var i=n.arg;j(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,a){return this.delegate={iterator:z(t),resultName:e,nextLoc:a},"next"===this.method&&(this.arg=void 0),p}},t}function c(t,e,a,n,i,o,r){try{var s=t[o](r),l=s.value}catch(t){return void a(t)}s.done?e(l):Promise.resolve(l).then(n,i)}const u={name:"NcPopover",components:{Dropdown:n.Dropdown},props:{popoverBaseClass:{type:String,default:""},focusTrap:{type:Boolean,default:!0},setReturnFocus:{default:void 0,type:[HTMLElement,SVGElement,String,Boolean]}},emits:["after-show","after-hide"],beforeDestroy:function(){this.clearFocusTrap()},methods:{useFocusTrap:function(){var t,e=this;return(t=l().mark((function t(){var a,n,r;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.$nextTick();case 2:if(e.focusTrap){t.next=4;break}return t.abrupt("return");case 4:if(r=null===(a=e.$refs.popover)||void 0===a||null===(n=a.$refs.popperContent)||void 0===n?void 0:n.$el){t.next=7;break}return t.abrupt("return");case 7:e.$focusTrap=(0,i.createFocusTrap)(r,{escapeDeactivates:!1,allowOutsideClick:!0,setReturnFocus:e.setReturnFocus,trapStack:(0,o.L)()}),e.$focusTrap.activate();case 9:case"end":return t.stop()}}),t)})),function(){var e=this,a=arguments;return new Promise((function(n,i){var o=t.apply(e,a);function r(t){c(o,n,i,r,s,"next",t)}function s(t){c(o,n,i,r,s,"throw",t)}r(void 0)}))})()},clearFocusTrap:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};try{var e;null===(e=this.$focusTrap)||void 0===e||e.deactivate(t),this.$focusTrap=null}catch(t){r.warn(t)}},afterShow:function(){var t=this;this.$nextTick((function(){t.$emit("after-show"),t.useFocusTrap()}))},afterHide:function(){this.$emit("after-hide"),this.clearFocusTrap()}}},d=u;var m=a(3379),p=a.n(m),h=a(7795),g=a.n(h),v=a(569),f=a.n(v),A=a(3565),b=a.n(A),y=a(9216),C=a.n(y),k=a(4589),w=a.n(k),S=a(3197),x={};x.styleTagTransform=w(),x.setAttributes=b(),x.insert=f().bind(null,"head"),x.domAPI=g(),x.insertStyleElement=C();p()(S.Z,x);S.Z&&S.Z.locals&&S.Z.locals;var j=a(1900),N=a(2405),z=a.n(N),P=(0,j.Z)(d,(function(){var t=this;return(0,t._self._c)("Dropdown",t._g(t._b({ref:"popover",attrs:{distance:10,"arrow-padding":10,"no-auto-focus":!0,"popper-class":t.popoverBaseClass},on:{"apply-show":t.afterShow,"apply-hide":t.afterHide},scopedSlots:t._u([{key:"popper",fn:function(){return[t._t("default")]},proxy:!0}],null,!0)},"Dropdown",t.$attrs,!1),t.$listeners),[t._t("trigger")],2)}),[],!1,null,null,null);"function"==typeof z()&&z()(P);const E=P.exports},1109:(t,e,a)=>{"use strict";a.d(e,{default:()=>N});const n={name:"NcPopoverMenuItem",props:{item:{type:Object,required:!0,default:function(){return{key:"nextcloud-link",href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}},validator:function(t){return!t.input||-1!==["text","checkbox"].indexOf(t.input)}}},computed:{key:function(){return this.item.key?this.item.key:Math.round(16*Math.random()*1e6).toString(16)},iconIsUrl:function(){try{return new URL(this.item.icon),!0}catch(t){return!1}}},methods:{action:function(t){this.item.action&&this.item.action(t)}}};var i=a(3379),o=a.n(i),r=a(7795),s=a.n(r),l=a(569),c=a.n(l),u=a(3565),d=a.n(u),m=a(9216),p=a.n(m),h=a(4589),g=a.n(h),v=a(5578),f={};f.styleTagTransform=g(),f.setAttributes=d(),f.insert=c().bind(null,"head"),f.domAPI=s(),f.insertStyleElement=p();o()(v.Z,f);v.Z&&v.Z.locals&&v.Z.locals;var A=a(5772),b={};b.styleTagTransform=g(),b.setAttributes=d(),b.insert=c().bind(null,"head"),b.domAPI=s(),b.insertStyleElement=p();o()(A.Z,b);A.Z&&A.Z.locals&&A.Z.locals;var y=a(1900);const C={name:"NcPopoverMenu",components:{NcPopoverMenuItem:(0,y.Z)(n,(function(){var t=this,e=t._self._c;return e("li",{staticClass:"popover__menuitem"},[t.item.href?e("a",{staticClass:"focusable",attrs:{href:t.item.href?t.item.href:"#",target:t.item.target?t.item.target:"",download:t.item.download,rel:"nofollow noreferrer noopener"},on:{click:t.action}},[t.iconIsUrl?e("img",{attrs:{src:t.item.icon}}):e("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?e("p",[e("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),e("br"),t._v(" "),e("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?e("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?e("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):t.item.input?e("span",{staticClass:"menuitem",class:{active:t.item.active}},["checkbox"!==t.item.input?e("span",{class:t.item.icon}):t._e(),t._v(" "),"text"===t.item.input?e("form",{class:t.item.input,on:{submit:function(e){return e.preventDefault(),t.item.action.apply(null,arguments)}}},[e("input",{attrs:{type:t.item.input,placeholder:t.item.text,required:""},domProps:{value:t.item.value}}),t._v(" "),e("input",{staticClass:"icon-confirm",attrs:{type:"submit",value:""}})]):["checkbox"===t.item.input?e("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"checkbox"},domProps:{checked:Array.isArray(t.item.model)?t._i(t.item.model,null)>-1:t.item.model},on:{change:[function(e){var a=t.item.model,n=e.target,i=!!n.checked;if(Array.isArray(a)){var o=t._i(a,null);n.checked?o<0&&t.$set(t.item,"model",a.concat([null])):o>-1&&t.$set(t.item,"model",a.slice(0,o).concat(a.slice(o+1)))}else t.$set(t.item,"model",i)},t.item.action]}}):"radio"===t.item.input?e("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:"radio"},domProps:{checked:t._q(t.item.model,null)},on:{change:[function(e){return t.$set(t.item,"model",null)},t.item.action]}}):e("input",{directives:[{name:"model",rawName:"v-model",value:t.item.model,expression:"item.model"}],class:t.item.input,attrs:{id:t.key,type:t.item.input},domProps:{value:t.item.model},on:{change:t.item.action,input:function(e){e.target.composing||t.$set(t.item,"model",e.target.value)}}}),t._v(" "),e("label",{attrs:{for:t.key},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action.apply(null,arguments)}}},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")])]],2):t.item.action?e("button",{staticClass:"menuitem focusable",class:{active:t.item.active},attrs:{disabled:t.item.disabled,type:"button"},on:{click:function(e){return e.stopPropagation(),e.preventDefault(),t.item.action.apply(null,arguments)}}},[e("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?e("p",[e("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),e("br"),t._v(" "),e("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?e("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?e("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()]):e("span",{staticClass:"menuitem",class:{active:t.item.active}},[e("span",{class:t.item.icon}),t._v(" "),t.item.text&&t.item.longtext?e("p",[e("strong",{staticClass:"menuitem-text"},[t._v("\n\t\t\t\t"+t._s(t.item.text)+"\n\t\t\t")]),e("br"),t._v(" "),e("span",{staticClass:"menuitem-text-detail"},[t._v("\n\t\t\t\t"+t._s(t.item.longtext)+"\n\t\t\t")])]):t.item.text?e("span",[t._v("\n\t\t\t"+t._s(t.item.text)+"\n\t\t")]):t.item.longtext?e("p",[t._v("\n\t\t\t"+t._s(t.item.longtext)+"\n\t\t")]):t._e()])])}),[],!1,null,"0ce1cbf1",null).exports},props:{menu:{type:Array,default:function(){return[{href:"https://nextcloud.com",icon:"icon-links",text:"Nextcloud"}]},required:!0}}};var k=a(2),w={};w.styleTagTransform=g(),w.setAttributes=d(),w.insert=c().bind(null,"head"),w.domAPI=s(),w.insertStyleElement=p();o()(k.Z,w);k.Z&&k.Z.locals&&k.Z.locals;var S=a(1174),x=a.n(S),j=(0,y.Z)(C,(function(){var t=this,e=t._self._c;return e("ul",{staticClass:"popover__menu"},t._l(t.menu,(function(t,a){return e("NcPopoverMenuItem",{key:a,attrs:{item:t}})})),1)}),[],!1,null,"31ffd2d4",null);"function"==typeof x()&&x()(j);const N=j.exports},7993:(t,e,a)=>{"use strict";a.d(e,{default:()=>r});var n=a(6609);const i=__webpack_require__(/*! md5 */ "./node_modules/md5/md5.js");var o=a.n(i);const r=function(t){var e=t.toLowerCase();null===e.match(/^([0-9a-f]{4}-?){8}$/)&&(e=o()(e)),e=e.replace(/[^0-9a-f]/g,"");return(0,n.Z)(6)[function(t,e){for(var a=0,n=[],i=0;i{"use strict";a.d(e,{t:()=>r});var n=a(7931),i=(0,n.getGettextBuilder)().detectLocale();[{locale:"ar",translations:{"{tag} (invisible)":"{tag} (غير مرئي)","{tag} (restricted)":"{tag} (مقيد)",Actions:"الإجراءات",Activities:"النشاطات","Animals & Nature":"الحيوانات والطبيعة","Anything shared with the same group of people will show up here":"أي مادة تمت مشاركتها مع نفس المجموعة من الأشخاص سيتم عرضها هنا","Avatar of {displayName}":"صورة {displayName} الرمزية","Avatar of {displayName}, {status}":"صورة {displayName} الرمزية، {status}","Cancel changes":"إلغاء التغييرات","Change title":"تغيير العنوان",Choose:"إختيار","Clear text":"مسح النص",Close:"أغلق","Close modal":"قفل الشرط","Close navigation":"إغلاق المتصفح","Close sidebar":"قفل الشريط الجانبي","Confirm changes":"تأكيد التغييرات",Custom:"مخصص","Edit item":"تعديل عنصر","Error getting related resources":"خطأ في تحصيل مصادر ذات صلة","External documentation for {title}":"الوثائق الخارجية لـ{title}",Favorite:"مفضلة",Flags:"الأعلام","Food & Drink":"الطعام والشراب","Frequently used":"كثيرا ما تستخدم",Global:"عالمي","Go back to the list":"العودة إلى القائمة","Hide password":"إخفاء كلمة السر","Message limit of {count} characters reached":"تم الوصول إلى الحد الأقصى لعدد الأحرف في الرسالة: {count} حرف","More items …":"عناصر أخرى ...",Next:"التالي","No emoji found":"لم يتم العثور على أي رمز تعبيري","No results":"ليس هناك أية نتيجة",Objects:"الأشياء",Open:"فتح",'Open link to "{resourceTitle}"':'فتح رابط إلى "{resourceTitle}"',"Open navigation":"فتح المتصفح","Password is secure":"كلمة السر مُؤمّنة","Pause slideshow":"إيقاف العرض مؤقتًا","People & Body":"الناس والجسم","Pick an emoji":"اختر رمزًا تعبيريًا","Please select a time zone:":"الرجاء تحديد المنطقة الزمنية:",Previous:"السابق","Related resources":"مصادر ذات صلة",Search:"بحث","Search results":"نتائج البحث","Select a tag":"اختر علامة",Settings:"الإعدادات","Settings navigation":"إعدادات المتصفح","Show password":"أعرض كلمة السر","Smileys & Emotion":"الوجوه و الرموز التعبيرية","Start slideshow":"بدء العرض",Submit:"إرسال",Symbols:"الرموز","Travel & Places":"السفر والأماكن","Type to search time zone":"اكتب للبحث عن منطقة زمنية","Unable to search the group":"تعذر البحث في المجموعة","Undo changes":"التراجع عن التغييرات","Write message, @ to mention someone, : for emoji autocompletion …":"اكتب رسالة، @ للإشارة إلى شخص ما، : للإكمال التلقائي للرموز التعبيرية ..."}},{locale:"br",translations:{"{tag} (invisible)":"{tag} (diwelus)","{tag} (restricted)":"{tag} (bevennet)",Actions:"Oberioù",Activities:"Oberiantizoù","Animals & Nature":"Loened & Natur",Choose:"Dibab",Close:"Serriñ",Custom:"Personelañ",Flags:"Bannieloù","Food & Drink":"Boued & Evajoù","Frequently used":"Implijet alies",Next:"Da heul","No emoji found":"Emoji ebet kavet","No results":"Disoc'h ebet",Objects:"Traoù","Pause slideshow":"Arsav an diaporama","People & Body":"Tud & Korf","Pick an emoji":"Choaz un emoji",Previous:"A-raok",Search:"Klask","Search results":"Disoc'hoù an enklask","Select a tag":"Choaz ur c'hlav",Settings:"Arventennoù","Smileys & Emotion":"Smileyioù & Fromoù","Start slideshow":"Kregiñ an diaporama",Symbols:"Arouezioù","Travel & Places":"Beaj & Lec'hioù","Unable to search the group":"Dibosupl eo klask ar strollad"}},{locale:"ca",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringit)",Actions:"Accions",Activities:"Activitats","Animals & Nature":"Animals i natura","Anything shared with the same group of people will show up here":"Qualsevol cosa compartida amb el mateix grup de persones es mostrarà aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancel·la els canvis","Change title":"Canviar títol",Choose:"Tria","Clear text":"Netejar text",Close:"Tanca","Close modal":"Tancar el mode","Close navigation":"Tanca la navegació","Close sidebar":"Tancar la barra lateral","Confirm changes":"Confirmeu els canvis",Custom:"Personalitzat","Edit item":"Edita l'element","Error getting related resources":"Error obtenint els recursos relacionats","Error parsing svg":"Error en l'anàlisi del svg","External documentation for {title}":"Documentació externa per a {title}",Favorite:"Preferit",Flags:"Marques","Food & Drink":"Menjar i begudes","Frequently used":"Utilitzats recentment",Global:"Global","Go back to the list":"Torna a la llista","Hide password":"Amagar contrasenya","Message limit of {count} characters reached":"S'ha arribat al límit de {count} caràcters per missatge","More items …":"Més artícles...",Next:"Següent","No emoji found":"No s'ha trobat cap emoji","No results":"Sense resultats",Objects:"Objectes",Open:"Obrir",'Open link to "{resourceTitle}"':'Obrir enllaç a "{resourceTitle}"',"Open navigation":"Obre la navegació","Password is secure":"Contrasenya segura
","Pause slideshow":"Atura la presentació","People & Body":"Persones i cos","Pick an emoji":"Trieu un emoji","Please select a time zone:":"Seleccioneu una zona horària:",Previous:"Anterior","Related resources":"Recursos relacionats",Search:"Cerca","Search results":"Resultats de cerca","Select a tag":"Seleccioneu una etiqueta",Settings:"Paràmetres","Settings navigation":"Navegació d'opcions","Show password":"Mostrar contrasenya","Smileys & Emotion":"Cares i emocions","Start slideshow":"Inicia la presentació",Submit:"Envia",Symbols:"Símbols","Travel & Places":"Viatges i llocs","Type to search time zone":"Escriviu per cercar la zona horària","Unable to search the group":"No es pot cercar el grup","Undo changes":"Desfés els canvis",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escriu missatge, fes servir "@" per esmentar algú, fes servir ":" per autocompletar emojis...'}},{locale:"cs_CZ",translations:{"{tag} (invisible)":"{tag} (neviditelné)","{tag} (restricted)":"{tag} (omezené)",Actions:"Akce",Activities:"Aktivity","Animals & Nature":"Zvířata a příroda","Anything shared with the same group of people will show up here":"Cokoli nasdíleného stejné skupině lidí se zobrazí zde","Avatar of {displayName}":"Zástupný obrázek uživatele {displayName}","Avatar of {displayName}, {status}":"Zástupný obrázek uživatele {displayName}, {status}","Cancel changes":"Zrušit změny","Change title":"Změnit nadpis",Choose:"Zvolit","Clear text":"Čitelný text",Close:"Zavřít","Close modal":"Zavřít dialogové okno","Close navigation":"Zavřít navigaci","Close sidebar":"Zavřít postranní panel","Confirm changes":"Potvrdit změny",Custom:"Uživatelsky určené","Edit item":"Upravit položku","Error getting related resources":"Chyba při získávání souvisejících prostředků","Error parsing svg":"Chyba při zpracovávání svg","External documentation for {title}":"Externí dokumentace k {title}",Favorite:"Oblíbené",Flags:"Příznaky","Food & Drink":"Jídlo a pití","Frequently used":"Často používané",Global:"Globální","Go back to the list":"Jít zpět na seznam","Hide password":"Skrýt heslo","Message limit of {count} characters reached":"Dosaženo limitu počtu ({count}) znaků zprávy","More items …":"Další položky…",Next:"Následující","No emoji found":"Nenalezeno žádné emoji","No results":"Nic nenalezeno",Objects:"Objekty",Open:"Otevřít",'Open link to "{resourceTitle}"':"Otevřít odkaz na „{resourceTitle}“","Open navigation":"Otevřít navigaci","Password is secure":"Heslo je bezpečné","Pause slideshow":"Pozastavit prezentaci","People & Body":"Lidé a tělo","Pick an emoji":"Vybrat emoji","Please select a time zone:":"Vyberte časovou zónu:",Previous:"Předchozí","Related resources":"Související prostředky",Search:"Hledat","Search results":"Výsledky hledání","Select a tag":"Vybrat štítek",Settings:"Nastavení","Settings navigation":"Pohyb po nastavení","Show password":"Zobrazit heslo","Smileys & Emotion":"Úsměvy a emoce","Start slideshow":"Spustit prezentaci",Submit:"Odeslat",Symbols:"Symboly","Travel & Places":"Cestování a místa","Type to search time zone":"Psaním vyhledejte časovou zónu","Unable to search the group":"Nedaří se hledat skupinu","Undo changes":"Vzít změny zpět",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Napište zprávu – pokud chcete někoho zmínit, napište před jeho uživatelským jménem „@“ (zavináč); automatické doplňování emotikonů zahájíte napsáním „:“ (dvojtečky)…"}},{locale:"da",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (begrænset)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr & Natur","Anything shared with the same group of people will show up here":"Alt der deles med samme gruppe af personer vil vises her","Avatar of {displayName}":"Avatar af {displayName}","Avatar of {displayName}, {status}":"Avatar af {displayName}, {status}","Cancel changes":"Annuller ændringer","Change title":"Ret titel",Choose:"Vælg","Clear text":"Ryd tekst",Close:"Luk","Close modal":"Luk vindue","Close navigation":"Luk navigation","Close sidebar":"Luk sidepanel","Confirm changes":"Bekræft ændringer",Custom:"Brugerdefineret","Edit item":"Rediger emne","Error getting related resources":"Kunne ikke hente tilknyttede data","Error parsing svg":"Fejl ved analysering af svg","External documentation for {title}":"Ekstern dokumentation for {title}",Favorite:"Favorit",Flags:"Flag","Food & Drink":"Mad & Drikke","Frequently used":"Ofte brugt",Global:"Global","Go back to the list":"Tilbage til listen","Hide password":"Skjul kodeord","Message limit of {count} characters reached":"Begrænsning på {count} tegn er nået","More items …":"Mere ...",Next:"Videre","No emoji found":"Ingen emoji fundet","No results":"Ingen resultater",Objects:"Objekter",Open:"Åbn",'Open link to "{resourceTitle}"':'Åbn link til "{resourceTitle}"',"Open navigation":"Åbn navigation","Password is secure":"Kodeordet er sikkert","Pause slideshow":"Suspender fremvisning","People & Body":"Mennesker & Menneskekroppen","Pick an emoji":"Vælg en emoji","Please select a time zone:":"Vælg venligst en tidszone:",Previous:"Forrige","Related resources":"Relaterede emner",Search:"Søg","Search results":"Søgeresultater","Select a tag":"Vælg et mærke",Settings:"Indstillinger","Settings navigation":"Naviger i indstillinger","Show password":"Vis kodeord","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start fremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Rejser & Rejsemål","Type to search time zone":"Indtast for at søge efter tidszone","Unable to search the group":"Kan ikke søge på denne gruppe","Undo changes":"Fortryd ændringer",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv besked, brug "@" for at nævne nogen, brug ":" til emoji-autofuldførelse ...'}},{locale:"de",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Gegenstände",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte wählen Sie eine Zeitzone:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um Zeitzone zu suchen","Unable to search the group":"Die Gruppe konnte nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"de_DE",translations:{"{tag} (invisible)":"{tag} (unsichtbar)","{tag} (restricted)":"{tag} (eingeschränkt)",Actions:"Aktionen",Activities:"Aktivitäten","Animals & Nature":"Tiere & Natur","Anything shared with the same group of people will show up here":"Alles, das mit derselben Gruppe von Personen geteilt wird, wird hier angezeigt","Avatar of {displayName}":"Avatar von {displayName}","Avatar of {displayName}, {status}":"Avatar von {displayName}, {status}","Cancel changes":"Änderungen verwerfen","Change title":"Titel ändern",Choose:"Auswählen","Clear text":"Klartext",Close:"Schließen","Close modal":"Modal schließen","Close navigation":"Navigation schließen","Close sidebar":"Seitenleiste schließen","Confirm changes":"Änderungen bestätigen",Custom:"Benutzerdefiniert","Edit item":"Objekt bearbeiten","Error getting related resources":"Fehler beim Abrufen verwandter Ressourcen","Error parsing svg":"Fehler beim Einlesen der SVG","External documentation for {title}":"Externe Dokumentation für {title}",Favorite:"Favorit",Flags:"Flaggen","Food & Drink":"Essen & Trinken","Frequently used":"Häufig verwendet",Global:"Global","Go back to the list":"Zurück zur Liste","Hide password":"Passwort verbergen","Message limit of {count} characters reached":"Nachrichtenlimit von {count} Zeichen erreicht","More items …":"Weitere Elemente …",Next:"Weiter","No emoji found":"Kein Emoji gefunden","No results":"Keine Ergebnisse",Objects:"Objekte",Open:"Öffnen",'Open link to "{resourceTitle}"':'Link zu "{resourceTitle}" öffnen',"Open navigation":"Navigation öffnen","Password is secure":"Passwort ist sicher","Pause slideshow":"Diashow pausieren","People & Body":"Menschen & Körper","Pick an emoji":"Ein Emoji auswählen","Please select a time zone:":"Bitte eine Zeitzone auswählen:",Previous:"Vorherige","Related resources":"Verwandte Ressourcen",Search:"Suche","Search results":"Suchergebnisse","Select a tag":"Schlagwort auswählen",Settings:"Einstellungen","Settings navigation":"Einstellungen für die Navigation","Show password":"Passwort anzeigen","Smileys & Emotion":"Smileys & Emotionen","Start slideshow":"Diashow starten",Submit:"Einreichen",Symbols:"Symbole","Travel & Places":"Reisen & Orte","Type to search time zone":"Tippen, um eine Zeitzone zu suchen","Unable to search the group":"Die Gruppe kann nicht durchsucht werden","Undo changes":"Änderungen rückgängig machen",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Nachricht schreiben, "@" um jemanden zu erwähnen, ":" für die automatische Vervollständigung von Emojis …'}},{locale:"el",translations:{"{tag} (invisible)":"{tag} (αόρατο)","{tag} (restricted)":"{tag} (περιορισμένο)",Actions:"Ενέργειες",Activities:"Δραστηριότητες","Animals & Nature":"Ζώα & Φύση","Anything shared with the same group of people will show up here":"Οτιδήποτε μοιράζεται με την ίδια ομάδα ατόμων θα εμφανίζεται εδώ","Avatar of {displayName}":"Άβαταρ του {displayName}","Avatar of {displayName}, {status}":"Άβαταρ του {displayName}, {status}","Cancel changes":"Ακύρωση αλλαγών","Change title":"Αλλαγή τίτλου",Choose:"Επιλογή","Clear text":"Εκκαθάριση κειμένου",Close:"Κλείσιμο","Close modal":"Βοηθητικό κλείσιμο","Close navigation":"Κλείσιμο πλοήγησης","Close sidebar":"Κλείσιμο πλευρικής μπάρας","Confirm changes":"Επιβεβαίωση αλλαγών",Custom:"Προσαρμογή","Edit item":"Επεξεργασία","Error getting related resources":"Σφάλμα λήψης σχετικών πόρων","Error parsing svg":"Σφάλμα ανάλυσης svg","External documentation for {title}":"Εξωτερική τεκμηρίωση για {title}",Favorite:"Αγαπημένα",Flags:"Σημαίες","Food & Drink":"Φαγητό & Ποτό","Frequently used":"Συχνά χρησιμοποιούμενο",Global:"Καθολικό","Go back to the list":"Επιστροφή στην αρχική λίστα ","Hide password":"Απόκρυψη κωδικού πρόσβασης","Message limit of {count} characters reached":"Συμπληρώθηκε το όριο των {count} χαρακτήρων του μηνύματος","More items …":"Περισσότερα στοιχεία …",Next:"Επόμενο","No emoji found":"Δεν βρέθηκε emoji","No results":"Κανένα αποτέλεσμα",Objects:"Αντικείμενα",Open:"Άνοιγμα",'Open link to "{resourceTitle}"':'Άνοιγμα συνδέσμου στο "{resourceTitle}"',"Open navigation":"Άνοιγμα πλοήγησης","Password is secure":"Ο κωδικός πρόσβασης είναι ασφαλής","Pause slideshow":"Παύση προβολής διαφανειών","People & Body":"Άνθρωποι & Σώμα","Pick an emoji":"Επιλέξτε ένα emoji","Please select a time zone:":"Παρακαλούμε επιλέξτε μια ζώνη ώρας:",Previous:"Προηγούμενο","Related resources":"Σχετικοί πόροι",Search:"Αναζήτηση","Search results":"Αποτελέσματα αναζήτησης","Select a tag":"Επιλογή ετικέτας",Settings:"Ρυθμίσεις","Settings navigation":"Πλοήγηση ρυθμίσεων","Show password":"Εμφάνιση κωδικού πρόσβασης","Smileys & Emotion":"Φατσούλες & Συναίσθημα","Start slideshow":"Έναρξη προβολής διαφανειών",Submit:"Υποβολή",Symbols:"Σύμβολα","Travel & Places":"Ταξίδια & Τοποθεσίες","Type to search time zone":"Πληκτρολογήστε για αναζήτηση ζώνης ώρας","Unable to search the group":"Δεν είναι δυνατή η αναζήτηση της ομάδας","Undo changes":"Αναίρεση Αλλαγών",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Γράψτε μήνυμα, χρησιμοποιείστε "@" για να αναφέρετε κάποιον, χρησιμοποιείστε ":" για αυτόματη συμπλήρωση emoji …'}},{locale:"en_GB",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restricted)",Actions:"Actions",Activities:"Activities","Animals & Nature":"Animals & Nature","Anything shared with the same group of people will show up here":"Anything shared with the same group of people will show up here","Avatar of {displayName}":"Avatar of {displayName}","Avatar of {displayName}, {status}":"Avatar of {displayName}, {status}","Cancel changes":"Cancel changes","Change title":"Change title",Choose:"Choose","Clear text":"Clear text",Close:"Close","Close modal":"Close modal","Close navigation":"Close navigation","Close sidebar":"Close sidebar","Confirm changes":"Confirm changes",Custom:"Custom","Edit item":"Edit item","Error getting related resources":"Error getting related resources","Error parsing svg":"Error parsing svg","External documentation for {title}":"External documentation for {title}",Favorite:"Favourite",Flags:"Flags","Food & Drink":"Food & Drink","Frequently used":"Frequently used",Global:"Global","Go back to the list":"Go back to the list","Hide password":"Hide password","Message limit of {count} characters reached":"Message limit of {count} characters reached","More items …":"More items …",Next:"Next","No emoji found":"No emoji found","No results":"No results",Objects:"Objects",Open:"Open",'Open link to "{resourceTitle}"':'Open link to "{resourceTitle}"',"Open navigation":"Open navigation","Password is secure":"Password is secure","Pause slideshow":"Pause slideshow","People & Body":"People & Body","Pick an emoji":"Pick an emoji","Please select a time zone:":"Please select a time zone:",Previous:"Previous","Related resources":"Related resources",Search:"Search","Search results":"Search results","Select a tag":"Select a tag",Settings:"Settings","Settings navigation":"Settings navigation","Show password":"Show password","Smileys & Emotion":"Smileys & Emotion","Start slideshow":"Start slideshow",Submit:"Submit",Symbols:"Symbols","Travel & Places":"Travel & Places","Type to search time zone":"Type to search time zone","Unable to search the group":"Unable to search the group","Undo changes":"Undo changes",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Write message, use "@" to mention someone, use ":" for emoji autocompletion …'}},{locale:"eo",translations:{"{tag} (invisible)":"{tag} (kaŝita)","{tag} (restricted)":"{tag} (limigita)",Actions:"Agoj",Activities:"Aktiveco","Animals & Nature":"Bestoj & Naturo",Choose:"Elektu",Close:"Fermu",Custom:"Propra",Flags:"Flagoj","Food & Drink":"Manĝaĵo & Trinkaĵo","Frequently used":"Ofte uzataj","Message limit of {count} characters reached":"La limo je {count} da literoj atingita",Next:"Sekva","No emoji found":"La emoĝio forestas","No results":"La rezulto forestas",Objects:"Objektoj","Pause slideshow":"Payzi bildprezenton","People & Body":"Homoj & Korpo","Pick an emoji":"Elekti emoĝion ",Previous:"Antaŭa",Search:"Serĉi","Search results":"Serĉrezultoj","Select a tag":"Elektu etikedon",Settings:"Agordo","Settings navigation":"Agorda navigado","Smileys & Emotion":"Ridoj kaj Emocioj","Start slideshow":"Komenci bildprezenton",Symbols:"Signoj","Travel & Places":"Vojaĵoj & Lokoj","Unable to search the group":"Ne eblas serĉi en la grupo","Write message, @ to mention someone …":"Mesaĝi, uzu @ por mencii iun ..."}},{locale:"es",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restringido)",Actions:"Acciones",Activities:"Actividades","Animals & Nature":"Animales y naturaleza","Anything shared with the same group of people will show up here":"Cualquier cosa que sea compartida con el mismo grupo de personas se mostrará aquí","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar cambios","Change title":"Cambiar título",Choose:"Elegir","Clear text":"Limpiar texto",Close:"Cerrar","Close modal":"Cerrar modal","Close navigation":"Cerrar navegación","Close sidebar":"Cerrar barra lateral","Confirm changes":"Confirmar cambios",Custom:"Personalizado","Edit item":"Editar elemento","Error getting related resources":"Se encontró un error al obtener los recursos relacionados","Error parsing svg":"Error procesando svg","External documentation for {title}":"Documentacion externa de {title}",Favorite:"Favorito",Flags:"Banderas","Food & Drink":"Comida y bebida","Frequently used":"Usado con frecuenca",Global:"Global","Go back to the list":"Volver a la lista","Hide password":"Ocultar contraseña","Message limit of {count} characters reached":"El mensaje ha alcanzado el límite de {count} caracteres","More items …":"Más ítems...",Next:"Siguiente","No emoji found":"No hay ningún emoji","No results":" Ningún resultado",Objects:"Objetos",Open:"Abrir",'Open link to "{resourceTitle}"':'Abrir enlace a "{resourceTitle}"',"Open navigation":"Abrir navegación","Password is secure":"La contraseña es segura","Pause slideshow":"Pausar la presentación ","People & Body":"Personas y cuerpos","Pick an emoji":"Elegir un emoji","Please select a time zone:":"Por favor elige un huso de horario:",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Buscar","Search results":"Resultados de la búsqueda","Select a tag":"Seleccione una etiqueta",Settings:"Ajustes","Settings navigation":"Navegación por ajustes","Show password":"Mostrar contraseña","Smileys & Emotion":"Smileys y emoticonos","Start slideshow":"Iniciar la presentación",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viajes y lugares","Type to search time zone":"Escribe para buscar un huso de horario","Unable to search the group":"No es posible buscar en el grupo","Undo changes":"Deshacer cambios",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escribir mensaje, utilice "@" para mencionar a alguien, utilice ":" para autocompletado de emojis ...'}},{locale:"eu",translations:{"{tag} (invisible)":"{tag} (ikusezina)","{tag} (restricted)":"{tag} (mugatua)",Actions:"Ekintzak",Activities:"Jarduerak","Animals & Nature":"Animaliak eta Natura","Anything shared with the same group of people will show up here":"Pertsona-talde berarekin partekatutako edozer agertuko da hemen","Avatar of {displayName}":"{displayName}-(e)n irudia","Avatar of {displayName}, {status}":"{displayName} -(e)n irudia, {status}","Cancel changes":"Ezeztatu aldaketak","Change title":"Aldatu titulua",Choose:"Aukeratu","Clear text":"Garbitu testua",Close:"Itxi","Close modal":"Itxi modala","Close navigation":"Itxi nabigazioa","Close sidebar":"Itxi albo-barra","Confirm changes":"Baieztatu aldaketak",Custom:"Pertsonalizatua","Edit item":"Editatu elementua","Error getting related resources":"Errorea erlazionatutako baliabideak lortzerakoan","Error parsing svg":"Errore bat gertatu da svg-a analizatzean","External documentation for {title}":"Kanpoko dokumentazioa {title}(r)entzat",Favorite:"Gogokoa",Flags:"Banderak","Food & Drink":"Janaria eta edariak","Frequently used":"Askotan erabilia",Global:"Globala","Go back to the list":"Bueltatu zerrendara","Hide password":"Ezkutatu pasahitza","Message limit of {count} characters reached":"Mezuaren {count} karaketere-limitera heldu zara","More items …":"Elementu gehiago …",Next:"Hurrengoa","No emoji found":"Ez da emojirik aurkitu","No results":"Emaitzarik ez",Objects:"Objektuak",Open:"Ireki",'Open link to "{resourceTitle}"':'Ireki esteka: "{resourceTitle}"',"Open navigation":"Ireki nabigazioa","Password is secure":"Pasahitza segurua da","Pause slideshow":"Pausatu diaporama","People & Body":"Jendea eta gorputza","Pick an emoji":"Hautatu emoji bat","Please select a time zone:":"Mesedez hautatu ordu-zona bat:",Previous:"Aurrekoa","Related resources":"Erlazionatutako baliabideak",Search:"Bilatu","Search results":"Bilaketa emaitzak","Select a tag":"Hautatu etiketa bat",Settings:"Ezarpenak","Settings navigation":"Nabigazio ezarpenak","Show password":"Erakutsi pasahitza","Smileys & Emotion":"Smileyak eta emozioa","Start slideshow":"Hasi diaporama",Submit:"Bidali",Symbols:"Sinboloak","Travel & Places":"Bidaiak eta lekuak","Type to search time zone":"Idatzi ordu-zona bat bilatzeko","Unable to search the group":"Ezin izan da taldea bilatu","Undo changes":"Aldaketak desegin",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Idatzi mezua, erabili "@" norbait aipatzeko, erabili ":" emojiak automatikoki osatzeko...'}},{locale:"fi_FI",translations:{"{tag} (invisible)":"{tag} (näkymätön)","{tag} (restricted)":"{tag} (rajoitettu)",Actions:"Toiminnot",Activities:"Aktiviteetit","Animals & Nature":"Eläimet & luonto","Avatar of {displayName}":"Käyttäjän {displayName} avatar","Avatar of {displayName}, {status}":"Käyttäjän {displayName} avatar, {status}","Cancel changes":"Peruuta muutokset",Choose:"Valitse",Close:"Sulje","Close navigation":"Sulje navigaatio","Confirm changes":"Vahvista muutokset",Custom:"Mukautettu","Edit item":"Muokkaa kohdetta","External documentation for {title}":"Ulkoinen dokumentaatio kohteelle {title}",Flags:"Liput","Food & Drink":"Ruoka & juoma","Frequently used":"Usein käytetyt",Global:"Yleinen","Go back to the list":"Siirry takaisin listaan","Message limit of {count} characters reached":"Viestin merkken enimmäisimäärä {count} täynnä ",Next:"Seuraava","No emoji found":"Emojia ei löytynyt","No results":"Ei tuloksia",Objects:"Esineet & asiat","Open navigation":"Avaa navigaatio","Pause slideshow":"Keskeytä diaesitys","People & Body":"Ihmiset & keho","Pick an emoji":"Valitse emoji","Please select a time zone:":"Valitse aikavyöhyke:",Previous:"Edellinen",Search:"Etsi","Search results":"Hakutulokset","Select a tag":"Valitse tagi",Settings:"Asetukset","Settings navigation":"Asetusnavigaatio","Smileys & Emotion":"Hymiöt & tunteet","Start slideshow":"Aloita diaesitys",Submit:"Lähetä",Symbols:"Symbolit","Travel & Places":"Matkustus & kohteet","Type to search time zone":"Kirjoita etsiäksesi aikavyöhyke","Unable to search the group":"Ryhmää ei voi hakea","Undo changes":"Kumoa muutokset","Write message, @ to mention someone, : for emoji autocompletion …":"Kirjoita viesti, @ mainitaksesi käyttäjän, : emojin automaattitäydennykseen…"}},{locale:"fr",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (restreint)",Actions:"Actions",Activities:"Activités","Animals & Nature":"Animaux & Nature","Anything shared with the same group of people will show up here":"Tout ce qui est partagé avec le même groupe de personnes apparaîtra ici","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Annuler les modifications","Change title":"Modifier le titre",Choose:"Choisir","Clear text":"Effacer le texte",Close:"Fermer","Close modal":"Fermer la fenêtre","Close navigation":"Fermer la navigation","Close sidebar":"Fermer la barre latérale","Confirm changes":"Confirmer les modifications",Custom:"Personnalisé","Edit item":"Éditer l'élément","Error getting related resources":"Erreur à la récupération des ressources liées","Error parsing svg":"Erreur d'analyse SVG","External documentation for {title}":"Documentation externe pour {title}",Favorite:"Favori",Flags:"Drapeaux","Food & Drink":"Nourriture & Boissons","Frequently used":"Utilisés fréquemment",Global:"Global","Go back to the list":"Retourner à la liste","Hide password":"Cacher le mot de passe","Message limit of {count} characters reached":"Limite de messages de {count} caractères atteinte","More items …":"Plus d'éléments...",Next:"Suivant","No emoji found":"Pas d’émoji trouvé","No results":"Aucun résultat",Objects:"Objets",Open:"Ouvrir",'Open link to "{resourceTitle}"':'Ouvrir le lien vers "{resourceTitle}"',"Open navigation":"Ouvrir la navigation","Password is secure":"Le mot de passe est sécurisé","Pause slideshow":"Mettre le diaporama en pause","People & Body":"Personnes & Corps","Pick an emoji":"Choisissez un émoji","Please select a time zone:":"Sélectionnez un fuseau horaire : ",Previous:"Précédent","Related resources":"Ressources liées",Search:"Chercher","Search results":"Résultats de recherche","Select a tag":"Sélectionnez une balise",Settings:"Paramètres","Settings navigation":"Navigation dans les paramètres","Show password":"Afficher le mot de passe","Smileys & Emotion":"Smileys & Émotions","Start slideshow":"Démarrer le diaporama",Submit:"Valider",Symbols:"Symboles","Travel & Places":"Voyage & Lieux","Type to search time zone":"Saisissez les premiers lettres pour rechercher un fuseau horaire","Unable to search the group":"Impossible de chercher le groupe","Undo changes":"Annuler les changements",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Écrire un message, utiliser "@" pour mentionner une personne, ":" pour l\'autocomplétion des émojis...'}},{locale:"gl",translations:{"{tag} (invisible)":"{tag} (invisíbel)","{tag} (restricted)":"{tag} (restrinxido)",Actions:"Accións",Activities:"Actividades","Animals & Nature":"Animais e natureza","Cancel changes":"Cancelar os cambios",Choose:"Escoller",Close:"Pechar","Confirm changes":"Confirma os cambios",Custom:"Personalizado","External documentation for {title}":"Documentación externa para {title}",Flags:"Bandeiras","Food & Drink":"Comida e bebida","Frequently used":"Usado con frecuencia","Message limit of {count} characters reached":"Acadouse o límite de {count} caracteres por mensaxe",Next:"Seguinte","No emoji found":"Non se atopou ningún «emoji»","No results":"Sen resultados",Objects:"Obxectos","Pause slideshow":"Pausar o diaporama","People & Body":"Persoas e corpo","Pick an emoji":"Escolla un «emoji»",Previous:"Anterir",Search:"Buscar","Search results":"Resultados da busca","Select a tag":"Seleccione unha etiqueta",Settings:"Axustes","Settings navigation":"Navegación polos axustes","Smileys & Emotion":"Sorrisos e emocións","Start slideshow":"Iniciar o diaporama",Submit:"Enviar",Symbols:"Símbolos","Travel & Places":"Viaxes e lugares","Unable to search the group":"Non foi posíbel buscar o grupo","Write message, @ to mention someone …":"Escriba a mensaxe, @ para mencionar a alguén…"}},{locale:"he",translations:{"{tag} (invisible)":"{tag} (נסתר)","{tag} (restricted)":"{tag} (מוגבל)",Actions:"פעולות",Activities:"פעילויות","Animals & Nature":"חיות וטבע",Choose:"בחירה",Close:"סגירה",Custom:"בהתאמה אישית",Flags:"דגלים","Food & Drink":"מזון ומשקאות","Frequently used":"בשימוש תדיר",Next:"הבא","No emoji found":"לא נמצא אמוג׳י","No results":"אין תוצאות",Objects:"חפצים","Pause slideshow":"השהיית מצגת","People & Body":"אנשים וגוף","Pick an emoji":"נא לבחור אמוג׳י",Previous:"הקודם",Search:"חיפוש","Search results":"תוצאות חיפוש","Select a tag":"בחירת תגית",Settings:"הגדרות","Smileys & Emotion":"חייכנים ורגשונים","Start slideshow":"התחלת המצגת",Symbols:"סמלים","Travel & Places":"טיולים ומקומות","Unable to search the group":"לא ניתן לחפש בקבוצה"}},{locale:"hu_HU",translations:{"{tag} (invisible)":"{tag} (láthatatlan)","{tag} (restricted)":"{tag} (korlátozott)",Actions:"Műveletek",Activities:"Tevékenységek","Animals & Nature":"Állatok és természet","Anything shared with the same group of people will show up here":"Minden, amit ugyanazzal a csoporttal oszt meg, itt fog megjelenni","Avatar of {displayName}":"{displayName} profilképe","Avatar of {displayName}, {status}":"{displayName} profilképe, {status}","Cancel changes":"Változtatások elvetése","Change title":"Cím megváltoztatása",Choose:"Válassszon","Clear text":"Szöveg törlése",Close:"Bezárás","Close modal":"Ablak bezárása","Close navigation":"Navigáció bezárása","Close sidebar":"Oldalsáv bezárása","Confirm changes":"Változtatások megerősítése",Custom:"Egyéni","Edit item":"Elem szerkesztése","Error getting related resources":"Hiba a kapcsolódó erőforrások lekérésekor","Error parsing svg":"Hiba az SVG feldolgozásakor","External documentation for {title}":"Külső dokumentáció ehhez: {title}",Favorite:"Kedvenc",Flags:"Zászlók","Food & Drink":"Étel és ital","Frequently used":"Gyakran használt",Global:"Globális","Go back to the list":"Ugrás vissza a listához","Hide password":"Jelszó elrejtése","Message limit of {count} characters reached":"{count} karakteres üzenetkorlát elérve","More items …":"További elemek...",Next:"Következő","No emoji found":"Nem található emodzsi","No results":"Nincs találat",Objects:"Tárgyak",Open:"Megnyitás",'Open link to "{resourceTitle}"':"A(z) „{resourceTitle}” hivatkozásának megnyitása","Open navigation":"Navigáció megnyitása","Password is secure":"A jelszó biztonságos","Pause slideshow":"Diavetítés szüneteltetése","People & Body":"Emberek és test","Pick an emoji":"Válasszon egy emodzsit","Please select a time zone:":"Válasszon időzónát:",Previous:"Előző","Related resources":"Kapcsolódó erőforrások",Search:"Keresés","Search results":"Találatok","Select a tag":"Válasszon címkét",Settings:"Beállítások","Settings navigation":"Navigáció a beállításokban","Show password":"Jelszó megjelenítése","Smileys & Emotion":"Mosolyok és érzelmek","Start slideshow":"Diavetítés indítása",Submit:"Beküldés",Symbols:"Szimbólumok","Travel & Places":"Utazás és helyek","Type to search time zone":"Gépeljen az időzóna kereséséhez","Unable to search the group":"A csoport nem kereshető","Undo changes":"Változtatások visszavonása",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':"Írjon egy üzenetet, használja a „@”-ot valaki megemlítéséhet, illetve a „:”-ot az emodzsik automatikus kiegészítéséhez…"}},{locale:"is",translations:{"{tag} (invisible)":"{tag} (ósýnilegt)","{tag} (restricted)":"{tag} (takmarkað)",Actions:"Aðgerðir",Activities:"Aðgerðir","Animals & Nature":"Dýr og náttúra",Choose:"Velja",Close:"Loka",Custom:"Sérsniðið",Flags:"Flögg","Food & Drink":"Matur og drykkur","Frequently used":"Oftast notað",Next:"Næsta","No emoji found":"Ekkert tjáningartákn fannst","No results":"Engar niðurstöður",Objects:"Hlutir","Pause slideshow":"Gera hlé á skyggnusýningu","People & Body":"Fólk og líkami","Pick an emoji":"Veldu tjáningartákn",Previous:"Fyrri",Search:"Leita","Search results":"Leitarniðurstöður","Select a tag":"Veldu merki",Settings:"Stillingar","Smileys & Emotion":"Broskallar og tilfinningar","Start slideshow":"Byrja skyggnusýningu",Symbols:"Tákn","Travel & Places":"Staðir og ferðalög","Unable to search the group":"Get ekki leitað í hópnum"}},{locale:"it",translations:{"{tag} (invisible)":"{tag} (invisibile)","{tag} (restricted)":"{tag} (limitato)",Actions:"Azioni",Activities:"Attività","Animals & Nature":"Animali e natura","Anything shared with the same group of people will show up here":"Tutto ciò che è stato condiviso con lo stesso gruppo di persone viene visualizzato qui","Avatar of {displayName}":"Avatar di {displayName}","Avatar of {displayName}, {status}":"Avatar di {displayName}, {status}","Cancel changes":"Annulla modifiche","Change title":"Modifica il titolo",Choose:"Scegli","Clear text":"Cancella il testo",Close:"Chiudi","Close modal":"Chiudi il messaggio modale","Close navigation":"Chiudi la navigazione","Close sidebar":"Chiudi la barra laterale","Confirm changes":"Conferma modifiche",Custom:"Personalizzato","Edit item":"Modifica l'elemento","Error getting related resources":"Errore nell'ottenere risorse correlate","Error parsing svg":"Errore nell'analizzare l'svg","External documentation for {title}":"Documentazione esterna per {title}",Favorite:"Preferito",Flags:"Bandiere","Food & Drink":"Cibo e bevande","Frequently used":"Usati di frequente",Global:"Globale","Go back to the list":"Torna all'elenco","Hide password":"Nascondi la password","Message limit of {count} characters reached":"Limite dei messaggi di {count} caratteri raggiunto","More items …":"Più elementi ...",Next:"Successivo","No emoji found":"Nessun emoji trovato","No results":"Nessun risultato",Objects:"Oggetti",Open:"Apri",'Open link to "{resourceTitle}"':'Apri il link a "{resourceTitle}"',"Open navigation":"Apri la navigazione","Password is secure":"La password è sicura","Pause slideshow":"Presentazione in pausa","People & Body":"Persone e corpo","Pick an emoji":"Scegli un emoji","Please select a time zone:":"Si prega di selezionare un fuso orario:",Previous:"Precedente","Related resources":"Risorse correlate",Search:"Cerca","Search results":"Risultati di ricerca","Select a tag":"Seleziona un'etichetta",Settings:"Impostazioni","Settings navigation":"Navigazione delle impostazioni","Show password":"Mostra la password","Smileys & Emotion":"Faccine ed emozioni","Start slideshow":"Avvia presentazione",Submit:"Invia",Symbols:"Simboli","Travel & Places":"Viaggi e luoghi","Type to search time zone":"Digita per cercare un fuso orario","Unable to search the group":"Impossibile cercare il gruppo","Undo changes":"Cancella i cambiamenti",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrivi un messaggio, "@" per menzionare qualcuno, ":" per il completamento automatico delle emoji ...'}},{locale:"ja_JP",translations:{"{tag} (invisible)":"{タグ} (不可視)","{tag} (restricted)":"{タグ} (制限付)",Actions:"操作",Activities:"アクティビティ","Animals & Nature":"動物と自然","Anything shared with the same group of people will show up here":"同じグループで共有しているものは、全てここに表示されます","Avatar of {displayName}":"{displayName} のアバター","Avatar of {displayName}, {status}":"{displayName}, {status} のアバター","Cancel changes":"変更をキャンセル","Change title":"タイトルを変更",Choose:"選択","Clear text":"テキストをクリア",Close:"閉じる","Close modal":"モーダルを閉じる","Close navigation":"ナビゲーションを閉じる","Close sidebar":"サイドバーを閉じる","Confirm changes":"変更を承認",Custom:"カスタム","Edit item":"編集","Error getting related resources":"関連リソースの取得エラー","Error parsing svg":"svgの解析エラー","External documentation for {title}":"{title} のための添付文書",Favorite:"お気に入り",Flags:"国旗","Food & Drink":"食べ物と飲み物","Frequently used":"よく使うもの",Global:"全体","Go back to the list":"リストに戻る","Hide password":"パスワードを非表示","Message limit of {count} characters reached":"{count} 文字のメッセージ上限に達しています","More items …":"他のアイテム",Next:"次","No emoji found":"絵文字が見つかりません","No results":"なし",Objects:"物",Open:"開く",'Open link to "{resourceTitle}"':'"{resourceTitle}"のリンクを開く',"Open navigation":"ナビゲーションを開く","Password is secure":"パスワードは保護されています","Pause slideshow":"スライドショーを一時停止","People & Body":"様々な人と体の部位","Pick an emoji":"絵文字を選択","Please select a time zone:":"タイムゾーンを選んで下さい:",Previous:"前","Related resources":"関連リソース",Search:"検索","Search results":"検索結果","Select a tag":"タグを選択",Settings:"設定","Settings navigation":"ナビゲーション設定","Show password":"パスワードを表示","Smileys & Emotion":"感情表現","Start slideshow":"スライドショーを開始",Submit:"提出",Symbols:"記号","Travel & Places":"旅行と場所","Type to search time zone":"タイムゾーン検索のため入力してください","Unable to search the group":"グループを検索できません","Undo changes":"変更を取り消し",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'メッセージを記入、"@"でメンション、":"で絵文字の自動補完 ...'}},{locale:"lt_LT",translations:{"{tag} (invisible)":"{tag} (nematoma)","{tag} (restricted)":"{tag} (apribota)",Actions:"Veiksmai",Activities:"Veiklos","Animals & Nature":"Gyvūnai ir gamta",Choose:"Pasirinkti",Close:"Užverti",Custom:"Tinkinti","External documentation for {title}":"Išorinė {title} dokumentacija",Flags:"Vėliavos","Food & Drink":"Maistas ir gėrimai","Frequently used":"Dažniausiai naudoti","Message limit of {count} characters reached":"Pasiekta {count} simbolių žinutės riba",Next:"Kitas","No emoji found":"Nerasta jaustukų","No results":"Nėra rezultatų",Objects:"Objektai","Pause slideshow":"Pristabdyti skaidrių rodymą","People & Body":"Žmonės ir kūnas","Pick an emoji":"Pasirinkti jaustuką",Previous:"Ankstesnis",Search:"Ieškoti","Search results":"Paieškos rezultatai","Select a tag":"Pasirinkti žymę",Settings:"Nustatymai","Settings navigation":"Naršymas nustatymuose","Smileys & Emotion":"Šypsenos ir emocijos","Start slideshow":"Pradėti skaidrių rodymą",Submit:"Pateikti",Symbols:"Simboliai","Travel & Places":"Kelionės ir vietos","Unable to search the group":"Nepavyko atlikti paiešką grupėje","Write message, @ to mention someone …":"Rašykite žinutę, naudokite @ norėdami kažką paminėti…"}},{locale:"lv",translations:{"{tag} (invisible)":"{tag} (neredzams)","{tag} (restricted)":"{tag} (ierobežots)",Choose:"Izvēlēties",Close:"Aizvērt",Next:"Nākamais","No results":"Nav rezultātu","Pause slideshow":"Pauzēt slaidrādi",Previous:"Iepriekšējais","Select a tag":"Izvēlēties birku",Settings:"Iestatījumi","Start slideshow":"Sākt slaidrādi"}},{locale:"mk",translations:{"{tag} (invisible)":"{tag} (невидливо)","{tag} (restricted)":"{tag} (ограничено)",Actions:"Акции",Activities:"Активности","Animals & Nature":"Животни & Природа","Avatar of {displayName}":"Аватар на {displayName}","Avatar of {displayName}, {status}":"Аватар на {displayName}, {status}","Cancel changes":"Откажи ги промените","Change title":"Промени наслов",Choose:"Избери",Close:"Затвори","Close modal":"Затвори модал","Close navigation":"Затвори навигација","Confirm changes":"Потврди ги промените",Custom:"Прилагодени","Edit item":"Уреди","External documentation for {title}":"Надворешна документација за {title}",Favorite:"Фаворити",Flags:"Знамиња","Food & Drink":"Храна & Пијалоци","Frequently used":"Најчесто користени",Global:"Глобално","Go back to the list":"Врати се на листата",items:"ставки","Message limit of {count} characters reached":"Ограничувањето на должината на пораката од {count} карактери е надминато","More {dashboardItemType} …":"Повеќе {dashboardItemType} …",Next:"Следно","No emoji found":"Не се пронајдени емотикони","No results":"Нема резултати",Objects:"Објекти",Open:"Отвори","Open navigation":"Отвори навигација","Pause slideshow":"Пузирај слајдшоу","People & Body":"Луѓе & Тело","Pick an emoji":"Избери емотикон","Please select a time zone:":"Изберете временска зона:",Previous:"Предходно",Search:"Барај","Search results":"Резултати од барувањето","Select a tag":"Избери ознака",Settings:"Параметри","Settings navigation":"Параметри за навигација","Smileys & Emotion":"Смешковци & Емотикони","Start slideshow":"Стартувај слајдшоу",Submit:"Испрати",Symbols:"Симболи","Travel & Places":"Патувања & Места","Type to search time zone":"Напишете за да пребарате временска зона","Unable to search the group":"Неможе да се принајде групата","Undo changes":"Врати ги промените","Write message, @ to mention someone, : for emoji autocompletion …":"Напиши порака, @ за да спомнете некого, : за емотинони автоатско комплетирање ..."}},{locale:"my",translations:{"{tag} (invisible)":"{tag} (ကွယ်ဝှက်ထား)","{tag} (restricted)":"{tag} (ကန့်သတ်)",Actions:"လုပ်ဆောင်ချက်များ",Activities:"ပြုလုပ်ဆောင်တာများ","Animals & Nature":"တိရစ္ဆာန်များနှင့် သဘာဝ","Avatar of {displayName}":"{displayName} ၏ ကိုယ်ပွား","Cancel changes":"ပြောင်းလဲမှုများ ပယ်ဖျက်ရန်",Choose:"ရွေးချယ်ရန်",Close:"ပိတ်ရန်","Confirm changes":"ပြောင်းလဲမှုများ အတည်ပြုရန်",Custom:"အလိုကျချိန်ညှိမှု","External documentation for {title}":"{title} အတွက် ပြင်ပ စာရွက်စာတမ်း",Flags:"အလံများ","Food & Drink":"အစားအသောက်","Frequently used":"မကြာခဏအသုံးပြုသော",Global:"ကမ္ဘာလုံးဆိုင်ရာ","Message limit of {count} characters reached":"ကန့်သတ် စာလုံးရေ {count} လုံး ပြည့်ပါပြီ",Next:"နောက်သို့ဆက်ရန်","No emoji found":"အီမိုဂျီ ရှာဖွေမတွေ့နိုင်ပါ","No results":"ရလဒ်မရှိပါ",Objects:"အရာဝတ္ထုများ","Pause slideshow":"စလိုက်ရှိုး ခေတ္တရပ်ရန်","People & Body":"လူပုဂ္ဂိုလ်များနှင့် ခန္ဓာကိုယ်","Pick an emoji":"အီမိုဂျီရွေးရန်","Please select a time zone:":"ဒေသစံတော်ချိန် ရွေးချယ်ပေးပါ",Previous:"ယခင်",Search:"ရှာဖွေရန်","Search results":"ရှာဖွေမှု ရလဒ်များ","Select a tag":"tag ရွေးချယ်ရန်",Settings:"ချိန်ညှိချက်များ","Settings navigation":"ချိန်ညှိချက်အညွှန်း","Smileys & Emotion":"စမိုင်လီများနှင့် အီမိုရှင်း","Start slideshow":"စလိုက်ရှိုးအား စတင်ရန်",Submit:"တင်သွင်းရန်",Symbols:"သင်္ကေတများ","Travel & Places":"ခရီးသွားလာခြင်းနှင့် နေရာများ","Type to search time zone":"ဒေသစံတော်ချိန်များ ရှာဖွေရန် စာရိုက်ပါ","Unable to search the group":"အဖွဲ့အား ရှာဖွေ၍ မရနိုင်ပါ","Write message, @ to mention someone …":"စာရေးသားရန်၊ တစ်စုံတစ်ဦးအား @ အသုံးပြု ရည်ညွှန်းရန်..."}},{locale:"nb_NO",translations:{"{tag} (invisible)":"{tag} (usynlig)","{tag} (restricted)":"{tag} (beskyttet)",Actions:"Handlinger",Activities:"Aktiviteter","Animals & Nature":"Dyr og natur","Anything shared with the same group of people will show up here":"Alt som er delt med den samme gruppen vil vises her","Avatar of {displayName}":"Avataren til {displayName}","Avatar of {displayName}, {status}":"{displayName}'s avatar, {status}","Cancel changes":"Avbryt endringer","Change title":"Endre tittel",Choose:"Velg","Clear text":"Fjern tekst",Close:"Lukk","Close modal":"Lukk modal","Close navigation":"Lukk navigasjon","Close sidebar":"Lukk sidepanel","Confirm changes":"Bekreft endringer",Custom:"Tilpasset","Edit item":"Rediger","Error getting related resources":"Feil ved henting av relaterte ressurser","Error parsing svg":"Feil ved parsing av svg","External documentation for {title}":"Ekstern dokumentasjon for {title}",Favorite:"Favoritt",Flags:"Flagg","Food & Drink":"Mat og drikke","Frequently used":"Ofte brukt",Global:"Global","Go back to the list":"Gå tilbake til listen","Hide password":"Skjul passord","Message limit of {count} characters reached":"Karakter begrensing {count} nådd i melding","More items …":"Flere gjenstander...",Next:"Neste","No emoji found":"Fant ingen emoji","No results":"Ingen resultater",Objects:"Objekter",Open:"Åpne",'Open link to "{resourceTitle}"':'Åpne link til "{resourceTitle}"',"Open navigation":"Åpne navigasjon","Password is secure":"Passordet er sikkert","Pause slideshow":"Pause lysbildefremvisning","People & Body":"Mennesker og kropp","Pick an emoji":"Velg en emoji","Please select a time zone:":"Vennligst velg tidssone",Previous:"Forrige","Related resources":"Relaterte ressurser",Search:"Søk","Search results":"Søkeresultater","Select a tag":"Velg en merkelapp",Settings:"Innstillinger","Settings navigation":"Navigasjonsinstillinger","Show password":"Vis passord","Smileys & Emotion":"Smilefjes og følelser","Start slideshow":"Start lysbildefremvisning",Submit:"Send",Symbols:"Symboler","Travel & Places":"Reise og steder","Type to search time zone":"Tast for å søke etter tidssone","Unable to search the group":"Kunne ikke søke i gruppen","Undo changes":"Tilbakestill endringer",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv melding, bruk "@" for å nevne noen, bruk ":" for autofullføring av emoji...'}},{locale:"nl",translations:{"{tag} (invisible)":"{tag} (onzichtbaar)","{tag} (restricted)":"{tag} (beperkt)",Actions:"Acties",Activities:"Activiteiten","Animals & Nature":"Dieren & Natuur","Avatar of {displayName}":"Avatar van {displayName}","Avatar of {displayName}, {status}":"Avatar van {displayName}, {status}","Cancel changes":"Wijzigingen annuleren",Choose:"Kies",Close:"Sluiten","Close navigation":"Navigatie sluiten","Confirm changes":"Wijzigingen bevestigen",Custom:"Aangepast","Edit item":"Item bewerken","External documentation for {title}":"Externe documentatie voor {title}",Flags:"Vlaggen","Food & Drink":"Eten & Drinken","Frequently used":"Vaak gebruikt",Global:"Globaal","Go back to the list":"Ga terug naar de lijst","Message limit of {count} characters reached":"Berichtlimiet van {count} karakters bereikt",Next:"Volgende","No emoji found":"Geen emoji gevonden","No results":"Geen resultaten",Objects:"Objecten","Open navigation":"Navigatie openen","Pause slideshow":"Pauzeer diavoorstelling","People & Body":"Mensen & Lichaam","Pick an emoji":"Kies een emoji","Please select a time zone:":"Selecteer een tijdzone:",Previous:"Vorige",Search:"Zoeken","Search results":"Zoekresultaten","Select a tag":"Selecteer een label",Settings:"Instellingen","Settings navigation":"Instellingen navigatie","Smileys & Emotion":"Smileys & Emotie","Start slideshow":"Start diavoorstelling",Submit:"Verwerken",Symbols:"Symbolen","Travel & Places":"Reizen & Plaatsen","Type to search time zone":"Type om de tijdzone te zoeken","Unable to search the group":"Kan niet in de groep zoeken","Undo changes":"Wijzigingen ongedaan maken","Write message, @ to mention someone, : for emoji autocompletion …":"Schrijf bericht, @ om iemand te noemen, : voor emoji auto-aanvullen ..."}},{locale:"oc",translations:{"{tag} (invisible)":"{tag} (invisible)","{tag} (restricted)":"{tag} (limit)",Actions:"Accions",Choose:"Causir",Close:"Tampar",Next:"Seguent","No results":"Cap de resultat","Pause slideshow":"Metre en pausa lo diaporama",Previous:"Precedent","Select a tag":"Seleccionar una etiqueta",Settings:"Paramètres","Start slideshow":"Lançar lo diaporama"}},{locale:"pl",translations:{"{tag} (invisible)":"{tag} (niewidoczna)","{tag} (restricted)":"{tag} (ograniczona)",Actions:"Działania",Activities:"Aktywność","Animals & Nature":"Zwierzęta i natura","Anything shared with the same group of people will show up here":"Tutaj pojawi się wszystko, co zostało udostępnione tej samej grupie osób","Avatar of {displayName}":"Awatar {displayName}","Avatar of {displayName}, {status}":"Awatar {displayName}, {status}","Cancel changes":"Anuluj zmiany","Change title":"Zmień tytuł",Choose:"Wybierz","Clear text":"Wyczyść tekst",Close:"Zamknij","Close modal":"Zamknij modal","Close navigation":"Zamknij nawigację","Close sidebar":"Zamknij pasek boczny","Confirm changes":"Potwierdź zmiany",Custom:"Zwyczajne","Edit item":"Edytuj element","Error getting related resources":"Błąd podczas pobierania powiązanych zasobów","Error parsing svg":"Błąd podczas analizowania svg","External documentation for {title}":"Dokumentacja zewnętrzna dla {title}",Favorite:"Ulubiony",Flags:"Flagi","Food & Drink":"Jedzenie i picie","Frequently used":"Często używane",Global:"Globalnie","Go back to the list":"Powrót do listy","Hide password":"Ukryj hasło","Message limit of {count} characters reached":"Przekroczono limit wiadomości wynoszący {count} znaków","More items …":"Więcej pozycji…",Next:"Następny","No emoji found":"Nie znaleziono emoji","No results":"Brak wyników",Objects:"Obiekty",Open:"Otwórz",'Open link to "{resourceTitle}"':'Otwórz link do "{resourceTitle}"',"Open navigation":"Otwórz nawigację","Password is secure":"Hasło jest bezpieczne","Pause slideshow":"Wstrzymaj pokaz slajdów","People & Body":"Ludzie i ciało","Pick an emoji":"Wybierz emoji","Please select a time zone:":"Wybierz strefę czasową:",Previous:"Poprzedni","Related resources":"Powiązane zasoby",Search:"Szukaj","Search results":"Wyniki wyszukiwania","Select a tag":"Wybierz etykietę",Settings:"Ustawienia","Settings navigation":"Ustawienia nawigacji","Show password":"Pokaż hasło","Smileys & Emotion":"Buźki i emotikony","Start slideshow":"Rozpocznij pokaz slajdów",Submit:"Wyślij",Symbols:"Symbole","Travel & Places":"Podróże i miejsca","Type to search time zone":"Wpisz, aby wyszukać strefę czasową","Unable to search the group":"Nie można przeszukać grupy","Undo changes":"Cofnij zmiany",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Napisz wiadomość, "@" aby o kimś wspomnieć, ":" dla autouzupełniania emoji…'}},{locale:"pt_BR",translations:{"{tag} (invisible)":"{tag} (invisível)","{tag} (restricted)":"{tag} (restrito) ",Actions:"Ações",Activities:"Atividades","Animals & Nature":"Animais & Natureza","Anything shared with the same group of people will show up here":"Qualquer coisa compartilhada com o mesmo grupo de pessoas aparecerá aqui","Avatar of {displayName}":"Avatar de {displayName}","Avatar of {displayName}, {status}":"Avatar de {displayName}, {status}","Cancel changes":"Cancelar alterações","Change title":"Alterar título",Choose:"Escolher","Clear text":"Limpar texto",Close:"Fechar","Close modal":"Fechar modal","Close navigation":"Fechar navegação","Close sidebar":"Fechar barra lateral","Confirm changes":"Confirmar alterações",Custom:"Personalizado","Edit item":"Editar item","Error getting related resources":"Erro ao obter recursos relacionados","Error parsing svg":"Erro ao analisar svg","External documentation for {title}":"Documentação externa para {title}",Favorite:"Favorito",Flags:"Bandeiras","Food & Drink":"Comida & Bebida","Frequently used":"Mais usados",Global:"Global","Go back to the list":"Volte para a lista","Hide password":"Ocultar a senha","Message limit of {count} characters reached":"Limite de mensagem de {count} caracteres atingido","More items …":"Mais itens …",Next:"Próximo","No emoji found":"Nenhum emoji encontrado","No results":"Sem resultados",Objects:"Objetos",Open:"Aberto",'Open link to "{resourceTitle}"':'Abrir link para "{resourceTitle}"',"Open navigation":"Abrir navegação","Password is secure":"A senha é segura","Pause slideshow":"Pausar apresentação de slides","People & Body":"Pessoas & Corpo","Pick an emoji":"Escolha um emoji","Please select a time zone:":"Selecione um fuso horário: ",Previous:"Anterior","Related resources":"Recursos relacionados",Search:"Pesquisar","Search results":"Resultados da pesquisa","Select a tag":"Selecionar uma tag",Settings:"Configurações","Settings navigation":"Navegação de configurações","Show password":"Mostrar senha","Smileys & Emotion":"Smiles & Emoções","Start slideshow":"Iniciar apresentação de slides",Submit:"Enviar",Symbols:"Símbolo","Travel & Places":"Viagem & Lugares","Type to search time zone":"Digite para pesquisar o fuso horário ","Unable to search the group":"Não foi possível pesquisar o grupo","Undo changes":"Desfazer modificações",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Escreva mensagens, use "@" para mencionar algum, use ":" for autocompletar emoji …'}},{locale:"pt_PT",translations:{"{tag} (invisible)":"{tag} (invisivel)","{tag} (restricted)":"{tag} (restrito)",Actions:"Ações",Choose:"Escolher",Close:"Fechar",Next:"Seguinte","No results":"Sem resultados","Pause slideshow":"Pausar diaporama",Previous:"Anterior","Select a tag":"Selecionar uma etiqueta",Settings:"Definições","Start slideshow":"Iniciar diaporama","Unable to search the group":"Não é possível pesquisar o grupo"}},{locale:"ro",translations:{"{tag} (invisible)":"{tag} (invizibil)","{tag} (restricted)":"{tag} (restricționat)",Actions:"Acțiuni",Activities:"Activități","Animals & Nature":"Animale și natură","Anything shared with the same group of people will show up here":"Tot ceea ce este partajat cu același grup de persoane va fi afișat aici","Avatar of {displayName}":"Avatarul lui {displayName}","Avatar of {displayName}, {status}":"Avatarul lui {displayName}, {status}","Cancel changes":"Anulează modificările","Change title":"Modificați titlul",Choose:"Alegeți","Clear text":"Șterge textul",Close:"Închideți","Close modal":"Închideți modulul","Close navigation":"Închideți navigarea","Close sidebar":"Închide bara laterală","Confirm changes":"Confirmați modificările",Custom:"Personalizat","Edit item":"Editați elementul","Error getting related resources":" Eroare la returnarea resurselor legate","Error parsing svg":"Eroare de analizare a svg","External documentation for {title}":"Documentație externă pentru {title}",Favorite:"Favorit",Flags:"Marcaje","Food & Drink":"Alimente și băuturi","Frequently used":"Utilizate frecvent",Global:"Global","Go back to the list":"Întoarceți-vă la listă","Hide password":"Ascunde parola","Message limit of {count} characters reached":"Limita mesajului de {count} caractere a fost atinsă","More items …":"Mai multe articole ...",Next:"Următorul","No emoji found":"Nu s-a găsit niciun emoji","No results":"Nu există rezultate",Objects:"Obiecte",Open:"Deschideți",'Open link to "{resourceTitle}"':'Deschide legătura la "{resourceTitle}"',"Open navigation":"Deschideți navigația","Password is secure":"Parola este sigură","Pause slideshow":"Pauză prezentare de diapozitive","People & Body":"Oameni și corp","Pick an emoji":"Alege un emoji","Please select a time zone:":"Vă rugăm să selectați un fus orar:",Previous:"Anterior","Related resources":"Resurse legate",Search:"Căutare","Search results":"Rezultatele căutării","Select a tag":"Selectați o etichetă",Settings:"Setări","Settings navigation":"Navigare setări","Show password":"Arată parola","Smileys & Emotion":"Zâmbete și emoții","Start slideshow":"Începeți prezentarea de diapozitive",Submit:"Trimiteți",Symbols:"Simboluri","Travel & Places":"Călătorii și locuri","Type to search time zone":"Tastați pentru a căuta fusul orar","Unable to search the group":"Imposibilitatea de a căuta în grup","Undo changes":"Anularea modificărilor",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Scrie un mesaj, folosește "@" pentru a menționa pe cineva, folosește ":" pentru autocompletarea cu emoji ...'}},{locale:"ru",translations:{"{tag} (invisible)":"{tag} (невидимое)","{tag} (restricted)":"{tag} (ограниченное)",Actions:"Действия ",Activities:"События","Animals & Nature":"Животные и природа ","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Фотография {displayName}, {status}","Cancel changes":"Отменить изменения",Choose:"Выберите",Close:"Закрыть","Close modal":"Закрыть модальное окно","Close navigation":"Закрыть навигацию","Confirm changes":"Подтвердить изменения",Custom:"Пользовательское","Edit item":"Изменить элемент","External documentation for {title}":"Внешняя документация для {title}",Flags:"Флаги","Food & Drink":"Еда, напиток","Frequently used":"Часто используемый",Global:"Глобальный","Go back to the list":"Вернуться к списку",items:"элементов","Message limit of {count} characters reached":"Достигнуто ограничение на количество символов в {count}","More {dashboardItemType} …":"Больше {dashboardItemType} …",Next:"Следующее","No emoji found":"Эмодзи не найдено","No results":"Результаты отсуствуют",Objects:"Объекты",Open:"Открыть","Open navigation":"Открыть навигацию","Pause slideshow":"Приостановить показ слйдов","People & Body":"Люди и тело","Pick an emoji":"Выберите эмодзи","Please select a time zone:":"Пожалуйста, выберите часовой пояс:",Previous:"Предыдущее",Search:"Поиск","Search results":"Результаты поиска","Select a tag":"Выберите метку",Settings:"Параметры","Settings navigation":"Навигация по настройкам","Smileys & Emotion":"Смайлики и эмоции","Start slideshow":"Начать показ слайдов",Submit:"Утвердить",Symbols:"Символы","Travel & Places":"Путешествия и места","Type to search time zone":"Введите для поиска часового пояса","Unable to search the group":"Невозможно найти группу","Undo changes":"Отменить изменения","Write message, @ to mention someone, : for emoji autocompletion …":"Напишите сообщение, @ - чтобы упомянуть кого-то, : - для автозаполнения эмодзи …"}},{locale:"sk_SK",translations:{"{tag} (invisible)":"{tag} (neviditeľný)","{tag} (restricted)":"{tag} (obmedzený)",Actions:"Akcie",Activities:"Aktivity","Animals & Nature":"Zvieratá a príroda","Avatar of {displayName}":"Avatar {displayName}","Avatar of {displayName}, {status}":"Avatar {displayName}, {status}","Cancel changes":"Zrušiť zmeny",Choose:"Vybrať",Close:"Zatvoriť","Close navigation":"Zavrieť navigáciu","Confirm changes":"Potvrdiť zmeny",Custom:"Zvyk","Edit item":"Upraviť položku","External documentation for {title}":"Externá dokumentácia pre {title}",Flags:"Vlajky","Food & Drink":"Jedlo a nápoje","Frequently used":"Často používané",Global:"Globálne","Go back to the list":"Naspäť na zoznam","Message limit of {count} characters reached":"Limit správy na {count} znakov dosiahnutý",Next:"Ďalší","No emoji found":"Nenašli sa žiadne emodži","No results":"Žiadne výsledky",Objects:"Objekty","Open navigation":"Otvoriť navigáciu","Pause slideshow":"Pozastaviť prezentáciu","People & Body":"Ľudia a telo","Pick an emoji":"Vyberte si emodži","Please select a time zone:":"Prosím vyberte časovú zónu:",Previous:"Predchádzajúci",Search:"Hľadať","Search results":"Výsledky vyhľadávania","Select a tag":"Vybrať štítok",Settings:"Nastavenia","Settings navigation":"Navigácia v nastaveniach","Smileys & Emotion":"Smajlíky a emócie","Start slideshow":"Začať prezentáciu",Submit:"Odoslať",Symbols:"Symboly","Travel & Places":"Cestovanie a miesta","Type to search time zone":"Začníte písať pre vyhľadávanie časovej zóny","Unable to search the group":"Skupinu sa nepodarilo nájsť","Undo changes":"Vrátiť zmeny","Write message, @ to mention someone, : for emoji autocompletion …":"Napíšte správu, @ ak chcete niekoho spomenúť, : pre automatické dopĺňanie emotikonov…"}},{locale:"sl",translations:{"{tag} (invisible)":"{tag} (nevidno)","{tag} (restricted)":"{tag} (omejeno)",Actions:"Dejanja",Activities:"Dejavnosti","Animals & Nature":"Živali in Narava","Avatar of {displayName}":"Podoba {displayName}","Avatar of {displayName}, {status}":"Prikazna slika {displayName}, {status}","Cancel changes":"Prekliči spremembe","Change title":"Spremeni naziv",Choose:"Izbor","Clear text":"Počisti besedilo",Close:"Zapri","Close modal":"Zapri pojavno okno","Close navigation":"Zapri krmarjenje","Close sidebar":"Zapri stransko vrstico","Confirm changes":"Potrdi spremembe",Custom:"Po meri","Edit item":"Uredi predmet","Error getting related resources":"Napaka pridobivanja povezanih virov","External documentation for {title}":"Zunanja dokumentacija za {title}",Favorite:"Priljubljeno",Flags:"Zastavice","Food & Drink":"Hrana in Pijača","Frequently used":"Pogostost uporabe",Global:"Splošno","Go back to the list":"Vrni se na seznam","Hide password":"Skrij geslo","Message limit of {count} characters reached":"Dosežena omejitev {count} znakov na sporočilo.","More items …":"Več predmetov ...",Next:"Naslednji","No emoji found":"Ni najdenih izraznih ikon","No results":"Ni zadetkov",Objects:"Predmeti",Open:"Odpri",'Open link to "{resourceTitle}"':"Odpri povezavo do »{resourceTitle}«","Open navigation":"Odpri krmarjenje","Password is secure":"Geslo je varno","Pause slideshow":"Ustavi predstavitev","People & Body":"Ljudje in Telo","Pick a date":"Izbor datuma","Pick a date and a time":"Izbor datuma in časa","Pick a month":"Izbor meseca","Pick a time":"Izbor časa","Pick a week":"Izbor tedna","Pick a year":"Izbor leta","Pick an emoji":"Izbor izrazne ikone","Please select a time zone:":"Izbor časovnega pasu:",Previous:"Predhodni","Related resources":"Povezani viri",Search:"Iskanje","Search results":"Zadetki iskanja","Select a tag":"Izbor oznake",Settings:"Nastavitve","Settings navigation":"Krmarjenje nastavitev","Show password":"Pokaži geslo","Smileys & Emotion":"Izrazne ikone","Start slideshow":"Začni predstavitev",Submit:"Pošlji",Symbols:"Simboli","Travel & Places":"Potovanja in Kraji","Type to search time zone":"Vpišite niz za iskanje časovnega pasu","Unable to search the group":"Ni mogoče iskati po skupini","Undo changes":"Razveljavi spremembe","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite sporočilo, za omembo pred ime postavite@, začnite z : za vstavljanje izraznih ikon …"}},{locale:"sr",translations:{"{tag} (invisible)":"{tag} (nevidljivo)","{tag} (restricted)":"{tag} (ograničeno)",Actions:"Radnje",Activities:"Aktivnosti","Animals & Nature":"Životinje i Priroda","Avatar of {displayName}":"Avatar za {displayName}","Avatar of {displayName}, {status}":"Avatar za {displayName}, {status}","Cancel changes":"Otkaži izmene","Change title":"Izmeni naziv",Choose:"Изаберите",Close:"Затвори","Close modal":"Zatvori modal","Close navigation":"Zatvori navigaciju","Close sidebar":"Zatvori bočnu traku","Confirm changes":"Potvrdite promene",Custom:"Po meri","Edit item":"Uredi stavku","External documentation for {title}":"Eksterna dokumentacija za {title}",Favorite:"Omiljeni",Flags:"Zastave","Food & Drink":"Hrana i Piće","Frequently used":"Često korišćeno",Global:"Globalno","Go back to the list":"Natrag na listu",items:"stavke","Message limit of {count} characters reached":"Dostignuto je ograničenje za poruke od {count} znakova","More {dashboardItemType} …":"Više {dashboardItemType} …",Next:"Следеће","No emoji found":"Nije pronađen nijedan emodži","No results":"Нема резултата",Objects:"Objekti",Open:"Otvori","Open navigation":"Otvori navigaciju","Pause slideshow":"Паузирај слајд шоу","People & Body":"Ljudi i Telo","Pick an emoji":"Izaberi emodži","Please select a time zone:":"Molimo izaberite vremensku zonu:",Previous:"Претходно",Search:"Pretraži","Search results":"Rezultati pretrage","Select a tag":"Изаберите ознаку",Settings:"Поставке","Settings navigation":"Navigacija u podešavanjima","Smileys & Emotion":"Smajli i Emocije","Start slideshow":"Покрени слајд шоу",Submit:"Prihvati",Symbols:"Simboli","Travel & Places":"Putovanja i Mesta","Type to search time zone":"Ukucaj da pretražiš vremenske zone","Unable to search the group":"Nije moguće pretražiti grupu","Undo changes":"Poništi promene","Write message, @ to mention someone, : for emoji autocompletion …":"Napišite poruku, @ da pomenete nekoga, : za automatsko dovršavanje emodžija…"}},{locale:"sv",translations:{"{tag} (invisible)":"{tag} (osynlig)","{tag} (restricted)":"{tag} (begränsad)",Actions:"Åtgärder",Activities:"Aktiviteter","Animals & Nature":"Djur & Natur","Anything shared with the same group of people will show up here":"Något som delats med samma grupp av personer kommer att visas här","Avatar of {displayName}":"{displayName}s avatar","Avatar of {displayName}, {status}":"{displayName}s avatar, {status}","Cancel changes":"Avbryt ändringar","Change title":"Ändra titel",Choose:"Välj","Clear text":"Ta bort text",Close:"Stäng","Close modal":"Stäng modal","Close navigation":"Stäng navigering","Close sidebar":"Stäng sidopanel","Confirm changes":"Bekräfta ändringar",Custom:"Anpassad","Edit item":"Ändra","Error getting related resources":"Problem att hämta relaterade resurser","Error parsing svg":"Fel vid inläsning av svg","External documentation for {title}":"Extern dokumentation för {title}",Favorite:"Favorit",Flags:"Flaggor","Food & Drink":"Mat & Dryck","Frequently used":"Används ofta",Global:"Global","Go back to the list":"Gå tillbaka till listan","Hide password":"Göm lössenordet","Message limit of {count} characters reached":"Meddelandegräns {count} tecken används","More items …":"Fler objekt",Next:"Nästa","No emoji found":"Hittade inga emojis","No results":"Inga resultat",Objects:"Objekt",Open:"Öppna",'Open link to "{resourceTitle}"':'Öppna länk till "{resourceTitle}"',"Open navigation":"Öppna navigering","Password is secure":"Lössenordet är säkert","Pause slideshow":"Pausa bildspelet","People & Body":"Kropp & Själ","Pick an emoji":"Välj en emoji","Please select a time zone:":"Välj tidszon:",Previous:"Föregående","Related resources":"Relaterade resurser",Search:"Sök","Search results":"Sökresultat","Select a tag":"Välj en tag",Settings:"Inställningar","Settings navigation":"Inställningsmeny","Show password":"Visa lössenordet","Smileys & Emotion":"Selfies & Känslor","Start slideshow":"Starta bildspelet",Submit:"Skicka",Symbols:"Symboler","Travel & Places":"Resor & Sevärdigheter","Type to search time zone":"Skriv för att välja tidszon","Unable to search the group":"Kunde inte söka i gruppen","Undo changes":"Ångra ändringar",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'Skriv meddelande, använd "@" för att nämna någon, använd ":" för automatiska emojiförslag ...'}},{locale:"tr",translations:{"{tag} (invisible)":"{tag} (görünmez)","{tag} (restricted)":"{tag} (kısıtlı)",Actions:"İşlemler",Activities:"Etkinlikler","Animals & Nature":"Hayvanlar ve Doğa","Anything shared with the same group of people will show up here":"Aynı kişi grubu ile paylaşılan herşey burada görüntülenir","Avatar of {displayName}":"{displayName} avatarı","Avatar of {displayName}, {status}":"{displayName}, {status} avatarı","Cancel changes":"Değişiklikleri iptal et","Change title":"Başlığı değiştir",Choose:"Seçin","Clear text":"Metni temizle",Close:"Kapat","Close modal":"Üste açılan pencereyi kapat","Close navigation":"Gezinmeyi kapat","Close sidebar":"Yan çubuğu kapat","Confirm changes":"Değişiklikleri onayla",Custom:"Özel","Edit item":"Ögeyi düzenle","Error getting related resources":"İlgili kaynaklar alınırken sorun çıktı","Error parsing svg":"svg işlenirken sorun çıktı","External documentation for {title}":"{title} için dış belgeler",Favorite:"Sık kullanılanlara ekle",Flags:"Bayraklar","Food & Drink":"Yeme ve İçme","Frequently used":"Sık kullanılanlar",Global:"Evrensel","Go back to the list":"Listeye dön","Hide password":"Parolayı gizle","Message limit of {count} characters reached":"{count} karakter ileti sınırına ulaşıldı","More items …":"Diğer ögeler…",Next:"Sonraki","No emoji found":"Herhangi bir emoji bulunamadı","No results":"Herhangi bir sonuç bulunamadı",Objects:"Nesneler",Open:"Aç",'Open link to "{resourceTitle}"':'"{resourceTitle}" bağlantısını aç',"Open navigation":"Gezinmeyi aç","Password is secure":"Parola güvenli","Pause slideshow":"Slayt sunumunu duraklat","People & Body":"İnsanlar ve Beden","Pick an emoji":"Bir emoji seçin","Please select a time zone:":"Lütfen bir saat dilimi seçin:",Previous:"Önceki","Related resources":"İlgili kaynaklar",Search:"Arama","Search results":"Arama sonuçları","Select a tag":"Bir etiket seçin",Settings:"Ayarlar","Settings navigation":"Gezinme ayarları","Show password":"Parolayı görüntüle","Smileys & Emotion":"İfadeler ve Duygular","Start slideshow":"Slayt sunumunu başlat",Submit:"Gönder",Symbols:"Simgeler","Travel & Places":"Gezi ve Yerler","Type to search time zone":"Saat dilimi aramak için yazmaya başlayın","Unable to search the group":"Grupta arama yapılamadı","Undo changes":"Değişiklikleri geri al",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'İleti yazın, birini anmak için @, otomatik emoji tamamlamak için ":" kullanın…'}},{locale:"uk",translations:{"{tag} (invisible)":"{tag} (невидимий)","{tag} (restricted)":"{tag} (обмежений)",Actions:"Дії",Activities:"Діяльність","Animals & Nature":"Тварини та природа","Avatar of {displayName}":"Аватар {displayName}","Avatar of {displayName}, {status}":"Аватар {displayName}, {status}","Cancel changes":"Скасувати зміни","Change title":"Змінити назву",Choose:"ВиберітьВиберіть","Clear text":"Очистити текст",Close:"Закрити","Close modal":"Закрити модаль","Close navigation":"Закрити навігацію","Close sidebar":"Закрити бічну панель","Confirm changes":"Підтвердити зміни",Custom:"Власне","Edit item":"Редагувати елемент","External documentation for {title}":"Зовнішня документація для {title}",Favorite:"Улюблений",Flags:"Прапори","Food & Drink":"Їжа та напої","Frequently used":"Найчастіші",Global:"Глобальний","Go back to the list":"Повернутися до списку","Hide password":"Приховати пароль",items:"елементи","Message limit of {count} characters reached":"Вичерпано ліміт у {count} символів для повідомлення","More {dashboardItemType} …":"Більше {dashboardItemType}…",Next:"Вперед","No emoji found":"Емоційки відсутні","No results":"Відсутні результати",Objects:"Об'єкти",Open:"Відкрити","Open navigation":"Відкрити навігацію","Password is secure":"Пароль безпечний","Pause slideshow":"Пауза у показі слайдів","People & Body":"Люди та жести","Pick an emoji":"Виберіть емоційку","Please select a time zone:":"Виберіть часовий пояс:",Previous:"Назад",Search:"Пошук","Search results":"Результати пошуку","Select a tag":"Виберіть позначку",Settings:"Налаштування","Settings navigation":"Навігація у налаштуваннях","Show password":"Показати пароль","Smileys & Emotion":"Смайли та емоції","Start slideshow":"Почати показ слайдів",Submit:"Надіслати",Symbols:"Символи","Travel & Places":"Поїздки та місця","Type to search time zone":"Введіть для пошуку часовий пояс","Unable to search the group":"Неможливо шукати в групі","Undo changes":"Скасувати зміни","Write message, @ to mention someone, : for emoji autocompletion …":"Напишіть повідомлення, @, щоб згадати когось, : для автозаповнення емодзі…"}},{locale:"zh_CN",translations:{"{tag} (invisible)":"{tag} (不可见)","{tag} (restricted)":"{tag} (受限)",Actions:"行为",Activities:"活动","Animals & Nature":"动物 & 自然","Anything shared with the same group of people will show up here":"与同组用户分享的所有内容都会显示于此","Avatar of {displayName}":"{displayName}的头像","Avatar of {displayName}, {status}":"{displayName}的头像,{status}","Cancel changes":"取消更改","Change title":"更改标题",Choose:"选择","Clear text":"清除文本",Close:"关闭","Close modal":"关闭窗口","Close navigation":"关闭导航","Close sidebar":"关闭侧边栏","Confirm changes":"确认更改",Custom:"自定义","Edit item":"编辑项目","Error getting related resources":"获取相关资源时出错","Error parsing svg":"解析 svg 时出错","External documentation for {title}":"{title}的外部文档",Favorite:"喜爱",Flags:"旗帜","Food & Drink":"食物 & 饮品","Frequently used":"经常使用",Global:"全局","Go back to the list":"返回至列表","Hide password":"隐藏密码","Message limit of {count} characters reached":"已达到 {count} 个字符的消息限制","More items …":"更多项目…",Next:"下一个","No emoji found":"表情未找到","No results":"无结果",Objects:"物体",Open:"打开",'Open link to "{resourceTitle}"':'打开"{resourceTitle}"的连接',"Open navigation":"开启导航","Password is secure":"密码安全","Pause slideshow":"暂停幻灯片","People & Body":"人 & 身体","Pick an emoji":"选择一个表情","Please select a time zone:":"请选择一个时区:",Previous:"上一个","Related resources":"相关资源",Search:"搜索","Search results":"搜索结果","Select a tag":"选择一个标签",Settings:"设置","Settings navigation":"设置向导","Show password":"显示密码","Smileys & Emotion":"笑脸 & 情感","Start slideshow":"开始幻灯片",Submit:"提交",Symbols:"符号","Travel & Places":"旅游 & 地点","Type to search time zone":"打字以搜索时区","Unable to search the group":"无法搜索分组","Undo changes":"撤销更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'写信息,使用"@"来提及某人,使用":"进行表情符号自动完成 ...'}},{locale:"zh_HK",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然","Anything shared with the same group of people will show up here":"與同一組人共享的任何內容都會顯示在此處","Avatar of {displayName}":"{displayName} 的頭像","Avatar of {displayName}, {status}":"{displayName} 的頭像,{status}","Cancel changes":"取消更改","Change title":"更改標題",Choose:"選擇","Clear text":"清除文本",Close:"關閉","Close modal":"關閉模態","Close navigation":"關閉導航","Close sidebar":"關閉側邊欄","Confirm changes":"確認更改",Custom:"自定義","Edit item":"編輯項目","Error getting related resources":"獲取相關資源出錯","Error parsing svg":"解析 svg 時出錯","External documentation for {title}":"{title} 的外部文檔",Favorite:"喜愛",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"經常使用",Global:"全球的","Go back to the list":"返回清單","Hide password":"隱藏密碼","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制","More items …":"更多項目 …",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件",Open:"打開",'Open link to "{resourceTitle}"':"打開指向 “{resourceTitle}” 的鏈結","Open navigation":"開啟導航","Password is secure":"密碼是安全的","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號","Please select a time zone:":"請選擇時區:",Previous:"上一個","Related resources":"相關資源",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Show password":"顯示密碼","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Submit:"提交",Symbols:"標誌","Travel & Places":"旅遊與景點","Type to search time zone":"鍵入以搜索時區","Unable to search the group":"無法搜尋群組","Undo changes":"取消更改",'Write message, use "@" to mention someone, use ":" for emoji autocompletion …':'寫訊息,使用 "@" 來指代某人,使用 ":" 用於表情符號自動填充 ...'}},{locale:"zh_TW",translations:{"{tag} (invisible)":"{tag} (隱藏)","{tag} (restricted)":"{tag} (受限)",Actions:"動作",Activities:"活動","Animals & Nature":"動物與自然",Choose:"選擇",Close:"關閉",Custom:"自定義",Flags:"旗幟","Food & Drink":"食物與飲料","Frequently used":"最近使用","Message limit of {count} characters reached":"已達到訊息最多 {count} 字元限制",Next:"下一個","No emoji found":"未找到表情符號","No results":"無結果",Objects:"物件","Pause slideshow":"暫停幻燈片","People & Body":"人物","Pick an emoji":"選擇表情符號",Previous:"上一個",Search:"搜尋","Search results":"搜尋結果","Select a tag":"選擇標籤",Settings:"設定","Settings navigation":"設定值導覽","Smileys & Emotion":"表情","Start slideshow":"開始幻燈片",Symbols:"標誌","Travel & Places":"旅遊與景點","Unable to search the group":"無法搜尋群組","Write message, @ to mention someone …":"輸入訊息時可使用 @ 來標示某人..."}}].forEach((function(t){var e={};for(var a in t.translations)t.translations[a].pluralId?e[a]={msgid:a,msgid_plural:t.translations[a].pluralId,msgstr:t.translations[a].msgstr}:e[a]={msgid:a,msgstr:[t.translations[a]]};i.addTranslation(t.locale,{translations:{"":e}})}));var o=i.build(),r=(o.ngettext.bind(o),o.gettext.bind(o))},9150:()=>{"use strict"},3351:(t,e,a)=>{"use strict";a.d(e,{iQ:()=>m});a(9150),a(8136),a(334),a(3132);var n=a(3607),i=a(768),o=a.n(i);const r=__webpack_require__(/*! @nextcloud/capabilities */ "./node_modules/@nextcloud/capabilities/dist/index.js");var s=a(4262),l=a(5108);function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(){u=function(){return t};var t={},e=Object.prototype,a=e.hasOwnProperty,n=Object.defineProperty||function(t,e,a){t[e]=a.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",r=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(t,e,a){return Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,a){return t[e]=a}}function d(t,e,a,i){var o=e&&e.prototype instanceof h?e:h,r=Object.create(o.prototype),s=new N(i||[]);return n(r,"_invoke",{value:w(t,a,s)}),r}function m(t,e,a){try{return{type:"normal",arg:t.call(e,a)}}catch(t){return{type:"throw",arg:t}}}t.wrap=d;var p={};function h(){}function g(){}function v(){}var f={};l(f,o,(function(){return this}));var A=Object.getPrototypeOf,b=A&&A(A(z([])));b&&b!==e&&a.call(b,o)&&(f=b);var y=v.prototype=h.prototype=Object.create(f);function C(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function i(n,o,r,s){var l=m(t[n],t,o);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==c(d)&&a.call(d,"__await")?e.resolve(d.__await).then((function(t){i("next",t,r,s)}),(function(t){i("throw",t,r,s)})):e.resolve(d).then((function(t){u.value=t,r(u)}),(function(t){return i("throw",t,r,s)}))}s(l.arg)}var o;n(this,"_invoke",{value:function(t,a){function n(){return new e((function(e,n){i(t,a,e,n)}))}return o=o?o.then(n,n):n()}})}function w(t,e,a){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return P()}for(a.method=i,a.arg=o;;){var r=a.delegate;if(r){var s=S(r,a);if(s){if(s===p)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if("suspendedStart"===n)throw n="completed",a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);n="executing";var l=m(t,e,a);if("normal"===l.type){if(n=a.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(n="completed",a.method="throw",a.arg=l.arg)}}}function S(t,e){var a=e.method,n=t.iterator[a];if(void 0===n)return e.delegate=null,"throw"===a&&t.iterator.return&&(e.method="return",e.arg=void 0,S(t,e),"throw"===e.method)||"return"!==a&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+a+"' method")),p;var i=m(n,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,p;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function j(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function z(t){if(t){var e=t[o];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function e(){for(;++n=0;--i){var o=this.tryEntries[i],r=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&a.call(i,"finallyLoc")&&this.prev=0;--e){var a=this.tryEntries[e];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),j(a),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var a=this.tryEntries[e];if(a.tryLoc===t){var n=a.completion;if("throw"===n.type){var i=n.arg;j(a)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,a){return this.delegate={iterator:z(t),resultName:e,nextLoc:a},"next"===this.method&&(this.arg=void 0),p}},t}function d(t,e,a,n,i,o,r){try{var s=t[o](r),l=s.value}catch(t){return void a(t)}s.done?e(l):Promise.resolve(l).then(n,i)}const m={data:function(){return{hasStatus:!1,userStatus:{status:null,message:null,icon:null}}},methods:{fetchUserStatus:function(t){var e,a=this;return(e=u().mark((function e(){var i,c,d,m,p,h,g,v,f;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:if(i=(0,r.getCapabilities)(),Object.prototype.hasOwnProperty.call(i,"user_status")&&i.user_status.enabled){e.next=5;break}return e.abrupt("return");case 5:if((0,n.getCurrentUser)()){e.next=7;break}return e.abrupt("return");case 7:return e.prev=7,e.next=10,o().get((0,s.generateOcsUrl)("apps/user_status/api/v1/statuses/{userId}",{userId:t}));case 10:c=e.sent,d=c.data,m=d.ocs.data,p=m.status,h=m.message,g=m.icon,a.userStatus.status=p,a.userStatus.message=h||"",a.userStatus.icon=g||"",a.hasStatus=!0,e.next=24;break;case 19:if(e.prev=19,e.t0=e.catch(7),404!==e.t0.response.status||0!==(null===(v=e.t0.response.data.ocs)||void 0===v||null===(f=v.data)||void 0===f?void 0:f.length)){e.next=23;break}return e.abrupt("return");case 23:l.error(e.t0);case 24:case"end":return e.stop()}}),e,null,[[7,19]])})),function(){var t=this,a=arguments;return new Promise((function(n,i){var o=e.apply(t,a);function r(t){d(o,n,i,r,s,"next",t)}function s(t){d(o,n,i,r,s,"throw",t)}r(void 0)}))})()}}}},8136:()=>{"use strict"},334:(t,e,a)=>{"use strict";var n=a(2734);new(a.n(n)())({data:function(){return{isMobile:!1}},watch:{isMobile:function(t){this.$emit("changed",t)}},created:function(){window.addEventListener("resize",this.handleWindowResize),this.handleWindowResize()},beforeDestroy:function(){window.removeEventListener("resize",this.handleWindowResize)},methods:{handleWindowResize:function(){this.isMobile=document.documentElement.clientWidth<1024}}})},3132:(t,e,a)=>{"use strict";a(2774),a(1390);__webpack_require__(/*! escape-html */ "./node_modules/escape-html/index.js");__webpack_require__(/*! striptags */ "./node_modules/striptags/src/striptags.js");a(2734);var n="(?:^|\\s)",i="(?:[^a-z]|$)";new RegExp("".concat(n,"(@[a-zA-Z0-9_.@\\-']+)(").concat(i,")"),"gi"),new RegExp("".concat(n,"(@"[a-zA-Z0-9 _.@\\-']+")(").concat(i,")"),"gi")},6609:(t,e,a)=>{"use strict";function n(t,e,a){this.r=t,this.g=e,this.b=a}function i(t,e,a){var i=[];i.push(e);for(var o=function(t,e){var a=new Array(3);return a[0]=(e[1].r-e[0].r)/t,a[1]=(e[1].g-e[0].g)/t,a[2]=(e[1].b-e[0].b)/t,a}(t,[e,a]),r=1;ro});const o=function(t){t||(t=6);var e=new n(182,70,157),a=new n(221,203,85),o=new n(0,130,201),r=i(t,e,a),s=i(t,a,o),l=i(t,o,e);return r.concat(s).concat(l)}},1390:(t,e,a)=>{"use strict";a.d(e,{Z:()=>o});const n=__webpack_require__(/*! linkify-string */ "./node_modules/linkify-string/dist/linkify-string.es.js");var i=a.n(n);const o=function(t){return i()(t,{defaultProtocol:"https",target:"_blank",className:"external linkified",attributes:{rel:"nofollow noopener noreferrer"}})}},1206:(t,e,a)=>{"use strict";a.d(e,{L:()=>n});a(4505);var n=function(){return Object.assign(window,{_nc_focus_trap:window._nc_focus_trap||[]}),window._nc_focus_trap}},5108:(t,e,a)=>{var n=a(6464),i=a(9084);function o(){return(new Date).getTime()}var r,s=Array.prototype.slice,l={};r=void 0!==a.g&&a.g.console?a.g.console:"undefined"!=typeof window&&window.console?window.console:{};for(var c=[[function(){},"log"],[function(){r.log.apply(r,arguments)},"info"],[function(){r.log.apply(r,arguments)},"warn"],[function(){r.warn.apply(r,arguments)},"error"],[function(t){l[t]=o()},"time"],[function(t){var e=l[t];if(!e)throw new Error("No such label: "+t);delete l[t];var a=o()-e;r.log(t+": "+a+"ms")},"timeEnd"],[function(){var t=new Error;t.name="Trace",t.message=n.format.apply(null,arguments),r.error(t.stack)},"trace"],[function(t){r.log(n.inspect(t)+"\n")},"dir"],[function(t){if(!t){var e=s.call(arguments,1);i.ok(!1,n.format.apply(null,e))}},"assert"]],u=0;u{"use strict";a.d(e,{Z:()=>v});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o),s=a(1667),l=a.n(s),c=new URL(a(3423),a.b),u=new URL(a(2605),a.b),d=new URL(a(7127),a.b),m=r()(i()),p=l()(c),h=l()(u),g=l()(d);m.push([t.id,".material-design-icon[data-v-69abe502]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-69abe502]{position:relative;display:inline-block;width:var(--size);height:var(--size)}.avatardiv--unknown[data-v-69abe502]{position:relative;background-color:var(--color-main-background)}.avatardiv[data-v-69abe502]:not(.avatardiv--unknown){background-color:var(--color-main-background) !important;box-shadow:0 0 5px rgba(0,0,0,.05) inset}.avatardiv--with-menu[data-v-69abe502]{cursor:pointer}.avatardiv--with-menu[data-v-69abe502] .v-popper{position:absolute;top:0;left:0}.avatardiv--with-menu .icon-more[data-v-69abe502]{cursor:pointer;opacity:0}.avatardiv--with-menu:focus .icon-more[data-v-69abe502],.avatardiv--with-menu:hover .icon-more[data-v-69abe502]{opacity:1}.avatardiv--with-menu:focus img[data-v-69abe502],.avatardiv--with-menu:hover img[data-v-69abe502]{opacity:.3}.avatardiv--with-menu .icon-more[data-v-69abe502],.avatardiv--with-menu img[data-v-69abe502]{transition:opacity var(--animation-quick)}.avatardiv .avatardiv__initials-wrapper[data-v-69abe502]{height:var(--size);width:var(--size);background-color:var(--color-main-background);border-radius:50%}.avatardiv .avatardiv__initials-wrapper .unknown[data-v-69abe502]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:normal}.avatardiv img[data-v-69abe502]{width:100%;height:100%;object-fit:cover}.avatardiv .material-design-icon[data-v-69abe502]{width:var(--size);height:var(--size)}.avatardiv .avatardiv__user-status[data-v-69abe502]{position:absolute;right:-4px;bottom:-4px;max-height:18px;max-width:18px;height:40%;width:40%;line-height:15px;font-size:var(--default-font-size);border:2px solid var(--color-main-background);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:16px;background-position:center;border-radius:50%}.acli:hover .avatardiv .avatardiv__user-status[data-v-69abe502]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-69abe502]{border-color:var(--color-primary-light);background-color:var(--color-primary-light)}.avatardiv .avatardiv__user-status--online[data-v-69abe502]{background-image:url("+p+")}.avatardiv .avatardiv__user-status--dnd[data-v-69abe502]{background-image:url("+h+");background-color:#fff}.avatardiv .avatardiv__user-status--away[data-v-69abe502]{background-image:url("+g+")}.avatardiv .avatardiv__user-status--icon[data-v-69abe502]{border:none;background-color:rgba(0,0,0,0)}.avatardiv .popovermenu-wrapper[data-v-69abe502]{position:relative;display:inline-block}.avatar-class-icon[data-v-69abe502]{border-radius:50%;background-color:var(--color-background-darker);height:100%}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcAvatar/NcAvatar.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,4BACC,iBAAA,CACA,oBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,qCACC,iBAAA,CACA,6CAAA,CAGD,qDAEC,wDAAA,CACA,wCAAA,CAGD,uCACC,cAAA,CACA,iDACC,iBAAA,CACA,KAAA,CACA,MAAA,CAED,kDACC,cAAA,CACA,SAAA,CAIA,gHACC,SAAA,CAED,kGACC,UAAA,CAGF,6FAEC,yCAAA,CAIF,yDACC,kBAAA,CACA,iBAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kEACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,aAAA,CACA,UAAA,CACA,iBAAA,CACA,kBAAA,CAIF,gCAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CAGD,kDACC,iBAAA,CACA,kBAAA,CAGD,oDACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,cAAA,CACA,UAAA,CACA,SAAA,CACA,gBAAA,CACA,kCAAA,CACA,6CAAA,CACA,6CAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CACA,iBAAA,CAEA,gEACC,0CAAA,CACA,8CAAA,CAED,iEACC,uCAAA,CACA,2CAAA,CAGD,4DACC,wDAAA,CAED,yDACC,wDAAA,CACA,qBAAA,CAED,0DACC,wDAAA,CAED,0DACC,WAAA,CACA,8BAAA,CAIF,iDACC,iBAAA,CACA,oBAAA,CAIF,oCACC,iBAAA,CACA,+CAAA,CACA,WAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n.avatardiv {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: var(--size);\n\theight: var(--size);\n\n\t&--unknown {\n\t\tposition: relative;\n\t\tbackground-color: var(--color-main-background);\n\t}\n\n\t&:not(&--unknown) {\n\t\t// White/black background for avatars with transparency\n\t\tbackground-color: var(--color-main-background) !important;\n\t\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n\t}\n\n\t&--with-menu {\n\t\tcursor: pointer;\n\t\t:deep(.v-popper) {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\t\t.icon-more {\n\t\t\tcursor: pointer;\n\t\t\topacity: 0;\n\t\t}\n\t\t&:focus,\n\t\t&:hover {\n\t\t\t.icon-more {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\timg {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t\t.icon-more,\n\t\timg {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\t}\n\n\t.avatardiv__initials-wrapper {\n\t\theight: var(--size);\n\t\twidth: var(--size);\n\t\tbackground-color: var(--color-main-background);\n\t\tborder-radius: 50%;\n\n\t\t.unknown {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t\tdisplay: block;\n\t\t\twidth: 100%;\n\t\t\ttext-align: center;\n\t\t\tfont-weight: normal;\n\t\t}\n\t}\n\n\timg {\n\t\t// Cover entire area\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\t// Keep ratio\n\t\tobject-fit: cover;\n\t}\n\n\t.material-design-icon {\n\t\twidth: var(--size);\n\t\theight: var(--size);\n\t}\n\n\t.avatardiv__user-status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmax-height: 18px;\n\t\tmax-width: 18px;\n\t\theight: 40%;\n\t\twidth: 40%;\n\t\tline-height: 15px;\n\t\tfont-size: var(--default-font-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tbackground-color: var(--color-main-background);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\t\tborder-radius: 50%;\n\n\t\t.acli:hover & {\n\t\t\tborder-color: var(--color-background-hover);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t\t.acli.active & {\n\t\t\tborder-color: var(--color-primary-light);\n\t\t\tbackground-color: var(--color-primary-light);\n\t\t}\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t.popovermenu-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n}\n\n.avatar-class-icon {\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-darker);\n\theight: 100%;\n}\n\n"],sourceRoot:""}]);const v=m},5030:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon[data-v-c4a9cada]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon svg[data-v-c4a9cada]{animation:rotate var(--animation-duration, 0.8s) linear infinite}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcLoadingIcon/NcLoadingIcon.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,mCACC,gEAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n.loading-icon svg{\n\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\n}\n"],sourceRoot:""}]);const s=r},3197:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopover/NcPopover.vue"],names:[],mappings:"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,kCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n\n.resize-observer {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tz-index:-1;\n\twidth:100%;\n\theight:100%;\n\tborder:none;\n\tbackground-color:transparent;\n\tpointer-events:none;\n\tdisplay:block;\n\toverflow:hidden;\n\topacity:0\n}\n\n.resize-observer object {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\theight:100%;\n\twidth:100%;\n\toverflow:hidden;\n\tpointer-events:none;\n\tz-index:-1\n}\n\n$arrow-width: 10px;\n\n.v-popper--theme-dropdown {\n\t&.v-popper__popper {\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block !important;\n\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t.v-popper__inner {\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\toverflow: hidden;\n\t\t\tbackground: var(--color-main-background);\n\t\t}\n\n\t\t.v-popper__arrow-container {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t\tborder-color: transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t}\n\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tleft: -$arrow-width;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tright: -$arrow-width;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t\topacity: 1;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const s=r},2:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon[data-v-31ffd2d4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}ul[data-v-31ffd2d4]{display:flex;flex-direction:column;gap:4px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopoverMenu/NcPopoverMenu.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,qBAAA,CACA,OAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\nul {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 4px;\n}\n"],sourceRoot:""}]);const s=r},5772:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,'.material-design-icon[data-v-0ce1cbf1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li[data-v-0ce1cbf1]{display:flex;flex:0 0 auto}li.hidden[data-v-0ce1cbf1]{display:none}li>button[data-v-0ce1cbf1],li>a[data-v-0ce1cbf1],li>.menuitem[data-v-0ce1cbf1]{cursor:pointer;line-height:44px;border:0;background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^=icon-][data-v-0ce1cbf1],li>button span[class*=" icon-"][data-v-0ce1cbf1],li>button[class^=icon-][data-v-0ce1cbf1],li>button[class*=" icon-"][data-v-0ce1cbf1],li>a span[class^=icon-][data-v-0ce1cbf1],li>a span[class*=" icon-"][data-v-0ce1cbf1],li>a[class^=icon-][data-v-0ce1cbf1],li>a[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem span[class^=icon-][data-v-0ce1cbf1],li>.menuitem span[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem[class^=icon-][data-v-0ce1cbf1],li>.menuitem[class*=" icon-"][data-v-0ce1cbf1]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^=icon-][data-v-0ce1cbf1],li>button span[class*=" icon-"][data-v-0ce1cbf1],li>a span[class^=icon-][data-v-0ce1cbf1],li>a span[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem span[class^=icon-][data-v-0ce1cbf1],li>.menuitem span[class*=" icon-"][data-v-0ce1cbf1]{padding:22px 0 22px 44px}li>button:not([class^=icon-]):not([class*=icon-])>span[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>input[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>form[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>span[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>input[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>form[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>span[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>input[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>form[data-v-0ce1cbf1]:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}li>button[class^=icon-][data-v-0ce1cbf1],li>button[class*=" icon-"][data-v-0ce1cbf1],li>a[class^=icon-][data-v-0ce1cbf1],li>a[class*=" icon-"][data-v-0ce1cbf1],li>.menuitem[class^=icon-][data-v-0ce1cbf1],li>.menuitem[class*=" icon-"][data-v-0ce1cbf1]{padding:0 14px 0 44px}li>button[data-v-0ce1cbf1]:not(:disabled):hover,li>button[data-v-0ce1cbf1]:not(:disabled):focus,li>button:not(:disabled).active[data-v-0ce1cbf1],li>a[data-v-0ce1cbf1]:not(:disabled):hover,li>a[data-v-0ce1cbf1]:not(:disabled):focus,li>a:not(:disabled).active[data-v-0ce1cbf1],li>.menuitem[data-v-0ce1cbf1]:not(:disabled):hover,li>.menuitem[data-v-0ce1cbf1]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-0ce1cbf1]{opacity:1 !important}li>button.action[data-v-0ce1cbf1],li>a.action[data-v-0ce1cbf1],li>.menuitem.action[data-v-0ce1cbf1]{padding:inherit !important}li>button>span[data-v-0ce1cbf1],li>a>span[data-v-0ce1cbf1],li>.menuitem>span[data-v-0ce1cbf1]{cursor:pointer;white-space:nowrap}li>button>p[data-v-0ce1cbf1],li>a>p[data-v-0ce1cbf1],li>.menuitem>p[data-v-0ce1cbf1]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal;overflow:hidden;text-overflow:ellipsis}li>button>select[data-v-0ce1cbf1],li>a>select[data-v-0ce1cbf1],li>.menuitem>select[data-v-0ce1cbf1]{margin:0;margin-left:6px}li>button[data-v-0ce1cbf1]:not(:empty),li>a[data-v-0ce1cbf1]:not(:empty),li>.menuitem[data-v-0ce1cbf1]:not(:empty){padding-right:14px !important}li>button>img[data-v-0ce1cbf1],li>a>img[data-v-0ce1cbf1],li>.menuitem>img[data-v-0ce1cbf1]{width:16px;height:16px;margin:14px}li>button>input.radio+label[data-v-0ce1cbf1],li>button>input.checkbox+label[data-v-0ce1cbf1],li>a>input.radio+label[data-v-0ce1cbf1],li>a>input.checkbox+label[data-v-0ce1cbf1],li>.menuitem>input.radio+label[data-v-0ce1cbf1],li>.menuitem>input.checkbox+label[data-v-0ce1cbf1]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-0ce1cbf1]::before,li>a>input.checkbox+label[data-v-0ce1cbf1]::before,li>.menuitem>input.checkbox+label[data-v-0ce1cbf1]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-0ce1cbf1]::before,li>a>input.radio+label[data-v-0ce1cbf1]::before,li>.menuitem>input.radio+label[data-v-0ce1cbf1]::before{margin:-2px 12px 0}li>button>input[data-v-0ce1cbf1]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-0ce1cbf1]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-0ce1cbf1]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-0ce1cbf1],li>a form[data-v-0ce1cbf1],li>.menuitem form[data-v-0ce1cbf1]{display:flex;flex:1 1 auto}li>button form[data-v-0ce1cbf1]:not(:first-child),li>a form[data-v-0ce1cbf1]:not(:first-child),li>.menuitem form[data-v-0ce1cbf1]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-0ce1cbf1],li>button>span[style*="display:none"]+form[data-v-0ce1cbf1],li>a>span.hidden+form[data-v-0ce1cbf1],li>a>span[style*="display:none"]+form[data-v-0ce1cbf1],li>.menuitem>span.hidden+form[data-v-0ce1cbf1],li>.menuitem>span[style*="display:none"]+form[data-v-0ce1cbf1]{margin-left:0}li>button input[data-v-0ce1cbf1],li>a input[data-v-0ce1cbf1],li>.menuitem input[data-v-0ce1cbf1]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-0ce1cbf1]:not(:first-child),li>a input[data-v-0ce1cbf1]:not(:first-child),li>.menuitem input[data-v-0ce1cbf1]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*="display:none"]):first-of-type>button>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>button>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>a>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>a>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):first-of-type>.menuitem>input[data-v-0ce1cbf1]{margin-top:12px}li:not(.hidden):not([style*="display:none"]):last-of-type>button>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>button>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>a>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>a>input[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>form[data-v-0ce1cbf1],li:not(.hidden):not([style*="display:none"]):last-of-type>.menuitem>input[data-v-0ce1cbf1]{margin-bottom:12px}li>button[data-v-0ce1cbf1]{padding:0}li>button span[data-v-0ce1cbf1]{opacity:1}',"",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue","webpack://./src/assets/variables.scss"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,aAAA,CAEA,2BACC,YAAA,CAGD,+EAGC,cAAA,CACA,gBCWe,CDVf,QAAA,CACA,8BAAA,CACA,YAAA,CACA,sBAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CACA,4BAAA,CACA,kBAAA,CACA,UCgBe,CDbf,ohBAIC,WAAA,CACA,YAAA,CACA,+BAAA,CACA,oBCRS,CDWV,yRAIC,wBAAA,CAQC,ylCACC,gBC5BY,CDiCf,2PAEC,qBAAA,CAGD,6aAGC,oBAAA,CAID,oGACC,0BAAA,CAGD,8FACC,cAAA,CACA,kBAAA,CAID,qFACC,WAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CAGA,eAAA,CACA,sBAAA,CAID,oGACC,QAAA,CACA,eAAA,CAID,mHACC,6BAAA,CAKD,2FACC,UC5ES,CD6ET,WC7ES,CD8ET,WC1EW,CD8EZ,mRAEC,oBAAA,CACA,UAAA,CAED,sKACC,kBAAA,CAED,6JACC,kBAAA,CAED,4QACC,WAAA,CAID,8FACC,YAAA,CACA,aAAA,CAGA,oJACC,eAAA,CAIF,oTAEC,aAAA,CAGD,iGACC,cCtHc,CDuHd,eAAA,CACA,YAAA,CACA,aAAA,CAEA,uJACC,eAAA,CAUA,+gBACC,eAAA,CAMD,ygBACC,kBAAA,CAKJ,2BACC,SAAA,CACA,gCACC,SCnIY",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\nli {\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t> button,\n\t> a,\n\t> .menuitem {\n\t\tcursor: pointer;\n\t\tline-height: $clickable-area;\n\t\tborder: 0;\n\t\tbackground-color: transparent;\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tfont-weight: normal;\n\t\tbox-shadow: none;\n\t\twidth: 100%;\n\t\tcolor: var(--color-main-text);\n\t\twhite-space: nowrap;\n\t\topacity: $opacity_normal;\n\n\t\t// TODO split into individual components for readability\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'],\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tmin-width: 0; /* Overwrite icons*/\n\t\t\tmin-height: 0;\n\t\t\tbackground-position: #{$icon-margin} center;\n\t\t\tbackground-size: $icon-size;\n\t\t}\n\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'] {\n\t\t\t/* Keep padding to define the width to\n\t\t\t\tassure correct position of a possible text */\n\t\t\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\n\t\t}\n\n\t\t// If no icons set, force left margin to align\n\t\t&:not([class^='icon-']):not([class*='icon-']) {\n\t\t\t> span,\n\t\t\t> input,\n\t\t\t> form {\n\t\t\t\t&:not([class^='icon-']):not([class*='icon-']):first-child {\n\t\t\t\t\tmargin-left: $clickable-area;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tpadding: 0 $icon-margin 0 $clickable-area;\n\t\t}\n\n\t\t&:not(:disabled):hover,\n\t\t&:not(:disabled):focus,\n\t\t&:not(:disabled).active {\n\t\t\topacity: $opacity_full !important;\n\t\t}\n\n\t\t/* prevent .action class to break the design */\n\t\t&.action {\n\t\t\tpadding: inherit !important;\n\t\t}\n\n\t\t> span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t// long text area\n\t\t> p {\n\t\t\twidth: 150px;\n\t\t\tline-height: 1.6em;\n\t\t\tpadding: 8px 0;\n\t\t\twhite-space: normal;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t// TODO: do we really supports it?\n\t\t> select {\n\t\t\tmargin: 0;\n\t\t\tmargin-left: 6px;\n\t\t}\n\n\t\t/* Add padding if contains icon+text */\n\t\t&:not(:empty) {\n\t\t\tpadding-right: $icon-margin !important;\n\t\t}\n\n\t\t/* DEPRECATED! old img in popover fallback\n\t\t\t* TODO: to remove */\n\t\t> img {\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t\tmargin: $icon-margin;\n\t\t}\n\n\t\t/* checkbox/radio fixes */\n\t\t> input.radio + label,\n\t\t> input.checkbox + label {\n\t\t\tpadding: 0 !important;\n\t\t\twidth: 100%;\n\t\t}\n\t\t> input.checkbox + label::before {\n\t\t\tmargin: -2px 13px 0;\n\t\t}\n\t\t> input.radio + label::before {\n\t\t\tmargin: -2px 12px 0;\n\t\t}\n\t\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\n\t\t\twidth: 150px;\n\t\t}\n\n\t\t// Forms & text inputs\n\t\tform {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\t/* put a small space between text and form\n\t\t\t\tif there is an element before */\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t\t/* no margin if hidden span before */\n\t\t> span.hidden + form,\n\t\t> span[style*='display:none'] + form {\n\t\t\tmargin-left: 0;\n\t\t}\n\t\t/* Inputs inside popover supports text, submit & reset */\n\t\tinput {\n\t\t\tmin-width: $clickable-area;\n\t\t\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\n\t\t\tmargin: 2px 0;\n\t\t\tflex: 1 1 auto;\n\t\t\t// space between inline inputs\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: do that in js, should be cleaner\n\t/* css hack, only first not hidden */\n\t&:not(.hidden):not([style*='display:none']) {\n\t\t&:first-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-top: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:last-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-bottom: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> button {\n\t\tpadding: 0;\n\t\tspan {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t}\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \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 .\n *\n */\n\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\n// recommended is 48px\n// 44px is what we choose and have very good visual-to-usability ratio\n$clickable-area: 44px;\n\n// background icon size\n// also used for the scss icon font\n$icon-size: 16px;\n\n// icon padding for a $clickable-area width and a $icon-size icon\n// ( 44px - 16px ) / 2\n$icon-margin: math.div($clickable-area - $icon-size, 2);\n\n// transparency background for icons\n$icon-focus-bg: rgba(127, 127, 127, .25);\n\n// popovermenu arrow width from the triangle center\n$arrow-width: 9px;\n\n// opacities\n$opacity_disabled: .5;\n$opacity_normal: .7;\n$opacity_full: 1;\n\n// menu round background hover feedback\n// good looking on dark AND white bg\n$action-background-hover: rgba(127, 127, 127, .25);\n\n// various structure data used in the \n// `AppNavigation` component\n$header-height: 50px;\n$navigation-width: 300px;\n\n// mobile breakpoint\n$breakpoint-mobile: 1024px;\n\n// top-bar spacing\n$topbar-margin: 4px;\n\n// navigation spacing\n$app-navigation-settings-margin: 3px;\n"],sourceRoot:""}]);const s=r},4477:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,".material-design-icon[data-v-32fccbe9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-32fccbe9]{color:var(--color-primary-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-32fccbe9]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-32fccbe9]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-right:6px;padding-left:2px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-32fccbe9]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-32fccbe9]{color:inherit;background-size:cover}.mention-bubble__title[data-v-32fccbe9]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-32fccbe9]::before{content:attr(title)}.mention-bubble__select[data-v-32fccbe9]{position:absolute;z-index:-1;left:-1000px}","",{version:3,sources:["webpack://./src/assets/material-icons.css","webpack://./src/components/NcRichContenteditable/NcMentionBubble.vue"],names:[],mappings:"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CAAA,mECCC,+BAAA,CACA,6CAAA,CAGD,0CACC,eAXiB,CAajB,WAAA,CACA,0BAAA,CACA,mBAAA,CACA,kBAAA,CAGD,0CACC,mBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,WAzBc,CA0Bd,wBAAA,CACA,gBAAA,CACA,iBAAA,CACA,gBA3Be,CA4Bf,kBAAA,CACA,6CAAA,CAGD,uCACC,iBAAA,CACA,UAjCmB,CAkCnB,WAlCmB,CAmCnB,iBAAA,CACA,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CAEA,oDACC,aAAA,CACA,qBAAA,CAIF,wCACC,eAAA,CACA,eAlDe,CAmDf,kBAAA,CACA,sBAAA,CAEA,gDACC,mBAAA,CAKF,yCACC,iBAAA,CACA,UAAA,CACA,YAAA",sourcesContent:["/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tjustify-self: center;\n\talign-items: center;\n\tjustify-content: center;\n}\n","@use 'sass:math'; $scope_version:\"8f905b9\"; @import 'variables'; @import 'material-icons';\n\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put label in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\n\t}\n}\n\n"],sourceRoot:""}]);const s=r},5578:(t,e,a)=>{"use strict";a.d(e,{Z:()=>s});var n=a(7537),i=a.n(n),o=a(3645),r=a.n(o)()(i());r.push([t.id,"\nbutton.menuitem[data-v-0ce1cbf1] {\n\tborder-radius: var(--border-radius-large) !important;\n\ttext-align: left;\n}\nbutton.menuitem *[data-v-0ce1cbf1] {\n\tcursor: pointer;\n}\nbutton.menuitem[data-v-0ce1cbf1]:disabled {\n\topacity: 0.5 !important;\n\tcursor: default;\n}\nbutton.menuitem:disabled *[data-v-0ce1cbf1] {\n\tcursor: default;\n}\n.menuitem.active[data-v-0ce1cbf1] {\n\tborder-left: 4px solid var(--color-primary);\n\tborder-radius: 0 var(--border-radius-large) var(--border-radius-large) 0 !important;\n}\n","",{version:3,sources:["webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue"],names:[],mappings:";AAgYA;CACA,oDAAA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,2CAAA;CACA,mFAAA;AACA",sourcesContent:['\x3c!--\n - @copyright Copyright (c) 2018 John Molakvoæ \n -\n - @author John Molakvoæ \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 .\n -\n --\x3e\n\n\n\t\n\n\n