{"version":3,"sources":["jsdelivr-header.js","/npm/@startinblox/core@1.0.4/dist/helpers-C8RJ0BtV.js","/npm/@startinblox/core@1.0.4/dist/index.js"],"names":[],"mappings":"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","file":"/npm/@startinblox/core@1.0.4/dist/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/@startinblox/core@1.0.4/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var __defProp = Object.defineProperty;\nvar __typeError = (msg) => {\n  throw TypeError(msg);\n};\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\nvar _values, _resolve, _AsyncIterableBuilder_instances, createIterable_fn, next_fn, nextPromise_fn;\nfunction isArray(value) {\n  return !Array.isArray ? getTag(value) === \"[object Array]\" : Array.isArray(value);\n}\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n  if (typeof value == \"string\") {\n    return value;\n  }\n  let result = value + \"\";\n  return result == \"0\" && 1 / value == -INFINITY ? \"-0\" : result;\n}\nfunction toString(value) {\n  return value == null ? \"\" : baseToString(value);\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return typeof value === \"number\";\n}\nfunction isBoolean(value) {\n  return value === true || value === false || isObjectLike(value) && getTag(value) == \"[object Boolean]\";\n}\nfunction isObject(value) {\n  return typeof value === \"object\";\n}\nfunction isObjectLike(value) {\n  return isObject(value) && value !== null;\n}\nfunction isDefined(value) {\n  return value !== void 0 && value !== null;\n}\nfunction isBlank(value) {\n  return !value.trim().length;\n}\nfunction getTag(value) {\n  return value == null ? value === void 0 ? \"[object Undefined]\" : \"[object Null]\" : Object.prototype.toString.call(value);\n}\nconst EXTENDED_SEARCH_UNAVAILABLE = \"Extended search is not available\";\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) => `Invalid value for key ${key}`;\nconst PATTERN_LENGTH_TOO_LARGE = (max) => `Pattern length exceeds max of ${max}.`;\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\nconst INVALID_KEY_WEIGHT_VALUE = (key) => `Property 'weight' in key '${key}' must be a positive integer`;\nconst hasOwn = Object.prototype.hasOwnProperty;\nclass KeyStore {\n  constructor(keys) {\n    this._keys = [];\n    this._keyMap = {};\n    let totalWeight = 0;\n    keys.forEach((key) => {\n      let obj = createKey(key);\n      this._keys.push(obj);\n      this._keyMap[obj.id] = obj;\n      totalWeight += obj.weight;\n    });\n    this._keys.forEach((key) => {\n      key.weight /= totalWeight;\n    });\n  }\n  get(keyId) {\n    return this._keyMap[keyId];\n  }\n  keys() {\n    return this._keys;\n  }\n  toJSON() {\n    return JSON.stringify(this._keys);\n  }\n}\nfunction createKey(key) {\n  let path = null;\n  let id = null;\n  let src = null;\n  let weight = 1;\n  let getFn = null;\n  if (isString(key) || isArray(key)) {\n    src = key;\n    path = createKeyPath(key);\n    id = createKeyId(key);\n  } else {\n    if (!hasOwn.call(key, \"name\")) {\n      throw new Error(MISSING_KEY_PROPERTY(\"name\"));\n    }\n    const name = key.name;\n    src = name;\n    if (hasOwn.call(key, \"weight\")) {\n      weight = key.weight;\n      if (weight <= 0) {\n        throw new Error(INVALID_KEY_WEIGHT_VALUE(name));\n      }\n    }\n    path = createKeyPath(name);\n    id = createKeyId(name);\n    getFn = key.getFn;\n  }\n  return { path, id, weight, src, getFn };\n}\nfunction createKeyPath(key) {\n  return isArray(key) ? key : key.split(\".\");\n}\nfunction createKeyId(key) {\n  return isArray(key) ? key.join(\".\") : key;\n}\nfunction get(obj, path) {\n  let list = [];\n  let arr = false;\n  const deepGet = (obj2, path2, index) => {\n    if (!isDefined(obj2)) {\n      return;\n    }\n    if (!path2[index]) {\n      list.push(obj2);\n    } else {\n      let key = path2[index];\n      const value = obj2[key];\n      if (!isDefined(value)) {\n        return;\n      }\n      if (index === path2.length - 1 && (isString(value) || isNumber(value) || isBoolean(value))) {\n        list.push(toString(value));\n      } else if (isArray(value)) {\n        arr = true;\n        for (let i = 0, len = value.length; i < len; i += 1) {\n          deepGet(value[i], path2, index + 1);\n        }\n      } else if (path2.length) {\n        deepGet(value, path2, index + 1);\n      }\n    }\n  };\n  deepGet(obj, isString(path) ? path.split(\".\") : path, 0);\n  return arr ? list : list[0];\n}\nconst MatchOptions = {\n  // Whether the matches should be included in the result set. When `true`, each record in the result\n  // set will include the indices of the matched characters.\n  // These can consequently be used for highlighting purposes.\n  includeMatches: false,\n  // When `true`, the matching function will continue to the end of a search pattern even if\n  // a perfect match has already been located in the string.\n  findAllMatches: false,\n  // Minimum number of characters that must be matched before a result is considered a match\n  minMatchCharLength: 1\n};\nconst BasicOptions = {\n  // When `true`, the algorithm continues searching to the end of the input even if a perfect\n  // match is found before the end of the same input.\n  isCaseSensitive: false,\n  // When true, the matching function will continue to the end of a search pattern even if\n  includeScore: false,\n  // List of properties that will be searched. This also supports nested properties.\n  keys: [],\n  // Whether to sort the result list, by score\n  shouldSort: true,\n  // Default sort function: sort by ascending score, ascending index\n  sortFn: (a, b) => a.score === b.score ? a.idx < b.idx ? -1 : 1 : a.score < b.score ? -1 : 1\n};\nconst FuzzyOptions = {\n  // Approximately where in the text is the pattern expected to be found?\n  location: 0,\n  // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n  // (of both letters and location), a threshold of '1.0' would match anything.\n  threshold: 0.6,\n  // Determines how close the match must be to the fuzzy location (specified above).\n  // An exact letter match which is 'distance' characters away from the fuzzy location\n  // would score as a complete mismatch. A distance of '0' requires the match be at\n  // the exact location specified, a threshold of '1000' would require a perfect match\n  // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n  distance: 100\n};\nconst AdvancedOptions = {\n  // When `true`, it enables the use of unix-like search commands\n  useExtendedSearch: false,\n  // The get function to use when fetching an object's properties.\n  // The default will search nested paths *ie foo.bar.baz*\n  getFn: get,\n  // When `true`, search will ignore `location` and `distance`, so it won't matter\n  // where in the string the pattern appears.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n  ignoreLocation: false,\n  // When `true`, the calculation for the relevance score (used for sorting) will\n  // ignore the field-length norm.\n  // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n  ignoreFieldNorm: false,\n  // The weight to determine how much field length norm effects scoring.\n  fieldNormWeight: 1\n};\nvar Config = {\n  ...BasicOptions,\n  ...MatchOptions,\n  ...FuzzyOptions,\n  ...AdvancedOptions\n};\nconst SPACE = /[^ ]+/g;\nfunction norm(weight = 1, mantissa = 3) {\n  const cache = /* @__PURE__ */ new Map();\n  const m = Math.pow(10, mantissa);\n  return {\n    get(value) {\n      const numTokens = value.match(SPACE).length;\n      if (cache.has(numTokens)) {\n        return cache.get(numTokens);\n      }\n      const norm2 = 1 / Math.pow(numTokens, 0.5 * weight);\n      const n = parseFloat(Math.round(norm2 * m) / m);\n      cache.set(numTokens, n);\n      return n;\n    },\n    clear() {\n      cache.clear();\n    }\n  };\n}\nclass FuseIndex {\n  constructor({\n    getFn = Config.getFn,\n    fieldNormWeight = Config.fieldNormWeight\n  } = {}) {\n    this.norm = norm(fieldNormWeight, 3);\n    this.getFn = getFn;\n    this.isCreated = false;\n    this.setIndexRecords();\n  }\n  setSources(docs = []) {\n    this.docs = docs;\n  }\n  setIndexRecords(records = []) {\n    this.records = records;\n  }\n  setKeys(keys = []) {\n    this.keys = keys;\n    this._keysMap = {};\n    keys.forEach((key, idx) => {\n      this._keysMap[key.id] = idx;\n    });\n  }\n  create() {\n    if (this.isCreated || !this.docs.length) {\n      return;\n    }\n    this.isCreated = true;\n    if (isString(this.docs[0])) {\n      this.docs.forEach((doc, docIndex) => {\n        this._addString(doc, docIndex);\n      });\n    } else {\n      this.docs.forEach((doc, docIndex) => {\n        this._addObject(doc, docIndex);\n      });\n    }\n    this.norm.clear();\n  }\n  // Adds a doc to the end of the index\n  add(doc) {\n    const idx = this.size();\n    if (isString(doc)) {\n      this._addString(doc, idx);\n    } else {\n      this._addObject(doc, idx);\n    }\n  }\n  // Removes the doc at the specified index of the index\n  removeAt(idx) {\n    this.records.splice(idx, 1);\n    for (let i = idx, len = this.size(); i < len; i += 1) {\n      this.records[i].i -= 1;\n    }\n  }\n  getValueForItemAtKeyId(item, keyId) {\n    return item[this._keysMap[keyId]];\n  }\n  size() {\n    return this.records.length;\n  }\n  _addString(doc, docIndex) {\n    if (!isDefined(doc) || isBlank(doc)) {\n      return;\n    }\n    let record = {\n      v: doc,\n      i: docIndex,\n      n: this.norm.get(doc)\n    };\n    this.records.push(record);\n  }\n  _addObject(doc, docIndex) {\n    let record = { i: docIndex, $: {} };\n    this.keys.forEach((key, keyIndex) => {\n      let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n      if (!isDefined(value)) {\n        return;\n      }\n      if (isArray(value)) {\n        let subRecords = [];\n        const stack = [{ nestedArrIndex: -1, value }];\n        while (stack.length) {\n          const { nestedArrIndex, value: value2 } = stack.pop();\n          if (!isDefined(value2)) {\n            continue;\n          }\n          if (isString(value2) && !isBlank(value2)) {\n            let subRecord = {\n              v: value2,\n              i: nestedArrIndex,\n              n: this.norm.get(value2)\n            };\n            subRecords.push(subRecord);\n          } else if (isArray(value2)) {\n            value2.forEach((item, k) => {\n              stack.push({\n                nestedArrIndex: k,\n                value: item\n              });\n            });\n          } else ;\n        }\n        record.$[keyIndex] = subRecords;\n      } else if (isString(value) && !isBlank(value)) {\n        let subRecord = {\n          v: value,\n          n: this.norm.get(value)\n        };\n        record.$[keyIndex] = subRecord;\n      }\n    });\n    this.records.push(record);\n  }\n  toJSON() {\n    return {\n      keys: this.keys,\n      records: this.records\n    };\n  }\n}\nfunction createIndex(keys, docs, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys.map(createKey));\n  myIndex.setSources(docs);\n  myIndex.create();\n  return myIndex;\n}\nfunction parseIndex(data, { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}) {\n  const { keys, records } = data;\n  const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n  myIndex.setKeys(keys);\n  myIndex.setIndexRecords(records);\n  return myIndex;\n}\nfunction computeScore$1(pattern, {\n  errors = 0,\n  currentLocation = 0,\n  expectedLocation = 0,\n  distance = Config.distance,\n  ignoreLocation = Config.ignoreLocation\n} = {}) {\n  const accuracy = errors / pattern.length;\n  if (ignoreLocation) {\n    return accuracy;\n  }\n  const proximity = Math.abs(expectedLocation - currentLocation);\n  if (!distance) {\n    return proximity ? 1 : accuracy;\n  }\n  return accuracy + proximity / distance;\n}\nfunction convertMaskToIndices(matchmask = [], minMatchCharLength = Config.minMatchCharLength) {\n  let indices = [];\n  let start = -1;\n  let end = -1;\n  let i = 0;\n  for (let len = matchmask.length; i < len; i += 1) {\n    let match = matchmask[i];\n    if (match && start === -1) {\n      start = i;\n    } else if (!match && start !== -1) {\n      end = i - 1;\n      if (end - start + 1 >= minMatchCharLength) {\n        indices.push([start, end]);\n      }\n      start = -1;\n    }\n  }\n  if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n    indices.push([start, i - 1]);\n  }\n  return indices;\n}\nconst MAX_BITS = 32;\nfunction search(text, pattern, patternAlphabet, {\n  location = Config.location,\n  distance = Config.distance,\n  threshold = Config.threshold,\n  findAllMatches = Config.findAllMatches,\n  minMatchCharLength = Config.minMatchCharLength,\n  includeMatches = Config.includeMatches,\n  ignoreLocation = Config.ignoreLocation\n} = {}) {\n  if (pattern.length > MAX_BITS) {\n    throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS));\n  }\n  const patternLen = pattern.length;\n  const textLen = text.length;\n  const expectedLocation = Math.max(0, Math.min(location, textLen));\n  let currentThreshold = threshold;\n  let bestLocation = expectedLocation;\n  const computeMatches = minMatchCharLength > 1 || includeMatches;\n  const matchMask = computeMatches ? Array(textLen) : [];\n  let index;\n  while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n    let score = computeScore$1(pattern, {\n      currentLocation: index,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n    currentThreshold = Math.min(score, currentThreshold);\n    bestLocation = index + patternLen;\n    if (computeMatches) {\n      let i = 0;\n      while (i < patternLen) {\n        matchMask[index + i] = 1;\n        i += 1;\n      }\n    }\n  }\n  bestLocation = -1;\n  let lastBitArr = [];\n  let finalScore = 1;\n  let binMax = patternLen + textLen;\n  const mask = 1 << patternLen - 1;\n  for (let i = 0; i < patternLen; i += 1) {\n    let binMin = 0;\n    let binMid = binMax;\n    while (binMin < binMid) {\n      const score2 = computeScore$1(pattern, {\n        errors: i,\n        currentLocation: expectedLocation + binMid,\n        expectedLocation,\n        distance,\n        ignoreLocation\n      });\n      if (score2 <= currentThreshold) {\n        binMin = binMid;\n      } else {\n        binMax = binMid;\n      }\n      binMid = Math.floor((binMax - binMin) / 2 + binMin);\n    }\n    binMax = binMid;\n    let start = Math.max(1, expectedLocation - binMid + 1);\n    let finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen;\n    let bitArr = Array(finish + 2);\n    bitArr[finish + 1] = (1 << i) - 1;\n    for (let j = finish; j >= start; j -= 1) {\n      let currentLocation = j - 1;\n      let charMatch = patternAlphabet[text.charAt(currentLocation)];\n      if (computeMatches) {\n        matchMask[currentLocation] = +!!charMatch;\n      }\n      bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch;\n      if (i) {\n        bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];\n      }\n      if (bitArr[j] & mask) {\n        finalScore = computeScore$1(pattern, {\n          errors: i,\n          currentLocation,\n          expectedLocation,\n          distance,\n          ignoreLocation\n        });\n        if (finalScore <= currentThreshold) {\n          currentThreshold = finalScore;\n          bestLocation = currentLocation;\n          if (bestLocation <= expectedLocation) {\n            break;\n          }\n          start = Math.max(1, 2 * expectedLocation - bestLocation);\n        }\n      }\n    }\n    const score = computeScore$1(pattern, {\n      errors: i + 1,\n      currentLocation: expectedLocation,\n      expectedLocation,\n      distance,\n      ignoreLocation\n    });\n    if (score > currentThreshold) {\n      break;\n    }\n    lastBitArr = bitArr;\n  }\n  const result = {\n    isMatch: bestLocation >= 0,\n    // Count exact matches (those with a score of 0) to be \"almost\" exact\n    score: Math.max(1e-3, finalScore)\n  };\n  if (computeMatches) {\n    const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n    if (!indices.length) {\n      result.isMatch = false;\n    } else if (includeMatches) {\n      result.indices = indices;\n    }\n  }\n  return result;\n}\nfunction createPatternAlphabet(pattern) {\n  let mask = {};\n  for (let i = 0, len = pattern.length; i < len; i += 1) {\n    const char = pattern.charAt(i);\n    mask[char] = (mask[char] || 0) | 1 << len - i - 1;\n  }\n  return mask;\n}\nclass BitapSearch {\n  constructor(pattern, {\n    location = Config.location,\n    threshold = Config.threshold,\n    distance = Config.distance,\n    includeMatches = Config.includeMatches,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    isCaseSensitive = Config.isCaseSensitive,\n    ignoreLocation = Config.ignoreLocation\n  } = {}) {\n    this.options = {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    };\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.chunks = [];\n    if (!this.pattern.length) {\n      return;\n    }\n    const addChunk = (pattern2, startIndex) => {\n      this.chunks.push({\n        pattern: pattern2,\n        alphabet: createPatternAlphabet(pattern2),\n        startIndex\n      });\n    };\n    const len = this.pattern.length;\n    if (len > MAX_BITS) {\n      let i = 0;\n      const remainder = len % MAX_BITS;\n      const end = len - remainder;\n      while (i < end) {\n        addChunk(this.pattern.substr(i, MAX_BITS), i);\n        i += MAX_BITS;\n      }\n      if (remainder) {\n        const startIndex = len - MAX_BITS;\n        addChunk(this.pattern.substr(startIndex), startIndex);\n      }\n    } else {\n      addChunk(this.pattern, 0);\n    }\n  }\n  searchIn(text) {\n    const { isCaseSensitive, includeMatches } = this.options;\n    if (!isCaseSensitive) {\n      text = text.toLowerCase();\n    }\n    if (this.pattern === text) {\n      let result2 = {\n        isMatch: true,\n        score: 0\n      };\n      if (includeMatches) {\n        result2.indices = [[0, text.length - 1]];\n      }\n      return result2;\n    }\n    const {\n      location,\n      distance,\n      threshold,\n      findAllMatches,\n      minMatchCharLength,\n      ignoreLocation\n    } = this.options;\n    let allIndices = [];\n    let totalScore = 0;\n    let hasMatches = false;\n    this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n      const { isMatch, score, indices } = search(text, pattern, alphabet, {\n        location: location + startIndex,\n        distance,\n        threshold,\n        findAllMatches,\n        minMatchCharLength,\n        includeMatches,\n        ignoreLocation\n      });\n      if (isMatch) {\n        hasMatches = true;\n      }\n      totalScore += score;\n      if (isMatch && indices) {\n        allIndices = [...allIndices, ...indices];\n      }\n    });\n    let result = {\n      isMatch: hasMatches,\n      score: hasMatches ? totalScore / this.chunks.length : 1\n    };\n    if (hasMatches && includeMatches) {\n      result.indices = allIndices;\n    }\n    return result;\n  }\n}\nclass BaseMatch {\n  constructor(pattern) {\n    this.pattern = pattern;\n  }\n  static isMultiMatch(pattern) {\n    return getMatch(pattern, this.multiRegex);\n  }\n  static isSingleMatch(pattern) {\n    return getMatch(pattern, this.singleRegex);\n  }\n  search() {\n  }\n}\nfunction getMatch(pattern, exp) {\n  const matches = pattern.match(exp);\n  return matches ? matches[1] : null;\n}\nclass ExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"exact\";\n  }\n  static get multiRegex() {\n    return /^=\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^=(.*)$/;\n  }\n  search(text) {\n    const isMatch = text === this.pattern;\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    };\n  }\n}\nclass InverseExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"inverse-exact\";\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^!(.*)$/;\n  }\n  search(text) {\n    const index = text.indexOf(this.pattern);\n    const isMatch = index === -1;\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    };\n  }\n}\nclass PrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"prefix-exact\";\n  }\n  static get multiRegex() {\n    return /^\\^\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^\\^(.*)$/;\n  }\n  search(text) {\n    const isMatch = text.startsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, this.pattern.length - 1]\n    };\n  }\n}\nclass InversePrefixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"inverse-prefix-exact\";\n  }\n  static get multiRegex() {\n    return /^!\\^\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^!\\^(.*)$/;\n  }\n  search(text) {\n    const isMatch = !text.startsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    };\n  }\n}\nclass SuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"suffix-exact\";\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"\\$$/;\n  }\n  static get singleRegex() {\n    return /^(.*)\\$$/;\n  }\n  search(text) {\n    const isMatch = text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [text.length - this.pattern.length, text.length - 1]\n    };\n  }\n}\nclass InverseSuffixExactMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"inverse-suffix-exact\";\n  }\n  static get multiRegex() {\n    return /^!\"(.*)\"\\$$/;\n  }\n  static get singleRegex() {\n    return /^!(.*)\\$$/;\n  }\n  search(text) {\n    const isMatch = !text.endsWith(this.pattern);\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices: [0, text.length - 1]\n    };\n  }\n}\nclass FuzzyMatch extends BaseMatch {\n  constructor(pattern, {\n    location = Config.location,\n    threshold = Config.threshold,\n    distance = Config.distance,\n    includeMatches = Config.includeMatches,\n    findAllMatches = Config.findAllMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    isCaseSensitive = Config.isCaseSensitive,\n    ignoreLocation = Config.ignoreLocation\n  } = {}) {\n    super(pattern);\n    this._bitapSearch = new BitapSearch(pattern, {\n      location,\n      threshold,\n      distance,\n      includeMatches,\n      findAllMatches,\n      minMatchCharLength,\n      isCaseSensitive,\n      ignoreLocation\n    });\n  }\n  static get type() {\n    return \"fuzzy\";\n  }\n  static get multiRegex() {\n    return /^\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^(.*)$/;\n  }\n  search(text) {\n    return this._bitapSearch.searchIn(text);\n  }\n}\nclass IncludeMatch extends BaseMatch {\n  constructor(pattern) {\n    super(pattern);\n  }\n  static get type() {\n    return \"include\";\n  }\n  static get multiRegex() {\n    return /^'\"(.*)\"$/;\n  }\n  static get singleRegex() {\n    return /^'(.*)$/;\n  }\n  search(text) {\n    let location = 0;\n    let index;\n    const indices = [];\n    const patternLen = this.pattern.length;\n    while ((index = text.indexOf(this.pattern, location)) > -1) {\n      location = index + patternLen;\n      indices.push([index, location - 1]);\n    }\n    const isMatch = !!indices.length;\n    return {\n      isMatch,\n      score: isMatch ? 0 : 1,\n      indices\n    };\n  }\n}\nconst searchers = [\n  ExactMatch,\n  IncludeMatch,\n  PrefixExactMatch,\n  InversePrefixExactMatch,\n  InverseSuffixExactMatch,\n  SuffixExactMatch,\n  InverseExactMatch,\n  FuzzyMatch\n];\nconst searchersLen = searchers.length;\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = \"|\";\nfunction parseQuery(pattern, options = {}) {\n  return pattern.split(OR_TOKEN).map((item) => {\n    let query = item.trim().split(SPACE_RE).filter((item2) => item2 && !!item2.trim());\n    let results = [];\n    for (let i = 0, len = query.length; i < len; i += 1) {\n      const queryItem = query[i];\n      let found = false;\n      let idx = -1;\n      while (!found && ++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isMultiMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          found = true;\n        }\n      }\n      if (found) {\n        continue;\n      }\n      idx = -1;\n      while (++idx < searchersLen) {\n        const searcher = searchers[idx];\n        let token = searcher.isSingleMatch(queryItem);\n        if (token) {\n          results.push(new searcher(token, options));\n          break;\n        }\n      }\n    }\n    return results;\n  });\n}\nconst MultiMatchSet = /* @__PURE__ */ new Set([FuzzyMatch.type, IncludeMatch.type]);\nclass ExtendedSearch {\n  constructor(pattern, {\n    isCaseSensitive = Config.isCaseSensitive,\n    includeMatches = Config.includeMatches,\n    minMatchCharLength = Config.minMatchCharLength,\n    ignoreLocation = Config.ignoreLocation,\n    findAllMatches = Config.findAllMatches,\n    location = Config.location,\n    threshold = Config.threshold,\n    distance = Config.distance\n  } = {}) {\n    this.query = null;\n    this.options = {\n      isCaseSensitive,\n      includeMatches,\n      minMatchCharLength,\n      findAllMatches,\n      ignoreLocation,\n      location,\n      threshold,\n      distance\n    };\n    this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n    this.query = parseQuery(this.pattern, this.options);\n  }\n  static condition(_, options) {\n    return options.useExtendedSearch;\n  }\n  searchIn(text) {\n    const query = this.query;\n    if (!query) {\n      return {\n        isMatch: false,\n        score: 1\n      };\n    }\n    const { includeMatches, isCaseSensitive } = this.options;\n    text = isCaseSensitive ? text : text.toLowerCase();\n    let numMatches = 0;\n    let allIndices = [];\n    let totalScore = 0;\n    for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n      const searchers2 = query[i];\n      allIndices.length = 0;\n      numMatches = 0;\n      for (let j = 0, pLen = searchers2.length; j < pLen; j += 1) {\n        const searcher = searchers2[j];\n        const { isMatch, indices, score } = searcher.search(text);\n        if (isMatch) {\n          numMatches += 1;\n          totalScore += score;\n          if (includeMatches) {\n            const type = searcher.constructor.type;\n            if (MultiMatchSet.has(type)) {\n              allIndices = [...allIndices, ...indices];\n            } else {\n              allIndices.push(indices);\n            }\n          }\n        } else {\n          totalScore = 0;\n          numMatches = 0;\n          allIndices.length = 0;\n          break;\n        }\n      }\n      if (numMatches) {\n        let result = {\n          isMatch: true,\n          score: totalScore / numMatches\n        };\n        if (includeMatches) {\n          result.indices = allIndices;\n        }\n        return result;\n      }\n    }\n    return {\n      isMatch: false,\n      score: 1\n    };\n  }\n}\nconst registeredSearchers = [];\nfunction register(...args) {\n  registeredSearchers.push(...args);\n}\nfunction createSearcher(pattern, options) {\n  for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n    let searcherClass = registeredSearchers[i];\n    if (searcherClass.condition(pattern, options)) {\n      return new searcherClass(pattern, options);\n    }\n  }\n  return new BitapSearch(pattern, options);\n}\nconst LogicalOperator = {\n  AND: \"$and\",\n  OR: \"$or\"\n};\nconst KeyType = {\n  PATH: \"$path\",\n  PATTERN: \"$val\"\n};\nconst isExpression = (query) => !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\nconst isPath = (query) => !!query[KeyType.PATH];\nconst isLeaf = (query) => !isArray(query) && isObject(query) && !isExpression(query);\nconst convertToExplicit = (query) => ({\n  [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n    [key]: query[key]\n  }))\n});\nfunction parse(query, options, { auto = true } = {}) {\n  const next = (query2) => {\n    let keys = Object.keys(query2);\n    const isQueryPath = isPath(query2);\n    if (!isQueryPath && keys.length > 1 && !isExpression(query2)) {\n      return next(convertToExplicit(query2));\n    }\n    if (isLeaf(query2)) {\n      const key = isQueryPath ? query2[KeyType.PATH] : keys[0];\n      const pattern = isQueryPath ? query2[KeyType.PATTERN] : query2[key];\n      if (!isString(pattern)) {\n        throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key));\n      }\n      const obj = {\n        keyId: createKeyId(key),\n        pattern\n      };\n      if (auto) {\n        obj.searcher = createSearcher(pattern, options);\n      }\n      return obj;\n    }\n    let node = {\n      children: [],\n      operator: keys[0]\n    };\n    keys.forEach((key) => {\n      const value = query2[key];\n      if (isArray(value)) {\n        value.forEach((item) => {\n          node.children.push(next(item));\n        });\n      }\n    });\n    return node;\n  };\n  if (!isExpression(query)) {\n    query = convertToExplicit(query);\n  }\n  return next(query);\n}\nfunction computeScore(results, { ignoreFieldNorm = Config.ignoreFieldNorm }) {\n  results.forEach((result) => {\n    let totalScore = 1;\n    result.matches.forEach(({ key, norm: norm2, score }) => {\n      const weight = key ? key.weight : null;\n      totalScore *= Math.pow(\n        score === 0 && weight ? Number.EPSILON : score,\n        (weight || 1) * (ignoreFieldNorm ? 1 : norm2)\n      );\n    });\n    result.score = totalScore;\n  });\n}\nfunction transformMatches(result, data) {\n  const matches = result.matches;\n  data.matches = [];\n  if (!isDefined(matches)) {\n    return;\n  }\n  matches.forEach((match) => {\n    if (!isDefined(match.indices) || !match.indices.length) {\n      return;\n    }\n    const { indices, value } = match;\n    let obj = {\n      indices,\n      value\n    };\n    if (match.key) {\n      obj.key = match.key.src;\n    }\n    if (match.idx > -1) {\n      obj.refIndex = match.idx;\n    }\n    data.matches.push(obj);\n  });\n}\nfunction transformScore(result, data) {\n  data.score = result.score;\n}\nfunction format(results, docs, {\n  includeMatches = Config.includeMatches,\n  includeScore = Config.includeScore\n} = {}) {\n  const transformers = [];\n  if (includeMatches) transformers.push(transformMatches);\n  if (includeScore) transformers.push(transformScore);\n  return results.map((result) => {\n    const { idx } = result;\n    const data = {\n      item: docs[idx],\n      refIndex: idx\n    };\n    if (transformers.length) {\n      transformers.forEach((transformer) => {\n        transformer(result, data);\n      });\n    }\n    return data;\n  });\n}\nclass Fuse {\n  constructor(docs, options = {}, index) {\n    this.options = { ...Config, ...options };\n    if (this.options.useExtendedSearch && false) {\n      throw new Error(EXTENDED_SEARCH_UNAVAILABLE);\n    }\n    this._keyStore = new KeyStore(this.options.keys);\n    this.setCollection(docs, index);\n  }\n  setCollection(docs, index) {\n    this._docs = docs;\n    if (index && !(index instanceof FuseIndex)) {\n      throw new Error(INCORRECT_INDEX_TYPE);\n    }\n    this._myIndex = index || createIndex(this.options.keys, this._docs, {\n      getFn: this.options.getFn,\n      fieldNormWeight: this.options.fieldNormWeight\n    });\n  }\n  add(doc) {\n    if (!isDefined(doc)) {\n      return;\n    }\n    this._docs.push(doc);\n    this._myIndex.add(doc);\n  }\n  remove(predicate = () => false) {\n    const results = [];\n    for (let i = 0, len = this._docs.length; i < len; i += 1) {\n      const doc = this._docs[i];\n      if (predicate(doc, i)) {\n        this.removeAt(i);\n        i -= 1;\n        len -= 1;\n        results.push(doc);\n      }\n    }\n    return results;\n  }\n  removeAt(idx) {\n    this._docs.splice(idx, 1);\n    this._myIndex.removeAt(idx);\n  }\n  getIndex() {\n    return this._myIndex;\n  }\n  search(query, { limit = -1 } = {}) {\n    const {\n      includeMatches,\n      includeScore,\n      shouldSort,\n      sortFn,\n      ignoreFieldNorm\n    } = this.options;\n    let results = isString(query) ? isString(this._docs[0]) ? this._searchStringList(query) : this._searchObjectList(query) : this._searchLogical(query);\n    computeScore(results, { ignoreFieldNorm });\n    if (shouldSort) {\n      results.sort(sortFn);\n    }\n    if (isNumber(limit) && limit > -1) {\n      results = results.slice(0, limit);\n    }\n    return format(results, this._docs, {\n      includeMatches,\n      includeScore\n    });\n  }\n  _searchStringList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { records } = this._myIndex;\n    const results = [];\n    records.forEach(({ v: text, i: idx, n: norm2 }) => {\n      if (!isDefined(text)) {\n        return;\n      }\n      const { isMatch, score, indices } = searcher.searchIn(text);\n      if (isMatch) {\n        results.push({\n          item: text,\n          idx,\n          matches: [{ score, value: text, norm: norm2, indices }]\n        });\n      }\n    });\n    return results;\n  }\n  _searchLogical(query) {\n    const expression = parse(query, this.options);\n    const evaluate = (node, item, idx) => {\n      if (!node.children) {\n        const { keyId, searcher } = node;\n        const matches = this._findMatches({\n          key: this._keyStore.get(keyId),\n          value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n          searcher\n        });\n        if (matches && matches.length) {\n          return [\n            {\n              idx,\n              item,\n              matches\n            }\n          ];\n        }\n        return [];\n      }\n      const res = [];\n      for (let i = 0, len = node.children.length; i < len; i += 1) {\n        const child = node.children[i];\n        const result = evaluate(child, item, idx);\n        if (result.length) {\n          res.push(...result);\n        } else if (node.operator === LogicalOperator.AND) {\n          return [];\n        }\n      }\n      return res;\n    };\n    const records = this._myIndex.records;\n    const resultMap = {};\n    const results = [];\n    records.forEach(({ $: item, i: idx }) => {\n      if (isDefined(item)) {\n        let expResults = evaluate(expression, item, idx);\n        if (expResults.length) {\n          if (!resultMap[idx]) {\n            resultMap[idx] = { idx, item, matches: [] };\n            results.push(resultMap[idx]);\n          }\n          expResults.forEach(({ matches }) => {\n            resultMap[idx].matches.push(...matches);\n          });\n        }\n      }\n    });\n    return results;\n  }\n  _searchObjectList(query) {\n    const searcher = createSearcher(query, this.options);\n    const { keys, records } = this._myIndex;\n    const results = [];\n    records.forEach(({ $: item, i: idx }) => {\n      if (!isDefined(item)) {\n        return;\n      }\n      let matches = [];\n      keys.forEach((key, keyIndex) => {\n        matches.push(\n          ...this._findMatches({\n            key,\n            value: item[keyIndex],\n            searcher\n          })\n        );\n      });\n      if (matches.length) {\n        results.push({\n          idx,\n          item,\n          matches\n        });\n      }\n    });\n    return results;\n  }\n  _findMatches({ key, value, searcher }) {\n    if (!isDefined(value)) {\n      return [];\n    }\n    let matches = [];\n    if (isArray(value)) {\n      value.forEach(({ v: text, i: idx, n: norm2 }) => {\n        if (!isDefined(text)) {\n          return;\n        }\n        const { isMatch, score, indices } = searcher.searchIn(text);\n        if (isMatch) {\n          matches.push({\n            score,\n            key,\n            value: text,\n            idx,\n            norm: norm2,\n            indices\n          });\n        }\n      });\n    } else {\n      const { v: text, n: norm2 } = value;\n      const { isMatch, score, indices } = searcher.searchIn(text);\n      if (isMatch) {\n        matches.push({ score, key, value: text, norm: norm2, indices });\n      }\n    }\n    return matches;\n  }\n}\nFuse.version = \"7.0.0\";\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n{\n  Fuse.parseQuery = parse;\n}\n{\n  register(ExtendedSearch);\n}\nfunction uniqID() {\n  return `_${(Math.random() * 36 ** 20).toString(36).slice(0, 10)}`;\n}\nfunction stringToDom(html) {\n  const template = document.createElement(\"template\");\n  template.innerHTML = html;\n  return template.content;\n}\nconst AsyncFunction = Object.getPrototypeOf(async () => {\n}).constructor;\nasync function evalTemplateString(str, variables = {}) {\n  const keys = Object.keys(variables);\n  const values = keys.map((key) => variables[key]);\n  try {\n    const func = AsyncFunction.call(null, ...keys, `return \\`${str}\\``);\n    return await func(...values);\n  } catch (e) {\n    console.log(e);\n    throw new SyntaxError(`\\`${str}\\``);\n  }\n}\nfunction importCSS(...stylesheets) {\n  const linksElements = [];\n  for (let url of stylesheets) {\n    url = relativeSource(url);\n    let link = Array.from(document.head.querySelectorAll(\"link\")).find(\n      (link2) => link2.href === url\n    );\n    if (link) return link;\n    link = document.createElement(\"link\");\n    link.rel = \"stylesheet\";\n    link.href = url;\n    document.head.appendChild(link);\n    linksElements.push(link);\n  }\n  return linksElements;\n}\nfunction importInlineCSS(id, importer) {\n  id = `sib-inline-css-${id}`;\n  let style = document.head.querySelector(`style#${id}`);\n  if (style) return style;\n  style = document.createElement(\"style\");\n  style.id = id;\n  document.head.appendChild(style);\n  (async () => {\n    let textContent;\n    if (typeof importer === \"string\") textContent = importer;\n    else {\n      const imported = await importer();\n      if (typeof imported === \"string\") textContent = imported;\n      else textContent = imported.default || \"\";\n    }\n    style.textContent = textContent;\n  })();\n  return style;\n}\nfunction importJS(...plugins) {\n  return plugins.map((url) => {\n    url = new URL(url, document.baseURI).href;\n    let script = Array.from(document.querySelectorAll(\"script\")).find(\n      (script2) => script2.src === url\n    );\n    if (script) return script;\n    script = document.createElement(\"script\");\n    script.src = url;\n    document.head.appendChild(script);\n    return script;\n  });\n}\nfunction relativeSource(source) {\n  if (!source.match(/^\\..?\\//)) return new URL(source, document.baseURI).href;\n  const e = new Error();\n  if (!e.stack) return source;\n  const f2 = e.stack.split(\"\\n\").filter((l) => l.includes(\":\"))[2];\n  const line = f2.match(/[a-z]+:.*$/);\n  if (!line) return source;\n  const calledFile = line[0].replace(/(\\:[0-9]+){2}\\)?$/, \"\");\n  source = new URL(source, calledFile).href;\n  return source;\n}\nfunction loadScript(source) {\n  source = relativeSource(source);\n  return new Promise((resolve) => {\n    const script = document.createElement(\"script\");\n    const head = document.querySelector(\"head\");\n    script.async = true;\n    script.onload = () => setTimeout(resolve, 0);\n    script.src = source;\n    if (head) head.appendChild(script);\n  });\n}\nfunction domIsReady() {\n  return new Promise((resolve) => {\n    if (document.readyState === \"complete\") {\n      resolve();\n    } else {\n      document.addEventListener(\"DOMContentLoaded\", () => resolve());\n    }\n  });\n}\nfunction setDeepProperty(obj, path, value) {\n  const name = path.shift();\n  if (name) {\n    if (!(name in obj)) obj[name] = {};\n    if (path.length > 0) setDeepProperty(obj[name], path, value);\n    else obj[name] = value;\n  }\n}\nfunction parseFieldsString(fields) {\n  if (!fields) return [];\n  while (fields.indexOf(\"(\") > 0) {\n    const firstBracket = fields.indexOf(\"(\");\n    const noset = fields.substring(\n      firstBracket,\n      findClosingBracketMatchIndex(fields, firstBracket) + 1\n    );\n    fields = fields.replace(noset, \"\");\n  }\n  const re = /((^\\s*|,)\\s*)((\"(\\\\\"|[^\"])*\")|('(\\\\'|[^'])*')|[^,]*)/gm;\n  const fieldsArray = fields.match(re) || [];\n  if (!fieldsArray) return [];\n  return fieldsArray.map((a) => a.replace(/^[\\s,]+/, \"\"));\n}\nfunction findClosingBracketMatchIndex(str, pos) {\n  if (str[pos] !== \"(\") throw new Error(`No '(' at index ${pos}`);\n  let depth = 1;\n  for (let i = pos + 1; i < str.length; i++) {\n    switch (str[i]) {\n      case \"(\":\n        depth++;\n        break;\n      case \")\":\n        if (--depth === 0) return i;\n        break;\n    }\n  }\n  return -1;\n}\nfunction defineComponent(tagName, componentClass) {\n  if (!customElements.get(tagName)) {\n    customElements.define(tagName, componentClass);\n  } else {\n    console.warn(\n      `Warning: the component \"${tagName}\" has already been loaded in another version of sib-core.`\n    );\n  }\n}\nfunction fuzzyCompare(subject, search2) {\n  const fuse = new Fuse([subject], {\n    shouldSort: false,\n    threshold: 0.37\n  }).search(search2);\n  return fuse.length > 0;\n}\nconst compare = {\n  string(subject, query) {\n    if (query === \"\") return true;\n    if (subject.toString().toLowerCase().includes(String(query).toLowerCase()))\n      return true;\n    return fuzzyCompare(subject, query);\n  },\n  boolean(subject, query) {\n    if (!query) return true;\n    return subject;\n  },\n  number(subject, query) {\n    return subject === query;\n  },\n  list(subject, list) {\n    return list.includes(subject);\n  },\n  range(subject, range) {\n    return (range[0] == null || range[0] === \"\" || subject >= range[0]) && (range[1] == null || range[1] === \"\" || subject <= range[1]);\n  },\n  resource(subject, query) {\n    if (query === \"\") return true;\n    if (!query[\"@id\"]) return false;\n    const ret = subject[\"@id\"] === query[\"@id\"];\n    return ret;\n  }\n};\nfunction generalComparator(a, b, order = \"asc\") {\n  if (order === \"desc\") return generalComparator(b, a);\n  if (a == null && b == null) return 0;\n  if (a === b || Object.is(a, b)) return 0;\n  if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n    return a === b ? 0 : a ? 1 : -1;\n  }\n  if (!Number.isNaN(Number(a)) && !Number.isNaN(Number(b))) {\n    return Number(a) - Number(b);\n  }\n  if (Array.isArray(a) && Array.isArray(b)) {\n    return a.length - b.length;\n  }\n  const dateA = Date.parse(String(a));\n  const dateB = Date.parse(String(b));\n  if (!Number.isNaN(dateA) && !Number.isNaN(dateB)) {\n    return dateA - dateB;\n  }\n  if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n    const aKeys = Object.keys(a);\n    const bKeys = Object.keys(b);\n    return aKeys.length - bKeys.length;\n  }\n  if (a == null) return -1;\n  if (b == null) return 1;\n  return String(a).localeCompare(String(b));\n}\nfunction transformArrayToContainer(resource) {\n  const newValue = { ...resource };\n  for (const predicate of Object.keys(newValue)) {\n    const predicateValue = newValue[predicate];\n    if (!predicateValue || typeof predicateValue !== \"object\") continue;\n    if ([\"permissions\", \"@context\"].includes(predicate)) continue;\n    if (!Array.isArray(predicateValue) && predicateValue[\"@id\"]) {\n      newValue[predicate] = transformArrayToContainer(resource[predicate]);\n    }\n    if (Array.isArray(predicateValue) && predicateValue[\"@id\"]) {\n      newValue[predicate] = {\n        \"@id\": predicateValue[\"@id\"],\n        \"ldp:contains\": [...predicateValue]\n      };\n      newValue[predicate][\"ldp:contains\"].forEach(\n        (childPredicate, index) => {\n          newValue[predicate][\"ldp:contains\"][index] = transformArrayToContainer(childPredicate);\n        }\n      );\n    }\n  }\n  return newValue;\n}\nclass AsyncIterableBuilder {\n  constructor() {\n    __privateAdd(this, _AsyncIterableBuilder_instances);\n    __privateAdd(this, _values, []);\n    __privateAdd(this, _resolve);\n    __publicField(this, \"iterable\");\n    __publicField(this, \"next\");\n    __privateMethod(this, _AsyncIterableBuilder_instances, nextPromise_fn).call(this);\n    this.iterable = __privateMethod(this, _AsyncIterableBuilder_instances, createIterable_fn).call(this);\n    this.next = __privateMethod(this, _AsyncIterableBuilder_instances, next_fn).bind(this);\n  }\n}\n_values = new WeakMap();\n_resolve = new WeakMap();\n_AsyncIterableBuilder_instances = new WeakSet();\ncreateIterable_fn = async function* () {\n  for (let index = 0; ; index++) {\n    const { value, done } = await __privateGet(this, _values)[index];\n    delete __privateGet(this, _values)[index];\n    yield value;\n    if (done) return;\n  }\n};\nnext_fn = function(value, done = false) {\n  __privateGet(this, _resolve).call(this, { value, done });\n  __privateMethod(this, _AsyncIterableBuilder_instances, nextPromise_fn).call(this);\n};\nnextPromise_fn = function() {\n  __privateGet(this, _values).push(\n    new Promise((resolve) => {\n      __privateSet(this, _resolve, resolve);\n    })\n  );\n};\nconst asyncQuerySelector = (selector, parent = document) => new Promise((resolve) => {\n  const element = parent.querySelector(selector);\n  if (element) return resolve(element);\n  const observer = new MutationObserver(() => {\n    const element2 = parent.querySelector(selector);\n    if (!element2) return;\n    observer.disconnect();\n    return resolve(element2);\n  });\n  observer.observe(parent, {\n    subtree: true,\n    childList: true,\n    attributes: true\n  });\n});\nconst asyncQuerySelectorAll = (selector, parent = document) => {\n  const delivered = /* @__PURE__ */ new WeakSet();\n  const { next, iterable } = new AsyncIterableBuilder();\n  function checkNewElement() {\n    for (const element of parent.querySelectorAll(selector)) {\n      if (delivered.has(element)) continue;\n      delivered.add(element);\n      next(element);\n    }\n  }\n  checkNewElement();\n  const observer = new MutationObserver(checkNewElement);\n  observer.observe(parent, {\n    subtree: true,\n    childList: true,\n    attributes: true\n  });\n  return iterable;\n};\nconst helpers = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  AsyncIterableBuilder,\n  asyncQuerySelector,\n  asyncQuerySelectorAll,\n  compare,\n  default: AsyncIterableBuilder,\n  defineComponent,\n  domIsReady,\n  evalTemplateString,\n  findClosingBracketMatchIndex,\n  fuzzyCompare,\n  generalComparator,\n  importCSS,\n  importInlineCSS,\n  importJS,\n  loadScript,\n  parseFieldsString,\n  setDeepProperty,\n  stringToDom,\n  transformArrayToContainer,\n  uniqID\n}, Symbol.toStringTag, { value: \"Module\" }));\nexport {\n  AsyncIterableBuilder as A,\n  asyncQuerySelector as a,\n  fuzzyCompare as b,\n  compare as c,\n  defineComponent as d,\n  evalTemplateString as e,\n  findClosingBracketMatchIndex as f,\n  generalComparator as g,\n  helpers as h,\n  importInlineCSS as i,\n  stringToDom as j,\n  importCSS as k,\n  importJS as l,\n  loadScript as m,\n  domIsReady as n,\n  asyncQuerySelectorAll as o,\n  parseFieldsString as p,\n  setDeepProperty as s,\n  transformArrayToContainer as t,\n  uniqID as u\n};\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nvar _a2;\nimport { d as defineComponent, u as uniqID, e as evalTemplateString, c as compare, f as findClosingBracketMatchIndex, p as parseFieldsString, g as generalComparator, i as importInlineCSS, a as asyncQuerySelector, b as fuzzyCompare, s as setDeepProperty, t as transformArrayToContainer } from \"./helpers-C8RJ0BtV.js\";\nimport { h } from \"./helpers-C8RJ0BtV.js\";\nif (!(\"flat\" in Array.prototype)) {\n  Object.defineProperty(Array.prototype, \"flat\", {\n    configurable: true,\n    value: function flat(depth = 1) {\n      depth = Number.isNaN(depth) ? 1 : Number(depth);\n      if (depth === 0) return Array.prototype.slice.call(this);\n      return Array.prototype.reduce.call(\n        this,\n        (acc, cur) => {\n          if (Array.isArray(cur)) {\n            acc.push.apply(acc, flat.call(cur, depth - 1));\n          } else {\n            acc.push(cur);\n          }\n          return acc;\n        },\n        []\n      );\n    },\n    writable: true\n  });\n}\nif (!Element.prototype.toggleAttribute) {\n  Element.prototype.toggleAttribute = function(name, force = void 0) {\n    if (force !== void 0) force = !!force;\n    if (this.hasAttribute(name)) {\n      if (force) return true;\n      this.removeAttribute(name);\n      return false;\n    }\n    if (force === false) return false;\n    this.setAttribute(name, \"\");\n    return true;\n  };\n}\nvar commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs(x2) {\n  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nfunction getAugmentedNamespace(n3) {\n  if (n3.__esModule) return n3;\n  var f2 = n3.default;\n  if (typeof f2 == \"function\") {\n    var a2 = function a3() {\n      if (this instanceof a3) {\n        return Reflect.construct(f2, arguments, this.constructor);\n      }\n      return f2.apply(this, arguments);\n    };\n    a2.prototype = f2.prototype;\n  } else a2 = {};\n  Object.defineProperty(a2, \"__esModule\", { value: true });\n  Object.keys(n3).forEach(function(k2) {\n    var d2 = Object.getOwnPropertyDescriptor(n3, k2);\n    Object.defineProperty(a2, k2, d2.get ? d2 : {\n      enumerable: true,\n      get: function() {\n        return n3[k2];\n      }\n    });\n  });\n  return a2;\n}\nvar jsonldContextParser = {};\nvar ContextParser$3 = {};\nvar g$1 = typeof globalThis !== \"undefined\" && globalThis || typeof self !== \"undefined\" && self || // eslint-disable-next-line no-undef\ntypeof global !== \"undefined\" && global || {};\nvar support = {\n  searchParams: \"URLSearchParams\" in g$1,\n  iterable: \"Symbol\" in g$1 && \"iterator\" in Symbol,\n  blob: \"FileReader\" in g$1 && \"Blob\" in g$1 && function() {\n    try {\n      new Blob();\n      return true;\n    } catch (e2) {\n      return false;\n    }\n  }(),\n  formData: \"FormData\" in g$1,\n  arrayBuffer: \"ArrayBuffer\" in g$1\n};\nfunction isDataView(obj) {\n  return obj && DataView.prototype.isPrototypeOf(obj);\n}\nif (support.arrayBuffer) {\n  var viewClasses = [\n    \"[object Int8Array]\",\n    \"[object Uint8Array]\",\n    \"[object Uint8ClampedArray]\",\n    \"[object Int16Array]\",\n    \"[object Uint16Array]\",\n    \"[object Int32Array]\",\n    \"[object Uint32Array]\",\n    \"[object Float32Array]\",\n    \"[object Float64Array]\"\n  ];\n  var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n    return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1;\n  };\n}\nfunction normalizeName(name) {\n  if (typeof name !== \"string\") {\n    name = String(name);\n  }\n  if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === \"\") {\n    throw new TypeError('Invalid character in header field name: \"' + name + '\"');\n  }\n  return name.toLowerCase();\n}\nfunction normalizeValue(value) {\n  if (typeof value !== \"string\") {\n    value = String(value);\n  }\n  return value;\n}\nfunction iteratorFor(items) {\n  var iterator2 = {\n    next: function() {\n      var value = items.shift();\n      return { done: value === void 0, value };\n    }\n  };\n  if (support.iterable) {\n    iterator2[Symbol.iterator] = function() {\n      return iterator2;\n    };\n  }\n  return iterator2;\n}\nfunction Headers$1(headers) {\n  this.map = {};\n  if (headers instanceof Headers$1) {\n    headers.forEach(function(value, name) {\n      this.append(name, value);\n    }, this);\n  } else if (Array.isArray(headers)) {\n    headers.forEach(function(header) {\n      if (header.length != 2) {\n        throw new TypeError(\"Headers constructor: expected name/value pair to be length 2, found\" + header.length);\n      }\n      this.append(header[0], header[1]);\n    }, this);\n  } else if (headers) {\n    Object.getOwnPropertyNames(headers).forEach(function(name) {\n      this.append(name, headers[name]);\n    }, this);\n  }\n}\nHeaders$1.prototype.append = function(name, value) {\n  name = normalizeName(name);\n  value = normalizeValue(value);\n  var oldValue = this.map[name];\n  this.map[name] = oldValue ? oldValue + \", \" + value : value;\n};\nHeaders$1.prototype[\"delete\"] = function(name) {\n  delete this.map[normalizeName(name)];\n};\nHeaders$1.prototype.get = function(name) {\n  name = normalizeName(name);\n  return this.has(name) ? this.map[name] : null;\n};\nHeaders$1.prototype.has = function(name) {\n  return this.map.hasOwnProperty(normalizeName(name));\n};\nHeaders$1.prototype.set = function(name, value) {\n  this.map[normalizeName(name)] = normalizeValue(value);\n};\nHeaders$1.prototype.forEach = function(callback, thisArg) {\n  for (var name in this.map) {\n    if (this.map.hasOwnProperty(name)) {\n      callback.call(thisArg, this.map[name], name, this);\n    }\n  }\n};\nHeaders$1.prototype.keys = function() {\n  var items = [];\n  this.forEach(function(value, name) {\n    items.push(name);\n  });\n  return iteratorFor(items);\n};\nHeaders$1.prototype.values = function() {\n  var items = [];\n  this.forEach(function(value) {\n    items.push(value);\n  });\n  return iteratorFor(items);\n};\nHeaders$1.prototype.entries = function() {\n  var items = [];\n  this.forEach(function(value, name) {\n    items.push([name, value]);\n  });\n  return iteratorFor(items);\n};\nif (support.iterable) {\n  Headers$1.prototype[Symbol.iterator] = Headers$1.prototype.entries;\n}\nfunction consumed(body) {\n  if (body._noBody) return;\n  if (body.bodyUsed) {\n    return Promise.reject(new TypeError(\"Already read\"));\n  }\n  body.bodyUsed = true;\n}\nfunction fileReaderReady(reader) {\n  return new Promise(function(resolve2, reject) {\n    reader.onload = function() {\n      resolve2(reader.result);\n    };\n    reader.onerror = function() {\n      reject(reader.error);\n    };\n  });\n}\nfunction readBlobAsArrayBuffer(blob) {\n  var reader = new FileReader();\n  var promise = fileReaderReady(reader);\n  reader.readAsArrayBuffer(blob);\n  return promise;\n}\nfunction readBlobAsText(blob) {\n  var reader = new FileReader();\n  var promise = fileReaderReady(reader);\n  var match3 = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);\n  var encoding = match3 ? match3[1] : \"utf-8\";\n  reader.readAsText(blob, encoding);\n  return promise;\n}\nfunction readArrayBufferAsText(buf) {\n  var view = new Uint8Array(buf);\n  var chars = new Array(view.length);\n  for (var i3 = 0; i3 < view.length; i3++) {\n    chars[i3] = String.fromCharCode(view[i3]);\n  }\n  return chars.join(\"\");\n}\nfunction bufferClone(buf) {\n  if (buf.slice) {\n    return buf.slice(0);\n  } else {\n    var view = new Uint8Array(buf.byteLength);\n    view.set(new Uint8Array(buf));\n    return view.buffer;\n  }\n}\nfunction Body() {\n  this.bodyUsed = false;\n  this._initBody = function(body) {\n    this.bodyUsed = this.bodyUsed;\n    this._bodyInit = body;\n    if (!body) {\n      this._noBody = true;\n      this._bodyText = \"\";\n    } else if (typeof body === \"string\") {\n      this._bodyText = body;\n    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n      this._bodyBlob = body;\n    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n      this._bodyFormData = body;\n    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n      this._bodyText = body.toString();\n    } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n      this._bodyArrayBuffer = bufferClone(body.buffer);\n      this._bodyInit = new Blob([this._bodyArrayBuffer]);\n    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n      this._bodyArrayBuffer = bufferClone(body);\n    } else {\n      this._bodyText = body = Object.prototype.toString.call(body);\n    }\n    if (!this.headers.get(\"content-type\")) {\n      if (typeof body === \"string\") {\n        this.headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n      } else if (this._bodyBlob && this._bodyBlob.type) {\n        this.headers.set(\"content-type\", this._bodyBlob.type);\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this.headers.set(\"content-type\", \"application/x-www-form-urlencoded;charset=UTF-8\");\n      }\n    }\n  };\n  if (support.blob) {\n    this.blob = function() {\n      var rejected = consumed(this);\n      if (rejected) {\n        return rejected;\n      }\n      if (this._bodyBlob) {\n        return Promise.resolve(this._bodyBlob);\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(new Blob([this._bodyArrayBuffer]));\n      } else if (this._bodyFormData) {\n        throw new Error(\"could not read FormData body as blob\");\n      } else {\n        return Promise.resolve(new Blob([this._bodyText]));\n      }\n    };\n  }\n  this.arrayBuffer = function() {\n    if (this._bodyArrayBuffer) {\n      var isConsumed = consumed(this);\n      if (isConsumed) {\n        return isConsumed;\n      } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n        return Promise.resolve(\n          this._bodyArrayBuffer.buffer.slice(\n            this._bodyArrayBuffer.byteOffset,\n            this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n          )\n        );\n      } else {\n        return Promise.resolve(this._bodyArrayBuffer);\n      }\n    } else if (support.blob) {\n      return this.blob().then(readBlobAsArrayBuffer);\n    } else {\n      throw new Error(\"could not read as ArrayBuffer\");\n    }\n  };\n  this.text = function() {\n    var rejected = consumed(this);\n    if (rejected) {\n      return rejected;\n    }\n    if (this._bodyBlob) {\n      return readBlobAsText(this._bodyBlob);\n    } else if (this._bodyArrayBuffer) {\n      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer));\n    } else if (this._bodyFormData) {\n      throw new Error(\"could not read FormData body as text\");\n    } else {\n      return Promise.resolve(this._bodyText);\n    }\n  };\n  if (support.formData) {\n    this.formData = function() {\n      return this.text().then(decode$2);\n    };\n  }\n  this.json = function() {\n    return this.text().then(JSON.parse);\n  };\n  return this;\n}\nvar methods = [\"CONNECT\", \"DELETE\", \"GET\", \"HEAD\", \"OPTIONS\", \"PATCH\", \"POST\", \"PUT\", \"TRACE\"];\nfunction normalizeMethod(method) {\n  var upcased = method.toUpperCase();\n  return methods.indexOf(upcased) > -1 ? upcased : method;\n}\nfunction Request(input, options) {\n  if (!(this instanceof Request)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');\n  }\n  options = options || {};\n  var body = options.body;\n  if (input instanceof Request) {\n    if (input.bodyUsed) {\n      throw new TypeError(\"Already read\");\n    }\n    this.url = input.url;\n    this.credentials = input.credentials;\n    if (!options.headers) {\n      this.headers = new Headers$1(input.headers);\n    }\n    this.method = input.method;\n    this.mode = input.mode;\n    this.signal = input.signal;\n    if (!body && input._bodyInit != null) {\n      body = input._bodyInit;\n      input.bodyUsed = true;\n    }\n  } else {\n    this.url = String(input);\n  }\n  this.credentials = options.credentials || this.credentials || \"same-origin\";\n  if (options.headers || !this.headers) {\n    this.headers = new Headers$1(options.headers);\n  }\n  this.method = normalizeMethod(options.method || this.method || \"GET\");\n  this.mode = options.mode || this.mode || null;\n  this.signal = options.signal || this.signal || function() {\n    if (\"AbortController\" in g$1) {\n      var ctrl = new AbortController();\n      return ctrl.signal;\n    }\n  }();\n  this.referrer = null;\n  if ((this.method === \"GET\" || this.method === \"HEAD\") && body) {\n    throw new TypeError(\"Body not allowed for GET or HEAD requests\");\n  }\n  this._initBody(body);\n  if (this.method === \"GET\" || this.method === \"HEAD\") {\n    if (options.cache === \"no-store\" || options.cache === \"no-cache\") {\n      var reParamSearch = /([?&])_=[^&]*/;\n      if (reParamSearch.test(this.url)) {\n        this.url = this.url.replace(reParamSearch, \"$1_=\" + (/* @__PURE__ */ new Date()).getTime());\n      } else {\n        var reQueryString = /\\?/;\n        this.url += (reQueryString.test(this.url) ? \"&\" : \"?\") + \"_=\" + (/* @__PURE__ */ new Date()).getTime();\n      }\n    }\n  }\n}\nRequest.prototype.clone = function() {\n  return new Request(this, { body: this._bodyInit });\n};\nfunction decode$2(body) {\n  var form = new FormData();\n  body.trim().split(\"&\").forEach(function(bytes) {\n    if (bytes) {\n      var split = bytes.split(\"=\");\n      var name = split.shift().replace(/\\+/g, \" \");\n      var value = split.join(\"=\").replace(/\\+/g, \" \");\n      form.append(decodeURIComponent(name), decodeURIComponent(value));\n    }\n  });\n  return form;\n}\nfunction parseHeaders(rawHeaders) {\n  var headers = new Headers$1();\n  var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, \" \");\n  preProcessedHeaders.split(\"\\r\").map(function(header) {\n    return header.indexOf(\"\\n\") === 0 ? header.substr(1, header.length) : header;\n  }).forEach(function(line) {\n    var parts = line.split(\":\");\n    var key = parts.shift().trim();\n    if (key) {\n      var value = parts.join(\":\").trim();\n      try {\n        headers.append(key, value);\n      } catch (error2) {\n        console.warn(\"Response \" + error2.message);\n      }\n    }\n  });\n  return headers;\n}\nBody.call(Request.prototype);\nfunction Response(bodyInit, options) {\n  if (!(this instanceof Response)) {\n    throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.');\n  }\n  if (!options) {\n    options = {};\n  }\n  this.type = \"default\";\n  this.status = options.status === void 0 ? 200 : options.status;\n  if (this.status < 200 || this.status > 599) {\n    throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\");\n  }\n  this.ok = this.status >= 200 && this.status < 300;\n  this.statusText = options.statusText === void 0 ? \"\" : \"\" + options.statusText;\n  this.headers = new Headers$1(options.headers);\n  this.url = options.url || \"\";\n  this._initBody(bodyInit);\n}\nBody.call(Response.prototype);\nResponse.prototype.clone = function() {\n  return new Response(this._bodyInit, {\n    status: this.status,\n    statusText: this.statusText,\n    headers: new Headers$1(this.headers),\n    url: this.url\n  });\n};\nResponse.error = function() {\n  var response = new Response(null, { status: 200, statusText: \"\" });\n  response.status = 0;\n  response.type = \"error\";\n  return response;\n};\nvar redirectStatuses = [301, 302, 303, 307, 308];\nResponse.redirect = function(url2, status) {\n  if (redirectStatuses.indexOf(status) === -1) {\n    throw new RangeError(\"Invalid status code\");\n  }\n  return new Response(null, { status, headers: { location: url2 } });\n};\nvar DOMException = g$1.DOMException;\ntry {\n  new DOMException();\n} catch (err) {\n  DOMException = function(message, name) {\n    this.message = message;\n    this.name = name;\n    var error2 = Error(message);\n    this.stack = error2.stack;\n  };\n  DOMException.prototype = Object.create(Error.prototype);\n  DOMException.prototype.constructor = DOMException;\n}\nfunction fetch$1(input, init) {\n  return new Promise(function(resolve2, reject) {\n    var request = new Request(input, init);\n    if (request.signal && request.signal.aborted) {\n      return reject(new DOMException(\"Aborted\", \"AbortError\"));\n    }\n    var xhr2 = new XMLHttpRequest();\n    function abortXhr() {\n      xhr2.abort();\n    }\n    xhr2.onload = function() {\n      var options = {\n        status: xhr2.status,\n        statusText: xhr2.statusText,\n        headers: parseHeaders(xhr2.getAllResponseHeaders() || \"\")\n      };\n      options.url = \"responseURL\" in xhr2 ? xhr2.responseURL : options.headers.get(\"X-Request-URL\");\n      var body = \"response\" in xhr2 ? xhr2.response : xhr2.responseText;\n      setTimeout(function() {\n        resolve2(new Response(body, options));\n      }, 0);\n    };\n    xhr2.onerror = function() {\n      setTimeout(function() {\n        reject(new TypeError(\"Network request failed\"));\n      }, 0);\n    };\n    xhr2.ontimeout = function() {\n      setTimeout(function() {\n        reject(new TypeError(\"Network request failed\"));\n      }, 0);\n    };\n    xhr2.onabort = function() {\n      setTimeout(function() {\n        reject(new DOMException(\"Aborted\", \"AbortError\"));\n      }, 0);\n    };\n    function fixUrl(url2) {\n      try {\n        return url2 === \"\" && g$1.location.href ? g$1.location.href : url2;\n      } catch (e2) {\n        return url2;\n      }\n    }\n    xhr2.open(request.method, fixUrl(request.url), true);\n    if (request.credentials === \"include\") {\n      xhr2.withCredentials = true;\n    } else if (request.credentials === \"omit\") {\n      xhr2.withCredentials = false;\n    }\n    if (\"responseType\" in xhr2) {\n      if (support.blob) {\n        xhr2.responseType = \"blob\";\n      } else if (support.arrayBuffer) {\n        xhr2.responseType = \"arraybuffer\";\n      }\n    }\n    if (init && typeof init.headers === \"object\" && !(init.headers instanceof Headers$1 || g$1.Headers && init.headers instanceof g$1.Headers)) {\n      var names = [];\n      Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n        names.push(normalizeName(name));\n        xhr2.setRequestHeader(name, normalizeValue(init.headers[name]));\n      });\n      request.headers.forEach(function(value, name) {\n        if (names.indexOf(name) === -1) {\n          xhr2.setRequestHeader(name, value);\n        }\n      });\n    } else {\n      request.headers.forEach(function(value, name) {\n        xhr2.setRequestHeader(name, value);\n      });\n    }\n    if (request.signal) {\n      request.signal.addEventListener(\"abort\", abortXhr);\n      xhr2.onreadystatechange = function() {\n        if (xhr2.readyState === 4) {\n          request.signal.removeEventListener(\"abort\", abortXhr);\n        }\n      };\n    }\n    xhr2.send(typeof request._bodyInit === \"undefined\" ? null : request._bodyInit);\n  });\n}\nfetch$1.polyfill = true;\nif (!g$1.fetch) {\n  g$1.fetch = fetch$1;\n  g$1.Headers = Headers$1;\n  g$1.Request = Request;\n  g$1.Response = Response;\n}\nself.fetch.bind(self);\nvar relativeToAbsoluteIri = {};\nvar Resolve = {};\nObject.defineProperty(Resolve, \"__esModule\", { value: true });\nResolve.removeDotSegmentsOfPath = Resolve.removeDotSegments = Resolve.resolve = void 0;\nfunction resolve(relativeIRI, baseIRI) {\n  baseIRI = baseIRI || \"\";\n  const baseFragmentPos = baseIRI.indexOf(\"#\");\n  if (baseFragmentPos > 0) {\n    baseIRI = baseIRI.substr(0, baseFragmentPos);\n  }\n  if (!relativeIRI.length) {\n    if (baseIRI.indexOf(\":\") < 0) {\n      throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n    }\n    return baseIRI;\n  }\n  if (relativeIRI.startsWith(\"?\")) {\n    const baseQueryPos = baseIRI.indexOf(\"?\");\n    if (baseQueryPos > 0) {\n      baseIRI = baseIRI.substr(0, baseQueryPos);\n    }\n    return baseIRI + relativeIRI;\n  }\n  if (relativeIRI.startsWith(\"#\")) {\n    return baseIRI + relativeIRI;\n  }\n  if (!baseIRI.length) {\n    const relativeColonPos = relativeIRI.indexOf(\":\");\n    if (relativeColonPos < 0) {\n      throw new Error(`Found invalid relative IRI '${relativeIRI}' for a missing baseIRI`);\n    }\n    return removeDotSegmentsOfPath(relativeIRI, relativeColonPos);\n  }\n  const valueColonPos = relativeIRI.indexOf(\":\");\n  if (valueColonPos >= 0) {\n    return removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n  }\n  const baseColonPos = baseIRI.indexOf(\":\");\n  if (baseColonPos < 0) {\n    throw new Error(`Found invalid baseIRI '${baseIRI}' for value '${relativeIRI}'`);\n  }\n  const baseIRIScheme = baseIRI.substr(0, baseColonPos + 1);\n  if (relativeIRI.indexOf(\"//\") === 0) {\n    return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n  }\n  let baseSlashAfterColonPos;\n  if (baseIRI.indexOf(\"//\", baseColonPos) === baseColonPos + 1) {\n    baseSlashAfterColonPos = baseIRI.indexOf(\"/\", baseColonPos + 3);\n    if (baseSlashAfterColonPos < 0) {\n      if (baseIRI.length > baseColonPos + 3) {\n        return baseIRI + \"/\" + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n      } else {\n        return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n      }\n    }\n  } else {\n    baseSlashAfterColonPos = baseIRI.indexOf(\"/\", baseColonPos + 1);\n    if (baseSlashAfterColonPos < 0) {\n      return baseIRIScheme + removeDotSegmentsOfPath(relativeIRI, valueColonPos);\n    }\n  }\n  if (relativeIRI.indexOf(\"/\") === 0) {\n    return baseIRI.substr(0, baseSlashAfterColonPos) + removeDotSegments(relativeIRI);\n  }\n  let baseIRIPath = baseIRI.substr(baseSlashAfterColonPos);\n  const baseIRILastSlashPos = baseIRIPath.lastIndexOf(\"/\");\n  if (baseIRILastSlashPos >= 0 && baseIRILastSlashPos < baseIRIPath.length - 1) {\n    baseIRIPath = baseIRIPath.substr(0, baseIRILastSlashPos + 1);\n    if (relativeIRI[0] === \".\" && relativeIRI[1] !== \".\" && relativeIRI[1] !== \"/\" && relativeIRI[2]) {\n      relativeIRI = relativeIRI.substr(1);\n    }\n  }\n  relativeIRI = baseIRIPath + relativeIRI;\n  relativeIRI = removeDotSegments(relativeIRI);\n  return baseIRI.substr(0, baseSlashAfterColonPos) + relativeIRI;\n}\nResolve.resolve = resolve;\nfunction removeDotSegments(path) {\n  const segmentBuffers = [];\n  let i3 = 0;\n  while (i3 < path.length) {\n    switch (path[i3]) {\n      case \"/\":\n        if (path[i3 + 1] === \".\") {\n          if (path[i3 + 2] === \".\") {\n            if (!isCharacterAllowedAfterRelativePathSegment(path[i3 + 3])) {\n              segmentBuffers.push([]);\n              i3++;\n              break;\n            }\n            segmentBuffers.pop();\n            if (!path[i3 + 3]) {\n              segmentBuffers.push([]);\n            }\n            i3 += 3;\n          } else {\n            if (!isCharacterAllowedAfterRelativePathSegment(path[i3 + 2])) {\n              segmentBuffers.push([]);\n              i3++;\n              break;\n            }\n            if (!path[i3 + 2]) {\n              segmentBuffers.push([]);\n            }\n            i3 += 2;\n          }\n        } else {\n          segmentBuffers.push([]);\n          i3++;\n        }\n        break;\n      case \"#\":\n      case \"?\":\n        if (!segmentBuffers.length) {\n          segmentBuffers.push([]);\n        }\n        segmentBuffers[segmentBuffers.length - 1].push(path.substr(i3));\n        i3 = path.length;\n        break;\n      default:\n        if (!segmentBuffers.length) {\n          segmentBuffers.push([]);\n        }\n        segmentBuffers[segmentBuffers.length - 1].push(path[i3]);\n        i3++;\n        break;\n    }\n  }\n  return \"/\" + segmentBuffers.map((buffer) => buffer.join(\"\")).join(\"/\");\n}\nResolve.removeDotSegments = removeDotSegments;\nfunction removeDotSegmentsOfPath(iri, colonPosition) {\n  let searchOffset = colonPosition + 1;\n  if (colonPosition >= 0) {\n    if (iri[colonPosition + 1] === \"/\" && iri[colonPosition + 2] === \"/\") {\n      searchOffset = colonPosition + 3;\n    }\n  } else {\n    if (iri[0] === \"/\" && iri[1] === \"/\") {\n      searchOffset = 2;\n    }\n  }\n  const pathSeparator = iri.indexOf(\"/\", searchOffset);\n  if (pathSeparator < 0) {\n    return iri;\n  }\n  const base2 = iri.substr(0, pathSeparator);\n  const path = iri.substr(pathSeparator);\n  return base2 + removeDotSegments(path);\n}\nResolve.removeDotSegmentsOfPath = removeDotSegmentsOfPath;\nfunction isCharacterAllowedAfterRelativePathSegment(character) {\n  return !character || character === \"#\" || character === \"?\" || character === \"/\";\n}\n(function(exports2) {\n  var __createBinding = commonjsGlobal && commonjsGlobal.__createBinding || (Object.create ? function(o2, m2, k2, k22) {\n    if (k22 === void 0) k22 = k2;\n    Object.defineProperty(o2, k22, { enumerable: true, get: function() {\n      return m2[k2];\n    } });\n  } : function(o2, m2, k2, k22) {\n    if (k22 === void 0) k22 = k2;\n    o2[k22] = m2[k2];\n  });\n  var __exportStar = commonjsGlobal && commonjsGlobal.__exportStar || function(m2, exports3) {\n    for (var p2 in m2) if (p2 !== \"default\" && !Object.prototype.hasOwnProperty.call(exports3, p2)) __createBinding(exports3, m2, p2);\n  };\n  Object.defineProperty(exports2, \"__esModule\", { value: true });\n  __exportStar(Resolve, exports2);\n})(relativeToAbsoluteIri);\nvar FetchDocumentLoader$1 = {};\nvar __awaiter$1 = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P2, generator) {\n  return new (P2 || (P2 = Promise))(function(resolve2, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e2) {\n        reject(e2);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e2) {\n        reject(e2);\n      }\n    }\n    function step(result) {\n      result.done ? resolve2(result.value) : new P2(function(resolve3) {\n        resolve3(result.value);\n      }).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nObject.defineProperty(FetchDocumentLoader$1, \"__esModule\", { value: true });\nclass FetchDocumentLoader {\n  load(url2) {\n    return __awaiter$1(this, void 0, void 0, function* () {\n      const response = yield fetch(url2, { headers: { accept: \"application/ld+json\" } });\n      if (response.ok) {\n        return yield response.json();\n      } else {\n        throw new Error(`No valid context was found at ${url2}: ${response.statusText}`);\n      }\n    });\n  }\n}\nFetchDocumentLoader$1.FetchDocumentLoader = FetchDocumentLoader;\nvar __awaiter = commonjsGlobal && commonjsGlobal.__awaiter || function(thisArg, _arguments, P2, generator) {\n  return new (P2 || (P2 = Promise))(function(resolve2, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e2) {\n        reject(e2);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e2) {\n        reject(e2);\n      }\n    }\n    function step(result) {\n      result.done ? resolve2(result.value) : new P2(function(resolve3) {\n        resolve3(result.value);\n      }).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\nObject.defineProperty(ContextParser$3, \"__esModule\", { value: true });\nconst relative_to_absolute_iri_1 = relativeToAbsoluteIri;\nconst FetchDocumentLoader_1 = FetchDocumentLoader$1;\nlet ContextParser$2 = class ContextParser {\n  constructor(options) {\n    options = options || {};\n    this.documentLoader = options.documentLoader || new FetchDocumentLoader_1.FetchDocumentLoader();\n    this.documentCache = {};\n    this.validate = !options.skipValidation;\n    this.expandContentTypeToBase = options.expandContentTypeToBase;\n  }\n  /**\n   * Check if the given term is a valid compact IRI.\n   * Otherwise, it may be an IRI.\n   * @param {string} term A term.\n   * @return {boolean} If it is a compact IRI.\n   */\n  static isCompactIri(term) {\n    return term.indexOf(\":\") >= 0 && !(term && term[0] === \"#\");\n  }\n  /**\n   * Get the prefix from the given term.\n   * @see https://json-ld.org/spec/latest/json-ld/#compact-iris\n   * @param {string} term A term that is an URL or a prefixed URL.\n   * @param {IJsonLdContextNormalized} context A context.\n   * @return {string} The prefix or null.\n   */\n  static getPrefix(term, context2) {\n    if (term && term[0] === \"#\") {\n      return null;\n    }\n    const separatorPos = term.indexOf(\":\");\n    if (separatorPos >= 0) {\n      if (term.length > separatorPos + 1 && term.charAt(separatorPos + 1) === \"/\" && term.charAt(separatorPos + 2) === \"/\") {\n        return null;\n      }\n      const prefix = term.substr(0, separatorPos);\n      if (prefix === \"_\") {\n        return null;\n      }\n      if (context2[prefix]) {\n        return prefix;\n      }\n    }\n    return null;\n  }\n  /**\n   * From a given context entry value, get the string value, or the @id field.\n   * @param contextValue A value for a term in a context.\n   * @return {string} The id value, or null.\n   */\n  static getContextValueId(contextValue) {\n    if (contextValue === null || typeof contextValue === \"string\") {\n      return contextValue;\n    }\n    const id2 = contextValue[\"@id\"];\n    return id2 ? id2 : null;\n  }\n  /**\n   * Expand the term or prefix of the given term if it has one,\n   * otherwise return the term as-is.\n   *\n   * This will try to expand the IRI as much as possible.\n   *\n   * Iff in vocab-mode, then other references to other terms in the context can be used,\n   * such as to `myTerm`:\n   * ```\n   * {\n   *   \"myTerm\": \"http://example.org/myLongTerm\"\n   * }\n   * ```\n   *\n   * @param {string} term A term that is an URL or a prefixed URL.\n   * @param {IJsonLdContextNormalized} context A context.\n   * @param {boolean} vocab If the term is a predicate or type and should be expanded based on @vocab,\n   *                        otherwise it is considered a regular term that is expanded based on @base.\n   * @return {string} The expanded term, the term as-is, or null if it was explicitly disabled in the context.\n   */\n  static expandTerm(term, context2, vocab) {\n    ContextParser.assertNormalized(context2);\n    const contextValue = context2[term];\n    if (contextValue === null || contextValue && contextValue[\"@id\"] === null) {\n      return null;\n    }\n    if (contextValue && vocab) {\n      const value = this.getContextValueId(contextValue);\n      if (value && value !== term) {\n        return value;\n      }\n    }\n    const prefix = ContextParser.getPrefix(term, context2);\n    if (prefix) {\n      const value = this.getContextValueId(context2[prefix]);\n      if (value) {\n        return value + term.substr(prefix.length + 1);\n      }\n    } else if (vocab && context2[\"@vocab\"] && term.charAt(0) !== \"@\" && !ContextParser.isCompactIri(term)) {\n      return context2[\"@vocab\"] + term;\n    } else if (!vocab && context2[\"@base\"] && term.charAt(0) !== \"@\" && !ContextParser.isCompactIri(term)) {\n      return relative_to_absolute_iri_1.resolve(term, context2[\"@base\"]);\n    }\n    return term;\n  }\n  /**\n   * Compact the given term using @base, @vocab, an aliased term, or a prefixed term.\n   *\n   * This will try to compact the IRI as much as possible.\n   *\n   * @param {string} iri An IRI to compact.\n   * @param {IJsonLdContextNormalized} context The context to compact with.\n   * @param {boolean} vocab If the term is a predicate or type and should be compacted based on @vocab,\n   *                        otherwise it is considered a regular term that is compacted based on @base.\n   * @return {string} The compacted term or the IRI as-is.\n   */\n  static compactIri(iri, context2, vocab) {\n    ContextParser.assertNormalized(context2);\n    if (vocab && context2[\"@vocab\"] && iri.startsWith(context2[\"@vocab\"])) {\n      return iri.substr(context2[\"@vocab\"].length);\n    }\n    if (!vocab && context2[\"@base\"] && iri.startsWith(context2[\"@base\"])) {\n      return iri.substr(context2[\"@base\"].length);\n    }\n    const shortestPrefixing = { prefix: \"\", suffix: iri };\n    for (const key in context2) {\n      const value = context2[key];\n      if (value && !key.startsWith(\"@\")) {\n        const contextIri = this.getContextValueId(value);\n        if (iri.startsWith(contextIri)) {\n          const suffix = iri.substr(contextIri.length);\n          if (!suffix) {\n            if (vocab) {\n              return key;\n            }\n          } else if (suffix.length < shortestPrefixing.suffix.length) {\n            shortestPrefixing.prefix = key;\n            shortestPrefixing.suffix = suffix;\n          }\n        }\n      }\n    }\n    if (shortestPrefixing.prefix) {\n      return shortestPrefixing.prefix + \":\" + shortestPrefixing.suffix;\n    }\n    return iri;\n  }\n  /**\n   * An an assert to check if the given context has been normalized.\n   * An error will be thrown otherwise.\n   * @param {JsonLdContext} context A context.\n   */\n  static assertNormalized(context2) {\n    if (typeof context2 === \"string\" || Array.isArray(context2) || context2[\"@context\"]) {\n      throw new Error(\"The given context is not normalized. Make sure to call ContextParser.parse() first.\");\n    }\n  }\n  /**\n   * Check if the given context value can be a prefix value.\n   * @param value A context value.\n   * @return {boolean} If it can be a prefix value.\n   */\n  static isPrefixValue(value) {\n    return value && (typeof value === \"string\" || value[\"@id\"] || value[\"@type\"]);\n  }\n  /**\n   * Check if the given IRI is valid.\n   * @param {string} iri A potential IRI.\n   * @return {boolean} If the given IRI is valid.\n   */\n  static isValidIri(iri) {\n    return ContextParser.IRI_REGEX.test(iri);\n  }\n  /**\n   * Add an @id term for all @reverse terms.\n   * @param {IJsonLdContextNormalized} context A context.\n   * @return {IJsonLdContextNormalized} The mutated input context.\n   */\n  static idifyReverseTerms(context2) {\n    for (const key of Object.keys(context2)) {\n      const value = context2[key];\n      if (value && typeof value === \"object\") {\n        if (value[\"@reverse\"] && !value[\"@id\"]) {\n          if (typeof value[\"@reverse\"] !== \"string\") {\n            throw new Error(`Invalid @reverse value: '${value[\"@reverse\"]}'`);\n          }\n          value[\"@id\"] = value[\"@reverse\"];\n          value[\"@reverse\"] = true;\n        }\n      }\n    }\n    return context2;\n  }\n  /**\n   * Expand all prefixed terms in the given context.\n   * @param {IJsonLdContextNormalized} context A context.\n   * @param {boolean} expandContentTypeToBase If @type inside the context may be expanded\n   *                                          via @base if @vocab is set to null.\n   * @return {IJsonLdContextNormalized} The mutated input context.\n   */\n  static expandPrefixedTerms(context2, expandContentTypeToBase) {\n    for (const key of Object.keys(context2)) {\n      if (ContextParser.EXPAND_KEYS_BLACKLIST.indexOf(key) < 0) {\n        if (key[0] === \"@\" && ContextParser.ALIAS_KEYS_BLACKLIST.indexOf(key) >= 0) {\n          throw new Error(`Keywords can not be aliased to something else.\nTried mapping ${key} to ${context2[key]}`);\n        }\n        while (ContextParser.isPrefixValue(context2[key])) {\n          const value = context2[key];\n          let changed = false;\n          if (typeof value === \"string\") {\n            context2[key] = ContextParser.expandTerm(value, context2, true);\n            changed = changed || value !== context2[key];\n          } else {\n            const id2 = value[\"@id\"];\n            const type = value[\"@type\"];\n            if (id2) {\n              context2[key][\"@id\"] = ContextParser.expandTerm(id2, context2, true);\n              changed = changed || id2 !== context2[key][\"@id\"];\n            }\n            if (type && type !== \"@vocab\") {\n              context2[key][\"@type\"] = ContextParser.expandTerm(type, context2, true);\n              if (expandContentTypeToBase && type === context2[key][\"@type\"]) {\n                context2[key][\"@type\"] = ContextParser.expandTerm(type, context2, false);\n              }\n              changed = changed || type !== context2[key][\"@type\"];\n            }\n          }\n          if (!changed) {\n            break;\n          }\n        }\n      }\n    }\n    return context2;\n  }\n  /**\n   * Normalize the @language entries in the given context to lowercase.\n   * @param {IJsonLdContextNormalized} context A context.\n   * @return {IJsonLdContextNormalized} The mutated input context.\n   */\n  static normalize(context2) {\n    for (const key of Object.keys(context2)) {\n      if (key === \"@language\" && typeof context2[key] === \"string\") {\n        context2[key] = context2[key].toLowerCase();\n      } else {\n        const value = context2[key];\n        if (value && typeof value === \"object\") {\n          if (typeof value[\"@language\"] === \"string\") {\n            value[\"@language\"] = value[\"@language\"].toLowerCase();\n          }\n        }\n      }\n    }\n    return context2;\n  }\n  /**\n   * Validate the entries of the given context.\n   * @param {IJsonLdContextNormalized} context A context.\n   */\n  static validate(context2) {\n    for (const key of Object.keys(context2)) {\n      const value = context2[key];\n      const valueType = typeof value;\n      if (key[0] === \"@\") {\n        switch (key.substr(1)) {\n          case \"vocab\":\n            if (value !== null && valueType !== \"string\") {\n              throw new Error(`Found an invalid @vocab IRI: ${value}`);\n            }\n            break;\n          case \"base\":\n            if (value !== null && valueType !== \"string\") {\n              throw new Error(`Found an invalid @base IRI: ${context2[key]}`);\n            }\n            break;\n          case \"language\":\n            if (value !== null && valueType !== \"string\") {\n              throw new Error(`Found an invalid @language string: ${value}`);\n            }\n            break;\n        }\n      }\n      if (value !== null) {\n        switch (valueType) {\n          case \"string\":\n            break;\n          case \"object\":\n            if (!ContextParser.isCompactIri(key) && !(\"@id\" in value) && (value[\"@type\"] === \"@id\" ? !context2[\"@base\"] : !context2[\"@vocab\"])) {\n              throw new Error(`Missing @id in context entry: '${key}': '${JSON.stringify(value)}'`);\n            }\n            for (const objectKey of Object.keys(value)) {\n              const objectValue = value[objectKey];\n              if (!objectValue) {\n                continue;\n              }\n              switch (objectKey) {\n                case \"@id\":\n                  if (objectValue[0] === \"@\" && objectValue !== \"@type\" && objectValue !== \"@id\") {\n                    throw new Error(`Illegal keyword alias in term value, found: '${key}': '${JSON.stringify(value)}'`);\n                  }\n                  break;\n                case \"@type\":\n                  if (objectValue !== \"@id\" && objectValue !== \"@vocab\" && (objectValue[0] === \"_\" || !ContextParser.isValidIri(objectValue))) {\n                    throw new Error(`A context @type must be an absolute IRI, found: '${key}': '${objectValue}'`);\n                  }\n                  break;\n                case \"@reverse\":\n                  if (typeof objectValue === \"string\" && value[\"@id\"] && value[\"@id\"] !== objectValue) {\n                    throw new Error(`Found non-matching @id and @reverse term values in '${key}':'${objectValue}' and '${value[\"@id\"]}'`);\n                  }\n                  break;\n                case \"@container\":\n                  if (objectValue === \"@list\" && value[\"@reverse\"]) {\n                    throw new Error(`Term value can not be @container: @list and @reverse at the same time on '${key}'`);\n                  }\n                  if (ContextParser.CONTAINERS.indexOf(objectValue) < 0) {\n                    throw new Error(`Invalid term @container for '${key}' ('${objectValue}'), must be one of ${ContextParser.CONTAINERS.join(\", \")}`);\n                  }\n                  break;\n                case \"@language\":\n                  if (objectValue !== null && typeof objectValue !== \"string\") {\n                    throw new Error(`Found an invalid term @language string in: '${key}': '${JSON.stringify(value)}'`);\n                  }\n                  break;\n              }\n            }\n            break;\n          default:\n            throw new Error(`Found an invalid term value: '${key}': '${value}'`);\n        }\n      }\n    }\n  }\n  /**\n   * Resolve relative context IRIs, or return full IRIs as-is.\n   * @param {string} contextIri A context IRI.\n   * @param {string} baseIri A base IRI.\n   * @return {string} The normalized context IRI.\n   */\n  static normalizeContextIri(contextIri, baseIri) {\n    if (!ContextParser.isValidIri(contextIri)) {\n      contextIri = relative_to_absolute_iri_1.resolve(contextIri, baseIri);\n      if (!ContextParser.isValidIri(contextIri)) {\n        throw new Error(`Invalid context IRI: ${contextIri}`);\n      }\n    }\n    return contextIri;\n  }\n  /**\n   * Parse a JSON-LD context in any form.\n   * @param {JsonLdContext} context A context, URL to a context, or an array of contexts/URLs.\n   * @param {IParseOptions} options Optional parsing options.\n   * @return {Promise<IJsonLdContextNormalized>} A promise resolving to the context.\n   */\n  parse(context2, { baseIri, parentContext, external } = {}) {\n    return __awaiter(this, void 0, void 0, function* () {\n      if (context2 === null || context2 === void 0) {\n        return baseIri ? { \"@base\": baseIri } : {};\n      } else if (typeof context2 === \"string\") {\n        return this.parse(yield this.load(ContextParser.normalizeContextIri(context2, baseIri)), { baseIri, parentContext, external: true });\n      } else if (Array.isArray(context2)) {\n        const contexts = yield Promise.all(context2.map((subContext) => {\n          if (typeof subContext === \"string\") {\n            return this.load(ContextParser.normalizeContextIri(subContext, baseIri));\n          } else {\n            return subContext;\n          }\n        }));\n        return contexts.reduce((accContextPromise, contextEntry) => accContextPromise.then((accContext) => this.parse(contextEntry, {\n          baseIri: accContext && accContext[\"@base\"] || baseIri,\n          external,\n          parentContext: accContext\n        })), Promise.resolve(parentContext));\n      } else if (typeof context2 === \"object\") {\n        if (context2[\"@context\"]) {\n          return yield this.parse(context2[\"@context\"], { baseIri, parentContext, external });\n        }\n        context2 = JSON.parse(JSON.stringify(context2));\n        let newContext = {};\n        if (external) {\n          delete context2[\"@base\"];\n        }\n        if (baseIri) {\n          if (!(\"@base\" in context2)) {\n            context2[\"@base\"] = baseIri;\n          } else if (context2[\"@base\"] !== null && !ContextParser.isValidIri(context2[\"@base\"])) {\n            context2[\"@base\"] = relative_to_absolute_iri_1.resolve(context2[\"@base\"], baseIri);\n          }\n        }\n        newContext = Object.assign({}, newContext, parentContext, context2);\n        ContextParser.idifyReverseTerms(newContext);\n        ContextParser.expandPrefixedTerms(newContext, this.expandContentTypeToBase);\n        ContextParser.normalize(newContext);\n        if (this.validate) {\n          ContextParser.validate(newContext);\n        }\n        return newContext;\n      } else {\n        throw new Error(`Tried parsing a context that is not a string, array or object, but got ${context2}`);\n      }\n    });\n  }\n  load(url2) {\n    return __awaiter(this, void 0, void 0, function* () {\n      const cached = this.documentCache[url2];\n      if (cached) {\n        return Array.isArray(cached) ? cached.slice() : Object.assign({}, cached);\n      }\n      return this.documentCache[url2] = (yield this.documentLoader.load(url2))[\"@context\"];\n    });\n  }\n};\nContextParser$2.IRI_REGEX = /^([A-Za-z][A-Za-z0-9+-.]*|_):[^ \"<>{}|\\\\\\[\\]`]*$/;\nContextParser$2.EXPAND_KEYS_BLACKLIST = [\n  \"@base\",\n  \"@vocab\",\n  \"@language\"\n];\nContextParser$2.ALIAS_KEYS_BLACKLIST = [\n  \"@container\",\n  \"@graph\",\n  \"@id\",\n  \"@index\",\n  \"@list\",\n  \"@nest\",\n  \"@none\",\n  \"@prefix\",\n  \"@reverse\",\n  \"@set\",\n  \"@type\",\n  \"@value\"\n];\nContextParser$2.CONTAINERS = [\n  \"@list\",\n  \"@set\",\n  \"@index\",\n  \"@language\"\n];\nContextParser$3.ContextParser = ContextParser$2;\n(function(exports2) {\n  function __export(m2) {\n    for (var p2 in m2) if (!exports2.hasOwnProperty(p2)) exports2[p2] = m2[p2];\n  }\n  Object.defineProperty(exports2, \"__esModule\", { value: true });\n  __export(ContextParser$3);\n  __export(FetchDocumentLoader$1);\n})(jsonldContextParser);\nconst JSONLDContextParser = /* @__PURE__ */ getDefaultExportFromCjs(jsonldContextParser);\nvar loglevel = { exports: {} };\n(function(module2) {\n  (function(root2, definition) {\n    if (module2.exports) {\n      module2.exports = definition();\n    } else {\n      root2.log = definition();\n    }\n  })(commonjsGlobal, function() {\n    var noop = function() {\n    };\n    var undefinedType = \"undefined\";\n    var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\\/|MSIE /.test(window.navigator.userAgent);\n    var logMethods = [\n      \"trace\",\n      \"debug\",\n      \"info\",\n      \"warn\",\n      \"error\"\n    ];\n    var _loggersByName = {};\n    var defaultLogger = null;\n    function bindMethod(obj, methodName) {\n      var method = obj[methodName];\n      if (typeof method.bind === \"function\") {\n        return method.bind(obj);\n      } else {\n        try {\n          return Function.prototype.bind.call(method, obj);\n        } catch (e2) {\n          return function() {\n            return Function.prototype.apply.apply(method, [obj, arguments]);\n          };\n        }\n      }\n    }\n    function traceForIE() {\n      if (console.log) {\n        if (console.log.apply) {\n          console.log.apply(console, arguments);\n        } else {\n          Function.prototype.apply.apply(console.log, [console, arguments]);\n        }\n      }\n      if (console.trace) console.trace();\n    }\n    function realMethod(methodName) {\n      if (methodName === \"debug\") {\n        methodName = \"log\";\n      }\n      if (typeof console === undefinedType) {\n        return false;\n      } else if (methodName === \"trace\" && isIE) {\n        return traceForIE;\n      } else if (console[methodName] !== void 0) {\n        return bindMethod(console, methodName);\n      } else if (console.log !== void 0) {\n        return bindMethod(console, \"log\");\n      } else {\n        return noop;\n      }\n    }\n    function replaceLoggingMethods() {\n      var level2 = this.getLevel();\n      for (var i3 = 0; i3 < logMethods.length; i3++) {\n        var methodName = logMethods[i3];\n        this[methodName] = i3 < level2 ? noop : this.methodFactory(methodName, level2, this.name);\n      }\n      this.log = this.debug;\n      if (typeof console === undefinedType && level2 < this.levels.SILENT) {\n        return \"No console available for logging\";\n      }\n    }\n    function enableLoggingWhenConsoleArrives(methodName) {\n      return function() {\n        if (typeof console !== undefinedType) {\n          replaceLoggingMethods.call(this);\n          this[methodName].apply(this, arguments);\n        }\n      };\n    }\n    function defaultMethodFactory(methodName, _level, _loggerName) {\n      return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);\n    }\n    function Logger(name, factory2) {\n      var self2 = this;\n      var inheritedLevel;\n      var defaultLevel;\n      var userLevel;\n      var storageKey = \"loglevel\";\n      if (typeof name === \"string\") {\n        storageKey += \":\" + name;\n      } else if (typeof name === \"symbol\") {\n        storageKey = void 0;\n      }\n      function persistLevelIfPossible(levelNum) {\n        var levelName = (logMethods[levelNum] || \"silent\").toUpperCase();\n        if (typeof window === undefinedType || !storageKey) return;\n        try {\n          window.localStorage[storageKey] = levelName;\n          return;\n        } catch (ignore) {\n        }\n        try {\n          window.document.cookie = encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n        } catch (ignore) {\n        }\n      }\n      function getPersistedLevel() {\n        var storedLevel;\n        if (typeof window === undefinedType || !storageKey) return;\n        try {\n          storedLevel = window.localStorage[storageKey];\n        } catch (ignore) {\n        }\n        if (typeof storedLevel === undefinedType) {\n          try {\n            var cookie = window.document.cookie;\n            var cookieName = encodeURIComponent(storageKey);\n            var location2 = cookie.indexOf(cookieName + \"=\");\n            if (location2 !== -1) {\n              storedLevel = /^([^;]+)/.exec(\n                cookie.slice(location2 + cookieName.length + 1)\n              )[1];\n            }\n          } catch (ignore) {\n          }\n        }\n        if (self2.levels[storedLevel] === void 0) {\n          storedLevel = void 0;\n        }\n        return storedLevel;\n      }\n      function clearPersistedLevel() {\n        if (typeof window === undefinedType || !storageKey) return;\n        try {\n          window.localStorage.removeItem(storageKey);\n        } catch (ignore) {\n        }\n        try {\n          window.document.cookie = encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n        } catch (ignore) {\n        }\n      }\n      function normalizeLevel(input) {\n        var level2 = input;\n        if (typeof level2 === \"string\" && self2.levels[level2.toUpperCase()] !== void 0) {\n          level2 = self2.levels[level2.toUpperCase()];\n        }\n        if (typeof level2 === \"number\" && level2 >= 0 && level2 <= self2.levels.SILENT) {\n          return level2;\n        } else {\n          throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n        }\n      }\n      self2.name = name;\n      self2.levels = {\n        \"TRACE\": 0,\n        \"DEBUG\": 1,\n        \"INFO\": 2,\n        \"WARN\": 3,\n        \"ERROR\": 4,\n        \"SILENT\": 5\n      };\n      self2.methodFactory = factory2 || defaultMethodFactory;\n      self2.getLevel = function() {\n        if (userLevel != null) {\n          return userLevel;\n        } else if (defaultLevel != null) {\n          return defaultLevel;\n        } else {\n          return inheritedLevel;\n        }\n      };\n      self2.setLevel = function(level2, persist) {\n        userLevel = normalizeLevel(level2);\n        if (persist !== false) {\n          persistLevelIfPossible(userLevel);\n        }\n        return replaceLoggingMethods.call(self2);\n      };\n      self2.setDefaultLevel = function(level2) {\n        defaultLevel = normalizeLevel(level2);\n        if (!getPersistedLevel()) {\n          self2.setLevel(level2, false);\n        }\n      };\n      self2.resetLevel = function() {\n        userLevel = null;\n        clearPersistedLevel();\n        replaceLoggingMethods.call(self2);\n      };\n      self2.enableAll = function(persist) {\n        self2.setLevel(self2.levels.TRACE, persist);\n      };\n      self2.disableAll = function(persist) {\n        self2.setLevel(self2.levels.SILENT, persist);\n      };\n      self2.rebuild = function() {\n        if (defaultLogger !== self2) {\n          inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n        }\n        replaceLoggingMethods.call(self2);\n        if (defaultLogger === self2) {\n          for (var childName in _loggersByName) {\n            _loggersByName[childName].rebuild();\n          }\n        }\n      };\n      inheritedLevel = normalizeLevel(\n        defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n      );\n      var initialLevel = getPersistedLevel();\n      if (initialLevel != null) {\n        userLevel = normalizeLevel(initialLevel);\n      }\n      replaceLoggingMethods.call(self2);\n    }\n    defaultLogger = new Logger();\n    defaultLogger.getLogger = function getLogger(name) {\n      if (typeof name !== \"symbol\" && typeof name !== \"string\" || name === \"\") {\n        throw new TypeError(\"You must supply a name when creating a logger.\");\n      }\n      var logger = _loggersByName[name];\n      if (!logger) {\n        logger = _loggersByName[name] = new Logger(\n          name,\n          defaultLogger.methodFactory\n        );\n      }\n      return logger;\n    };\n    var _log = typeof window !== undefinedType ? window.log : void 0;\n    defaultLogger.noConflict = function() {\n      if (typeof window !== undefinedType && window.log === defaultLogger) {\n        window.log = _log;\n      }\n      return defaultLogger;\n    };\n    defaultLogger.getLoggers = function getLoggers() {\n      return _loggersByName;\n    };\n    defaultLogger[\"default\"] = defaultLogger;\n    return defaultLogger;\n  });\n})(loglevel);\nvar loglevelExports = loglevel.exports;\nconst log = /* @__PURE__ */ getDefaultExportFromCjs(loglevelExports);\nconst __vite_import_meta_env__ = { \"BASE_URL\": \"./\", \"DEV\": false, \"MODE\": \"production\", \"PROD\": true, \"SSR\": false };\nconst colors = {\n  reset: \"\\x1B[0m\",\n  trace: \"\\x1B[38;2;169;169;169m\",\n  // Gray\n  debug: \"\\x1B[38;2;0;0;255m\",\n  // Blue\n  info: \"\\x1B[38;2;0;128;0m\",\n  // Green\n  warn: \"\\x1B[38;2;218;165;32m\",\n  // Yellow\n  error: \"\\x1B[38;2;255;0;0m\"\n  // Red\n};\nfunction formatMessage(level2, messages) {\n  const timestamp = (/* @__PURE__ */ new Date()).toISOString();\n  const color = colors[level2] || colors.reset;\n  const formattedMessages = messages.map((msg) => {\n    if (typeof msg === \"object\") {\n      try {\n        return JSON.stringify(msg, null, 2);\n      } catch {\n        return String(msg);\n      }\n    }\n    return String(msg);\n  }).join(\" \");\n  return `${color}[${timestamp}] ${formattedMessages}${colors.reset}`;\n}\nconst originalFactory = log.methodFactory;\nlog.methodFactory = (methodName, logLevel, loggerName) => {\n  const rawMethod = originalFactory(methodName, logLevel, loggerName);\n  return (...messages) => {\n    rawMethod(formatMessage(methodName, messages));\n  };\n};\nif ((__vite_import_meta_env__ == null ? void 0 : __vite_import_meta_env__.VITE_DEBUG) === \"True\") {\n  log.setLevel(\"debug\");\n} else {\n  log.setLevel(\"warn\");\n}\nfunction trackRenderAsync(fn, context2) {\n  return async function(...args) {\n    let componentName = context2 ? context2 : this.name ? this.name : this.constructor.name;\n    if (this.element.id) {\n      componentName += ` (id: ${this.element.id})`;\n    } else if (this.dataSrc) {\n      componentName += ` (data-src: ${this.dataSrc})`;\n    } else if (this.resourceId) {\n      componentName += ` (resourceId: ${this.resourceId})`;\n    }\n    const startTime = performance.now();\n    const result = await fn.apply(this, args);\n    const endTime = performance.now();\n    const renderTime = endTime - startTime;\n    if (this.profiler) {\n      this.profiler.updateStats(componentName, renderTime);\n      this.profiler.printStats();\n    } else {\n      log.debug(\n        `Component ${componentName} rendered in ${renderTime.toFixed(2)} ms`\n      );\n    }\n    return result;\n  };\n}\nclass Profiler {\n  constructor() {\n    __publicField(this, \"stats\", {});\n    this.stats = {};\n  }\n  getOrCreateStats(componentName) {\n    if (!this.stats[componentName]) {\n      this.stats[componentName] = {\n        renderCount: 0,\n        totalExecutionTime: 0,\n        lastExecutionTime: 0,\n        averageExecutionTime: 0,\n        minExecutionTime: Number.POSITIVE_INFINITY,\n        maxExecutionTime: 0\n      };\n    }\n    return this.stats[componentName];\n  }\n  getStats(componentName) {\n    return this.stats[componentName];\n  }\n  updateStats(componentName, renderTime) {\n    const stats = this.getOrCreateStats(componentName);\n    stats.renderCount++;\n    stats.lastExecutionTime = renderTime;\n    stats.totalExecutionTime += renderTime;\n    stats.averageExecutionTime = stats.totalExecutionTime / stats.renderCount;\n    stats.minExecutionTime = Math.min(stats.minExecutionTime, renderTime);\n    stats.maxExecutionTime = Math.max(stats.maxExecutionTime, renderTime);\n  }\n  formatTime(time) {\n    if (time >= 1e3) {\n      return `${(time / 1e3).toFixed(2)} seconds`;\n    }\n    return `${time.toFixed(2)} ms`;\n  }\n  formatComponentStats(componentName, stats) {\n    return `\nComponent: ${componentName}\n  Render Count: ${stats.renderCount}\n  Total Execution Time: ${this.formatTime(stats.totalExecutionTime)}\n  Last Execution Time: ${this.formatTime(stats.lastExecutionTime)}\n  Average Execution Time: ${this.formatTime(stats.averageExecutionTime)}\n  Min Execution Time: ${this.formatTime(stats.minExecutionTime)}\n  Max Execution Time: ${this.formatTime(stats.maxExecutionTime)}\n`;\n  }\n  printStats(componentName) {\n    let output = \"Component Performance Stats:\\n\";\n    if (componentName) {\n      const stats = this.stats[componentName];\n      if (!stats) {\n        output += `Component ${componentName} not found.\n`;\n      } else {\n        output += this.formatComponentStats(componentName, stats);\n      }\n    } else {\n      for (const [name, stats] of Object.entries(this.stats)) {\n        output += this.formatComponentStats(name, stats);\n      }\n    }\n    log.debug(output);\n  }\n}\nclass Component {\n  constructor(element) {\n    __publicField(this, \"element\");\n    __publicField(this, \"profiler\");\n    this.element = element;\n    this.profiler = new Profiler();\n  }\n  created() {\n  }\n  attached() {\n  }\n  detached() {\n  }\n  attributesCallback(_key, _value, _oldValue) {\n  }\n}\nconst HOOKS = [\"created\", \"attached\", \"detached\"];\nconst API = [\"name\", \"use\", \"attributes\", \"initialState\", ...HOOKS];\nconst Compositor = {\n  merge(component, mixins) {\n    return {\n      name: component.name,\n      attributes: Compositor.mergeAttributes([component, ...mixins]),\n      initialState: Compositor.mergeInitialState([component, ...mixins]),\n      methods: Compositor.mergeMethods([component, ...mixins]),\n      accessors: Compositor.mergeAccessors([component, ...mixins]),\n      hooks: Compositor.mergeHooks([component, ...mixins])\n    };\n  },\n  mergeMixin(component) {\n    function deepMergeMixin(mixinAccumulator, currentMixin) {\n      const { use: currentMixins } = currentMixin;\n      if (currentMixins) {\n        for (const mix of currentMixins) {\n          if (!mixinAccumulator.has(mix)) {\n            mixinAccumulator.set(mix, mix);\n            deepMergeMixin(mixinAccumulator, mix);\n          } else {\n            console.warn(`Duplicate mixin import (${mix.name})`);\n          }\n        }\n      }\n    }\n    const mixins = /* @__PURE__ */ new Map();\n    deepMergeMixin(mixins, component);\n    return Array.from(mixins.values());\n  },\n  mergeAttributes(mixins) {\n    let attributes = {};\n    for (const mixin of mixins) {\n      if (mixin.attributes) {\n        attributes = { ...mixin.attributes, ...attributes };\n      }\n    }\n    return attributes;\n  },\n  mergeInitialState(mixins) {\n    let initialState = {};\n    for (const mixin of mixins) {\n      if (!mixin.initialState) continue;\n      initialState = { ...mixin.initialState, ...initialState };\n    }\n    return initialState;\n  },\n  mergeHooks(mixins) {\n    const hooks = {\n      created: [],\n      attached: [],\n      detached: []\n    };\n    for (const mixin of mixins.reverse()) {\n      for (const hookName of HOOKS) {\n        if (!!mixin[hookName] && typeof mixin[hookName] === \"function\") {\n          hooks[hookName].push(mixin[hookName]);\n        }\n      }\n    }\n    return hooks;\n  },\n  mergeMethods(mixins) {\n    const methods2 = /* @__PURE__ */ new Map();\n    for (const mixin of mixins.reverse()) {\n      for (const key of Reflect.ownKeys(mixin)) {\n        if (typeof key !== \"string\") continue;\n        if (API.includes(key)) continue;\n        const descriptor = Object.getOwnPropertyDescriptor(mixin, key);\n        if ((descriptor == null ? void 0 : descriptor.get) || (descriptor == null ? void 0 : descriptor.set)) continue;\n        if (typeof mixin[key] !== \"function\") continue;\n        methods2.set(key, mixin[key]);\n      }\n    }\n    return methods2;\n  },\n  mergeAccessors(mixins) {\n    const accessors = {};\n    for (const mixin of mixins.reverse()) {\n      for (const prop of Reflect.ownKeys(mixin)) {\n        if (typeof prop !== \"string\") continue;\n        if (API.includes(prop)) continue;\n        const descriptor = Object.getOwnPropertyDescriptor(mixin, prop);\n        if (!descriptor) continue;\n        if (!descriptor.get && !descriptor.set) continue;\n        accessors[prop] = { ...accessors[prop] };\n        if (descriptor.get) accessors[prop].get = descriptor.get;\n        if (descriptor.set) accessors[prop].set = descriptor.set;\n      }\n    }\n    return accessors;\n  }\n};\nconst ComponentFactory = {\n  build(component) {\n    const { initialState, attributes, methods: methods2, hooks, accessors, name } = Compositor.merge(component, Compositor.mergeMixin(component));\n    let componentConstructor = class extends Component {\n    };\n    componentConstructor = ComponentFactory.bindInitialState(\n      componentConstructor,\n      initialState\n    );\n    componentConstructor = ComponentFactory.bindAttributes(\n      componentConstructor,\n      attributes\n    );\n    componentConstructor = ComponentFactory.bindMethods(\n      componentConstructor,\n      methods2\n    );\n    componentConstructor = ComponentFactory.bindAccessors(\n      componentConstructor,\n      accessors\n    );\n    componentConstructor = ComponentFactory.bindHooks(\n      componentConstructor,\n      hooks\n    );\n    Reflect.defineProperty(componentConstructor, \"name\", {\n      value: name\n    });\n    return componentConstructor;\n  },\n  bindInitialState(componentConstructor, initialState) {\n    if (initialState) {\n      for (const key of Reflect.ownKeys(initialState)) {\n        Reflect.defineProperty(componentConstructor.prototype, key, {\n          enumerable: true,\n          writable: true,\n          value: initialState[key]\n        });\n      }\n    }\n    return componentConstructor;\n  },\n  bindAttributes(componentConstructor, attributes) {\n    if (attributes) {\n      const attributesList = Reflect.ownKeys(attributes).map(\n        (key) => String(key)\n      );\n      const attributesCallback = {};\n      for (const key of attributesList) {\n        const { default: def, type, required, callback } = attributes[key];\n        let fromType;\n        let toType;\n        switch (type) {\n          case String:\n            fromType = (value) => String(value);\n            toType = (value) => value;\n            break;\n          case Object:\n            fromType = (value) => JSON.parse(value);\n            toType = (value) => JSON.stringify(value);\n            break;\n          case Number:\n            fromType = (value) => Number(value);\n            toType = (value) => Number(value).toString();\n            break;\n          case Boolean:\n            fromType = (value) => Boolean(value);\n            toType = (value) => value;\n            break;\n          default:\n            fromType = (value) => value;\n            toType = (value) => value;\n            break;\n        }\n        const attribute2 = key.replace(/([a-z0-9])([A-Z0-9])/g, \"$1-$2\").toLowerCase();\n        Reflect.defineProperty(componentConstructor.prototype, key, {\n          enumerable: true,\n          configurable: false,\n          get: function() {\n            const element = this.element;\n            if (!element.hasAttribute(attribute2)) {\n              if (required && type !== Boolean) {\n                throw new Error(`Attribute ${key} is required`);\n              }\n              return def;\n            }\n            return fromType(element.getAttribute(attribute2));\n          },\n          set: function(value) {\n            const element = this.element;\n            if (type === Boolean) {\n              if (!value) {\n                element.removeAttribute(attribute2);\n              } else {\n                element.setAttribute(attribute2, \"\");\n              }\n            } else {\n              element.setAttribute(attribute2, toType(value));\n            }\n          }\n        });\n        if (callback && typeof callback === \"function\") {\n          attributesCallback[key] = callback;\n        }\n      }\n      Reflect.defineProperty(componentConstructor, \"observedAttributes\", {\n        get: () => attributesList.map(\n          (attr) => attr.replace(/([a-z0-9])([A-Z0-9])/g, \"$1-$2\").toLowerCase()\n        )\n      });\n      Reflect.defineProperty(\n        componentConstructor.prototype,\n        \"attributesCallback\",\n        {\n          value: function(key, newValue, oldValue) {\n            if (key in attributesCallback) {\n              Reflect.apply(attributesCallback[key], this, [\n                newValue,\n                oldValue\n              ]);\n            }\n          }\n        }\n      );\n      Reflect.defineProperty(\n        componentConstructor.prototype,\n        \"attributesCallback\",\n        attributesCallback\n      );\n    }\n    return componentConstructor;\n  },\n  bindAccessors(componentConstructor, accessors) {\n    if (accessors) {\n      for (const property of Object.keys(accessors)) {\n        Reflect.defineProperty(componentConstructor.prototype, property, {\n          get: function() {\n            return Reflect.apply(accessors[property].get, this, []);\n          },\n          set: function(value) {\n            return Reflect.apply(accessors[property].set, this, [value]);\n          }\n        });\n      }\n    }\n    return componentConstructor;\n  },\n  bindMethods(componentConstructor, methods2) {\n    methods2.forEach((method, methodName) => {\n      Reflect.defineProperty(componentConstructor.prototype, methodName, {\n        value: function(...args) {\n          return Reflect.apply(method, this, args);\n        }\n      });\n    });\n    return componentConstructor;\n  },\n  bindHooks(componentConstructor, hooks) {\n    Reflect.defineProperty(componentConstructor.prototype, \"created\", {\n      value: function() {\n        for (const hook of hooks.created) {\n          Reflect.apply(hook, this, []);\n        }\n      }\n    });\n    Reflect.defineProperty(componentConstructor.prototype, \"attached\", {\n      value: function() {\n        for (const hook of hooks.attached) {\n          Reflect.apply(hook, this, []);\n        }\n      }\n    });\n    Reflect.defineProperty(componentConstructor.prototype, \"detached\", {\n      value: function() {\n        for (const hook of hooks.detached) {\n          Reflect.apply(hook, this, []);\n        }\n      }\n    });\n    return componentConstructor;\n  }\n};\nconst Sib = {\n  register(componentDefinition) {\n    const component = ComponentFactory.build(componentDefinition);\n    const cls = Sib.toElement(component);\n    defineComponent(component.name, cls);\n  },\n  toElement(component) {\n    return class extends HTMLElement {\n      constructor() {\n        super();\n        __publicField(this, \"component\");\n        this.component = new component(this);\n        this.component.created();\n      }\n      /** @deprecated use `component` instead */\n      get _component() {\n        return this.component;\n      }\n      set _component(_component) {\n        this.component = _component;\n      }\n      static get observedAttributes() {\n        return component.observedAttributes;\n      }\n      attributeChangedCallback(name, oldValue, newValue) {\n        const attr = name.replace(\n          /([a-z0-9])-([a-z0-9])/g,\n          (_c, p1, p2) => `${p1}${p2.toUpperCase()}`\n        );\n        this.component.attributesCallback(attr, newValue, oldValue);\n      }\n      connectedCallback() {\n        this.component.attached();\n      }\n      disconnectedCallback() {\n        this.component.detached();\n      }\n    };\n  }\n};\nfunction formatAttributesToServerPaginationOptions(elementAttributes) {\n  const attributes = new Map(\n    Array.from(elementAttributes).map(({ name, value }) => [name, value])\n  );\n  const limit = attributes.get(\"limit\");\n  const offset = attributes.get(\"offset\");\n  if (!offset || !limit) return;\n  return {\n    limit,\n    offset\n  };\n}\nfunction appendServerPaginationToIri(iri, options) {\n  const first = iri.includes(\"?\") ? \"&\" : \"?\";\n  const limit = options.limit;\n  const offset = options.offset;\n  return `${iri}${first}limit=${limit}&offset=${offset}`;\n}\nfunction formatAttributesToServerSearchOptions(elementAttributes) {\n  var _a3, _b, _c;\n  const attributes = new Map(\n    Array.from(elementAttributes).map(({ name, value: value2 }) => [name, value2])\n  );\n  const fields = (_a3 = attributes.get(\"server-search-fields\")) == null ? void 0 : _a3.split(\",\").map((field) => field.trim());\n  const value = (_b = attributes.get(\"server-search-value\")) == null ? void 0 : _b.trim();\n  const method = (_c = attributes.get(\"server-search-method\")) == null ? void 0 : _c.trim();\n  return {\n    fields: fields && fields.length > 0 ? fields : void 0,\n    value: value ? value : void 0,\n    method: method ? method : void 0\n  };\n}\nfunction mergeServerSearchOptions(attributesOptions, dynamicOptions) {\n  const fields = (attributesOptions == null ? void 0 : attributesOptions.fields) ?? (dynamicOptions == null ? void 0 : dynamicOptions.fields);\n  const value = (dynamicOptions == null ? void 0 : dynamicOptions.value) ?? (attributesOptions == null ? void 0 : attributesOptions.value);\n  const method = (attributesOptions == null ? void 0 : attributesOptions.method) ?? (dynamicOptions == null ? void 0 : dynamicOptions.method);\n  if (!fields || fields.length === 0 || !value) return;\n  return { fields, value, method };\n}\nfunction appendServerSearchToIri(iri, options) {\n  const first = iri.includes(\"?\") ? \"&\" : \"?\";\n  const fields = options.fields.map(encodeURIComponent).join(\",\");\n  const value = encodeURIComponent(options.value);\n  const method = encodeURIComponent(options.method ?? \"ibasic\");\n  return `${iri}${first}search-fields=${fields}&search-terms=${value}&search-method=${method}`;\n}\nvar pubsub = { exports: {} };\npubsub.exports;\n(function(module2, exports2) {\n  (function(root2, factory2) {\n    var PubSub2 = {};\n    if (root2.PubSub) {\n      PubSub2 = root2.PubSub;\n      console.warn(\"PubSub already loaded, using existing version\");\n    } else {\n      root2.PubSub = PubSub2;\n      factory2(PubSub2);\n    }\n    {\n      if (module2 !== void 0 && module2.exports) {\n        exports2 = module2.exports = PubSub2;\n      }\n      exports2.PubSub = PubSub2;\n      module2.exports = exports2 = PubSub2;\n    }\n  })(typeof window === \"object\" && window || commonjsGlobal, function(PubSub2) {\n    var messages = {}, lastUid = -1, ALL_SUBSCRIBING_MSG = \"*\";\n    function hasKeys(obj) {\n      var key;\n      for (key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          return true;\n        }\n      }\n      return false;\n    }\n    function throwException(ex) {\n      return function reThrowException() {\n        throw ex;\n      };\n    }\n    function callSubscriberWithDelayedExceptions(subscriber, message, data) {\n      try {\n        subscriber(message, data);\n      } catch (ex) {\n        setTimeout(throwException(ex), 0);\n      }\n    }\n    function callSubscriberWithImmediateExceptions(subscriber, message, data) {\n      subscriber(message, data);\n    }\n    function deliverMessage(originalMessage, matchedMessage, data, immediateExceptions) {\n      var subscribers = messages[matchedMessage], callSubscriber = immediateExceptions ? callSubscriberWithImmediateExceptions : callSubscriberWithDelayedExceptions, s2;\n      if (!Object.prototype.hasOwnProperty.call(messages, matchedMessage)) {\n        return;\n      }\n      for (s2 in subscribers) {\n        if (Object.prototype.hasOwnProperty.call(subscribers, s2)) {\n          callSubscriber(subscribers[s2], originalMessage, data);\n        }\n      }\n    }\n    function createDeliveryFunction(message, data, immediateExceptions) {\n      return function deliverNamespaced() {\n        var topic = String(message), position = topic.lastIndexOf(\".\");\n        deliverMessage(message, message, data, immediateExceptions);\n        while (position !== -1) {\n          topic = topic.substr(0, position);\n          position = topic.lastIndexOf(\".\");\n          deliverMessage(message, topic, data, immediateExceptions);\n        }\n        deliverMessage(message, ALL_SUBSCRIBING_MSG, data, immediateExceptions);\n      };\n    }\n    function hasDirectSubscribersFor(message) {\n      var topic = String(message), found = Boolean(Object.prototype.hasOwnProperty.call(messages, topic) && hasKeys(messages[topic]));\n      return found;\n    }\n    function messageHasSubscribers(message) {\n      var topic = String(message), found = hasDirectSubscribersFor(topic) || hasDirectSubscribersFor(ALL_SUBSCRIBING_MSG), position = topic.lastIndexOf(\".\");\n      while (!found && position !== -1) {\n        topic = topic.substr(0, position);\n        position = topic.lastIndexOf(\".\");\n        found = hasDirectSubscribersFor(topic);\n      }\n      return found;\n    }\n    function publish(message, data, sync, immediateExceptions) {\n      message = typeof message === \"symbol\" ? message.toString() : message;\n      var deliver = createDeliveryFunction(message, data, immediateExceptions), hasSubscribers = messageHasSubscribers(message);\n      if (!hasSubscribers) {\n        return false;\n      }\n      if (sync === true) {\n        deliver();\n      } else {\n        setTimeout(deliver, 0);\n      }\n      return true;\n    }\n    PubSub2.publish = function(message, data) {\n      return publish(message, data, false, PubSub2.immediateExceptions);\n    };\n    PubSub2.publishSync = function(message, data) {\n      return publish(message, data, true, PubSub2.immediateExceptions);\n    };\n    PubSub2.subscribe = function(message, func) {\n      if (typeof func !== \"function\") {\n        return false;\n      }\n      message = typeof message === \"symbol\" ? message.toString() : message;\n      if (!Object.prototype.hasOwnProperty.call(messages, message)) {\n        messages[message] = {};\n      }\n      var token = \"uid_\" + String(++lastUid);\n      messages[message][token] = func;\n      return token;\n    };\n    PubSub2.subscribeAll = function(func) {\n      return PubSub2.subscribe(ALL_SUBSCRIBING_MSG, func);\n    };\n    PubSub2.subscribeOnce = function(message, func) {\n      var token = PubSub2.subscribe(message, function() {\n        PubSub2.unsubscribe(token);\n        func.apply(this, arguments);\n      });\n      return PubSub2;\n    };\n    PubSub2.clearAllSubscriptions = function clearAllSubscriptions() {\n      messages = {};\n    };\n    PubSub2.clearSubscriptions = function clearSubscriptions(topic) {\n      var m2;\n      for (m2 in messages) {\n        if (Object.prototype.hasOwnProperty.call(messages, m2) && m2.indexOf(topic) === 0) {\n          delete messages[m2];\n        }\n      }\n    };\n    PubSub2.countSubscriptions = function countSubscriptions(topic) {\n      var m2;\n      var token;\n      var count = 0;\n      for (m2 in messages) {\n        if (Object.prototype.hasOwnProperty.call(messages, m2) && m2.indexOf(topic) === 0) {\n          for (token in messages[m2]) {\n            count++;\n          }\n          break;\n        }\n      }\n      return count;\n    };\n    PubSub2.getSubscriptions = function getSubscriptions(topic) {\n      var m2;\n      var list2 = [];\n      for (m2 in messages) {\n        if (Object.prototype.hasOwnProperty.call(messages, m2) && m2.indexOf(topic) === 0) {\n          list2.push(m2);\n        }\n      }\n      return list2;\n    };\n    PubSub2.unsubscribe = function(value) {\n      var descendantTopicExists = function(topic) {\n        var m3;\n        for (m3 in messages) {\n          if (Object.prototype.hasOwnProperty.call(messages, m3) && m3.indexOf(topic) === 0) {\n            return true;\n          }\n        }\n        return false;\n      }, isTopic = typeof value === \"string\" && (Object.prototype.hasOwnProperty.call(messages, value) || descendantTopicExists(value)), isToken = !isTopic && typeof value === \"string\", isFunction2 = typeof value === \"function\", result = false, m2, message, t2;\n      if (isTopic) {\n        PubSub2.clearSubscriptions(value);\n        return;\n      }\n      for (m2 in messages) {\n        if (Object.prototype.hasOwnProperty.call(messages, m2)) {\n          message = messages[m2];\n          if (isToken && message[value]) {\n            delete message[value];\n            result = value;\n            break;\n          }\n          if (isFunction2) {\n            for (t2 in message) {\n              if (Object.prototype.hasOwnProperty.call(message, t2) && message[t2] === value) {\n                delete message[t2];\n                result = true;\n              }\n            }\n          }\n        }\n      }\n      return result;\n    };\n  });\n})(pubsub, pubsub.exports);\nvar pubsubExports = pubsub.exports;\nconst PubSub$1 = /* @__PURE__ */ getDefaultExportFromCjs(pubsubExports);\nvar lib$1 = {};\nvar IdentifierIssuer_1 = class IdentifierIssuer {\n  /**\n   * Creates a new IdentifierIssuer. A IdentifierIssuer issues unique\n   * identifiers, keeping track of any previously issued identifiers.\n   *\n   * @param prefix the prefix to use ('<prefix><counter>').\n   * @param existing an existing Map to use.\n   * @param counter the counter to use.\n   */\n  constructor(prefix, existing = /* @__PURE__ */ new Map(), counter = 0) {\n    this.prefix = prefix;\n    this._existing = existing;\n    this.counter = counter;\n  }\n  /**\n   * Copies this IdentifierIssuer.\n   *\n   * @return a copy of this IdentifierIssuer.\n   */\n  clone() {\n    const { prefix, _existing, counter } = this;\n    return new IdentifierIssuer(prefix, new Map(_existing), counter);\n  }\n  /**\n   * Gets the new identifier for the given old identifier, where if no old\n   * identifier is given a new identifier will be generated.\n   *\n   * @param [old] the old identifier to get the new identifier for.\n   *\n   * @return the new identifier.\n   */\n  getId(old) {\n    const existing = old && this._existing.get(old);\n    if (existing) {\n      return existing;\n    }\n    const identifier = this.prefix + this.counter;\n    this.counter++;\n    if (old) {\n      this._existing.set(old, identifier);\n    }\n    return identifier;\n  }\n  /**\n   * Returns true if the given old identifer has already been assigned a new\n   * identifier.\n   *\n   * @param old the old identifier to check.\n   *\n   * @return true if the old identifier has been assigned a new identifier,\n   *   false if not.\n   */\n  hasId(old) {\n    return this._existing.has(old);\n  }\n  /**\n   * Returns all of the IDs that have been issued new IDs in the order in\n   * which they were issued new IDs.\n   *\n   * @return the list of old IDs that has been issued new IDs in order.\n   */\n  getOldIds() {\n    return [...this._existing.keys()];\n  }\n};\n(function(global2, undefined$1) {\n  if (global2.setImmediate) {\n    return;\n  }\n  var nextHandle = 1;\n  var tasksByHandle = {};\n  var currentlyRunningATask = false;\n  var doc = global2.document;\n  var registerImmediate;\n  function setImmediate2(callback) {\n    if (typeof callback !== \"function\") {\n      callback = new Function(\"\" + callback);\n    }\n    var args = new Array(arguments.length - 1);\n    for (var i3 = 0; i3 < args.length; i3++) {\n      args[i3] = arguments[i3 + 1];\n    }\n    var task = { callback, args };\n    tasksByHandle[nextHandle] = task;\n    registerImmediate(nextHandle);\n    return nextHandle++;\n  }\n  function clearImmediate(handle) {\n    delete tasksByHandle[handle];\n  }\n  function run(task) {\n    var callback = task.callback;\n    var args = task.args;\n    switch (args.length) {\n      case 0:\n        callback();\n        break;\n      case 1:\n        callback(args[0]);\n        break;\n      case 2:\n        callback(args[0], args[1]);\n        break;\n      case 3:\n        callback(args[0], args[1], args[2]);\n        break;\n      default:\n        callback.apply(undefined$1, args);\n        break;\n    }\n  }\n  function runIfPresent(handle) {\n    if (currentlyRunningATask) {\n      setTimeout(runIfPresent, 0, handle);\n    } else {\n      var task = tasksByHandle[handle];\n      if (task) {\n        currentlyRunningATask = true;\n        try {\n          run(task);\n        } finally {\n          clearImmediate(handle);\n          currentlyRunningATask = false;\n        }\n      }\n    }\n  }\n  function installNextTickImplementation() {\n    registerImmediate = function(handle) {\n      process.nextTick(function() {\n        runIfPresent(handle);\n      });\n    };\n  }\n  function canUsePostMessage() {\n    if (global2.postMessage && !global2.importScripts) {\n      var postMessageIsAsynchronous = true;\n      var oldOnMessage = global2.onmessage;\n      global2.onmessage = function() {\n        postMessageIsAsynchronous = false;\n      };\n      global2.postMessage(\"\", \"*\");\n      global2.onmessage = oldOnMessage;\n      return postMessageIsAsynchronous;\n    }\n  }\n  function installPostMessageImplementation() {\n    var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n    var onGlobalMessage = function(event) {\n      if (event.source === global2 && typeof event.data === \"string\" && event.data.indexOf(messagePrefix) === 0) {\n        runIfPresent(+event.data.slice(messagePrefix.length));\n      }\n    };\n    if (global2.addEventListener) {\n      global2.addEventListener(\"message\", onGlobalMessage, false);\n    } else {\n      global2.attachEvent(\"onmessage\", onGlobalMessage);\n    }\n    registerImmediate = function(handle) {\n      global2.postMessage(messagePrefix + handle, \"*\");\n    };\n  }\n  function installMessageChannelImplementation() {\n    var channel = new MessageChannel();\n    channel.port1.onmessage = function(event) {\n      var handle = event.data;\n      runIfPresent(handle);\n    };\n    registerImmediate = function(handle) {\n      channel.port2.postMessage(handle);\n    };\n  }\n  function installReadyStateChangeImplementation() {\n    var html = doc.documentElement;\n    registerImmediate = function(handle) {\n      var script = doc.createElement(\"script\");\n      script.onreadystatechange = function() {\n        runIfPresent(handle);\n        script.onreadystatechange = null;\n        html.removeChild(script);\n        script = null;\n      };\n      html.appendChild(script);\n    };\n  }\n  function installSetTimeoutImplementation() {\n    registerImmediate = function(handle) {\n      setTimeout(runIfPresent, 0, handle);\n    };\n  }\n  var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global2);\n  attachTo = attachTo && attachTo.setTimeout ? attachTo : global2;\n  if ({}.toString.call(global2.process) === \"[object process]\") {\n    installNextTickImplementation();\n  } else if (canUsePostMessage()) {\n    installPostMessageImplementation();\n  } else if (global2.MessageChannel) {\n    installMessageChannelImplementation();\n  } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n    installReadyStateChangeImplementation();\n  } else {\n    installSetTimeoutImplementation();\n  }\n  attachTo.setImmediate = setImmediate2;\n  attachTo.clearImmediate = clearImmediate;\n})(typeof self === \"undefined\" ? typeof commonjsGlobal === \"undefined\" ? commonjsGlobal : commonjsGlobal : self);\n/*!\n * Copyright (c) 2016-2022 Digital Bazaar, Inc. All rights reserved.\n */\nconst crypto = self.crypto || self.msCrypto;\nvar MessageDigestBrowser = class MessageDigest {\n  /**\n   * Creates a new MessageDigest.\n   *\n   * @param algorithm the algorithm to use.\n   */\n  constructor(algorithm) {\n    if (!(crypto && crypto.subtle)) {\n      throw new Error(\"crypto.subtle not found.\");\n    }\n    if (algorithm === \"sha256\") {\n      this.algorithm = { name: \"SHA-256\" };\n    } else if (algorithm === \"sha1\") {\n      this.algorithm = { name: \"SHA-1\" };\n    } else {\n      throw new Error(`Unsupported algorithm \"${algorithm}\".`);\n    }\n    this._content = \"\";\n  }\n  update(msg) {\n    this._content += msg;\n  }\n  async digest() {\n    const data = new TextEncoder().encode(this._content);\n    const buffer = new Uint8Array(\n      await crypto.subtle.digest(this.algorithm, data)\n    );\n    let hex = \"\";\n    for (let i3 = 0; i3 < buffer.length; ++i3) {\n      hex += buffer[i3].toString(16).padStart(2, \"0\");\n    }\n    return hex;\n  }\n};\n/*!\n * Copyright (c) 2016-2022 Digital Bazaar, Inc. All rights reserved.\n */\nvar Permuter_1 = class Permuter {\n  /**\n   * A Permuter iterates over all possible permutations of the given array\n   * of elements.\n   *\n   * @param list the array of elements to iterate over.\n   */\n  constructor(list2) {\n    this.current = list2.sort();\n    this.done = false;\n    this.dir = /* @__PURE__ */ new Map();\n    for (let i3 = 0; i3 < list2.length; ++i3) {\n      this.dir.set(list2[i3], true);\n    }\n  }\n  /**\n   * Returns true if there is another permutation.\n   *\n   * @return true if there is another permutation, false if not.\n   */\n  hasNext() {\n    return !this.done;\n  }\n  /**\n   * Gets the next permutation. Call hasNext() to ensure there is another one\n   * first.\n   *\n   * @return the next permutation.\n   */\n  next() {\n    const { current, dir } = this;\n    const rval = current.slice();\n    let k2 = null;\n    let pos = 0;\n    const length = current.length;\n    for (let i3 = 0; i3 < length; ++i3) {\n      const element = current[i3];\n      const left = dir.get(element);\n      if ((k2 === null || element > k2) && (left && i3 > 0 && element > current[i3 - 1] || !left && i3 < length - 1 && element > current[i3 + 1])) {\n        k2 = element;\n        pos = i3;\n      }\n    }\n    if (k2 === null) {\n      this.done = true;\n    } else {\n      const swap = dir.get(k2) ? pos - 1 : pos + 1;\n      current[pos] = current[swap];\n      current[swap] = k2;\n      for (const element of current) {\n        if (element > k2) {\n          dir.set(element, !dir.get(element));\n        }\n      }\n    }\n    return rval;\n  }\n};\n/*!\n * Copyright (c) 2016-2022 Digital Bazaar, Inc. All rights reserved.\n */\nconst RDF$1 = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\";\nconst RDF_LANGSTRING$1 = RDF$1 + \"langString\";\nconst XSD_STRING$2 = \"http://www.w3.org/2001/XMLSchema#string\";\nconst TYPE_NAMED_NODE = \"NamedNode\";\nconst TYPE_BLANK_NODE = \"BlankNode\";\nconst TYPE_LITERAL = \"Literal\";\nconst TYPE_DEFAULT_GRAPH = \"DefaultGraph\";\nconst REGEX = {};\n(() => {\n  const iri = \"(?:<([^:]+:[^>]*)>)\";\n  const PN_CHARS_BASE = \"A-Za-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�\";\n  const PN_CHARS_U = PN_CHARS_BASE + \"_\";\n  const PN_CHARS = PN_CHARS_U + \"0-9-·̀-ͯ‿-⁀\";\n  const BLANK_NODE_LABEL = \"(_:(?:[\" + PN_CHARS_U + \"0-9])(?:(?:[\" + PN_CHARS + \".])*(?:[\" + PN_CHARS + \"]))?)\";\n  const bnode = BLANK_NODE_LABEL;\n  const plain = '\"([^\"\\\\\\\\]*(?:\\\\\\\\.[^\"\\\\\\\\]*)*)\"';\n  const datatype = \"(?:\\\\^\\\\^\" + iri + \")\";\n  const language = \"(?:@([a-zA-Z]+(?:-[a-zA-Z0-9]+)*))\";\n  const literal = \"(?:\" + plain + \"(?:\" + datatype + \"|\" + language + \")?)\";\n  const ws = \"[ \\\\t]+\";\n  const wso = \"[ \\\\t]*\";\n  const subject = \"(?:\" + iri + \"|\" + bnode + \")\" + ws;\n  const property = iri + ws;\n  const object = \"(?:\" + iri + \"|\" + bnode + \"|\" + literal + \")\" + wso;\n  const graphName = \"(?:\\\\.|(?:(?:\" + iri + \"|\" + bnode + \")\" + wso + \"\\\\.))\";\n  REGEX.eoln = /(?:\\r\\n)|(?:\\n)|(?:\\r)/g;\n  REGEX.empty = new RegExp(\"^\" + wso + \"$\");\n  REGEX.quad = new RegExp(\n    \"^\" + wso + subject + property + object + graphName + wso + \"$\"\n  );\n})();\nvar NQuads_1 = class NQuads {\n  /**\n   * Parses RDF in the form of N-Quads.\n   *\n   * @param input the N-Quads input to parse.\n   *\n   * @return an RDF dataset (an array of quads per http://rdf.js.org/).\n   */\n  static parse(input) {\n    const dataset = [];\n    const graphs = {};\n    const lines = input.split(REGEX.eoln);\n    let lineNumber = 0;\n    for (const line of lines) {\n      lineNumber++;\n      if (REGEX.empty.test(line)) {\n        continue;\n      }\n      const match3 = line.match(REGEX.quad);\n      if (match3 === null) {\n        throw new Error(\"N-Quads parse error on line \" + lineNumber + \".\");\n      }\n      const quad = { subject: null, predicate: null, object: null, graph: null };\n      if (match3[1] !== void 0) {\n        quad.subject = { termType: TYPE_NAMED_NODE, value: match3[1] };\n      } else {\n        quad.subject = { termType: TYPE_BLANK_NODE, value: match3[2] };\n      }\n      quad.predicate = { termType: TYPE_NAMED_NODE, value: match3[3] };\n      if (match3[4] !== void 0) {\n        quad.object = { termType: TYPE_NAMED_NODE, value: match3[4] };\n      } else if (match3[5] !== void 0) {\n        quad.object = { termType: TYPE_BLANK_NODE, value: match3[5] };\n      } else {\n        quad.object = {\n          termType: TYPE_LITERAL,\n          value: void 0,\n          datatype: {\n            termType: TYPE_NAMED_NODE\n          }\n        };\n        if (match3[7] !== void 0) {\n          quad.object.datatype.value = match3[7];\n        } else if (match3[8] !== void 0) {\n          quad.object.datatype.value = RDF_LANGSTRING$1;\n          quad.object.language = match3[8];\n        } else {\n          quad.object.datatype.value = XSD_STRING$2;\n        }\n        quad.object.value = _unescape(match3[6]);\n      }\n      if (match3[9] !== void 0) {\n        quad.graph = {\n          termType: TYPE_NAMED_NODE,\n          value: match3[9]\n        };\n      } else if (match3[10] !== void 0) {\n        quad.graph = {\n          termType: TYPE_BLANK_NODE,\n          value: match3[10]\n        };\n      } else {\n        quad.graph = {\n          termType: TYPE_DEFAULT_GRAPH,\n          value: \"\"\n        };\n      }\n      if (!(quad.graph.value in graphs)) {\n        graphs[quad.graph.value] = [quad];\n        dataset.push(quad);\n      } else {\n        let unique = true;\n        const quads = graphs[quad.graph.value];\n        for (const q of quads) {\n          if (_compareTriples(q, quad)) {\n            unique = false;\n            break;\n          }\n        }\n        if (unique) {\n          quads.push(quad);\n          dataset.push(quad);\n        }\n      }\n    }\n    return dataset;\n  }\n  /**\n   * Converts an RDF dataset to N-Quads.\n   *\n   * @param dataset (array of quads) the RDF dataset to convert.\n   *\n   * @return the N-Quads string.\n   */\n  static serialize(dataset) {\n    if (!Array.isArray(dataset)) {\n      dataset = NQuads.legacyDatasetToQuads(dataset);\n    }\n    const quads = [];\n    for (const quad of dataset) {\n      quads.push(NQuads.serializeQuad(quad));\n    }\n    return quads.sort().join(\"\");\n  }\n  /**\n   * Converts RDF quad components to an N-Quad string (a single quad).\n   *\n   * @param {Object} s - N-Quad subject component.\n   * @param {Object} p - N-Quad predicate component.\n   * @param {Object} o - N-Quad object component.\n   * @param {Object} g - N-Quad graph component.\n   *\n   * @return {string} the N-Quad.\n   */\n  static serializeQuadComponents(s2, p2, o2, g2) {\n    let nquad = \"\";\n    if (s2.termType === TYPE_NAMED_NODE) {\n      nquad += `<${s2.value}>`;\n    } else {\n      nquad += `${s2.value}`;\n    }\n    nquad += ` <${p2.value}> `;\n    if (o2.termType === TYPE_NAMED_NODE) {\n      nquad += `<${o2.value}>`;\n    } else if (o2.termType === TYPE_BLANK_NODE) {\n      nquad += o2.value;\n    } else {\n      nquad += `\"${_escape(o2.value)}\"`;\n      if (o2.datatype.value === RDF_LANGSTRING$1) {\n        if (o2.language) {\n          nquad += `@${o2.language}`;\n        }\n      } else if (o2.datatype.value !== XSD_STRING$2) {\n        nquad += `^^<${o2.datatype.value}>`;\n      }\n    }\n    if (g2.termType === TYPE_NAMED_NODE) {\n      nquad += ` <${g2.value}>`;\n    } else if (g2.termType === TYPE_BLANK_NODE) {\n      nquad += ` ${g2.value}`;\n    }\n    nquad += \" .\\n\";\n    return nquad;\n  }\n  /**\n   * Converts an RDF quad to an N-Quad string (a single quad).\n   *\n   * @param quad the RDF quad convert.\n   *\n   * @return the N-Quad string.\n   */\n  static serializeQuad(quad) {\n    return NQuads.serializeQuadComponents(\n      quad.subject,\n      quad.predicate,\n      quad.object,\n      quad.graph\n    );\n  }\n  /**\n   * Converts a legacy-formatted dataset to an array of quads dataset per\n   * http://rdf.js.org/.\n   *\n   * @param dataset the legacy dataset to convert.\n   *\n   * @return the array of quads dataset.\n   */\n  static legacyDatasetToQuads(dataset) {\n    const quads = [];\n    const termTypeMap = {\n      \"blank node\": TYPE_BLANK_NODE,\n      IRI: TYPE_NAMED_NODE,\n      literal: TYPE_LITERAL\n    };\n    for (const graphName in dataset) {\n      const triples = dataset[graphName];\n      triples.forEach((triple) => {\n        const quad = {};\n        for (const componentName in triple) {\n          const oldComponent = triple[componentName];\n          const newComponent = {\n            termType: termTypeMap[oldComponent.type],\n            value: oldComponent.value\n          };\n          if (newComponent.termType === TYPE_LITERAL) {\n            newComponent.datatype = {\n              termType: TYPE_NAMED_NODE\n            };\n            if (\"datatype\" in oldComponent) {\n              newComponent.datatype.value = oldComponent.datatype;\n            }\n            if (\"language\" in oldComponent) {\n              if (!(\"datatype\" in oldComponent)) {\n                newComponent.datatype.value = RDF_LANGSTRING$1;\n              }\n              newComponent.language = oldComponent.language;\n            } else if (!(\"datatype\" in oldComponent)) {\n              newComponent.datatype.value = XSD_STRING$2;\n            }\n          }\n          quad[componentName] = newComponent;\n        }\n        if (graphName === \"@default\") {\n          quad.graph = {\n            termType: TYPE_DEFAULT_GRAPH,\n            value: \"\"\n          };\n        } else {\n          quad.graph = {\n            termType: graphName.startsWith(\"_:\") ? TYPE_BLANK_NODE : TYPE_NAMED_NODE,\n            value: graphName\n          };\n        }\n        quads.push(quad);\n      });\n    }\n    return quads;\n  }\n};\nfunction _compareTriples(t1, t2) {\n  if (!(t1.subject.termType === t2.subject.termType && t1.object.termType === t2.object.termType)) {\n    return false;\n  }\n  if (!(t1.subject.value === t2.subject.value && t1.predicate.value === t2.predicate.value && t1.object.value === t2.object.value)) {\n    return false;\n  }\n  if (t1.object.termType !== TYPE_LITERAL) {\n    return true;\n  }\n  return t1.object.datatype.termType === t2.object.datatype.termType && t1.object.language === t2.object.language && t1.object.datatype.value === t2.object.datatype.value;\n}\nconst _escapeRegex = /[\"\\\\\\n\\r]/g;\nfunction _escape(s2) {\n  return s2.replace(_escapeRegex, function(match3) {\n    switch (match3) {\n      case '\"':\n        return '\\\\\"';\n      case \"\\\\\":\n        return \"\\\\\\\\\";\n      case \"\\n\":\n        return \"\\\\n\";\n      case \"\\r\":\n        return \"\\\\r\";\n    }\n  });\n}\nconst _unescapeRegex = /(?:\\\\([tbnrf\"'\\\\]))|(?:\\\\u([0-9A-Fa-f]{4}))|(?:\\\\U([0-9A-Fa-f]{8}))/g;\nfunction _unescape(s2) {\n  return s2.replace(_unescapeRegex, function(match3, code2, u2, U) {\n    if (code2) {\n      switch (code2) {\n        case \"t\":\n          return \"\t\";\n        case \"b\":\n          return \"\\b\";\n        case \"n\":\n          return \"\\n\";\n        case \"r\":\n          return \"\\r\";\n        case \"f\":\n          return \"\\f\";\n        case '\"':\n          return '\"';\n        case \"'\":\n          return \"'\";\n        case \"\\\\\":\n          return \"\\\\\";\n      }\n    }\n    if (u2) {\n      return String.fromCharCode(parseInt(u2, 16));\n    }\n    if (U) {\n      throw new Error(\"Unsupported U escape\");\n    }\n  });\n}\n/*!\n * Copyright (c) 2016-2022 Digital Bazaar, Inc. All rights reserved.\n */\nconst IdentifierIssuer$3 = IdentifierIssuer_1;\nconst MessageDigest$3 = MessageDigestBrowser;\nconst Permuter$1 = Permuter_1;\nconst NQuads$3 = NQuads_1;\nvar URDNA2015_1 = class URDNA2015 {\n  constructor({\n    createMessageDigest = () => new MessageDigest$3(\"sha256\"),\n    canonicalIdMap = /* @__PURE__ */ new Map(),\n    maxDeepIterations = Infinity\n  } = {}) {\n    this.name = \"URDNA2015\";\n    this.blankNodeInfo = /* @__PURE__ */ new Map();\n    this.canonicalIssuer = new IdentifierIssuer$3(\"_:c14n\", canonicalIdMap);\n    this.createMessageDigest = createMessageDigest;\n    this.maxDeepIterations = maxDeepIterations;\n    this.quads = null;\n    this.deepIterations = null;\n  }\n  // 4.4) Normalization Algorithm\n  async main(dataset) {\n    this.deepIterations = /* @__PURE__ */ new Map();\n    this.quads = dataset;\n    for (const quad of dataset) {\n      this._addBlankNodeQuadInfo({ quad, component: quad.subject });\n      this._addBlankNodeQuadInfo({ quad, component: quad.object });\n      this._addBlankNodeQuadInfo({ quad, component: quad.graph });\n    }\n    const hashToBlankNodes = /* @__PURE__ */ new Map();\n    const nonNormalized = [...this.blankNodeInfo.keys()];\n    let i3 = 0;\n    for (const id2 of nonNormalized) {\n      if (++i3 % 100 === 0) {\n        await this._yield();\n      }\n      await this._hashAndTrackBlankNode({ id: id2, hashToBlankNodes });\n    }\n    const hashes = [...hashToBlankNodes.keys()].sort();\n    const nonUnique = [];\n    for (const hash of hashes) {\n      const idList = hashToBlankNodes.get(hash);\n      if (idList.length > 1) {\n        nonUnique.push(idList);\n        continue;\n      }\n      const id2 = idList[0];\n      this.canonicalIssuer.getId(id2);\n    }\n    for (const idList of nonUnique) {\n      const hashPathList = [];\n      for (const id2 of idList) {\n        if (this.canonicalIssuer.hasId(id2)) {\n          continue;\n        }\n        const issuer = new IdentifierIssuer$3(\"_:b\");\n        issuer.getId(id2);\n        const result = await this.hashNDegreeQuads(id2, issuer);\n        hashPathList.push(result);\n      }\n      hashPathList.sort(_stringHashCompare$1);\n      for (const result of hashPathList) {\n        const oldIds = result.issuer.getOldIds();\n        for (const id2 of oldIds) {\n          this.canonicalIssuer.getId(id2);\n        }\n      }\n    }\n    const normalized = [];\n    for (const quad of this.quads) {\n      const nQuad = NQuads$3.serializeQuadComponents(\n        this._componentWithCanonicalId(quad.subject),\n        quad.predicate,\n        this._componentWithCanonicalId(quad.object),\n        this._componentWithCanonicalId(quad.graph)\n      );\n      normalized.push(nQuad);\n    }\n    normalized.sort();\n    return normalized.join(\"\");\n  }\n  // 4.6) Hash First Degree Quads\n  async hashFirstDegreeQuads(id2) {\n    const nquads = [];\n    const info = this.blankNodeInfo.get(id2);\n    const quads = info.quads;\n    for (const quad of quads) {\n      const copy = {\n        subject: null,\n        predicate: quad.predicate,\n        object: null,\n        graph: null\n      };\n      copy.subject = this.modifyFirstDegreeComponent(\n        id2,\n        quad.subject,\n        \"subject\"\n      );\n      copy.object = this.modifyFirstDegreeComponent(\n        id2,\n        quad.object,\n        \"object\"\n      );\n      copy.graph = this.modifyFirstDegreeComponent(\n        id2,\n        quad.graph,\n        \"graph\"\n      );\n      nquads.push(NQuads$3.serializeQuad(copy));\n    }\n    nquads.sort();\n    const md = this.createMessageDigest();\n    for (const nquad of nquads) {\n      md.update(nquad);\n    }\n    info.hash = await md.digest();\n    return info.hash;\n  }\n  // 4.7) Hash Related Blank Node\n  async hashRelatedBlankNode(related, quad, issuer, position) {\n    let id2;\n    if (this.canonicalIssuer.hasId(related)) {\n      id2 = this.canonicalIssuer.getId(related);\n    } else if (issuer.hasId(related)) {\n      id2 = issuer.getId(related);\n    } else {\n      id2 = this.blankNodeInfo.get(related).hash;\n    }\n    const md = this.createMessageDigest();\n    md.update(position);\n    if (position !== \"g\") {\n      md.update(this.getRelatedPredicate(quad));\n    }\n    md.update(id2);\n    return md.digest();\n  }\n  // 4.8) Hash N-Degree Quads\n  async hashNDegreeQuads(id2, issuer) {\n    const deepIterations = this.deepIterations.get(id2) || 0;\n    if (deepIterations > this.maxDeepIterations) {\n      throw new Error(\n        `Maximum deep iterations (${this.maxDeepIterations}) exceeded.`\n      );\n    }\n    this.deepIterations.set(id2, deepIterations + 1);\n    const md = this.createMessageDigest();\n    const hashToRelated = await this.createHashToRelated(id2, issuer);\n    const hashes = [...hashToRelated.keys()].sort();\n    for (const hash of hashes) {\n      md.update(hash);\n      let chosenPath = \"\";\n      let chosenIssuer;\n      const permuter = new Permuter$1(hashToRelated.get(hash));\n      let i3 = 0;\n      while (permuter.hasNext()) {\n        const permutation = permuter.next();\n        if (++i3 % 3 === 0) {\n          await this._yield();\n        }\n        let issuerCopy = issuer.clone();\n        let path = \"\";\n        const recursionList = [];\n        let nextPermutation = false;\n        for (const related of permutation) {\n          if (this.canonicalIssuer.hasId(related)) {\n            path += this.canonicalIssuer.getId(related);\n          } else {\n            if (!issuerCopy.hasId(related)) {\n              recursionList.push(related);\n            }\n            path += issuerCopy.getId(related);\n          }\n          if (chosenPath.length !== 0 && path > chosenPath) {\n            nextPermutation = true;\n            break;\n          }\n        }\n        if (nextPermutation) {\n          continue;\n        }\n        for (const related of recursionList) {\n          const result = await this.hashNDegreeQuads(related, issuerCopy);\n          path += issuerCopy.getId(related);\n          path += `<${result.hash}>`;\n          issuerCopy = result.issuer;\n          if (chosenPath.length !== 0 && path > chosenPath) {\n            nextPermutation = true;\n            break;\n          }\n        }\n        if (nextPermutation) {\n          continue;\n        }\n        if (chosenPath.length === 0 || path < chosenPath) {\n          chosenPath = path;\n          chosenIssuer = issuerCopy;\n        }\n      }\n      md.update(chosenPath);\n      issuer = chosenIssuer;\n    }\n    return { hash: await md.digest(), issuer };\n  }\n  // helper for modifying component during Hash First Degree Quads\n  modifyFirstDegreeComponent(id2, component) {\n    if (component.termType !== \"BlankNode\") {\n      return component;\n    }\n    return {\n      termType: \"BlankNode\",\n      value: component.value === id2 ? \"_:a\" : \"_:z\"\n    };\n  }\n  // helper for getting a related predicate\n  getRelatedPredicate(quad) {\n    return `<${quad.predicate.value}>`;\n  }\n  // helper for creating hash to related blank nodes map\n  async createHashToRelated(id2, issuer) {\n    const hashToRelated = /* @__PURE__ */ new Map();\n    const quads = this.blankNodeInfo.get(id2).quads;\n    let i3 = 0;\n    for (const quad of quads) {\n      if (++i3 % 100 === 0) {\n        await this._yield();\n      }\n      await Promise.all([\n        this._addRelatedBlankNodeHash({\n          quad,\n          component: quad.subject,\n          position: \"s\",\n          id: id2,\n          issuer,\n          hashToRelated\n        }),\n        this._addRelatedBlankNodeHash({\n          quad,\n          component: quad.object,\n          position: \"o\",\n          id: id2,\n          issuer,\n          hashToRelated\n        }),\n        this._addRelatedBlankNodeHash({\n          quad,\n          component: quad.graph,\n          position: \"g\",\n          id: id2,\n          issuer,\n          hashToRelated\n        })\n      ]);\n    }\n    return hashToRelated;\n  }\n  async _hashAndTrackBlankNode({ id: id2, hashToBlankNodes }) {\n    const hash = await this.hashFirstDegreeQuads(id2);\n    const idList = hashToBlankNodes.get(hash);\n    if (!idList) {\n      hashToBlankNodes.set(hash, [id2]);\n    } else {\n      idList.push(id2);\n    }\n  }\n  _addBlankNodeQuadInfo({ quad, component }) {\n    if (component.termType !== \"BlankNode\") {\n      return;\n    }\n    const id2 = component.value;\n    const info = this.blankNodeInfo.get(id2);\n    if (info) {\n      info.quads.add(quad);\n    } else {\n      this.blankNodeInfo.set(id2, { quads: /* @__PURE__ */ new Set([quad]), hash: null });\n    }\n  }\n  async _addRelatedBlankNodeHash({ quad, component, position, id: id2, issuer, hashToRelated }) {\n    if (!(component.termType === \"BlankNode\" && component.value !== id2)) {\n      return;\n    }\n    const related = component.value;\n    const hash = await this.hashRelatedBlankNode(\n      related,\n      quad,\n      issuer,\n      position\n    );\n    const entries = hashToRelated.get(hash);\n    if (entries) {\n      entries.push(related);\n    } else {\n      hashToRelated.set(hash, [related]);\n    }\n  }\n  // canonical ids for 7.1\n  _componentWithCanonicalId(component) {\n    if (component.termType === \"BlankNode\" && !component.value.startsWith(this.canonicalIssuer.prefix)) {\n      return {\n        termType: \"BlankNode\",\n        value: this.canonicalIssuer.getId(component.value)\n      };\n    }\n    return component;\n  }\n  async _yield() {\n    return new Promise((resolve2) => setImmediate(resolve2));\n  }\n};\nfunction _stringHashCompare$1(a2, b2) {\n  return a2.hash < b2.hash ? -1 : a2.hash > b2.hash ? 1 : 0;\n}\n/*!\n * Copyright (c) 2016-2022 Digital Bazaar, Inc. All rights reserved.\n */\nconst MessageDigest$2 = MessageDigestBrowser;\nconst URDNA20152 = URDNA2015_1;\nvar URGNA2012 = class URDNA2012 extends URDNA20152 {\n  constructor() {\n    super();\n    this.name = \"URGNA2012\";\n    this.createMessageDigest = () => new MessageDigest$2(\"sha1\");\n  }\n  // helper for modifying component during Hash First Degree Quads\n  modifyFirstDegreeComponent(id2, component, key) {\n    if (component.termType !== \"BlankNode\") {\n      return component;\n    }\n    if (key === \"graph\") {\n      return {\n        termType: \"BlankNode\",\n        value: \"_:g\"\n      };\n    }\n    return {\n      termType: \"BlankNode\",\n      value: component.value === id2 ? \"_:a\" : \"_:z\"\n    };\n  }\n  // helper for getting a related predicate\n  getRelatedPredicate(quad) {\n    return quad.predicate.value;\n  }\n  // helper for creating hash to related blank nodes map\n  async createHashToRelated(id2, issuer) {\n    const hashToRelated = /* @__PURE__ */ new Map();\n    const quads = this.blankNodeInfo.get(id2).quads;\n    let i3 = 0;\n    for (const quad of quads) {\n      let position;\n      let related;\n      if (quad.subject.termType === \"BlankNode\" && quad.subject.value !== id2) {\n        related = quad.subject.value;\n        position = \"p\";\n      } else if (quad.object.termType === \"BlankNode\" && quad.object.value !== id2) {\n        related = quad.object.value;\n        position = \"r\";\n      } else {\n        continue;\n      }\n      if (++i3 % 100 === 0) {\n        await this._yield();\n      }\n      const hash = await this.hashRelatedBlankNode(\n        related,\n        quad,\n        issuer,\n        position\n      );\n      const entries = hashToRelated.get(hash);\n      if (entries) {\n        entries.push(related);\n      } else {\n        hashToRelated.set(hash, [related]);\n      }\n    }\n    return hashToRelated;\n  }\n};\n/*!\n * Copyright (c) 2016-2022 Digital Bazaar, Inc. All rights reserved.\n */\nconst IdentifierIssuer$2 = IdentifierIssuer_1;\nconst MessageDigest$1 = MessageDigestBrowser;\nconst Permuter2 = Permuter_1;\nconst NQuads$2 = NQuads_1;\nvar URDNA2015Sync_1 = class URDNA2015Sync {\n  constructor({\n    createMessageDigest = () => new MessageDigest$1(\"sha256\"),\n    canonicalIdMap = /* @__PURE__ */ new Map(),\n    maxDeepIterations = Infinity\n  } = {}) {\n    this.name = \"URDNA2015\";\n    this.blankNodeInfo = /* @__PURE__ */ new Map();\n    this.canonicalIssuer = new IdentifierIssuer$2(\"_:c14n\", canonicalIdMap);\n    this.createMessageDigest = createMessageDigest;\n    this.maxDeepIterations = maxDeepIterations;\n    this.quads = null;\n    this.deepIterations = null;\n  }\n  // 4.4) Normalization Algorithm\n  main(dataset) {\n    this.deepIterations = /* @__PURE__ */ new Map();\n    this.quads = dataset;\n    for (const quad of dataset) {\n      this._addBlankNodeQuadInfo({ quad, component: quad.subject });\n      this._addBlankNodeQuadInfo({ quad, component: quad.object });\n      this._addBlankNodeQuadInfo({ quad, component: quad.graph });\n    }\n    const hashToBlankNodes = /* @__PURE__ */ new Map();\n    const nonNormalized = [...this.blankNodeInfo.keys()];\n    for (const id2 of nonNormalized) {\n      this._hashAndTrackBlankNode({ id: id2, hashToBlankNodes });\n    }\n    const hashes = [...hashToBlankNodes.keys()].sort();\n    const nonUnique = [];\n    for (const hash of hashes) {\n      const idList = hashToBlankNodes.get(hash);\n      if (idList.length > 1) {\n        nonUnique.push(idList);\n        continue;\n      }\n      const id2 = idList[0];\n      this.canonicalIssuer.getId(id2);\n    }\n    for (const idList of nonUnique) {\n      const hashPathList = [];\n      for (const id2 of idList) {\n        if (this.canonicalIssuer.hasId(id2)) {\n          continue;\n        }\n        const issuer = new IdentifierIssuer$2(\"_:b\");\n        issuer.getId(id2);\n        const result = this.hashNDegreeQuads(id2, issuer);\n        hashPathList.push(result);\n      }\n      hashPathList.sort(_stringHashCompare);\n      for (const result of hashPathList) {\n        const oldIds = result.issuer.getOldIds();\n        for (const id2 of oldIds) {\n          this.canonicalIssuer.getId(id2);\n        }\n      }\n    }\n    const normalized = [];\n    for (const quad of this.quads) {\n      const nQuad = NQuads$2.serializeQuadComponents(\n        this._componentWithCanonicalId({ component: quad.subject }),\n        quad.predicate,\n        this._componentWithCanonicalId({ component: quad.object }),\n        this._componentWithCanonicalId({ component: quad.graph })\n      );\n      normalized.push(nQuad);\n    }\n    normalized.sort();\n    return normalized.join(\"\");\n  }\n  // 4.6) Hash First Degree Quads\n  hashFirstDegreeQuads(id2) {\n    const nquads = [];\n    const info = this.blankNodeInfo.get(id2);\n    const quads = info.quads;\n    for (const quad of quads) {\n      const copy = {\n        subject: null,\n        predicate: quad.predicate,\n        object: null,\n        graph: null\n      };\n      copy.subject = this.modifyFirstDegreeComponent(\n        id2,\n        quad.subject,\n        \"subject\"\n      );\n      copy.object = this.modifyFirstDegreeComponent(\n        id2,\n        quad.object,\n        \"object\"\n      );\n      copy.graph = this.modifyFirstDegreeComponent(\n        id2,\n        quad.graph,\n        \"graph\"\n      );\n      nquads.push(NQuads$2.serializeQuad(copy));\n    }\n    nquads.sort();\n    const md = this.createMessageDigest();\n    for (const nquad of nquads) {\n      md.update(nquad);\n    }\n    info.hash = md.digest();\n    return info.hash;\n  }\n  // 4.7) Hash Related Blank Node\n  hashRelatedBlankNode(related, quad, issuer, position) {\n    let id2;\n    if (this.canonicalIssuer.hasId(related)) {\n      id2 = this.canonicalIssuer.getId(related);\n    } else if (issuer.hasId(related)) {\n      id2 = issuer.getId(related);\n    } else {\n      id2 = this.blankNodeInfo.get(related).hash;\n    }\n    const md = this.createMessageDigest();\n    md.update(position);\n    if (position !== \"g\") {\n      md.update(this.getRelatedPredicate(quad));\n    }\n    md.update(id2);\n    return md.digest();\n  }\n  // 4.8) Hash N-Degree Quads\n  hashNDegreeQuads(id2, issuer) {\n    const deepIterations = this.deepIterations.get(id2) || 0;\n    if (deepIterations > this.maxDeepIterations) {\n      throw new Error(\n        `Maximum deep iterations (${this.maxDeepIterations}) exceeded.`\n      );\n    }\n    this.deepIterations.set(id2, deepIterations + 1);\n    const md = this.createMessageDigest();\n    const hashToRelated = this.createHashToRelated(id2, issuer);\n    const hashes = [...hashToRelated.keys()].sort();\n    for (const hash of hashes) {\n      md.update(hash);\n      let chosenPath = \"\";\n      let chosenIssuer;\n      const permuter = new Permuter2(hashToRelated.get(hash));\n      while (permuter.hasNext()) {\n        const permutation = permuter.next();\n        let issuerCopy = issuer.clone();\n        let path = \"\";\n        const recursionList = [];\n        let nextPermutation = false;\n        for (const related of permutation) {\n          if (this.canonicalIssuer.hasId(related)) {\n            path += this.canonicalIssuer.getId(related);\n          } else {\n            if (!issuerCopy.hasId(related)) {\n              recursionList.push(related);\n            }\n            path += issuerCopy.getId(related);\n          }\n          if (chosenPath.length !== 0 && path > chosenPath) {\n            nextPermutation = true;\n            break;\n          }\n        }\n        if (nextPermutation) {\n          continue;\n        }\n        for (const related of recursionList) {\n          const result = this.hashNDegreeQuads(related, issuerCopy);\n          path += issuerCopy.getId(related);\n          path += `<${result.hash}>`;\n          issuerCopy = result.issuer;\n          if (chosenPath.length !== 0 && path > chosenPath) {\n            nextPermutation = true;\n            break;\n          }\n        }\n        if (nextPermutation) {\n          continue;\n        }\n        if (chosenPath.length === 0 || path < chosenPath) {\n          chosenPath = path;\n          chosenIssuer = issuerCopy;\n        }\n      }\n      md.update(chosenPath);\n      issuer = chosenIssuer;\n    }\n    return { hash: md.digest(), issuer };\n  }\n  // helper for modifying component during Hash First Degree Quads\n  modifyFirstDegreeComponent(id2, component) {\n    if (component.termType !== \"BlankNode\") {\n      return component;\n    }\n    return {\n      termType: \"BlankNode\",\n      value: component.value === id2 ? \"_:a\" : \"_:z\"\n    };\n  }\n  // helper for getting a related predicate\n  getRelatedPredicate(quad) {\n    return `<${quad.predicate.value}>`;\n  }\n  // helper for creating hash to related blank nodes map\n  createHashToRelated(id2, issuer) {\n    const hashToRelated = /* @__PURE__ */ new Map();\n    const quads = this.blankNodeInfo.get(id2).quads;\n    for (const quad of quads) {\n      this._addRelatedBlankNodeHash({\n        quad,\n        component: quad.subject,\n        position: \"s\",\n        id: id2,\n        issuer,\n        hashToRelated\n      });\n      this._addRelatedBlankNodeHash({\n        quad,\n        component: quad.object,\n        position: \"o\",\n        id: id2,\n        issuer,\n        hashToRelated\n      });\n      this._addRelatedBlankNodeHash({\n        quad,\n        component: quad.graph,\n        position: \"g\",\n        id: id2,\n        issuer,\n        hashToRelated\n      });\n    }\n    return hashToRelated;\n  }\n  _hashAndTrackBlankNode({ id: id2, hashToBlankNodes }) {\n    const hash = this.hashFirstDegreeQuads(id2);\n    const idList = hashToBlankNodes.get(hash);\n    if (!idList) {\n      hashToBlankNodes.set(hash, [id2]);\n    } else {\n      idList.push(id2);\n    }\n  }\n  _addBlankNodeQuadInfo({ quad, component }) {\n    if (component.termType !== \"BlankNode\") {\n      return;\n    }\n    const id2 = component.value;\n    const info = this.blankNodeInfo.get(id2);\n    if (info) {\n      info.quads.add(quad);\n    } else {\n      this.blankNodeInfo.set(id2, { quads: /* @__PURE__ */ new Set([quad]), hash: null });\n    }\n  }\n  _addRelatedBlankNodeHash({ quad, component, position, id: id2, issuer, hashToRelated }) {\n    if (!(component.termType === \"BlankNode\" && component.value !== id2)) {\n      return;\n    }\n    const related = component.value;\n    const hash = this.hashRelatedBlankNode(related, quad, issuer, position);\n    const entries = hashToRelated.get(hash);\n    if (entries) {\n      entries.push(related);\n    } else {\n      hashToRelated.set(hash, [related]);\n    }\n  }\n  // canonical ids for 7.1\n  _componentWithCanonicalId({ component }) {\n    if (component.termType === \"BlankNode\" && !component.value.startsWith(this.canonicalIssuer.prefix)) {\n      return {\n        termType: \"BlankNode\",\n        value: this.canonicalIssuer.getId(component.value)\n      };\n    }\n    return component;\n  }\n};\nfunction _stringHashCompare(a2, b2) {\n  return a2.hash < b2.hash ? -1 : a2.hash > b2.hash ? 1 : 0;\n}\n/*!\n * Copyright (c) 2016-2021 Digital Bazaar, Inc. All rights reserved.\n */\nconst MessageDigest2 = MessageDigestBrowser;\nconst URDNA2015Sync2 = URDNA2015Sync_1;\nvar URGNA2012Sync = class URDNA2012Sync extends URDNA2015Sync2 {\n  constructor() {\n    super();\n    this.name = \"URGNA2012\";\n    this.createMessageDigest = () => new MessageDigest2(\"sha1\");\n  }\n  // helper for modifying component during Hash First Degree Quads\n  modifyFirstDegreeComponent(id2, component, key) {\n    if (component.termType !== \"BlankNode\") {\n      return component;\n    }\n    if (key === \"graph\") {\n      return {\n        termType: \"BlankNode\",\n        value: \"_:g\"\n      };\n    }\n    return {\n      termType: \"BlankNode\",\n      value: component.value === id2 ? \"_:a\" : \"_:z\"\n    };\n  }\n  // helper for getting a related predicate\n  getRelatedPredicate(quad) {\n    return quad.predicate.value;\n  }\n  // helper for creating hash to related blank nodes map\n  createHashToRelated(id2, issuer) {\n    const hashToRelated = /* @__PURE__ */ new Map();\n    const quads = this.blankNodeInfo.get(id2).quads;\n    for (const quad of quads) {\n      let position;\n      let related;\n      if (quad.subject.termType === \"BlankNode\" && quad.subject.value !== id2) {\n        related = quad.subject.value;\n        position = \"p\";\n      } else if (quad.object.termType === \"BlankNode\" && quad.object.value !== id2) {\n        related = quad.object.value;\n        position = \"r\";\n      } else {\n        continue;\n      }\n      const hash = this.hashRelatedBlankNode(related, quad, issuer, position);\n      const entries = hashToRelated.get(hash);\n      if (entries) {\n        entries.push(related);\n      } else {\n        hashToRelated.set(hash, [related]);\n      }\n    }\n    return hashToRelated;\n  }\n};\nconst __viteBrowserExternal = {};\nconst __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  default: __viteBrowserExternal\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst require$$4 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);\n(function(exports2) {\n  const URDNA20153 = URDNA2015_1;\n  const URGNA2012$1 = URGNA2012;\n  const URDNA2015Sync3 = URDNA2015Sync_1;\n  const URGNA2012Sync$1 = URGNA2012Sync;\n  let rdfCanonizeNative;\n  try {\n    rdfCanonizeNative = require$$4;\n  } catch (e2) {\n  }\n  function _inputToDataset(input) {\n    if (!Array.isArray(input)) {\n      return exports2.NQuads.legacyDatasetToQuads(input);\n    }\n    return input;\n  }\n  exports2.NQuads = NQuads_1;\n  exports2.IdentifierIssuer = IdentifierIssuer_1;\n  exports2._rdfCanonizeNative = function(api2) {\n    if (api2) {\n      rdfCanonizeNative = api2;\n    }\n    return rdfCanonizeNative;\n  };\n  exports2.canonize = async function(input, options) {\n    const dataset = _inputToDataset(input);\n    if (options.useNative) {\n      if (!rdfCanonizeNative) {\n        throw new Error(\"rdf-canonize-native not available\");\n      }\n      if (options.createMessageDigest) {\n        throw new Error(\n          '\"createMessageDigest\" cannot be used with \"useNative\".'\n        );\n      }\n      return new Promise((resolve2, reject) => rdfCanonizeNative.canonize(dataset, options, (err, canonical) => err ? reject(err) : resolve2(canonical)));\n    }\n    if (options.algorithm === \"URDNA2015\") {\n      return new URDNA20153(options).main(dataset);\n    }\n    if (options.algorithm === \"URGNA2012\") {\n      if (options.createMessageDigest) {\n        throw new Error(\n          '\"createMessageDigest\" cannot be used with \"URGNA2012\".'\n        );\n      }\n      return new URGNA2012$1(options).main(dataset);\n    }\n    if (!(\"algorithm\" in options)) {\n      throw new Error(\"No RDF Dataset Canonicalization algorithm specified.\");\n    }\n    throw new Error(\n      \"Invalid RDF Dataset Canonicalization algorithm: \" + options.algorithm\n    );\n  };\n  exports2._canonizeSync = function(input, options) {\n    const dataset = _inputToDataset(input);\n    if (options.useNative) {\n      if (!rdfCanonizeNative) {\n        throw new Error(\"rdf-canonize-native not available\");\n      }\n      if (options.createMessageDigest) {\n        throw new Error(\n          '\"createMessageDigest\" cannot be used with \"useNative\".'\n        );\n      }\n      return rdfCanonizeNative.canonizeSync(dataset, options);\n    }\n    if (options.algorithm === \"URDNA2015\") {\n      return new URDNA2015Sync3(options).main(dataset);\n    }\n    if (options.algorithm === \"URGNA2012\") {\n      if (options.createMessageDigest) {\n        throw new Error(\n          '\"createMessageDigest\" cannot be used with \"URGNA2012\".'\n        );\n      }\n      return new URGNA2012Sync$1(options).main(dataset);\n    }\n    if (!(\"algorithm\" in options)) {\n      throw new Error(\"No RDF Dataset Canonicalization algorithm specified.\");\n    }\n    throw new Error(\n      \"Invalid RDF Dataset Canonicalization algorithm: \" + options.algorithm\n    );\n  };\n})(lib$1);\nvar rdfCanonize = lib$1;\nconst api$d = {};\nvar types$7 = api$d;\napi$d.isArray = Array.isArray;\napi$d.isBoolean = (v2) => typeof v2 === \"boolean\" || Object.prototype.toString.call(v2) === \"[object Boolean]\";\napi$d.isDouble = (v2) => api$d.isNumber(v2) && (String(v2).indexOf(\".\") !== -1 || Math.abs(v2) >= 1e21);\napi$d.isEmptyObject = (v2) => api$d.isObject(v2) && Object.keys(v2).length === 0;\napi$d.isNumber = (v2) => typeof v2 === \"number\" || Object.prototype.toString.call(v2) === \"[object Number]\";\napi$d.isNumeric = (v2) => !isNaN(parseFloat(v2)) && isFinite(v2);\napi$d.isObject = (v2) => Object.prototype.toString.call(v2) === \"[object Object]\";\napi$d.isString = (v2) => typeof v2 === \"string\" || Object.prototype.toString.call(v2) === \"[object String]\";\napi$d.isUndefined = (v2) => typeof v2 === \"undefined\";\nconst types$6 = types$7;\nconst api$c = {};\nvar graphTypes$5 = api$c;\napi$c.isSubject = (v2) => {\n  if (types$6.isObject(v2) && !(\"@value\" in v2 || \"@set\" in v2 || \"@list\" in v2)) {\n    const keyCount = Object.keys(v2).length;\n    return keyCount > 1 || !(\"@id\" in v2);\n  }\n  return false;\n};\napi$c.isSubjectReference = (v2) => (\n  // Note: A value is a subject reference if all of these hold true:\n  // 1. It is an Object.\n  // 2. It has a single key: @id.\n  types$6.isObject(v2) && Object.keys(v2).length === 1 && \"@id\" in v2\n);\napi$c.isValue = (v2) => (\n  // Note: A value is a @value if all of these hold true:\n  // 1. It is an Object.\n  // 2. It has the @value property.\n  types$6.isObject(v2) && \"@value\" in v2\n);\napi$c.isList = (v2) => (\n  // Note: A value is a @list if all of these hold true:\n  // 1. It is an Object.\n  // 2. It has the @list property.\n  types$6.isObject(v2) && \"@list\" in v2\n);\napi$c.isGraph = (v2) => {\n  return types$6.isObject(v2) && \"@graph\" in v2 && Object.keys(v2).filter((key) => key !== \"@id\" && key !== \"@index\").length === 1;\n};\napi$c.isSimpleGraph = (v2) => {\n  return api$c.isGraph(v2) && !(\"@id\" in v2);\n};\napi$c.isBlankNode = (v2) => {\n  if (types$6.isObject(v2)) {\n    if (\"@id\" in v2) {\n      const id2 = v2[\"@id\"];\n      return !types$6.isString(id2) || id2.indexOf(\"_:\") === 0;\n    }\n    return Object.keys(v2).length === 0 || !(\"@value\" in v2 || \"@set\" in v2 || \"@list\" in v2);\n  }\n  return false;\n};\nvar JsonLdError_1 = class JsonLdError extends Error {\n  /**\n   * Creates a JSON-LD Error.\n   *\n   * @param msg the error message.\n   * @param type the error type.\n   * @param details the error details.\n   */\n  constructor(message = \"An unspecified JSON-LD error occurred.\", name = \"jsonld.Error\", details = {}) {\n    super(message);\n    this.name = name;\n    this.message = message;\n    this.details = details;\n  }\n};\nconst graphTypes$4 = graphTypes$5;\nconst types$5 = types$7;\nconst IdentifierIssuer$1 = rdfCanonize.IdentifierIssuer;\nconst JsonLdError$b = JsonLdError_1;\nconst REGEX_BCP47$3 = /^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$/;\nconst REGEX_LINK_HEADERS = /(?:<[^>]*?>|\"[^\"]*?\"|[^,])+/g;\nconst REGEX_LINK_HEADER$1 = /\\s*<([^>]*?)>\\s*(?:;\\s*(.*))?/;\nconst REGEX_LINK_HEADER_PARAMS = /(.*?)=(?:(?:\"([^\"]*?)\")|([^\"]*?))\\s*(?:(?:;\\s*)|$)/g;\nconst REGEX_KEYWORD$3 = /^@[a-zA-Z]+$/;\nconst DEFAULTS = {\n  headers: {\n    accept: \"application/ld+json, application/json\"\n  }\n};\nconst api$b = {};\nvar util$5 = api$b;\napi$b.IdentifierIssuer = IdentifierIssuer$1;\napi$b.REGEX_BCP47 = REGEX_BCP47$3;\napi$b.REGEX_KEYWORD = REGEX_KEYWORD$3;\napi$b.clone = function(value) {\n  if (value && typeof value === \"object\") {\n    let rval;\n    if (types$5.isArray(value)) {\n      rval = [];\n      for (let i3 = 0; i3 < value.length; ++i3) {\n        rval[i3] = api$b.clone(value[i3]);\n      }\n    } else if (value instanceof Map) {\n      rval = /* @__PURE__ */ new Map();\n      for (const [k2, v2] of value) {\n        rval.set(k2, api$b.clone(v2));\n      }\n    } else if (value instanceof Set) {\n      rval = /* @__PURE__ */ new Set();\n      for (const v2 of value) {\n        rval.add(api$b.clone(v2));\n      }\n    } else if (types$5.isObject(value)) {\n      rval = {};\n      for (const key in value) {\n        rval[key] = api$b.clone(value[key]);\n      }\n    } else {\n      rval = value.toString();\n    }\n    return rval;\n  }\n  return value;\n};\napi$b.asArray = function(value) {\n  return Array.isArray(value) ? value : [value];\n};\napi$b.buildHeaders = (headers = {}) => {\n  const hasAccept = Object.keys(headers).some(\n    (h3) => h3.toLowerCase() === \"accept\"\n  );\n  if (hasAccept) {\n    throw new RangeError(\n      'Accept header may not be specified; only \"' + DEFAULTS.headers.accept + '\" is supported.'\n    );\n  }\n  return Object.assign({ Accept: DEFAULTS.headers.accept }, headers);\n};\napi$b.parseLinkHeader = (header) => {\n  const rval = {};\n  const entries = header.match(REGEX_LINK_HEADERS);\n  for (let i3 = 0; i3 < entries.length; ++i3) {\n    let match3 = entries[i3].match(REGEX_LINK_HEADER$1);\n    if (!match3) {\n      continue;\n    }\n    const result = { target: match3[1] };\n    const params = match3[2];\n    while (match3 = REGEX_LINK_HEADER_PARAMS.exec(params)) {\n      result[match3[1]] = match3[2] === void 0 ? match3[3] : match3[2];\n    }\n    const rel = result.rel || \"\";\n    if (Array.isArray(rval[rel])) {\n      rval[rel].push(result);\n    } else if (rval.hasOwnProperty(rel)) {\n      rval[rel] = [rval[rel], result];\n    } else {\n      rval[rel] = result;\n    }\n  }\n  return rval;\n};\napi$b.validateTypeValue = (v2, isFrame) => {\n  if (types$5.isString(v2)) {\n    return;\n  }\n  if (types$5.isArray(v2) && v2.every((vv) => types$5.isString(vv))) {\n    return;\n  }\n  if (isFrame && types$5.isObject(v2)) {\n    switch (Object.keys(v2).length) {\n      case 0:\n        return;\n      case 1:\n        if (\"@default\" in v2 && api$b.asArray(v2[\"@default\"]).every((vv) => types$5.isString(vv))) {\n          return;\n        }\n    }\n  }\n  throw new JsonLdError$b(\n    'Invalid JSON-LD syntax; \"@type\" value must a string, an array of strings, an empty object, or a default object.',\n    \"jsonld.SyntaxError\",\n    { code: \"invalid type value\", value: v2 }\n  );\n};\napi$b.hasProperty = (subject, property) => {\n  if (subject.hasOwnProperty(property)) {\n    const value = subject[property];\n    return !types$5.isArray(value) || value.length > 0;\n  }\n  return false;\n};\napi$b.hasValue = (subject, property, value) => {\n  if (api$b.hasProperty(subject, property)) {\n    let val = subject[property];\n    const isList = graphTypes$4.isList(val);\n    if (types$5.isArray(val) || isList) {\n      if (isList) {\n        val = val[\"@list\"];\n      }\n      for (let i3 = 0; i3 < val.length; ++i3) {\n        if (api$b.compareValues(value, val[i3])) {\n          return true;\n        }\n      }\n    } else if (!types$5.isArray(value)) {\n      return api$b.compareValues(value, val);\n    }\n  }\n  return false;\n};\napi$b.addValue = (subject, property, value, options) => {\n  options = options || {};\n  if (!(\"propertyIsArray\" in options)) {\n    options.propertyIsArray = false;\n  }\n  if (!(\"valueIsArray\" in options)) {\n    options.valueIsArray = false;\n  }\n  if (!(\"allowDuplicate\" in options)) {\n    options.allowDuplicate = true;\n  }\n  if (!(\"prependValue\" in options)) {\n    options.prependValue = false;\n  }\n  if (options.valueIsArray) {\n    subject[property] = value;\n  } else if (types$5.isArray(value)) {\n    if (value.length === 0 && options.propertyIsArray && !subject.hasOwnProperty(property)) {\n      subject[property] = [];\n    }\n    if (options.prependValue) {\n      value = value.concat(subject[property]);\n      subject[property] = [];\n    }\n    for (let i3 = 0; i3 < value.length; ++i3) {\n      api$b.addValue(subject, property, value[i3], options);\n    }\n  } else if (subject.hasOwnProperty(property)) {\n    const hasValue = !options.allowDuplicate && api$b.hasValue(subject, property, value);\n    if (!types$5.isArray(subject[property]) && (!hasValue || options.propertyIsArray)) {\n      subject[property] = [subject[property]];\n    }\n    if (!hasValue) {\n      if (options.prependValue) {\n        subject[property].unshift(value);\n      } else {\n        subject[property].push(value);\n      }\n    }\n  } else {\n    subject[property] = options.propertyIsArray ? [value] : value;\n  }\n};\napi$b.getValues = (subject, property) => [].concat(subject[property] || []);\napi$b.removeProperty = (subject, property) => {\n  delete subject[property];\n};\napi$b.removeValue = (subject, property, value, options) => {\n  options = options || {};\n  if (!(\"propertyIsArray\" in options)) {\n    options.propertyIsArray = false;\n  }\n  const values = api$b.getValues(subject, property).filter(\n    (e2) => !api$b.compareValues(e2, value)\n  );\n  if (values.length === 0) {\n    api$b.removeProperty(subject, property);\n  } else if (values.length === 1 && !options.propertyIsArray) {\n    subject[property] = values[0];\n  } else {\n    subject[property] = values;\n  }\n};\napi$b.relabelBlankNodes = (input, options) => {\n  options = options || {};\n  const issuer = options.issuer || new IdentifierIssuer$1(\"_:b\");\n  return _labelBlankNodes(issuer, input);\n};\napi$b.compareValues = (v1, v2) => {\n  if (v1 === v2) {\n    return true;\n  }\n  if (graphTypes$4.isValue(v1) && graphTypes$4.isValue(v2) && v1[\"@value\"] === v2[\"@value\"] && v1[\"@type\"] === v2[\"@type\"] && v1[\"@language\"] === v2[\"@language\"] && v1[\"@index\"] === v2[\"@index\"]) {\n    return true;\n  }\n  if (types$5.isObject(v1) && \"@id\" in v1 && types$5.isObject(v2) && \"@id\" in v2) {\n    return v1[\"@id\"] === v2[\"@id\"];\n  }\n  return false;\n};\napi$b.compareShortestLeast = (a2, b2) => {\n  if (a2.length < b2.length) {\n    return -1;\n  }\n  if (b2.length < a2.length) {\n    return 1;\n  }\n  if (a2 === b2) {\n    return 0;\n  }\n  return a2 < b2 ? -1 : 1;\n};\nfunction _labelBlankNodes(issuer, element) {\n  if (types$5.isArray(element)) {\n    for (let i3 = 0; i3 < element.length; ++i3) {\n      element[i3] = _labelBlankNodes(issuer, element[i3]);\n    }\n  } else if (graphTypes$4.isList(element)) {\n    element[\"@list\"] = _labelBlankNodes(issuer, element[\"@list\"]);\n  } else if (types$5.isObject(element)) {\n    if (graphTypes$4.isBlankNode(element)) {\n      element[\"@id\"] = issuer.getId(element[\"@id\"]);\n    }\n    const keys2 = Object.keys(element).sort();\n    for (let ki = 0; ki < keys2.length; ++ki) {\n      const key = keys2[ki];\n      if (key !== \"@id\") {\n        element[key] = _labelBlankNodes(issuer, element[key]);\n      }\n    }\n  }\n  return element;\n}\nconst RDF = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\";\nconst XSD = \"http://www.w3.org/2001/XMLSchema#\";\nvar constants = {\n  // TODO: Deprecated and will be removed later. Use LINK_HEADER_CONTEXT.\n  LINK_HEADER_REL: \"http://www.w3.org/ns/json-ld#context\",\n  LINK_HEADER_CONTEXT: \"http://www.w3.org/ns/json-ld#context\",\n  RDF,\n  RDF_LIST: RDF + \"List\",\n  RDF_FIRST: RDF + \"first\",\n  RDF_REST: RDF + \"rest\",\n  RDF_NIL: RDF + \"nil\",\n  RDF_TYPE: RDF + \"type\",\n  RDF_PLAIN_LITERAL: RDF + \"PlainLiteral\",\n  RDF_XML_LITERAL: RDF + \"XMLLiteral\",\n  RDF_JSON_LITERAL: RDF + \"JSON\",\n  RDF_OBJECT: RDF + \"object\",\n  RDF_LANGSTRING: RDF + \"langString\",\n  XSD,\n  XSD_BOOLEAN: XSD + \"boolean\",\n  XSD_DOUBLE: XSD + \"double\",\n  XSD_INTEGER: XSD + \"integer\",\n  XSD_STRING: XSD + \"string\"\n};\nvar RequestQueue_1;\nvar hasRequiredRequestQueue;\nfunction requireRequestQueue() {\n  if (hasRequiredRequestQueue) return RequestQueue_1;\n  hasRequiredRequestQueue = 1;\n  RequestQueue_1 = class RequestQueue {\n    /**\n     * Creates a simple queue for requesting documents.\n     */\n    constructor() {\n      this._requests = {};\n    }\n    wrapLoader(loader) {\n      const self2 = this;\n      self2._loader = loader;\n      return function() {\n        return self2.add.apply(self2, arguments);\n      };\n    }\n    async add(url2) {\n      let promise = this._requests[url2];\n      if (promise) {\n        return Promise.resolve(promise);\n      }\n      promise = this._requests[url2] = this._loader(url2);\n      try {\n        return await promise;\n      } finally {\n        delete this._requests[url2];\n      }\n    }\n  };\n  return RequestQueue_1;\n}\nconst types$4 = types$7;\nconst api$a = {};\nvar url$1 = api$a;\napi$a.parsers = {\n  simple: {\n    // RFC 3986 basic parts\n    keys: [\n      \"href\",\n      \"scheme\",\n      \"authority\",\n      \"path\",\n      \"query\",\n      \"fragment\"\n    ],\n    /* eslint-disable-next-line max-len */\n    regex: /^(?:([^:\\/?#]+):)?(?:\\/\\/([^\\/?#]*))?([^?#]*)(?:\\?([^#]*))?(?:#(.*))?/\n  },\n  full: {\n    keys: [\n      \"href\",\n      \"protocol\",\n      \"scheme\",\n      \"authority\",\n      \"auth\",\n      \"user\",\n      \"password\",\n      \"hostname\",\n      \"port\",\n      \"path\",\n      \"directory\",\n      \"file\",\n      \"query\",\n      \"fragment\"\n    ],\n    /* eslint-disable-next-line max-len */\n    regex: /^(([a-zA-Z][a-zA-Z0-9+-.]*):)?(?:\\/\\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\\/?#]*)(?::(\\d*))?))?(?:(((?:[^?#\\/]*\\/)*)([^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/\n  }\n};\napi$a.parse = (str, parser) => {\n  const parsed = {};\n  const o2 = api$a.parsers[parser || \"full\"];\n  const m2 = o2.regex.exec(str);\n  let i3 = o2.keys.length;\n  while (i3--) {\n    parsed[o2.keys[i3]] = m2[i3] === void 0 ? null : m2[i3];\n  }\n  if (parsed.scheme === \"https\" && parsed.port === \"443\" || parsed.scheme === \"http\" && parsed.port === \"80\") {\n    parsed.href = parsed.href.replace(\":\" + parsed.port, \"\");\n    parsed.authority = parsed.authority.replace(\":\" + parsed.port, \"\");\n    parsed.port = null;\n  }\n  parsed.normalizedPath = api$a.removeDotSegments(parsed.path);\n  return parsed;\n};\napi$a.prependBase = (base2, iri) => {\n  if (base2 === null) {\n    return iri;\n  }\n  if (api$a.isAbsolute(iri)) {\n    return iri;\n  }\n  if (!base2 || types$4.isString(base2)) {\n    base2 = api$a.parse(base2 || \"\");\n  }\n  const rel = api$a.parse(iri);\n  const transform = {\n    protocol: base2.protocol || \"\"\n  };\n  if (rel.authority !== null) {\n    transform.authority = rel.authority;\n    transform.path = rel.path;\n    transform.query = rel.query;\n  } else {\n    transform.authority = base2.authority;\n    if (rel.path === \"\") {\n      transform.path = base2.path;\n      if (rel.query !== null) {\n        transform.query = rel.query;\n      } else {\n        transform.query = base2.query;\n      }\n    } else {\n      if (rel.path.indexOf(\"/\") === 0) {\n        transform.path = rel.path;\n      } else {\n        let path = base2.path;\n        path = path.substr(0, path.lastIndexOf(\"/\") + 1);\n        if ((path.length > 0 || base2.authority) && path.substr(-1) !== \"/\") {\n          path += \"/\";\n        }\n        path += rel.path;\n        transform.path = path;\n      }\n      transform.query = rel.query;\n    }\n  }\n  if (rel.path !== \"\") {\n    transform.path = api$a.removeDotSegments(transform.path);\n  }\n  let rval = transform.protocol;\n  if (transform.authority !== null) {\n    rval += \"//\" + transform.authority;\n  }\n  rval += transform.path;\n  if (transform.query !== null) {\n    rval += \"?\" + transform.query;\n  }\n  if (rel.fragment !== null) {\n    rval += \"#\" + rel.fragment;\n  }\n  if (rval === \"\") {\n    rval = \"./\";\n  }\n  return rval;\n};\napi$a.removeBase = (base2, iri) => {\n  if (base2 === null) {\n    return iri;\n  }\n  if (!base2 || types$4.isString(base2)) {\n    base2 = api$a.parse(base2 || \"\");\n  }\n  let root2 = \"\";\n  if (base2.href !== \"\") {\n    root2 += (base2.protocol || \"\") + \"//\" + (base2.authority || \"\");\n  } else if (iri.indexOf(\"//\")) {\n    root2 += \"//\";\n  }\n  if (iri.indexOf(root2) !== 0) {\n    return iri;\n  }\n  const rel = api$a.parse(iri.substr(root2.length));\n  const baseSegments = base2.normalizedPath.split(\"/\");\n  const iriSegments = rel.normalizedPath.split(\"/\");\n  const last = rel.fragment || rel.query ? 0 : 1;\n  while (baseSegments.length > 0 && iriSegments.length > last) {\n    if (baseSegments[0] !== iriSegments[0]) {\n      break;\n    }\n    baseSegments.shift();\n    iriSegments.shift();\n  }\n  let rval = \"\";\n  if (baseSegments.length > 0) {\n    baseSegments.pop();\n    for (let i3 = 0; i3 < baseSegments.length; ++i3) {\n      rval += \"../\";\n    }\n  }\n  rval += iriSegments.join(\"/\");\n  if (rel.query !== null) {\n    rval += \"?\" + rel.query;\n  }\n  if (rel.fragment !== null) {\n    rval += \"#\" + rel.fragment;\n  }\n  if (rval === \"\") {\n    rval = \"./\";\n  }\n  return rval;\n};\napi$a.removeDotSegments = (path) => {\n  if (path.length === 0) {\n    return \"\";\n  }\n  const input = path.split(\"/\");\n  const output = [];\n  while (input.length > 0) {\n    const next = input.shift();\n    const done = input.length === 0;\n    if (next === \".\") {\n      if (done) {\n        output.push(\"\");\n      }\n      continue;\n    }\n    if (next === \"..\") {\n      output.pop();\n      if (done) {\n        output.push(\"\");\n      }\n      continue;\n    }\n    output.push(next);\n  }\n  if (path[0] === \"/\" && output.length > 0 && output[0] !== \"\") {\n    output.unshift(\"\");\n  }\n  if (output.length === 1 && output[0] === \"\") {\n    return \"/\";\n  }\n  return output.join(\"/\");\n};\nconst isAbsoluteRegex = /^([A-Za-z][A-Za-z0-9+-.]*|_):[^\\s]*$/;\napi$a.isAbsolute = (v2) => types$4.isString(v2) && isAbsoluteRegex.test(v2);\napi$a.isRelative = (v2) => types$4.isString(v2);\nconst { parseLinkHeader, buildHeaders } = util$5;\nconst { LINK_HEADER_CONTEXT } = constants;\nconst JsonLdError$a = JsonLdError_1;\nconst RequestQueue = requireRequestQueue();\nconst { prependBase: prependBase$2 } = url$1;\nconst REGEX_LINK_HEADER = /(^|(\\r\\n))link:/i;\nvar xhr = ({\n  secure,\n  headers = {},\n  xhr: xhr2\n} = { headers: {} }) => {\n  headers = buildHeaders(headers);\n  const queue = new RequestQueue();\n  return queue.wrapLoader(loader);\n  async function loader(url2) {\n    if (url2.indexOf(\"http:\") !== 0 && url2.indexOf(\"https:\") !== 0) {\n      throw new JsonLdError$a(\n        'URL could not be dereferenced; only \"http\" and \"https\" URLs are supported.',\n        \"jsonld.InvalidUrl\",\n        { code: \"loading document failed\", url: url2 }\n      );\n    }\n    if (secure && url2.indexOf(\"https\") !== 0) {\n      throw new JsonLdError$a(\n        `URL could not be dereferenced; secure mode is enabled and the URL's scheme is not \"https\".`,\n        \"jsonld.InvalidUrl\",\n        { code: \"loading document failed\", url: url2 }\n      );\n    }\n    let req;\n    try {\n      req = await _get(xhr2, url2, headers);\n    } catch (e2) {\n      throw new JsonLdError$a(\n        \"URL could not be dereferenced, an error occurred.\",\n        \"jsonld.LoadDocumentError\",\n        { code: \"loading document failed\", url: url2, cause: e2 }\n      );\n    }\n    if (req.status >= 400) {\n      throw new JsonLdError$a(\n        \"URL could not be dereferenced: \" + req.statusText,\n        \"jsonld.LoadDocumentError\",\n        {\n          code: \"loading document failed\",\n          url: url2,\n          httpStatusCode: req.status\n        }\n      );\n    }\n    let doc = { contextUrl: null, documentUrl: url2, document: req.response };\n    let alternate = null;\n    const contentType = req.getResponseHeader(\"Content-Type\");\n    let linkHeader;\n    if (REGEX_LINK_HEADER.test(req.getAllResponseHeaders())) {\n      linkHeader = req.getResponseHeader(\"Link\");\n    }\n    if (linkHeader && contentType !== \"application/ld+json\") {\n      const linkHeaders = parseLinkHeader(linkHeader);\n      const linkedContext = linkHeaders[LINK_HEADER_CONTEXT];\n      if (Array.isArray(linkedContext)) {\n        throw new JsonLdError$a(\n          \"URL could not be dereferenced, it has more than one associated HTTP Link Header.\",\n          \"jsonld.InvalidUrl\",\n          { code: \"multiple context link headers\", url: url2 }\n        );\n      }\n      if (linkedContext) {\n        doc.contextUrl = linkedContext.target;\n      }\n      alternate = linkHeaders.alternate;\n      if (alternate && alternate.type == \"application/ld+json\" && !(contentType || \"\").match(/^application\\/(\\w*\\+)?json$/)) {\n        doc = await loader(prependBase$2(url2, alternate.target));\n      }\n    }\n    return doc;\n  }\n};\nfunction _get(xhr2, url2, headers) {\n  xhr2 = xhr2 || XMLHttpRequest;\n  const req = new xhr2();\n  return new Promise((resolve2, reject) => {\n    req.onload = () => resolve2(req);\n    req.onerror = (err) => reject(err);\n    req.open(\"GET\", url2, true);\n    for (const k2 in headers) {\n      req.setRequestHeader(k2, headers[k2]);\n    }\n    req.send();\n  });\n}\nconst xhrLoader = xhr;\nconst api$9 = {};\nvar platformBrowser = api$9;\napi$9.setupDocumentLoaders = function(jsonld2) {\n  if (typeof XMLHttpRequest !== \"undefined\") {\n    jsonld2.documentLoaders.xhr = xhrLoader;\n    jsonld2.useDocumentLoader(\"xhr\");\n  }\n};\napi$9.setupGlobals = function(jsonld2) {\n  if (typeof globalThis.JsonLdProcessor === \"undefined\") {\n    Object.defineProperty(globalThis, \"JsonLdProcessor\", {\n      writable: true,\n      enumerable: false,\n      configurable: true,\n      value: jsonld2.JsonLdProcessor\n    });\n  }\n};\nvar iterator;\nvar hasRequiredIterator;\nfunction requireIterator() {\n  if (hasRequiredIterator) return iterator;\n  hasRequiredIterator = 1;\n  iterator = function(Yallist2) {\n    Yallist2.prototype[Symbol.iterator] = function* () {\n      for (let walker = this.head; walker; walker = walker.next) {\n        yield walker.value;\n      }\n    };\n  };\n  return iterator;\n}\nvar yallist = Yallist$1;\nYallist$1.Node = Node$3;\nYallist$1.create = Yallist$1;\nfunction Yallist$1(list2) {\n  var self2 = this;\n  if (!(self2 instanceof Yallist$1)) {\n    self2 = new Yallist$1();\n  }\n  self2.tail = null;\n  self2.head = null;\n  self2.length = 0;\n  if (list2 && typeof list2.forEach === \"function\") {\n    list2.forEach(function(item) {\n      self2.push(item);\n    });\n  } else if (arguments.length > 0) {\n    for (var i3 = 0, l2 = arguments.length; i3 < l2; i3++) {\n      self2.push(arguments[i3]);\n    }\n  }\n  return self2;\n}\nYallist$1.prototype.removeNode = function(node) {\n  if (node.list !== this) {\n    throw new Error(\"removing node which does not belong to this list\");\n  }\n  var next = node.next;\n  var prev = node.prev;\n  if (next) {\n    next.prev = prev;\n  }\n  if (prev) {\n    prev.next = next;\n  }\n  if (node === this.head) {\n    this.head = next;\n  }\n  if (node === this.tail) {\n    this.tail = prev;\n  }\n  node.list.length--;\n  node.next = null;\n  node.prev = null;\n  node.list = null;\n  return next;\n};\nYallist$1.prototype.unshiftNode = function(node) {\n  if (node === this.head) {\n    return;\n  }\n  if (node.list) {\n    node.list.removeNode(node);\n  }\n  var head = this.head;\n  node.list = this;\n  node.next = head;\n  if (head) {\n    head.prev = node;\n  }\n  this.head = node;\n  if (!this.tail) {\n    this.tail = node;\n  }\n  this.length++;\n};\nYallist$1.prototype.pushNode = function(node) {\n  if (node === this.tail) {\n    return;\n  }\n  if (node.list) {\n    node.list.removeNode(node);\n  }\n  var tail = this.tail;\n  node.list = this;\n  node.prev = tail;\n  if (tail) {\n    tail.next = node;\n  }\n  this.tail = node;\n  if (!this.head) {\n    this.head = node;\n  }\n  this.length++;\n};\nYallist$1.prototype.push = function() {\n  for (var i3 = 0, l2 = arguments.length; i3 < l2; i3++) {\n    push(this, arguments[i3]);\n  }\n  return this.length;\n};\nYallist$1.prototype.unshift = function() {\n  for (var i3 = 0, l2 = arguments.length; i3 < l2; i3++) {\n    unshift(this, arguments[i3]);\n  }\n  return this.length;\n};\nYallist$1.prototype.pop = function() {\n  if (!this.tail) {\n    return void 0;\n  }\n  var res = this.tail.value;\n  this.tail = this.tail.prev;\n  if (this.tail) {\n    this.tail.next = null;\n  } else {\n    this.head = null;\n  }\n  this.length--;\n  return res;\n};\nYallist$1.prototype.shift = function() {\n  if (!this.head) {\n    return void 0;\n  }\n  var res = this.head.value;\n  this.head = this.head.next;\n  if (this.head) {\n    this.head.prev = null;\n  } else {\n    this.tail = null;\n  }\n  this.length--;\n  return res;\n};\nYallist$1.prototype.forEach = function(fn, thisp) {\n  thisp = thisp || this;\n  for (var walker = this.head, i3 = 0; walker !== null; i3++) {\n    fn.call(thisp, walker.value, i3, this);\n    walker = walker.next;\n  }\n};\nYallist$1.prototype.forEachReverse = function(fn, thisp) {\n  thisp = thisp || this;\n  for (var walker = this.tail, i3 = this.length - 1; walker !== null; i3--) {\n    fn.call(thisp, walker.value, i3, this);\n    walker = walker.prev;\n  }\n};\nYallist$1.prototype.get = function(n3) {\n  for (var i3 = 0, walker = this.head; walker !== null && i3 < n3; i3++) {\n    walker = walker.next;\n  }\n  if (i3 === n3 && walker !== null) {\n    return walker.value;\n  }\n};\nYallist$1.prototype.getReverse = function(n3) {\n  for (var i3 = 0, walker = this.tail; walker !== null && i3 < n3; i3++) {\n    walker = walker.prev;\n  }\n  if (i3 === n3 && walker !== null) {\n    return walker.value;\n  }\n};\nYallist$1.prototype.map = function(fn, thisp) {\n  thisp = thisp || this;\n  var res = new Yallist$1();\n  for (var walker = this.head; walker !== null; ) {\n    res.push(fn.call(thisp, walker.value, this));\n    walker = walker.next;\n  }\n  return res;\n};\nYallist$1.prototype.mapReverse = function(fn, thisp) {\n  thisp = thisp || this;\n  var res = new Yallist$1();\n  for (var walker = this.tail; walker !== null; ) {\n    res.push(fn.call(thisp, walker.value, this));\n    walker = walker.prev;\n  }\n  return res;\n};\nYallist$1.prototype.reduce = function(fn, initial) {\n  var acc;\n  var walker = this.head;\n  if (arguments.length > 1) {\n    acc = initial;\n  } else if (this.head) {\n    walker = this.head.next;\n    acc = this.head.value;\n  } else {\n    throw new TypeError(\"Reduce of empty list with no initial value\");\n  }\n  for (var i3 = 0; walker !== null; i3++) {\n    acc = fn(acc, walker.value, i3);\n    walker = walker.next;\n  }\n  return acc;\n};\nYallist$1.prototype.reduceReverse = function(fn, initial) {\n  var acc;\n  var walker = this.tail;\n  if (arguments.length > 1) {\n    acc = initial;\n  } else if (this.tail) {\n    walker = this.tail.prev;\n    acc = this.tail.value;\n  } else {\n    throw new TypeError(\"Reduce of empty list with no initial value\");\n  }\n  for (var i3 = this.length - 1; walker !== null; i3--) {\n    acc = fn(acc, walker.value, i3);\n    walker = walker.prev;\n  }\n  return acc;\n};\nYallist$1.prototype.toArray = function() {\n  var arr = new Array(this.length);\n  for (var i3 = 0, walker = this.head; walker !== null; i3++) {\n    arr[i3] = walker.value;\n    walker = walker.next;\n  }\n  return arr;\n};\nYallist$1.prototype.toArrayReverse = function() {\n  var arr = new Array(this.length);\n  for (var i3 = 0, walker = this.tail; walker !== null; i3++) {\n    arr[i3] = walker.value;\n    walker = walker.prev;\n  }\n  return arr;\n};\nYallist$1.prototype.slice = function(from, to) {\n  to = to || this.length;\n  if (to < 0) {\n    to += this.length;\n  }\n  from = from || 0;\n  if (from < 0) {\n    from += this.length;\n  }\n  var ret = new Yallist$1();\n  if (to < from || to < 0) {\n    return ret;\n  }\n  if (from < 0) {\n    from = 0;\n  }\n  if (to > this.length) {\n    to = this.length;\n  }\n  for (var i3 = 0, walker = this.head; walker !== null && i3 < from; i3++) {\n    walker = walker.next;\n  }\n  for (; walker !== null && i3 < to; i3++, walker = walker.next) {\n    ret.push(walker.value);\n  }\n  return ret;\n};\nYallist$1.prototype.sliceReverse = function(from, to) {\n  to = to || this.length;\n  if (to < 0) {\n    to += this.length;\n  }\n  from = from || 0;\n  if (from < 0) {\n    from += this.length;\n  }\n  var ret = new Yallist$1();\n  if (to < from || to < 0) {\n    return ret;\n  }\n  if (from < 0) {\n    from = 0;\n  }\n  if (to > this.length) {\n    to = this.length;\n  }\n  for (var i3 = this.length, walker = this.tail; walker !== null && i3 > to; i3--) {\n    walker = walker.prev;\n  }\n  for (; walker !== null && i3 > from; i3--, walker = walker.prev) {\n    ret.push(walker.value);\n  }\n  return ret;\n};\nYallist$1.prototype.splice = function(start, deleteCount, ...nodes) {\n  if (start > this.length) {\n    start = this.length - 1;\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n  for (var i3 = 0, walker = this.head; walker !== null && i3 < start; i3++) {\n    walker = walker.next;\n  }\n  var ret = [];\n  for (var i3 = 0; walker && i3 < deleteCount; i3++) {\n    ret.push(walker.value);\n    walker = this.removeNode(walker);\n  }\n  if (walker === null) {\n    walker = this.tail;\n  }\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev;\n  }\n  for (var i3 = 0; i3 < nodes.length; i3++) {\n    walker = insert(this, walker, nodes[i3]);\n  }\n  return ret;\n};\nYallist$1.prototype.reverse = function() {\n  var head = this.head;\n  var tail = this.tail;\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p2 = walker.prev;\n    walker.prev = walker.next;\n    walker.next = p2;\n  }\n  this.head = tail;\n  this.tail = head;\n  return this;\n};\nfunction insert(self2, node, value) {\n  var inserted = node === self2.head ? new Node$3(value, null, node, self2) : new Node$3(value, node, node.next, self2);\n  if (inserted.next === null) {\n    self2.tail = inserted;\n  }\n  if (inserted.prev === null) {\n    self2.head = inserted;\n  }\n  self2.length++;\n  return inserted;\n}\nfunction push(self2, item) {\n  self2.tail = new Node$3(item, self2.tail, null, self2);\n  if (!self2.head) {\n    self2.head = self2.tail;\n  }\n  self2.length++;\n}\nfunction unshift(self2, item) {\n  self2.head = new Node$3(item, null, self2.head, self2);\n  if (!self2.tail) {\n    self2.tail = self2.head;\n  }\n  self2.length++;\n}\nfunction Node$3(value, prev, next, list2) {\n  if (!(this instanceof Node$3)) {\n    return new Node$3(value, prev, next, list2);\n  }\n  this.list = list2;\n  this.value = value;\n  if (prev) {\n    prev.next = this;\n    this.prev = prev;\n  } else {\n    this.prev = null;\n  }\n  if (next) {\n    next.prev = this;\n    this.next = next;\n  } else {\n    this.next = null;\n  }\n}\ntry {\n  requireIterator()(Yallist$1);\n} catch (er) {\n}\nconst Yallist = yallist;\nconst MAX = Symbol(\"max\");\nconst LENGTH = Symbol(\"length\");\nconst LENGTH_CALCULATOR = Symbol(\"lengthCalculator\");\nconst ALLOW_STALE = Symbol(\"allowStale\");\nconst MAX_AGE = Symbol(\"maxAge\");\nconst DISPOSE = Symbol(\"dispose\");\nconst NO_DISPOSE_ON_SET = Symbol(\"noDisposeOnSet\");\nconst LRU_LIST = Symbol(\"lruList\");\nconst CACHE = Symbol(\"cache\");\nconst UPDATE_AGE_ON_GET = Symbol(\"updateAgeOnGet\");\nconst naiveLength = () => 1;\nclass LRUCache {\n  constructor(options) {\n    if (typeof options === \"number\")\n      options = { max: options };\n    if (!options)\n      options = {};\n    if (options.max && (typeof options.max !== \"number\" || options.max < 0))\n      throw new TypeError(\"max must be a non-negative number\");\n    this[MAX] = options.max || Infinity;\n    const lc = options.length || naiveLength;\n    this[LENGTH_CALCULATOR] = typeof lc !== \"function\" ? naiveLength : lc;\n    this[ALLOW_STALE] = options.stale || false;\n    if (options.maxAge && typeof options.maxAge !== \"number\")\n      throw new TypeError(\"maxAge must be a number\");\n    this[MAX_AGE] = options.maxAge || 0;\n    this[DISPOSE] = options.dispose;\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;\n    this.reset();\n  }\n  // resize the cache when the max changes.\n  set max(mL) {\n    if (typeof mL !== \"number\" || mL < 0)\n      throw new TypeError(\"max must be a non-negative number\");\n    this[MAX] = mL || Infinity;\n    trim(this);\n  }\n  get max() {\n    return this[MAX];\n  }\n  set allowStale(allowStale) {\n    this[ALLOW_STALE] = !!allowStale;\n  }\n  get allowStale() {\n    return this[ALLOW_STALE];\n  }\n  set maxAge(mA) {\n    if (typeof mA !== \"number\")\n      throw new TypeError(\"maxAge must be a non-negative number\");\n    this[MAX_AGE] = mA;\n    trim(this);\n  }\n  get maxAge() {\n    return this[MAX_AGE];\n  }\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator(lC) {\n    if (typeof lC !== \"function\")\n      lC = naiveLength;\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC;\n      this[LENGTH] = 0;\n      this[LRU_LIST].forEach((hit) => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);\n        this[LENGTH] += hit.length;\n      });\n    }\n    trim(this);\n  }\n  get lengthCalculator() {\n    return this[LENGTH_CALCULATOR];\n  }\n  get length() {\n    return this[LENGTH];\n  }\n  get itemCount() {\n    return this[LRU_LIST].length;\n  }\n  rforEach(fn, thisp) {\n    thisp = thisp || this;\n    for (let walker = this[LRU_LIST].tail; walker !== null; ) {\n      const prev = walker.prev;\n      forEachStep(this, fn, walker, thisp);\n      walker = prev;\n    }\n  }\n  forEach(fn, thisp) {\n    thisp = thisp || this;\n    for (let walker = this[LRU_LIST].head; walker !== null; ) {\n      const next = walker.next;\n      forEachStep(this, fn, walker, thisp);\n      walker = next;\n    }\n  }\n  keys() {\n    return this[LRU_LIST].toArray().map((k2) => k2.key);\n  }\n  values() {\n    return this[LRU_LIST].toArray().map((k2) => k2.value);\n  }\n  reset() {\n    if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {\n      this[LRU_LIST].forEach((hit) => this[DISPOSE](hit.key, hit.value));\n    }\n    this[CACHE] = /* @__PURE__ */ new Map();\n    this[LRU_LIST] = new Yallist();\n    this[LENGTH] = 0;\n  }\n  dump() {\n    return this[LRU_LIST].map((hit) => isStale(this, hit) ? false : {\n      k: hit.key,\n      v: hit.value,\n      e: hit.now + (hit.maxAge || 0)\n    }).toArray().filter((h3) => h3);\n  }\n  dumpLru() {\n    return this[LRU_LIST];\n  }\n  set(key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE];\n    if (maxAge && typeof maxAge !== \"number\")\n      throw new TypeError(\"maxAge must be a number\");\n    const now = maxAge ? Date.now() : 0;\n    const len = this[LENGTH_CALCULATOR](value, key);\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key));\n        return false;\n      }\n      const node = this[CACHE].get(key);\n      const item = node.value;\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value);\n      }\n      item.now = now;\n      item.maxAge = maxAge;\n      item.value = value;\n      this[LENGTH] += len - item.length;\n      item.length = len;\n      this.get(key);\n      trim(this);\n      return true;\n    }\n    const hit = new Entry(key, value, len, now, maxAge);\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value);\n      return false;\n    }\n    this[LENGTH] += hit.length;\n    this[LRU_LIST].unshift(hit);\n    this[CACHE].set(key, this[LRU_LIST].head);\n    trim(this);\n    return true;\n  }\n  has(key) {\n    if (!this[CACHE].has(key)) return false;\n    const hit = this[CACHE].get(key).value;\n    return !isStale(this, hit);\n  }\n  get(key) {\n    return get(this, key, true);\n  }\n  peek(key) {\n    return get(this, key, false);\n  }\n  pop() {\n    const node = this[LRU_LIST].tail;\n    if (!node)\n      return null;\n    del(this, node);\n    return node.value;\n  }\n  del(key) {\n    del(this, this[CACHE].get(key));\n  }\n  load(arr) {\n    this.reset();\n    const now = Date.now();\n    for (let l2 = arr.length - 1; l2 >= 0; l2--) {\n      const hit = arr[l2];\n      const expiresAt = hit.e || 0;\n      if (expiresAt === 0)\n        this.set(hit.k, hit.v);\n      else {\n        const maxAge = expiresAt - now;\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge);\n        }\n      }\n    }\n  }\n  prune() {\n    this[CACHE].forEach((value, key) => get(this, key, false));\n  }\n}\nconst get = (self2, key, doUse) => {\n  const node = self2[CACHE].get(key);\n  if (node) {\n    const hit = node.value;\n    if (isStale(self2, hit)) {\n      del(self2, node);\n      if (!self2[ALLOW_STALE])\n        return void 0;\n    } else {\n      if (doUse) {\n        if (self2[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now();\n        self2[LRU_LIST].unshiftNode(node);\n      }\n    }\n    return hit.value;\n  }\n};\nconst isStale = (self2, hit) => {\n  if (!hit || !hit.maxAge && !self2[MAX_AGE])\n    return false;\n  const diff2 = Date.now() - hit.now;\n  return hit.maxAge ? diff2 > hit.maxAge : self2[MAX_AGE] && diff2 > self2[MAX_AGE];\n};\nconst trim = (self2) => {\n  if (self2[LENGTH] > self2[MAX]) {\n    for (let walker = self2[LRU_LIST].tail; self2[LENGTH] > self2[MAX] && walker !== null; ) {\n      const prev = walker.prev;\n      del(self2, walker);\n      walker = prev;\n    }\n  }\n};\nconst del = (self2, node) => {\n  if (node) {\n    const hit = node.value;\n    if (self2[DISPOSE])\n      self2[DISPOSE](hit.key, hit.value);\n    self2[LENGTH] -= hit.length;\n    self2[CACHE].delete(hit.key);\n    self2[LRU_LIST].removeNode(node);\n  }\n};\nclass Entry {\n  constructor(key, value, length, now, maxAge) {\n    this.key = key;\n    this.value = value;\n    this.length = length;\n    this.now = now;\n    this.maxAge = maxAge || 0;\n  }\n}\nconst forEachStep = (self2, fn, node, thisp) => {\n  let hit = node.value;\n  if (isStale(self2, hit)) {\n    del(self2, node);\n    if (!self2[ALLOW_STALE])\n      hit = void 0;\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self2);\n};\nvar lruCache = LRUCache;\nconst LRU$1 = lruCache;\nconst MAX_ACTIVE_CONTEXTS = 10;\nvar ResolvedContext_1 = class ResolvedContext {\n  /**\n   * Creates a ResolvedContext.\n   *\n   * @param document the context document.\n   */\n  constructor({ document: document2 }) {\n    this.document = document2;\n    this.cache = new LRU$1({ max: MAX_ACTIVE_CONTEXTS });\n  }\n  getProcessed(activeCtx) {\n    return this.cache.get(activeCtx);\n  }\n  setProcessed(activeCtx, processedCtx) {\n    this.cache.set(activeCtx, processedCtx);\n  }\n};\nconst {\n  isArray: _isArray$5,\n  isObject: _isObject$4,\n  isString: _isString$4\n} = types$7;\nconst {\n  asArray: _asArray$4\n} = util$5;\nconst { prependBase: prependBase$1 } = url$1;\nconst JsonLdError$9 = JsonLdError_1;\nconst ResolvedContext2 = ResolvedContext_1;\nconst MAX_CONTEXT_URLS = 10;\nvar ContextResolver_1 = class ContextResolver {\n  /**\n   * Creates a ContextResolver.\n   *\n   * @param sharedCache a shared LRU cache with `get` and `set` APIs.\n   */\n  constructor({ sharedCache }) {\n    this.perOpCache = /* @__PURE__ */ new Map();\n    this.sharedCache = sharedCache;\n  }\n  async resolve({\n    activeCtx,\n    context: context2,\n    documentLoader,\n    base: base2,\n    cycles = /* @__PURE__ */ new Set()\n  }) {\n    if (context2 && _isObject$4(context2) && context2[\"@context\"]) {\n      context2 = context2[\"@context\"];\n    }\n    context2 = _asArray$4(context2);\n    const allResolved = [];\n    for (const ctx of context2) {\n      if (_isString$4(ctx)) {\n        let resolved2 = this._get(ctx);\n        if (!resolved2) {\n          resolved2 = await this._resolveRemoteContext(\n            { activeCtx, url: ctx, documentLoader, base: base2, cycles }\n          );\n        }\n        if (_isArray$5(resolved2)) {\n          allResolved.push(...resolved2);\n        } else {\n          allResolved.push(resolved2);\n        }\n        continue;\n      }\n      if (ctx === null) {\n        allResolved.push(new ResolvedContext2({ document: null }));\n        continue;\n      }\n      if (!_isObject$4(ctx)) {\n        _throwInvalidLocalContext(context2);\n      }\n      const key = JSON.stringify(ctx);\n      let resolved = this._get(key);\n      if (!resolved) {\n        resolved = new ResolvedContext2({ document: ctx });\n        this._cacheResolvedContext({ key, resolved, tag: \"static\" });\n      }\n      allResolved.push(resolved);\n    }\n    return allResolved;\n  }\n  _get(key) {\n    let resolved = this.perOpCache.get(key);\n    if (!resolved) {\n      const tagMap = this.sharedCache.get(key);\n      if (tagMap) {\n        resolved = tagMap.get(\"static\");\n        if (resolved) {\n          this.perOpCache.set(key, resolved);\n        }\n      }\n    }\n    return resolved;\n  }\n  _cacheResolvedContext({ key, resolved, tag }) {\n    this.perOpCache.set(key, resolved);\n    if (tag !== void 0) {\n      let tagMap = this.sharedCache.get(key);\n      if (!tagMap) {\n        tagMap = /* @__PURE__ */ new Map();\n        this.sharedCache.set(key, tagMap);\n      }\n      tagMap.set(tag, resolved);\n    }\n    return resolved;\n  }\n  async _resolveRemoteContext({ activeCtx, url: url2, documentLoader, base: base2, cycles }) {\n    url2 = prependBase$1(base2, url2);\n    const { context: context2, remoteDoc } = await this._fetchContext(\n      { activeCtx, url: url2, documentLoader, cycles }\n    );\n    base2 = remoteDoc.documentUrl || url2;\n    _resolveContextUrls({ context: context2, base: base2 });\n    const resolved = await this.resolve(\n      { activeCtx, context: context2, documentLoader, base: base2, cycles }\n    );\n    this._cacheResolvedContext({ key: url2, resolved, tag: remoteDoc.tag });\n    return resolved;\n  }\n  async _fetchContext({ activeCtx, url: url2, documentLoader, cycles }) {\n    if (cycles.size > MAX_CONTEXT_URLS) {\n      throw new JsonLdError$9(\n        \"Maximum number of @context URLs exceeded.\",\n        \"jsonld.ContextUrlError\",\n        {\n          code: activeCtx.processingMode === \"json-ld-1.0\" ? \"loading remote context failed\" : \"context overflow\",\n          max: MAX_CONTEXT_URLS\n        }\n      );\n    }\n    if (cycles.has(url2)) {\n      throw new JsonLdError$9(\n        \"Cyclical @context URLs detected.\",\n        \"jsonld.ContextUrlError\",\n        {\n          code: activeCtx.processingMode === \"json-ld-1.0\" ? \"recursive context inclusion\" : \"context overflow\",\n          url: url2\n        }\n      );\n    }\n    cycles.add(url2);\n    let context2;\n    let remoteDoc;\n    try {\n      remoteDoc = await documentLoader(url2);\n      context2 = remoteDoc.document || null;\n      if (_isString$4(context2)) {\n        context2 = JSON.parse(context2);\n      }\n    } catch (e2) {\n      throw new JsonLdError$9(\n        \"Dereferencing a URL did not result in a valid JSON-LD object. Possible causes are an inaccessible URL perhaps due to a same-origin policy (ensure the server uses CORS if you are using client-side JavaScript), too many redirects, a non-JSON response, or more than one HTTP Link Header was provided for a remote context.\",\n        \"jsonld.InvalidUrl\",\n        { code: \"loading remote context failed\", url: url2, cause: e2 }\n      );\n    }\n    if (!_isObject$4(context2)) {\n      throw new JsonLdError$9(\n        \"Dereferencing a URL did not result in a JSON object. The response was valid JSON, but it was not a JSON object.\",\n        \"jsonld.InvalidUrl\",\n        { code: \"invalid remote context\", url: url2 }\n      );\n    }\n    if (!(\"@context\" in context2)) {\n      context2 = { \"@context\": {} };\n    } else {\n      context2 = { \"@context\": context2[\"@context\"] };\n    }\n    if (remoteDoc.contextUrl) {\n      if (!_isArray$5(context2[\"@context\"])) {\n        context2[\"@context\"] = [context2[\"@context\"]];\n      }\n      context2[\"@context\"].push(remoteDoc.contextUrl);\n    }\n    return { context: context2, remoteDoc };\n  }\n};\nfunction _throwInvalidLocalContext(ctx) {\n  throw new JsonLdError$9(\n    \"Invalid JSON-LD syntax; @context must be an object.\",\n    \"jsonld.SyntaxError\",\n    {\n      code: \"invalid local context\",\n      context: ctx\n    }\n  );\n}\nfunction _resolveContextUrls({ context: context2, base: base2 }) {\n  if (!context2) {\n    return;\n  }\n  const ctx = context2[\"@context\"];\n  if (_isString$4(ctx)) {\n    context2[\"@context\"] = prependBase$1(base2, ctx);\n    return;\n  }\n  if (_isArray$5(ctx)) {\n    for (let i3 = 0; i3 < ctx.length; ++i3) {\n      const element = ctx[i3];\n      if (_isString$4(element)) {\n        ctx[i3] = prependBase$1(base2, element);\n        continue;\n      }\n      if (_isObject$4(element)) {\n        _resolveContextUrls({ context: { \"@context\": element }, base: base2 });\n      }\n    }\n    return;\n  }\n  if (!_isObject$4(ctx)) {\n    return;\n  }\n  for (const term in ctx) {\n    _resolveContextUrls({ context: ctx[term], base: base2 });\n  }\n}\nvar NQuads$1 = rdfCanonize.NQuads;\nconst JsonLdError$8 = JsonLdError_1;\nconst {\n  isArray: _isArray$4\n} = types$7;\nconst {\n  asArray: _asArray$3\n} = util$5;\nconst api$8 = {};\nvar events = api$8;\napi$8.defaultEventHandler = null;\napi$8.setupEventHandler = ({ options = {} }) => {\n  const eventHandler = [].concat(\n    options.safe ? api$8.safeEventHandler : [],\n    options.eventHandler ? _asArray$3(options.eventHandler) : [],\n    api$8.defaultEventHandler ? api$8.defaultEventHandler : []\n  );\n  return eventHandler.length === 0 ? null : eventHandler;\n};\napi$8.handleEvent = ({\n  event,\n  options\n}) => {\n  _handle({ event, handlers: options.eventHandler });\n};\nfunction _handle({ event, handlers }) {\n  let doNext = true;\n  for (let i3 = 0; doNext && i3 < handlers.length; ++i3) {\n    doNext = false;\n    const handler = handlers[i3];\n    if (_isArray$4(handler)) {\n      doNext = _handle({ event, handlers: handler });\n    } else if (typeof handler === \"function\") {\n      handler({ event, next: () => {\n        doNext = true;\n      } });\n    } else if (typeof handler === \"object\") {\n      if (event.code in handler) {\n        handler[event.code]({ event, next: () => {\n          doNext = true;\n        } });\n      } else {\n        doNext = true;\n      }\n    } else {\n      throw new JsonLdError$8(\n        \"Invalid event handler.\",\n        \"jsonld.InvalidEventHandler\",\n        { event }\n      );\n    }\n  }\n  return doNext;\n}\nconst _notSafeEventCodes = /* @__PURE__ */ new Set([\n  \"empty object\",\n  \"free-floating scalar\",\n  \"invalid @language value\",\n  \"invalid property\",\n  // NOTE: spec edge case\n  \"null @id value\",\n  \"null @value value\",\n  \"object with only @id\",\n  \"object with only @language\",\n  \"object with only @list\",\n  \"object with only @value\",\n  \"relative @id reference\",\n  \"relative @type reference\",\n  \"relative @vocab reference\",\n  \"reserved @id value\",\n  \"reserved @reverse value\",\n  \"reserved term\",\n  // toRDF\n  \"blank node predicate\",\n  \"relative graph reference\",\n  \"relative object reference\",\n  \"relative predicate reference\",\n  \"relative subject reference\",\n  // toRDF / fromRDF\n  \"rdfDirection not set\"\n]);\napi$8.safeEventHandler = function safeEventHandler({ event, next }) {\n  if (event.level === \"warning\" && _notSafeEventCodes.has(event.code)) {\n    throw new JsonLdError$8(\n      \"Safe mode validation error.\",\n      \"jsonld.ValidationError\",\n      { event }\n    );\n  }\n  next();\n};\napi$8.logEventHandler = function logEventHandler({ event, next }) {\n  console.log(`EVENT: ${event.message}`, { event });\n  next();\n};\napi$8.logWarningEventHandler = function logWarningEventHandler({ event, next }) {\n  if (event.level === \"warning\") {\n    console.warn(`WARNING: ${event.message}`, { event });\n  }\n  next();\n};\napi$8.unhandledEventHandler = function unhandledEventHandler({ event }) {\n  throw new JsonLdError$8(\n    \"No handler for event.\",\n    \"jsonld.UnhandledEvent\",\n    { event }\n  );\n};\napi$8.setDefaultEventHandler = function({ eventHandler } = {}) {\n  api$8.defaultEventHandler = eventHandler ? _asArray$3(eventHandler) : null;\n};\nconst util$4 = util$5;\nconst JsonLdError$7 = JsonLdError_1;\nconst {\n  isArray: _isArray$3,\n  isObject: _isObject$3,\n  isString: _isString$3,\n  isUndefined: _isUndefined$2\n} = types$7;\nconst {\n  isAbsolute: _isAbsoluteIri$2,\n  isRelative: _isRelativeIri,\n  prependBase\n} = url$1;\nconst {\n  handleEvent: _handleEvent$3\n} = events;\nconst {\n  REGEX_BCP47: REGEX_BCP47$2,\n  REGEX_KEYWORD: REGEX_KEYWORD$2,\n  asArray: _asArray$2,\n  compareShortestLeast: _compareShortestLeast$1\n} = util$5;\nconst INITIAL_CONTEXT_CACHE = /* @__PURE__ */ new Map();\nconst INITIAL_CONTEXT_CACHE_MAX_SIZE = 1e4;\nconst api$7 = {};\nvar context = api$7;\napi$7.process = async ({\n  activeCtx,\n  localCtx,\n  options,\n  propagate = true,\n  overrideProtected = false,\n  cycles = /* @__PURE__ */ new Set()\n}) => {\n  if (_isObject$3(localCtx) && \"@context\" in localCtx && _isArray$3(localCtx[\"@context\"])) {\n    localCtx = localCtx[\"@context\"];\n  }\n  const ctxs = _asArray$2(localCtx);\n  if (ctxs.length === 0) {\n    return activeCtx;\n  }\n  const events2 = [];\n  const eventCaptureHandler = [\n    ({ event, next }) => {\n      events2.push(event);\n      next();\n    }\n  ];\n  if (options.eventHandler) {\n    eventCaptureHandler.push(options.eventHandler);\n  }\n  const originalOptions = options;\n  options = { ...options, eventHandler: eventCaptureHandler };\n  const resolved = await options.contextResolver.resolve({\n    activeCtx,\n    context: localCtx,\n    documentLoader: options.documentLoader,\n    base: options.base\n  });\n  if (_isObject$3(resolved[0].document) && typeof resolved[0].document[\"@propagate\"] === \"boolean\") {\n    propagate = resolved[0].document[\"@propagate\"];\n  }\n  let rval = activeCtx;\n  if (!propagate && !rval.previousContext) {\n    rval = rval.clone();\n    rval.previousContext = activeCtx;\n  }\n  for (const resolvedContext of resolved) {\n    let { document: ctx } = resolvedContext;\n    activeCtx = rval;\n    if (ctx === null) {\n      if (!overrideProtected && Object.keys(activeCtx.protected).length !== 0) {\n        throw new JsonLdError$7(\n          \"Tried to nullify a context with protected terms outside of a term definition.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid context nullification\" }\n        );\n      }\n      rval = activeCtx = api$7.getInitialContext(options).clone();\n      continue;\n    }\n    const processed = resolvedContext.getProcessed(activeCtx);\n    if (processed) {\n      if (originalOptions.eventHandler) {\n        for (const event of processed.events) {\n          _handleEvent$3({ event, options: originalOptions });\n        }\n      }\n      rval = activeCtx = processed.context;\n      continue;\n    }\n    if (_isObject$3(ctx) && \"@context\" in ctx) {\n      ctx = ctx[\"@context\"];\n    }\n    if (!_isObject$3(ctx)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context must be an object.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid local context\", context: ctx }\n      );\n    }\n    rval = rval.clone();\n    const defined = /* @__PURE__ */ new Map();\n    if (\"@version\" in ctx) {\n      if (ctx[\"@version\"] !== 1.1) {\n        throw new JsonLdError$7(\n          \"Unsupported JSON-LD version: \" + ctx[\"@version\"],\n          \"jsonld.UnsupportedVersion\",\n          { code: \"invalid @version value\", context: ctx }\n        );\n      }\n      if (activeCtx.processingMode && activeCtx.processingMode === \"json-ld-1.0\") {\n        throw new JsonLdError$7(\n          \"@version: \" + ctx[\"@version\"] + \" not compatible with \" + activeCtx.processingMode,\n          \"jsonld.ProcessingModeConflict\",\n          { code: \"processing mode conflict\", context: ctx }\n        );\n      }\n      rval.processingMode = \"json-ld-1.1\";\n      rval[\"@version\"] = ctx[\"@version\"];\n      defined.set(\"@version\", true);\n    }\n    rval.processingMode = rval.processingMode || activeCtx.processingMode;\n    if (\"@base\" in ctx) {\n      let base2 = ctx[\"@base\"];\n      if (base2 === null || _isAbsoluteIri$2(base2)) ;\n      else if (_isRelativeIri(base2)) {\n        base2 = prependBase(rval[\"@base\"], base2);\n      } else {\n        throw new JsonLdError$7(\n          'Invalid JSON-LD syntax; the value of \"@base\" in a @context must be an absolute IRI, a relative IRI, or null.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid base IRI\", context: ctx }\n        );\n      }\n      rval[\"@base\"] = base2;\n      defined.set(\"@base\", true);\n    }\n    if (\"@vocab\" in ctx) {\n      const value = ctx[\"@vocab\"];\n      if (value === null) {\n        delete rval[\"@vocab\"];\n      } else if (!_isString$3(value)) {\n        throw new JsonLdError$7(\n          'Invalid JSON-LD syntax; the value of \"@vocab\" in a @context must be a string or null.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid vocab mapping\", context: ctx }\n        );\n      } else if (!_isAbsoluteIri$2(value) && api$7.processingMode(rval, 1)) {\n        throw new JsonLdError$7(\n          'Invalid JSON-LD syntax; the value of \"@vocab\" in a @context must be an absolute IRI.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid vocab mapping\", context: ctx }\n        );\n      } else {\n        const vocab = _expandIri$3(\n          rval,\n          value,\n          { vocab: true, base: true },\n          void 0,\n          void 0,\n          options\n        );\n        if (!_isAbsoluteIri$2(vocab)) {\n          if (options.eventHandler) {\n            _handleEvent$3({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"relative @vocab reference\",\n                level: \"warning\",\n                message: \"Relative @vocab reference found.\",\n                details: {\n                  vocab\n                }\n              },\n              options\n            });\n          }\n        }\n        rval[\"@vocab\"] = vocab;\n      }\n      defined.set(\"@vocab\", true);\n    }\n    if (\"@language\" in ctx) {\n      const value = ctx[\"@language\"];\n      if (value === null) {\n        delete rval[\"@language\"];\n      } else if (!_isString$3(value)) {\n        throw new JsonLdError$7(\n          'Invalid JSON-LD syntax; the value of \"@language\" in a @context must be a string or null.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid default language\", context: ctx }\n        );\n      } else {\n        if (!value.match(REGEX_BCP47$2)) {\n          if (options.eventHandler) {\n            _handleEvent$3({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"invalid @language value\",\n                level: \"warning\",\n                message: \"@language value must be valid BCP47.\",\n                details: {\n                  language: value\n                }\n              },\n              options\n            });\n          }\n        }\n        rval[\"@language\"] = value.toLowerCase();\n      }\n      defined.set(\"@language\", true);\n    }\n    if (\"@direction\" in ctx) {\n      const value = ctx[\"@direction\"];\n      if (activeCtx.processingMode === \"json-ld-1.0\") {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @direction not compatible with \" + activeCtx.processingMode,\n          \"jsonld.SyntaxError\",\n          { code: \"invalid context member\", context: ctx }\n        );\n      }\n      if (value === null) {\n        delete rval[\"@direction\"];\n      } else if (value !== \"ltr\" && value !== \"rtl\") {\n        throw new JsonLdError$7(\n          'Invalid JSON-LD syntax; the value of \"@direction\" in a @context must be null, \"ltr\", or \"rtl\".',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid base direction\", context: ctx }\n        );\n      } else {\n        rval[\"@direction\"] = value;\n      }\n      defined.set(\"@direction\", true);\n    }\n    if (\"@propagate\" in ctx) {\n      const value = ctx[\"@propagate\"];\n      if (activeCtx.processingMode === \"json-ld-1.0\") {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @propagate not compatible with \" + activeCtx.processingMode,\n          \"jsonld.SyntaxError\",\n          { code: \"invalid context entry\", context: ctx }\n        );\n      }\n      if (typeof value !== \"boolean\") {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @propagate value must be a boolean.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid @propagate value\", context: localCtx }\n        );\n      }\n      defined.set(\"@propagate\", true);\n    }\n    if (\"@import\" in ctx) {\n      const value = ctx[\"@import\"];\n      if (activeCtx.processingMode === \"json-ld-1.0\") {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @import not compatible with \" + activeCtx.processingMode,\n          \"jsonld.SyntaxError\",\n          { code: \"invalid context entry\", context: ctx }\n        );\n      }\n      if (!_isString$3(value)) {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @import must be a string.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid @import value\", context: localCtx }\n        );\n      }\n      const resolvedImport = await options.contextResolver.resolve({\n        activeCtx,\n        context: value,\n        documentLoader: options.documentLoader,\n        base: options.base\n      });\n      if (resolvedImport.length !== 1) {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @import must reference a single context.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid remote context\", context: localCtx }\n        );\n      }\n      const processedImport = resolvedImport[0].getProcessed(activeCtx);\n      if (processedImport) {\n        ctx = processedImport;\n      } else {\n        const importCtx = resolvedImport[0].document;\n        if (\"@import\" in importCtx) {\n          throw new JsonLdError$7(\n            \"Invalid JSON-LD syntax: imported context must not include @import.\",\n            \"jsonld.SyntaxError\",\n            { code: \"invalid context entry\", context: localCtx }\n          );\n        }\n        for (const key in importCtx) {\n          if (!ctx.hasOwnProperty(key)) {\n            ctx[key] = importCtx[key];\n          }\n        }\n        resolvedImport[0].setProcessed(activeCtx, ctx);\n      }\n      defined.set(\"@import\", true);\n    }\n    defined.set(\"@protected\", ctx[\"@protected\"] || false);\n    for (const key in ctx) {\n      api$7.createTermDefinition({\n        activeCtx: rval,\n        localCtx: ctx,\n        term: key,\n        defined,\n        options,\n        overrideProtected\n      });\n      if (_isObject$3(ctx[key]) && \"@context\" in ctx[key]) {\n        const keyCtx = ctx[key][\"@context\"];\n        let process2 = true;\n        if (_isString$3(keyCtx)) {\n          const url2 = prependBase(options.base, keyCtx);\n          if (cycles.has(url2)) {\n            process2 = false;\n          } else {\n            cycles.add(url2);\n          }\n        }\n        if (process2) {\n          try {\n            await api$7.process({\n              activeCtx: rval.clone(),\n              localCtx: ctx[key][\"@context\"],\n              overrideProtected: true,\n              options,\n              cycles\n            });\n          } catch (e2) {\n            throw new JsonLdError$7(\n              \"Invalid JSON-LD syntax; invalid scoped context.\",\n              \"jsonld.SyntaxError\",\n              {\n                code: \"invalid scoped context\",\n                context: ctx[key][\"@context\"],\n                term: key\n              }\n            );\n          }\n        }\n      }\n    }\n    resolvedContext.setProcessed(activeCtx, {\n      context: rval,\n      events: events2\n    });\n  }\n  return rval;\n};\napi$7.createTermDefinition = ({\n  activeCtx,\n  localCtx,\n  term,\n  defined,\n  options,\n  overrideProtected = false\n}) => {\n  if (defined.has(term)) {\n    if (defined.get(term)) {\n      return;\n    }\n    throw new JsonLdError$7(\n      \"Cyclical context definition detected.\",\n      \"jsonld.CyclicalContext\",\n      { code: \"cyclic IRI mapping\", context: localCtx, term }\n    );\n  }\n  defined.set(term, false);\n  let value;\n  if (localCtx.hasOwnProperty(term)) {\n    value = localCtx[term];\n  }\n  if (term === \"@type\" && _isObject$3(value) && (value[\"@container\"] || \"@set\") === \"@set\" && api$7.processingMode(activeCtx, 1.1)) {\n    const validKeys2 = [\"@container\", \"@id\", \"@protected\"];\n    const keys2 = Object.keys(value);\n    if (keys2.length === 0 || keys2.some((k2) => !validKeys2.includes(k2))) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; keywords cannot be overridden.\",\n        \"jsonld.SyntaxError\",\n        { code: \"keyword redefinition\", context: localCtx, term }\n      );\n    }\n  } else if (api$7.isKeyword(term)) {\n    throw new JsonLdError$7(\n      \"Invalid JSON-LD syntax; keywords cannot be overridden.\",\n      \"jsonld.SyntaxError\",\n      { code: \"keyword redefinition\", context: localCtx, term }\n    );\n  } else if (term.match(REGEX_KEYWORD$2)) {\n    if (options.eventHandler) {\n      _handleEvent$3({\n        event: {\n          type: [\"JsonLdEvent\"],\n          code: \"reserved term\",\n          level: \"warning\",\n          message: 'Terms beginning with \"@\" are reserved for future use and dropped.',\n          details: {\n            term\n          }\n        },\n        options\n      });\n    }\n    return;\n  } else if (term === \"\") {\n    throw new JsonLdError$7(\n      \"Invalid JSON-LD syntax; a term cannot be an empty string.\",\n      \"jsonld.SyntaxError\",\n      { code: \"invalid term definition\", context: localCtx }\n    );\n  }\n  const previousMapping = activeCtx.mappings.get(term);\n  if (activeCtx.mappings.has(term)) {\n    activeCtx.mappings.delete(term);\n  }\n  let simpleTerm = false;\n  if (_isString$3(value) || value === null) {\n    simpleTerm = true;\n    value = { \"@id\": value };\n  }\n  if (!_isObject$3(value)) {\n    throw new JsonLdError$7(\n      \"Invalid JSON-LD syntax; @context term values must be strings or objects.\",\n      \"jsonld.SyntaxError\",\n      { code: \"invalid term definition\", context: localCtx }\n    );\n  }\n  const mapping = {};\n  activeCtx.mappings.set(term, mapping);\n  mapping.reverse = false;\n  const validKeys = [\"@container\", \"@id\", \"@language\", \"@reverse\", \"@type\"];\n  if (api$7.processingMode(activeCtx, 1.1)) {\n    validKeys.push(\n      \"@context\",\n      \"@direction\",\n      \"@index\",\n      \"@nest\",\n      \"@prefix\",\n      \"@protected\"\n    );\n  }\n  for (const kw in value) {\n    if (!validKeys.includes(kw)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; a term definition must not contain \" + kw,\n        \"jsonld.SyntaxError\",\n        { code: \"invalid term definition\", context: localCtx }\n      );\n    }\n  }\n  const colon = term.indexOf(\":\");\n  mapping._termHasColon = colon > 0;\n  if (\"@reverse\" in value) {\n    if (\"@id\" in value) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; a @reverse term definition must not contain @id.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid reverse property\", context: localCtx }\n      );\n    }\n    if (\"@nest\" in value) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; a @reverse term definition must not contain @nest.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid reverse property\", context: localCtx }\n      );\n    }\n    const reverse = value[\"@reverse\"];\n    if (!_isString$3(reverse)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; a @context @reverse value must be a string.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid IRI mapping\", context: localCtx }\n      );\n    }\n    if (reverse.match(REGEX_KEYWORD$2)) {\n      if (options.eventHandler) {\n        _handleEvent$3({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"reserved @reverse value\",\n            level: \"warning\",\n            message: '@reverse values beginning with \"@\" are reserved for future use and dropped.',\n            details: {\n              reverse\n            }\n          },\n          options\n        });\n      }\n      if (previousMapping) {\n        activeCtx.mappings.set(term, previousMapping);\n      } else {\n        activeCtx.mappings.delete(term);\n      }\n      return;\n    }\n    const id3 = _expandIri$3(\n      activeCtx,\n      reverse,\n      { vocab: true, base: false },\n      localCtx,\n      defined,\n      options\n    );\n    if (!_isAbsoluteIri$2(id3)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; a @context @reverse value must be an absolute IRI or a blank node identifier.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid IRI mapping\", context: localCtx }\n      );\n    }\n    mapping[\"@id\"] = id3;\n    mapping.reverse = true;\n  } else if (\"@id\" in value) {\n    let id3 = value[\"@id\"];\n    if (id3 && !_isString$3(id3)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; a @context @id value must be an array of strings or a string.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid IRI mapping\", context: localCtx }\n      );\n    }\n    if (id3 === null) {\n      mapping[\"@id\"] = null;\n    } else if (!api$7.isKeyword(id3) && id3.match(REGEX_KEYWORD$2)) {\n      if (options.eventHandler) {\n        _handleEvent$3({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"reserved @id value\",\n            level: \"warning\",\n            message: '@id values beginning with \"@\" are reserved for future use and dropped.',\n            details: {\n              id: id3\n            }\n          },\n          options\n        });\n      }\n      if (previousMapping) {\n        activeCtx.mappings.set(term, previousMapping);\n      } else {\n        activeCtx.mappings.delete(term);\n      }\n      return;\n    } else if (id3 !== term) {\n      id3 = _expandIri$3(\n        activeCtx,\n        id3,\n        { vocab: true, base: false },\n        localCtx,\n        defined,\n        options\n      );\n      if (!_isAbsoluteIri$2(id3) && !api$7.isKeyword(id3)) {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; a @context @id value must be an absolute IRI, a blank node identifier, or a keyword.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid IRI mapping\", context: localCtx }\n        );\n      }\n      if (term.match(/(?::[^:])|\\//)) {\n        const termDefined = new Map(defined).set(term, true);\n        const termIri = _expandIri$3(\n          activeCtx,\n          term,\n          { vocab: true, base: false },\n          localCtx,\n          termDefined,\n          options\n        );\n        if (termIri !== id3) {\n          throw new JsonLdError$7(\n            \"Invalid JSON-LD syntax; term in form of IRI must expand to definition.\",\n            \"jsonld.SyntaxError\",\n            { code: \"invalid IRI mapping\", context: localCtx }\n          );\n        }\n      }\n      mapping[\"@id\"] = id3;\n      mapping._prefix = simpleTerm && !mapping._termHasColon && id3.match(/[:\\/\\?#\\[\\]@]$/) !== null;\n    }\n  }\n  if (!(\"@id\" in mapping)) {\n    if (mapping._termHasColon) {\n      const prefix = term.substr(0, colon);\n      if (localCtx.hasOwnProperty(prefix)) {\n        api$7.createTermDefinition({\n          activeCtx,\n          localCtx,\n          term: prefix,\n          defined,\n          options\n        });\n      }\n      if (activeCtx.mappings.has(prefix)) {\n        const suffix = term.substr(colon + 1);\n        mapping[\"@id\"] = activeCtx.mappings.get(prefix)[\"@id\"] + suffix;\n      } else {\n        mapping[\"@id\"] = term;\n      }\n    } else if (term === \"@type\") {\n      mapping[\"@id\"] = term;\n    } else {\n      if (!(\"@vocab\" in activeCtx)) {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; @context terms must define an @id.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid IRI mapping\", context: localCtx, term }\n        );\n      }\n      mapping[\"@id\"] = activeCtx[\"@vocab\"] + term;\n    }\n  }\n  if (value[\"@protected\"] === true || defined.get(\"@protected\") === true && value[\"@protected\"] !== false) {\n    activeCtx.protected[term] = true;\n    mapping.protected = true;\n  }\n  defined.set(term, true);\n  if (\"@type\" in value) {\n    let type = value[\"@type\"];\n    if (!_isString$3(type)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; an @context @type value must be a string.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid type mapping\", context: localCtx }\n      );\n    }\n    if (type === \"@json\" || type === \"@none\") {\n      if (api$7.processingMode(activeCtx, 1)) {\n        throw new JsonLdError$7(\n          `Invalid JSON-LD syntax; an @context @type value must not be \"${type}\" in JSON-LD 1.0 mode.`,\n          \"jsonld.SyntaxError\",\n          { code: \"invalid type mapping\", context: localCtx }\n        );\n      }\n    } else if (type !== \"@id\" && type !== \"@vocab\") {\n      type = _expandIri$3(\n        activeCtx,\n        type,\n        { vocab: true, base: false },\n        localCtx,\n        defined,\n        options\n      );\n      if (!_isAbsoluteIri$2(type)) {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; an @context @type value must be an absolute IRI.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid type mapping\", context: localCtx }\n        );\n      }\n      if (type.indexOf(\"_:\") === 0) {\n        throw new JsonLdError$7(\n          \"Invalid JSON-LD syntax; an @context @type value must be an IRI, not a blank node identifier.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid type mapping\", context: localCtx }\n        );\n      }\n    }\n    mapping[\"@type\"] = type;\n  }\n  if (\"@container\" in value) {\n    const container = _isString$3(value[\"@container\"]) ? [value[\"@container\"]] : value[\"@container\"] || [];\n    const validContainers = [\"@list\", \"@set\", \"@index\", \"@language\"];\n    let isValid = true;\n    const hasSet = container.includes(\"@set\");\n    if (api$7.processingMode(activeCtx, 1.1)) {\n      validContainers.push(\"@graph\", \"@id\", \"@type\");\n      if (container.includes(\"@list\")) {\n        if (container.length !== 1) {\n          throw new JsonLdError$7(\n            \"Invalid JSON-LD syntax; @context @container with @list must have no other values\",\n            \"jsonld.SyntaxError\",\n            { code: \"invalid container mapping\", context: localCtx }\n          );\n        }\n      } else if (container.includes(\"@graph\")) {\n        if (container.some((key) => key !== \"@graph\" && key !== \"@id\" && key !== \"@index\" && key !== \"@set\")) {\n          throw new JsonLdError$7(\n            \"Invalid JSON-LD syntax; @context @container with @graph must have no other values other than @id, @index, and @set\",\n            \"jsonld.SyntaxError\",\n            { code: \"invalid container mapping\", context: localCtx }\n          );\n        }\n      } else {\n        isValid &= container.length <= (hasSet ? 2 : 1);\n      }\n      if (container.includes(\"@type\")) {\n        mapping[\"@type\"] = mapping[\"@type\"] || \"@id\";\n        if (![\"@id\", \"@vocab\"].includes(mapping[\"@type\"])) {\n          throw new JsonLdError$7(\n            \"Invalid JSON-LD syntax; container: @type requires @type to be @id or @vocab.\",\n            \"jsonld.SyntaxError\",\n            { code: \"invalid type mapping\", context: localCtx }\n          );\n        }\n      }\n    } else {\n      isValid &= !_isArray$3(value[\"@container\"]);\n      isValid &= container.length <= 1;\n    }\n    isValid &= container.every((c2) => validContainers.includes(c2));\n    isValid &= !(hasSet && container.includes(\"@list\"));\n    if (!isValid) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context @container value must be one of the following: \" + validContainers.join(\", \"),\n        \"jsonld.SyntaxError\",\n        { code: \"invalid container mapping\", context: localCtx }\n      );\n    }\n    if (mapping.reverse && !container.every((c2) => [\"@index\", \"@set\"].includes(c2))) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context @container value for a @reverse type definition must be @index or @set.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid reverse property\", context: localCtx }\n      );\n    }\n    mapping[\"@container\"] = container;\n  }\n  if (\"@index\" in value) {\n    if (!(\"@container\" in value) || !mapping[\"@container\"].includes(\"@index\")) {\n      throw new JsonLdError$7(\n        `Invalid JSON-LD syntax; @index without @index in @container: \"${value[\"@index\"]}\" on term \"${term}\".`,\n        \"jsonld.SyntaxError\",\n        { code: \"invalid term definition\", context: localCtx }\n      );\n    }\n    if (!_isString$3(value[\"@index\"]) || value[\"@index\"].indexOf(\"@\") === 0) {\n      throw new JsonLdError$7(\n        `Invalid JSON-LD syntax; @index must expand to an IRI: \"${value[\"@index\"]}\" on term \"${term}\".`,\n        \"jsonld.SyntaxError\",\n        { code: \"invalid term definition\", context: localCtx }\n      );\n    }\n    mapping[\"@index\"] = value[\"@index\"];\n  }\n  if (\"@context\" in value) {\n    mapping[\"@context\"] = value[\"@context\"];\n  }\n  if (\"@language\" in value && !(\"@type\" in value)) {\n    let language = value[\"@language\"];\n    if (language !== null && !_isString$3(language)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context @language value must be a string or null.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid language mapping\", context: localCtx }\n      );\n    }\n    if (language !== null) {\n      language = language.toLowerCase();\n    }\n    mapping[\"@language\"] = language;\n  }\n  if (\"@prefix\" in value) {\n    if (term.match(/:|\\//)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context @prefix used on a compact IRI term\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid term definition\", context: localCtx }\n      );\n    }\n    if (api$7.isKeyword(mapping[\"@id\"])) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; keywords may not be used as prefixes\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid term definition\", context: localCtx }\n      );\n    }\n    if (typeof value[\"@prefix\"] === \"boolean\") {\n      mapping._prefix = value[\"@prefix\"] === true;\n    } else {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context value for @prefix must be boolean\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid @prefix value\", context: localCtx }\n      );\n    }\n  }\n  if (\"@direction\" in value) {\n    const direction = value[\"@direction\"];\n    if (direction !== null && direction !== \"ltr\" && direction !== \"rtl\") {\n      throw new JsonLdError$7(\n        'Invalid JSON-LD syntax; @direction value must be null, \"ltr\", or \"rtl\".',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid base direction\", context: localCtx }\n      );\n    }\n    mapping[\"@direction\"] = direction;\n  }\n  if (\"@nest\" in value) {\n    const nest = value[\"@nest\"];\n    if (!_isString$3(nest) || nest !== \"@nest\" && nest.indexOf(\"@\") === 0) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; @context @nest value must be a string which is not a keyword other than @nest.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid @nest value\", context: localCtx }\n      );\n    }\n    mapping[\"@nest\"] = nest;\n  }\n  // disallow aliasing @context and @preserve\n  const id2 = mapping[\"@id\"];\n  if (id2 === \"@context\" || id2 === \"@preserve\") {\n    throw new JsonLdError$7(\n      \"Invalid JSON-LD syntax; @context and @preserve cannot be aliased.\",\n      \"jsonld.SyntaxError\",\n      { code: \"invalid keyword alias\", context: localCtx }\n    );\n  }\n  if (previousMapping && previousMapping.protected && !overrideProtected) {\n    activeCtx.protected[term] = true;\n    mapping.protected = true;\n    if (!_deepCompare(previousMapping, mapping)) {\n      throw new JsonLdError$7(\n        \"Invalid JSON-LD syntax; tried to redefine a protected term.\",\n        \"jsonld.SyntaxError\",\n        { code: \"protected term redefinition\", context: localCtx, term }\n      );\n    }\n  }\n};\napi$7.expandIri = (activeCtx, value, relativeTo, options) => {\n  return _expandIri$3(\n    activeCtx,\n    value,\n    relativeTo,\n    void 0,\n    void 0,\n    options\n  );\n};\nfunction _expandIri$3(activeCtx, value, relativeTo, localCtx, defined, options) {\n  if (value === null || !_isString$3(value) || api$7.isKeyword(value)) {\n    return value;\n  }\n  if (value.match(REGEX_KEYWORD$2)) {\n    return null;\n  }\n  if (localCtx && localCtx.hasOwnProperty(value) && defined.get(value) !== true) {\n    api$7.createTermDefinition({\n      activeCtx,\n      localCtx,\n      term: value,\n      defined,\n      options\n    });\n  }\n  relativeTo = relativeTo || {};\n  if (relativeTo.vocab) {\n    const mapping = activeCtx.mappings.get(value);\n    if (mapping === null) {\n      return null;\n    }\n    if (_isObject$3(mapping) && \"@id\" in mapping) {\n      return mapping[\"@id\"];\n    }\n  }\n  const colon = value.indexOf(\":\");\n  if (colon > 0) {\n    const prefix = value.substr(0, colon);\n    const suffix = value.substr(colon + 1);\n    if (prefix === \"_\" || suffix.indexOf(\"//\") === 0) {\n      return value;\n    }\n    if (localCtx && localCtx.hasOwnProperty(prefix)) {\n      api$7.createTermDefinition({\n        activeCtx,\n        localCtx,\n        term: prefix,\n        defined,\n        options\n      });\n    }\n    const mapping = activeCtx.mappings.get(prefix);\n    if (mapping && mapping._prefix) {\n      return mapping[\"@id\"] + suffix;\n    }\n    if (_isAbsoluteIri$2(value)) {\n      return value;\n    }\n  }\n  if (relativeTo.vocab && \"@vocab\" in activeCtx) {\n    const prependedResult = activeCtx[\"@vocab\"] + value;\n    value = prependedResult;\n  } else if (relativeTo.base) {\n    let prependedResult;\n    let base2;\n    if (\"@base\" in activeCtx) {\n      if (activeCtx[\"@base\"]) {\n        base2 = prependBase(options.base, activeCtx[\"@base\"]);\n        prependedResult = prependBase(base2, value);\n      } else {\n        base2 = activeCtx[\"@base\"];\n        prependedResult = value;\n      }\n    } else {\n      base2 = options.base;\n      prependedResult = prependBase(options.base, value);\n    }\n    value = prependedResult;\n  }\n  return value;\n}\napi$7.getInitialContext = (options) => {\n  const key = JSON.stringify({ processingMode: options.processingMode });\n  const cached = INITIAL_CONTEXT_CACHE.get(key);\n  if (cached) {\n    return cached;\n  }\n  const initialContext = {\n    processingMode: options.processingMode,\n    mappings: /* @__PURE__ */ new Map(),\n    inverse: null,\n    getInverse: _createInverseContext,\n    clone: _cloneActiveContext,\n    revertToPreviousContext: _revertToPreviousContext,\n    protected: {}\n  };\n  if (INITIAL_CONTEXT_CACHE.size === INITIAL_CONTEXT_CACHE_MAX_SIZE) {\n    INITIAL_CONTEXT_CACHE.clear();\n  }\n  INITIAL_CONTEXT_CACHE.set(key, initialContext);\n  return initialContext;\n  function _createInverseContext() {\n    const activeCtx = this;\n    if (activeCtx.inverse) {\n      return activeCtx.inverse;\n    }\n    const inverse = activeCtx.inverse = {};\n    const fastCurieMap = activeCtx.fastCurieMap = {};\n    const irisToTerms = {};\n    const defaultLanguage = (activeCtx[\"@language\"] || \"@none\").toLowerCase();\n    const defaultDirection = activeCtx[\"@direction\"];\n    const mappings = activeCtx.mappings;\n    const terms = [...mappings.keys()].sort(_compareShortestLeast$1);\n    for (const term of terms) {\n      const mapping = mappings.get(term);\n      if (mapping === null) {\n        continue;\n      }\n      let container = mapping[\"@container\"] || \"@none\";\n      container = [].concat(container).sort().join(\"\");\n      if (mapping[\"@id\"] === null) {\n        continue;\n      }\n      const ids = _asArray$2(mapping[\"@id\"]);\n      for (const iri of ids) {\n        let entry = inverse[iri];\n        const isKeyword2 = api$7.isKeyword(iri);\n        if (!entry) {\n          inverse[iri] = entry = {};\n          if (!isKeyword2 && !mapping._termHasColon) {\n            irisToTerms[iri] = [term];\n            const fastCurieEntry = { iri, terms: irisToTerms[iri] };\n            if (iri[0] in fastCurieMap) {\n              fastCurieMap[iri[0]].push(fastCurieEntry);\n            } else {\n              fastCurieMap[iri[0]] = [fastCurieEntry];\n            }\n          }\n        } else if (!isKeyword2 && !mapping._termHasColon) {\n          irisToTerms[iri].push(term);\n        }\n        if (!entry[container]) {\n          entry[container] = {\n            \"@language\": {},\n            \"@type\": {},\n            \"@any\": {}\n          };\n        }\n        entry = entry[container];\n        _addPreferredTerm(term, entry[\"@any\"], \"@none\");\n        if (mapping.reverse) {\n          _addPreferredTerm(term, entry[\"@type\"], \"@reverse\");\n        } else if (mapping[\"@type\"] === \"@none\") {\n          _addPreferredTerm(term, entry[\"@any\"], \"@none\");\n          _addPreferredTerm(term, entry[\"@language\"], \"@none\");\n          _addPreferredTerm(term, entry[\"@type\"], \"@none\");\n        } else if (\"@type\" in mapping) {\n          _addPreferredTerm(term, entry[\"@type\"], mapping[\"@type\"]);\n        } else if (\"@language\" in mapping && \"@direction\" in mapping) {\n          const language = mapping[\"@language\"];\n          const direction = mapping[\"@direction\"];\n          if (language && direction) {\n            _addPreferredTerm(\n              term,\n              entry[\"@language\"],\n              `${language}_${direction}`.toLowerCase()\n            );\n          } else if (language) {\n            _addPreferredTerm(term, entry[\"@language\"], language.toLowerCase());\n          } else if (direction) {\n            _addPreferredTerm(term, entry[\"@language\"], `_${direction}`);\n          } else {\n            _addPreferredTerm(term, entry[\"@language\"], \"@null\");\n          }\n        } else if (\"@language\" in mapping) {\n          _addPreferredTerm(\n            term,\n            entry[\"@language\"],\n            (mapping[\"@language\"] || \"@null\").toLowerCase()\n          );\n        } else if (\"@direction\" in mapping) {\n          if (mapping[\"@direction\"]) {\n            _addPreferredTerm(\n              term,\n              entry[\"@language\"],\n              `_${mapping[\"@direction\"]}`\n            );\n          } else {\n            _addPreferredTerm(term, entry[\"@language\"], \"@none\");\n          }\n        } else if (defaultDirection) {\n          _addPreferredTerm(term, entry[\"@language\"], `_${defaultDirection}`);\n          _addPreferredTerm(term, entry[\"@language\"], \"@none\");\n          _addPreferredTerm(term, entry[\"@type\"], \"@none\");\n        } else {\n          _addPreferredTerm(term, entry[\"@language\"], defaultLanguage);\n          _addPreferredTerm(term, entry[\"@language\"], \"@none\");\n          _addPreferredTerm(term, entry[\"@type\"], \"@none\");\n        }\n      }\n    }\n    for (const key2 in fastCurieMap) {\n      _buildIriMap(fastCurieMap, key2, 1);\n    }\n    return inverse;\n  }\n  function _buildIriMap(iriMap, key2, idx) {\n    const entries = iriMap[key2];\n    const next = iriMap[key2] = {};\n    let iri;\n    let letter;\n    for (const entry of entries) {\n      iri = entry.iri;\n      if (idx >= iri.length) {\n        letter = \"\";\n      } else {\n        letter = iri[idx];\n      }\n      if (letter in next) {\n        next[letter].push(entry);\n      } else {\n        next[letter] = [entry];\n      }\n    }\n    for (const key3 in next) {\n      if (key3 === \"\") {\n        continue;\n      }\n      _buildIriMap(next, key3, idx + 1);\n    }\n  }\n  function _addPreferredTerm(term, entry, typeOrLanguageValue) {\n    if (!entry.hasOwnProperty(typeOrLanguageValue)) {\n      entry[typeOrLanguageValue] = term;\n    }\n  }\n  function _cloneActiveContext() {\n    const child = {};\n    child.mappings = util$4.clone(this.mappings);\n    child.clone = this.clone;\n    child.inverse = null;\n    child.getInverse = this.getInverse;\n    child.protected = util$4.clone(this.protected);\n    if (this.previousContext) {\n      child.previousContext = this.previousContext.clone();\n    }\n    child.revertToPreviousContext = this.revertToPreviousContext;\n    if (\"@base\" in this) {\n      child[\"@base\"] = this[\"@base\"];\n    }\n    if (\"@language\" in this) {\n      child[\"@language\"] = this[\"@language\"];\n    }\n    if (\"@vocab\" in this) {\n      child[\"@vocab\"] = this[\"@vocab\"];\n    }\n    return child;\n  }\n  function _revertToPreviousContext() {\n    if (!this.previousContext) {\n      return this;\n    }\n    return this.previousContext.clone();\n  }\n};\napi$7.getContextValue = (ctx, key, type) => {\n  if (key === null) {\n    if (type === \"@context\") {\n      return void 0;\n    }\n    return null;\n  }\n  if (ctx.mappings.has(key)) {\n    const entry = ctx.mappings.get(key);\n    if (_isUndefined$2(type)) {\n      return entry;\n    }\n    if (entry.hasOwnProperty(type)) {\n      return entry[type];\n    }\n  }\n  if (type === \"@language\" && type in ctx) {\n    return ctx[type];\n  }\n  if (type === \"@direction\" && type in ctx) {\n    return ctx[type];\n  }\n  if (type === \"@context\") {\n    return void 0;\n  }\n  return null;\n};\napi$7.processingMode = (activeCtx, version2) => {\n  if (version2.toString() >= \"1.1\") {\n    return !activeCtx.processingMode || activeCtx.processingMode >= \"json-ld-\" + version2.toString();\n  } else {\n    return activeCtx.processingMode === \"json-ld-1.0\";\n  }\n};\napi$7.isKeyword = (v2) => {\n  if (!_isString$3(v2) || v2[0] !== \"@\") {\n    return false;\n  }\n  switch (v2) {\n    case \"@base\":\n    case \"@container\":\n    case \"@context\":\n    case \"@default\":\n    case \"@direction\":\n    case \"@embed\":\n    case \"@explicit\":\n    case \"@graph\":\n    case \"@id\":\n    case \"@included\":\n    case \"@index\":\n    case \"@json\":\n    case \"@language\":\n    case \"@list\":\n    case \"@nest\":\n    case \"@none\":\n    case \"@omitDefault\":\n    case \"@prefix\":\n    case \"@preserve\":\n    case \"@protected\":\n    case \"@requireAll\":\n    case \"@reverse\":\n    case \"@set\":\n    case \"@type\":\n    case \"@value\":\n    case \"@version\":\n    case \"@vocab\":\n      return true;\n  }\n  return false;\n};\nfunction _deepCompare(x1, x2) {\n  if (!(x1 && typeof x1 === \"object\") || !(x2 && typeof x2 === \"object\")) {\n    return x1 === x2;\n  }\n  const x1Array = Array.isArray(x1);\n  if (x1Array !== Array.isArray(x2)) {\n    return false;\n  }\n  if (x1Array) {\n    if (x1.length !== x2.length) {\n      return false;\n    }\n    for (let i3 = 0; i3 < x1.length; ++i3) {\n      if (!_deepCompare(x1[i3], x2[i3])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  const k1s = Object.keys(x1);\n  const k2s = Object.keys(x2);\n  if (k1s.length !== k2s.length) {\n    return false;\n  }\n  for (const k1 in x1) {\n    let v1 = x1[k1];\n    let v2 = x2[k1];\n    if (k1 === \"@container\") {\n      if (Array.isArray(v1) && Array.isArray(v2)) {\n        v1 = v1.slice().sort();\n        v2 = v2.slice().sort();\n      }\n    }\n    if (!_deepCompare(v1, v2)) {\n      return false;\n    }\n  }\n  return true;\n}\nconst JsonLdError$6 = JsonLdError_1;\nconst {\n  isArray: _isArray$2,\n  isObject: _isObject$2,\n  isEmptyObject: _isEmptyObject,\n  isString: _isString$2,\n  isUndefined: _isUndefined$1\n} = types$7;\nconst {\n  isList: _isList$1,\n  isValue: _isValue$1,\n  isGraph: _isGraph$1,\n  isSubject: _isSubject\n} = graphTypes$5;\nconst {\n  expandIri: _expandIri$2,\n  getContextValue: _getContextValue$1,\n  isKeyword: _isKeyword$1,\n  process: _processContext$2,\n  processingMode: _processingMode$2\n} = context;\nconst {\n  isAbsolute: _isAbsoluteIri$1\n} = url$1;\nconst {\n  REGEX_BCP47: REGEX_BCP47$1,\n  REGEX_KEYWORD: REGEX_KEYWORD$1,\n  addValue: _addValue$2,\n  asArray: _asArray$1,\n  getValues: _getValues,\n  validateTypeValue: _validateTypeValue\n} = util$5;\nconst {\n  handleEvent: _handleEvent$2\n} = events;\nconst api$6 = {};\nvar expand = api$6;\napi$6.expand = async ({\n  activeCtx,\n  activeProperty = null,\n  element,\n  options = {},\n  insideList = false,\n  insideIndex = false,\n  typeScopedContext = null\n}) => {\n  if (element === null || element === void 0) {\n    return null;\n  }\n  if (activeProperty === \"@default\") {\n    options = Object.assign({}, options, { isFrame: false });\n  }\n  if (!_isArray$2(element) && !_isObject$2(element)) {\n    if (!insideList && (activeProperty === null || _expandIri$2(\n      activeCtx,\n      activeProperty,\n      { vocab: true },\n      options\n    ) === \"@graph\")) {\n      if (options.eventHandler) {\n        _handleEvent$2({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"free-floating scalar\",\n            level: \"warning\",\n            message: \"Dropping free-floating scalar not in a list.\",\n            details: {\n              value: element\n              //activeProperty\n              //insideList\n            }\n          },\n          options\n        });\n      }\n      return null;\n    }\n    return _expandValue({ activeCtx, activeProperty, value: element, options });\n  }\n  if (_isArray$2(element)) {\n    let rval2 = [];\n    const container = _getContextValue$1(\n      activeCtx,\n      activeProperty,\n      \"@container\"\n    ) || [];\n    insideList = insideList || container.includes(\"@list\");\n    for (let i3 = 0; i3 < element.length; ++i3) {\n      let e2 = await api$6.expand({\n        activeCtx,\n        activeProperty,\n        element: element[i3],\n        options,\n        insideIndex,\n        typeScopedContext\n      });\n      if (insideList && _isArray$2(e2)) {\n        e2 = { \"@list\": e2 };\n      }\n      if (e2 === null) {\n        continue;\n      }\n      if (_isArray$2(e2)) {\n        rval2 = rval2.concat(e2);\n      } else {\n        rval2.push(e2);\n      }\n    }\n    return rval2;\n  }\n  const expandedActiveProperty = _expandIri$2(\n    activeCtx,\n    activeProperty,\n    { vocab: true },\n    options\n  );\n  const propertyScopedCtx = _getContextValue$1(activeCtx, activeProperty, \"@context\");\n  typeScopedContext = typeScopedContext || (activeCtx.previousContext ? activeCtx : null);\n  let keys2 = Object.keys(element).sort();\n  let mustRevert = !insideIndex;\n  if (mustRevert && typeScopedContext && keys2.length <= 2 && !keys2.includes(\"@context\")) {\n    for (const key of keys2) {\n      const expandedProperty = _expandIri$2(\n        typeScopedContext,\n        key,\n        { vocab: true },\n        options\n      );\n      if (expandedProperty === \"@value\") {\n        mustRevert = false;\n        activeCtx = typeScopedContext;\n        break;\n      }\n      if (expandedProperty === \"@id\" && keys2.length === 1) {\n        mustRevert = false;\n        break;\n      }\n    }\n  }\n  if (mustRevert) {\n    activeCtx = activeCtx.revertToPreviousContext();\n  }\n  if (!_isUndefined$1(propertyScopedCtx)) {\n    activeCtx = await _processContext$2({\n      activeCtx,\n      localCtx: propertyScopedCtx,\n      propagate: true,\n      overrideProtected: true,\n      options\n    });\n  }\n  if (\"@context\" in element) {\n    activeCtx = await _processContext$2(\n      { activeCtx, localCtx: element[\"@context\"], options }\n    );\n  }\n  typeScopedContext = activeCtx;\n  let typeKey = null;\n  for (const key of keys2) {\n    const expandedProperty = _expandIri$2(activeCtx, key, { vocab: true }, options);\n    if (expandedProperty === \"@type\") {\n      typeKey = typeKey || key;\n      const value = element[key];\n      const types2 = Array.isArray(value) ? value.length > 1 ? value.slice().sort() : value : [value];\n      for (const type of types2) {\n        const ctx = _getContextValue$1(typeScopedContext, type, \"@context\");\n        if (!_isUndefined$1(ctx)) {\n          activeCtx = await _processContext$2({\n            activeCtx,\n            localCtx: ctx,\n            options,\n            propagate: false\n          });\n        }\n      }\n    }\n  }\n  let rval = {};\n  await _expandObject({\n    activeCtx,\n    activeProperty,\n    expandedActiveProperty,\n    element,\n    expandedParent: rval,\n    options,\n    insideList,\n    typeKey,\n    typeScopedContext\n  });\n  keys2 = Object.keys(rval);\n  let count = keys2.length;\n  if (\"@value\" in rval) {\n    if (\"@type\" in rval && (\"@language\" in rval || \"@direction\" in rval)) {\n      throw new JsonLdError$6(\n        'Invalid JSON-LD syntax; an element containing \"@value\" may not contain both \"@type\" and either \"@language\" or \"@direction\".',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid value object\", element: rval }\n      );\n    }\n    let validCount = count - 1;\n    if (\"@type\" in rval) {\n      validCount -= 1;\n    }\n    if (\"@index\" in rval) {\n      validCount -= 1;\n    }\n    if (\"@language\" in rval) {\n      validCount -= 1;\n    }\n    if (\"@direction\" in rval) {\n      validCount -= 1;\n    }\n    if (validCount !== 0) {\n      throw new JsonLdError$6(\n        'Invalid JSON-LD syntax; an element containing \"@value\" may only have an \"@index\" property and either \"@type\" or either or both \"@language\" or \"@direction\".',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid value object\", element: rval }\n      );\n    }\n    const values = rval[\"@value\"] === null ? [] : _asArray$1(rval[\"@value\"]);\n    const types2 = _getValues(rval, \"@type\");\n    if (_processingMode$2(activeCtx, 1.1) && types2.includes(\"@json\") && types2.length === 1) ;\n    else if (values.length === 0) {\n      if (options.eventHandler) {\n        _handleEvent$2({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"null @value value\",\n            level: \"warning\",\n            message: \"Dropping null @value value.\",\n            details: {\n              value: rval\n            }\n          },\n          options\n        });\n      }\n      rval = null;\n    } else if (!values.every((v2) => _isString$2(v2) || _isEmptyObject(v2)) && \"@language\" in rval) {\n      throw new JsonLdError$6(\n        \"Invalid JSON-LD syntax; only strings may be language-tagged.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid language-tagged value\", element: rval }\n      );\n    } else if (!types2.every((t2) => _isAbsoluteIri$1(t2) && !(_isString$2(t2) && t2.indexOf(\"_:\") === 0) || _isEmptyObject(t2))) {\n      throw new JsonLdError$6(\n        'Invalid JSON-LD syntax; an element containing \"@value\" and \"@type\" must have an absolute IRI for the value of \"@type\".',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid typed value\", element: rval }\n      );\n    }\n  } else if (\"@type\" in rval && !_isArray$2(rval[\"@type\"])) {\n    rval[\"@type\"] = [rval[\"@type\"]];\n  } else if (\"@set\" in rval || \"@list\" in rval) {\n    if (count > 1 && !(count === 2 && \"@index\" in rval)) {\n      throw new JsonLdError$6(\n        'Invalid JSON-LD syntax; if an element has the property \"@set\" or \"@list\", then it can have at most one other property that is \"@index\".',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid set or list object\", element: rval }\n      );\n    }\n    if (\"@set\" in rval) {\n      rval = rval[\"@set\"];\n      keys2 = Object.keys(rval);\n      count = keys2.length;\n    }\n  } else if (count === 1 && \"@language\" in rval) {\n    if (options.eventHandler) {\n      _handleEvent$2({\n        event: {\n          type: [\"JsonLdEvent\"],\n          code: \"object with only @language\",\n          level: \"warning\",\n          message: \"Dropping object with only @language.\",\n          details: {\n            value: rval\n          }\n        },\n        options\n      });\n    }\n    rval = null;\n  }\n  if (_isObject$2(rval) && !options.keepFreeFloatingNodes && !insideList && (activeProperty === null || expandedActiveProperty === \"@graph\" || (_getContextValue$1(activeCtx, activeProperty, \"@container\") || []).includes(\"@graph\"))) {\n    rval = _dropUnsafeObject({ value: rval, count, options });\n  }\n  return rval;\n};\nfunction _dropUnsafeObject({\n  value,\n  count,\n  options\n}) {\n  if (count === 0 || \"@value\" in value || \"@list\" in value || count === 1 && \"@id\" in value) {\n    if (options.eventHandler) {\n      let code2;\n      let message;\n      if (count === 0) {\n        code2 = \"empty object\";\n        message = \"Dropping empty object.\";\n      } else if (\"@value\" in value) {\n        code2 = \"object with only @value\";\n        message = \"Dropping object with only @value.\";\n      } else if (\"@list\" in value) {\n        code2 = \"object with only @list\";\n        message = \"Dropping object with only @list.\";\n      } else if (count === 1 && \"@id\" in value) {\n        code2 = \"object with only @id\";\n        message = \"Dropping object with only @id.\";\n      }\n      _handleEvent$2({\n        event: {\n          type: [\"JsonLdEvent\"],\n          code: code2,\n          level: \"warning\",\n          message,\n          details: {\n            value\n          }\n        },\n        options\n      });\n    }\n    return null;\n  }\n  return value;\n}\nasync function _expandObject({\n  activeCtx,\n  activeProperty,\n  expandedActiveProperty,\n  element,\n  expandedParent,\n  options = {},\n  insideList,\n  typeKey,\n  typeScopedContext\n}) {\n  const keys2 = Object.keys(element).sort();\n  const nests = [];\n  let unexpandedValue;\n  const isJsonType = element[typeKey] && _expandIri$2(\n    activeCtx,\n    _isArray$2(element[typeKey]) ? element[typeKey][0] : element[typeKey],\n    { vocab: true },\n    {\n      ...options,\n      typeExpansion: true\n    }\n  ) === \"@json\";\n  for (const key of keys2) {\n    let value = element[key];\n    let expandedValue;\n    if (key === \"@context\") {\n      continue;\n    }\n    const expandedProperty = _expandIri$2(activeCtx, key, { vocab: true }, options);\n    if (expandedProperty === null || !(_isAbsoluteIri$1(expandedProperty) || _isKeyword$1(expandedProperty))) {\n      if (options.eventHandler) {\n        _handleEvent$2({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"invalid property\",\n            level: \"warning\",\n            message: \"Dropping property that did not expand into an absolute IRI or keyword.\",\n            details: {\n              property: key,\n              expandedProperty\n            }\n          },\n          options\n        });\n      }\n      continue;\n    }\n    if (_isKeyword$1(expandedProperty)) {\n      if (expandedActiveProperty === \"@reverse\") {\n        throw new JsonLdError$6(\n          \"Invalid JSON-LD syntax; a keyword cannot be used as a @reverse property.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid reverse property map\", value }\n        );\n      }\n      if (expandedProperty in expandedParent && expandedProperty !== \"@included\" && expandedProperty !== \"@type\") {\n        throw new JsonLdError$6(\n          \"Invalid JSON-LD syntax; colliding keywords detected.\",\n          \"jsonld.SyntaxError\",\n          { code: \"colliding keywords\", keyword: expandedProperty }\n        );\n      }\n    }\n    if (expandedProperty === \"@id\") {\n      if (!_isString$2(value)) {\n        if (!options.isFrame) {\n          throw new JsonLdError$6(\n            'Invalid JSON-LD syntax; \"@id\" value must a string.',\n            \"jsonld.SyntaxError\",\n            { code: \"invalid @id value\", value }\n          );\n        }\n        if (_isObject$2(value)) {\n          if (!_isEmptyObject(value)) {\n            throw new JsonLdError$6(\n              'Invalid JSON-LD syntax; \"@id\" value an empty object or array of strings, if framing',\n              \"jsonld.SyntaxError\",\n              { code: \"invalid @id value\", value }\n            );\n          }\n        } else if (_isArray$2(value)) {\n          if (!value.every((v2) => _isString$2(v2))) {\n            throw new JsonLdError$6(\n              'Invalid JSON-LD syntax; \"@id\" value an empty object or array of strings, if framing',\n              \"jsonld.SyntaxError\",\n              { code: \"invalid @id value\", value }\n            );\n          }\n        } else {\n          throw new JsonLdError$6(\n            'Invalid JSON-LD syntax; \"@id\" value an empty object or array of strings, if framing',\n            \"jsonld.SyntaxError\",\n            { code: \"invalid @id value\", value }\n          );\n        }\n      }\n      _addValue$2(\n        expandedParent,\n        \"@id\",\n        _asArray$1(value).map((v2) => {\n          if (_isString$2(v2)) {\n            const ve = _expandIri$2(activeCtx, v2, { base: true }, options);\n            if (options.eventHandler) {\n              if (ve === null) {\n                if (v2 === null) {\n                  _handleEvent$2({\n                    event: {\n                      type: [\"JsonLdEvent\"],\n                      code: \"null @id value\",\n                      level: \"warning\",\n                      message: \"Null @id found.\",\n                      details: {\n                        id: v2\n                      }\n                    },\n                    options\n                  });\n                } else {\n                  _handleEvent$2({\n                    event: {\n                      type: [\"JsonLdEvent\"],\n                      code: \"reserved @id value\",\n                      level: \"warning\",\n                      message: \"Reserved @id found.\",\n                      details: {\n                        id: v2\n                      }\n                    },\n                    options\n                  });\n                }\n              } else if (!_isAbsoluteIri$1(ve)) {\n                _handleEvent$2({\n                  event: {\n                    type: [\"JsonLdEvent\"],\n                    code: \"relative @id reference\",\n                    level: \"warning\",\n                    message: \"Relative @id reference found.\",\n                    details: {\n                      id: v2,\n                      expandedId: ve\n                    }\n                  },\n                  options\n                });\n              }\n            }\n            return ve;\n          }\n          return v2;\n        }),\n        { propertyIsArray: options.isFrame }\n      );\n      continue;\n    }\n    if (expandedProperty === \"@type\") {\n      if (_isObject$2(value)) {\n        value = Object.fromEntries(Object.entries(value).map(([k2, v2]) => [\n          _expandIri$2(typeScopedContext, k2, { vocab: true }),\n          _asArray$1(v2).map(\n            (vv) => _expandIri$2(\n              typeScopedContext,\n              vv,\n              { base: true, vocab: true },\n              { ...options, typeExpansion: true }\n            )\n          )\n        ]));\n      }\n      _validateTypeValue(value, options.isFrame);\n      _addValue$2(\n        expandedParent,\n        \"@type\",\n        _asArray$1(value).map((v2) => {\n          if (_isString$2(v2)) {\n            const ve = _expandIri$2(\n              typeScopedContext,\n              v2,\n              { base: true, vocab: true },\n              { ...options, typeExpansion: true }\n            );\n            if (ve !== \"@json\" && !_isAbsoluteIri$1(ve)) {\n              if (options.eventHandler) {\n                _handleEvent$2({\n                  event: {\n                    type: [\"JsonLdEvent\"],\n                    code: \"relative @type reference\",\n                    level: \"warning\",\n                    message: \"Relative @type reference found.\",\n                    details: {\n                      type: v2\n                    }\n                  },\n                  options\n                });\n              }\n            }\n            return ve;\n          }\n          return v2;\n        }),\n        { propertyIsArray: !!options.isFrame }\n      );\n      continue;\n    }\n    if (expandedProperty === \"@included\" && _processingMode$2(activeCtx, 1.1)) {\n      const includedResult = _asArray$1(await api$6.expand({\n        activeCtx,\n        activeProperty,\n        element: value,\n        options\n      }));\n      if (!includedResult.every((v2) => _isSubject(v2))) {\n        throw new JsonLdError$6(\n          \"Invalid JSON-LD syntax; values of @included must expand to node objects.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid @included value\", value }\n        );\n      }\n      _addValue$2(\n        expandedParent,\n        \"@included\",\n        includedResult,\n        { propertyIsArray: true }\n      );\n      continue;\n    }\n    if (expandedProperty === \"@graph\" && !(_isObject$2(value) || _isArray$2(value))) {\n      throw new JsonLdError$6(\n        'Invalid JSON-LD syntax; \"@graph\" value must not be an object or an array.',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid @graph value\", value }\n      );\n    }\n    if (expandedProperty === \"@value\") {\n      unexpandedValue = value;\n      if (isJsonType && _processingMode$2(activeCtx, 1.1)) {\n        expandedParent[\"@value\"] = value;\n      } else {\n        _addValue$2(\n          expandedParent,\n          \"@value\",\n          value,\n          { propertyIsArray: options.isFrame }\n        );\n      }\n      continue;\n    }\n    if (expandedProperty === \"@language\") {\n      if (value === null) {\n        continue;\n      }\n      if (!_isString$2(value) && !options.isFrame) {\n        throw new JsonLdError$6(\n          'Invalid JSON-LD syntax; \"@language\" value must be a string.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid language-tagged string\", value }\n        );\n      }\n      value = _asArray$1(value).map((v2) => _isString$2(v2) ? v2.toLowerCase() : v2);\n      for (const language of value) {\n        if (_isString$2(language) && !language.match(REGEX_BCP47$1)) {\n          if (options.eventHandler) {\n            _handleEvent$2({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"invalid @language value\",\n                level: \"warning\",\n                message: \"@language value must be valid BCP47.\",\n                details: {\n                  language\n                }\n              },\n              options\n            });\n          }\n        }\n      }\n      _addValue$2(\n        expandedParent,\n        \"@language\",\n        value,\n        { propertyIsArray: options.isFrame }\n      );\n      continue;\n    }\n    if (expandedProperty === \"@direction\") {\n      if (!_isString$2(value) && !options.isFrame) {\n        throw new JsonLdError$6(\n          'Invalid JSON-LD syntax; \"@direction\" value must be a string.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid base direction\", value }\n        );\n      }\n      value = _asArray$1(value);\n      for (const dir of value) {\n        if (_isString$2(dir) && dir !== \"ltr\" && dir !== \"rtl\") {\n          throw new JsonLdError$6(\n            'Invalid JSON-LD syntax; \"@direction\" must be \"ltr\" or \"rtl\".',\n            \"jsonld.SyntaxError\",\n            { code: \"invalid base direction\", value }\n          );\n        }\n      }\n      _addValue$2(\n        expandedParent,\n        \"@direction\",\n        value,\n        { propertyIsArray: options.isFrame }\n      );\n      continue;\n    }\n    if (expandedProperty === \"@index\") {\n      if (!_isString$2(value)) {\n        throw new JsonLdError$6(\n          'Invalid JSON-LD syntax; \"@index\" value must be a string.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid @index value\", value }\n        );\n      }\n      _addValue$2(expandedParent, \"@index\", value);\n      continue;\n    }\n    if (expandedProperty === \"@reverse\") {\n      if (!_isObject$2(value)) {\n        throw new JsonLdError$6(\n          'Invalid JSON-LD syntax; \"@reverse\" value must be an object.',\n          \"jsonld.SyntaxError\",\n          { code: \"invalid @reverse value\", value }\n        );\n      }\n      expandedValue = await api$6.expand({\n        activeCtx,\n        activeProperty: \"@reverse\",\n        element: value,\n        options\n      });\n      if (\"@reverse\" in expandedValue) {\n        for (const property in expandedValue[\"@reverse\"]) {\n          _addValue$2(\n            expandedParent,\n            property,\n            expandedValue[\"@reverse\"][property],\n            { propertyIsArray: true }\n          );\n        }\n      }\n      let reverseMap = expandedParent[\"@reverse\"] || null;\n      for (const property in expandedValue) {\n        if (property === \"@reverse\") {\n          continue;\n        }\n        if (reverseMap === null) {\n          reverseMap = expandedParent[\"@reverse\"] = {};\n        }\n        _addValue$2(reverseMap, property, [], { propertyIsArray: true });\n        const items = expandedValue[property];\n        for (let ii = 0; ii < items.length; ++ii) {\n          const item = items[ii];\n          if (_isValue$1(item) || _isList$1(item)) {\n            throw new JsonLdError$6(\n              'Invalid JSON-LD syntax; \"@reverse\" value must not be a @value or an @list.',\n              \"jsonld.SyntaxError\",\n              { code: \"invalid reverse property value\", value: expandedValue }\n            );\n          }\n          _addValue$2(reverseMap, property, item, { propertyIsArray: true });\n        }\n      }\n      continue;\n    }\n    if (expandedProperty === \"@nest\") {\n      nests.push(key);\n      continue;\n    }\n    let termCtx = activeCtx;\n    const ctx = _getContextValue$1(activeCtx, key, \"@context\");\n    if (!_isUndefined$1(ctx)) {\n      termCtx = await _processContext$2({\n        activeCtx,\n        localCtx: ctx,\n        propagate: true,\n        overrideProtected: true,\n        options\n      });\n    }\n    const container = _getContextValue$1(activeCtx, key, \"@container\") || [];\n    if (container.includes(\"@language\") && _isObject$2(value)) {\n      const direction = _getContextValue$1(termCtx, key, \"@direction\");\n      expandedValue = _expandLanguageMap(termCtx, value, direction, options);\n    } else if (container.includes(\"@index\") && _isObject$2(value)) {\n      const asGraph = container.includes(\"@graph\");\n      const indexKey = _getContextValue$1(termCtx, key, \"@index\") || \"@index\";\n      const propertyIndex = indexKey !== \"@index\" && _expandIri$2(activeCtx, indexKey, { vocab: true }, options);\n      expandedValue = await _expandIndexMap({\n        activeCtx: termCtx,\n        options,\n        activeProperty: key,\n        value,\n        asGraph,\n        indexKey,\n        propertyIndex\n      });\n    } else if (container.includes(\"@id\") && _isObject$2(value)) {\n      const asGraph = container.includes(\"@graph\");\n      expandedValue = await _expandIndexMap({\n        activeCtx: termCtx,\n        options,\n        activeProperty: key,\n        value,\n        asGraph,\n        indexKey: \"@id\"\n      });\n    } else if (container.includes(\"@type\") && _isObject$2(value)) {\n      expandedValue = await _expandIndexMap({\n        // since container is `@type`, revert type scoped context when expanding\n        activeCtx: termCtx.revertToPreviousContext(),\n        options,\n        activeProperty: key,\n        value,\n        asGraph: false,\n        indexKey: \"@type\"\n      });\n    } else {\n      const isList = expandedProperty === \"@list\";\n      if (isList || expandedProperty === \"@set\") {\n        let nextActiveProperty = activeProperty;\n        if (isList && expandedActiveProperty === \"@graph\") {\n          nextActiveProperty = null;\n        }\n        expandedValue = await api$6.expand({\n          activeCtx: termCtx,\n          activeProperty: nextActiveProperty,\n          element: value,\n          options,\n          insideList: isList\n        });\n      } else if (_getContextValue$1(activeCtx, key, \"@type\") === \"@json\") {\n        expandedValue = {\n          \"@type\": \"@json\",\n          \"@value\": value\n        };\n      } else {\n        expandedValue = await api$6.expand({\n          activeCtx: termCtx,\n          activeProperty: key,\n          element: value,\n          options,\n          insideList: false\n        });\n      }\n    }\n    if (expandedValue === null && expandedProperty !== \"@value\") {\n      continue;\n    }\n    if (expandedProperty !== \"@list\" && !_isList$1(expandedValue) && container.includes(\"@list\")) {\n      expandedValue = { \"@list\": _asArray$1(expandedValue) };\n    }\n    if (container.includes(\"@graph\") && !container.some((key2) => key2 === \"@id\" || key2 === \"@index\")) {\n      expandedValue = _asArray$1(expandedValue);\n      if (!options.isFrame) {\n        expandedValue = expandedValue.filter((v2) => {\n          const count = Object.keys(v2).length;\n          return _dropUnsafeObject({ value: v2, count, options }) !== null;\n        });\n      }\n      if (expandedValue.length === 0) {\n        continue;\n      }\n      expandedValue = expandedValue.map((v2) => ({ \"@graph\": _asArray$1(v2) }));\n    }\n    if (termCtx.mappings.has(key) && termCtx.mappings.get(key).reverse) {\n      const reverseMap = expandedParent[\"@reverse\"] = expandedParent[\"@reverse\"] || {};\n      expandedValue = _asArray$1(expandedValue);\n      for (let ii = 0; ii < expandedValue.length; ++ii) {\n        const item = expandedValue[ii];\n        if (_isValue$1(item) || _isList$1(item)) {\n          throw new JsonLdError$6(\n            'Invalid JSON-LD syntax; \"@reverse\" value must not be a @value or an @list.',\n            \"jsonld.SyntaxError\",\n            { code: \"invalid reverse property value\", value: expandedValue }\n          );\n        }\n        _addValue$2(reverseMap, expandedProperty, item, { propertyIsArray: true });\n      }\n      continue;\n    }\n    _addValue$2(expandedParent, expandedProperty, expandedValue, {\n      propertyIsArray: true\n    });\n  }\n  if (\"@value\" in expandedParent) {\n    if (expandedParent[\"@type\"] === \"@json\" && _processingMode$2(activeCtx, 1.1)) ;\n    else if ((_isObject$2(unexpandedValue) || _isArray$2(unexpandedValue)) && !options.isFrame) {\n      throw new JsonLdError$6(\n        'Invalid JSON-LD syntax; \"@value\" value must not be an object or an array.',\n        \"jsonld.SyntaxError\",\n        { code: \"invalid value object value\", value: unexpandedValue }\n      );\n    }\n  }\n  for (const key of nests) {\n    const nestedValues = _isArray$2(element[key]) ? element[key] : [element[key]];\n    for (const nv of nestedValues) {\n      if (!_isObject$2(nv) || Object.keys(nv).some((k2) => _expandIri$2(activeCtx, k2, { vocab: true }, options) === \"@value\")) {\n        throw new JsonLdError$6(\n          \"Invalid JSON-LD syntax; nested value must be a node object.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid @nest value\", value: nv }\n        );\n      }\n      await _expandObject({\n        activeCtx,\n        activeProperty,\n        expandedActiveProperty,\n        element: nv,\n        expandedParent,\n        options,\n        insideList,\n        typeScopedContext,\n        typeKey\n      });\n    }\n  }\n}\nfunction _expandValue({ activeCtx, activeProperty, value, options }) {\n  if (value === null || value === void 0) {\n    return null;\n  }\n  const expandedProperty = _expandIri$2(\n    activeCtx,\n    activeProperty,\n    { vocab: true },\n    options\n  );\n  if (expandedProperty === \"@id\") {\n    return _expandIri$2(activeCtx, value, { base: true }, options);\n  } else if (expandedProperty === \"@type\") {\n    return _expandIri$2(\n      activeCtx,\n      value,\n      { vocab: true, base: true },\n      { ...options, typeExpansion: true }\n    );\n  }\n  const type = _getContextValue$1(activeCtx, activeProperty, \"@type\");\n  if ((type === \"@id\" || expandedProperty === \"@graph\") && _isString$2(value)) {\n    const expandedValue = _expandIri$2(activeCtx, value, { base: true }, options);\n    if (expandedValue === null && value.match(REGEX_KEYWORD$1)) {\n      if (options.eventHandler) {\n        _handleEvent$2({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"reserved @id value\",\n            level: \"warning\",\n            message: \"Reserved @id found.\",\n            details: {\n              id: activeProperty\n            }\n          },\n          options\n        });\n      }\n    }\n    return { \"@id\": expandedValue };\n  }\n  if (type === \"@vocab\" && _isString$2(value)) {\n    return {\n      \"@id\": _expandIri$2(activeCtx, value, { vocab: true, base: true }, options)\n    };\n  }\n  if (_isKeyword$1(expandedProperty)) {\n    return value;\n  }\n  const rval = {};\n  if (type && ![\"@id\", \"@vocab\", \"@none\"].includes(type)) {\n    rval[\"@type\"] = type;\n  } else if (_isString$2(value)) {\n    const language = _getContextValue$1(activeCtx, activeProperty, \"@language\");\n    if (language !== null) {\n      rval[\"@language\"] = language;\n    }\n    const direction = _getContextValue$1(activeCtx, activeProperty, \"@direction\");\n    if (direction !== null) {\n      rval[\"@direction\"] = direction;\n    }\n  }\n  if (![\"boolean\", \"number\", \"string\"].includes(typeof value)) {\n    value = value.toString();\n  }\n  rval[\"@value\"] = value;\n  return rval;\n}\nfunction _expandLanguageMap(activeCtx, languageMap, direction, options) {\n  const rval = [];\n  const keys2 = Object.keys(languageMap).sort();\n  for (const key of keys2) {\n    const expandedKey = _expandIri$2(activeCtx, key, { vocab: true }, options);\n    let val = languageMap[key];\n    if (!_isArray$2(val)) {\n      val = [val];\n    }\n    for (const item of val) {\n      if (item === null) {\n        continue;\n      }\n      if (!_isString$2(item)) {\n        throw new JsonLdError$6(\n          \"Invalid JSON-LD syntax; language map values must be strings.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid language map value\", languageMap }\n        );\n      }\n      const val2 = { \"@value\": item };\n      if (expandedKey !== \"@none\") {\n        if (!key.match(REGEX_BCP47$1)) {\n          if (options.eventHandler) {\n            _handleEvent$2({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"invalid @language value\",\n                level: \"warning\",\n                message: \"@language value must be valid BCP47.\",\n                details: {\n                  language: key\n                }\n              },\n              options\n            });\n          }\n        }\n        val2[\"@language\"] = key.toLowerCase();\n      }\n      if (direction) {\n        val2[\"@direction\"] = direction;\n      }\n      rval.push(val2);\n    }\n  }\n  return rval;\n}\nasync function _expandIndexMap({\n  activeCtx,\n  options,\n  activeProperty,\n  value,\n  asGraph,\n  indexKey,\n  propertyIndex\n}) {\n  const rval = [];\n  const keys2 = Object.keys(value).sort();\n  const isTypeIndex = indexKey === \"@type\";\n  for (let key of keys2) {\n    if (isTypeIndex) {\n      const ctx = _getContextValue$1(activeCtx, key, \"@context\");\n      if (!_isUndefined$1(ctx)) {\n        activeCtx = await _processContext$2({\n          activeCtx,\n          localCtx: ctx,\n          propagate: false,\n          options\n        });\n      }\n    }\n    let val = value[key];\n    if (!_isArray$2(val)) {\n      val = [val];\n    }\n    val = await api$6.expand({\n      activeCtx,\n      activeProperty,\n      element: val,\n      options,\n      insideList: false,\n      insideIndex: true\n    });\n    let expandedKey;\n    if (propertyIndex) {\n      if (key === \"@none\") {\n        expandedKey = \"@none\";\n      } else {\n        expandedKey = _expandValue(\n          { activeCtx, activeProperty: indexKey, value: key, options }\n        );\n      }\n    } else {\n      expandedKey = _expandIri$2(activeCtx, key, { vocab: true }, options);\n    }\n    if (indexKey === \"@id\") {\n      key = _expandIri$2(activeCtx, key, { base: true }, options);\n    } else if (isTypeIndex) {\n      key = expandedKey;\n    }\n    for (let item of val) {\n      if (asGraph && !_isGraph$1(item)) {\n        item = { \"@graph\": [item] };\n      }\n      if (indexKey === \"@type\") {\n        if (expandedKey === \"@none\") ;\n        else if (item[\"@type\"]) {\n          item[\"@type\"] = [key].concat(item[\"@type\"]);\n        } else {\n          item[\"@type\"] = [key];\n        }\n      } else if (_isValue$1(item) && ![\"@language\", \"@type\", \"@index\"].includes(indexKey)) {\n        throw new JsonLdError$6(\n          `Invalid JSON-LD syntax; Attempt to add illegal key to value object: \"${indexKey}\".`,\n          \"jsonld.SyntaxError\",\n          { code: \"invalid value object\", value: item }\n        );\n      } else if (propertyIndex) {\n        if (expandedKey !== \"@none\") {\n          _addValue$2(item, propertyIndex, expandedKey, {\n            propertyIsArray: true,\n            prependValue: true\n          });\n        }\n      } else if (expandedKey !== \"@none\" && !(indexKey in item)) {\n        item[indexKey] = key;\n      }\n      rval.push(item);\n    }\n  }\n  return rval;\n}\nconst { isKeyword: isKeyword$2 } = context;\nconst graphTypes$3 = graphTypes$5;\nconst types$3 = types$7;\nconst util$3 = util$5;\nconst JsonLdError$5 = JsonLdError_1;\nconst api$5 = {};\nvar nodeMap = api$5;\napi$5.createMergedNodeMap = (input, options) => {\n  options = options || {};\n  const issuer = options.issuer || new util$3.IdentifierIssuer(\"_:b\");\n  const graphs = { \"@default\": {} };\n  api$5.createNodeMap(input, graphs, \"@default\", issuer);\n  return api$5.mergeNodeMaps(graphs);\n};\napi$5.createNodeMap = (input, graphs, graph, issuer, name, list2) => {\n  if (types$3.isArray(input)) {\n    for (const node of input) {\n      api$5.createNodeMap(node, graphs, graph, issuer, void 0, list2);\n    }\n    return;\n  }\n  if (!types$3.isObject(input)) {\n    if (list2) {\n      list2.push(input);\n    }\n    return;\n  }\n  if (graphTypes$3.isValue(input)) {\n    if (\"@type\" in input) {\n      let type = input[\"@type\"];\n      if (type.indexOf(\"_:\") === 0) {\n        input[\"@type\"] = type = issuer.getId(type);\n      }\n    }\n    if (list2) {\n      list2.push(input);\n    }\n    return;\n  } else if (list2 && graphTypes$3.isList(input)) {\n    const _list = [];\n    api$5.createNodeMap(input[\"@list\"], graphs, graph, issuer, name, _list);\n    list2.push({ \"@list\": _list });\n    return;\n  }\n  if (\"@type\" in input) {\n    const types2 = input[\"@type\"];\n    for (const type of types2) {\n      if (type.indexOf(\"_:\") === 0) {\n        issuer.getId(type);\n      }\n    }\n  }\n  if (types$3.isUndefined(name)) {\n    name = graphTypes$3.isBlankNode(input) ? issuer.getId(input[\"@id\"]) : input[\"@id\"];\n  }\n  if (list2) {\n    list2.push({ \"@id\": name });\n  }\n  const subjects = graphs[graph];\n  const subject = subjects[name] = subjects[name] || {};\n  subject[\"@id\"] = name;\n  const properties = Object.keys(input).sort();\n  for (let property of properties) {\n    if (property === \"@id\") {\n      continue;\n    }\n    if (property === \"@reverse\") {\n      const referencedNode = { \"@id\": name };\n      const reverseMap = input[\"@reverse\"];\n      for (const reverseProperty in reverseMap) {\n        const items = reverseMap[reverseProperty];\n        for (const item of items) {\n          let itemName = item[\"@id\"];\n          if (graphTypes$3.isBlankNode(item)) {\n            itemName = issuer.getId(itemName);\n          }\n          api$5.createNodeMap(item, graphs, graph, issuer, itemName);\n          util$3.addValue(\n            subjects[itemName],\n            reverseProperty,\n            referencedNode,\n            { propertyIsArray: true, allowDuplicate: false }\n          );\n        }\n      }\n      continue;\n    }\n    if (property === \"@graph\") {\n      if (!(name in graphs)) {\n        graphs[name] = {};\n      }\n      api$5.createNodeMap(input[property], graphs, name, issuer);\n      continue;\n    }\n    if (property === \"@included\") {\n      api$5.createNodeMap(input[property], graphs, graph, issuer);\n      continue;\n    }\n    if (property !== \"@type\" && isKeyword$2(property)) {\n      if (property === \"@index\" && property in subject && (input[property] !== subject[property] || input[property][\"@id\"] !== subject[property][\"@id\"])) {\n        throw new JsonLdError$5(\n          \"Invalid JSON-LD syntax; conflicting @index property detected.\",\n          \"jsonld.SyntaxError\",\n          { code: \"conflicting indexes\", subject }\n        );\n      }\n      subject[property] = input[property];\n      continue;\n    }\n    const objects = input[property];\n    if (property.indexOf(\"_:\") === 0) {\n      property = issuer.getId(property);\n    }\n    if (objects.length === 0) {\n      util$3.addValue(subject, property, [], { propertyIsArray: true });\n      continue;\n    }\n    for (let o2 of objects) {\n      if (property === \"@type\") {\n        o2 = o2.indexOf(\"_:\") === 0 ? issuer.getId(o2) : o2;\n      }\n      if (graphTypes$3.isSubject(o2) || graphTypes$3.isSubjectReference(o2)) {\n        if (\"@id\" in o2 && !o2[\"@id\"]) {\n          continue;\n        }\n        const id2 = graphTypes$3.isBlankNode(o2) ? issuer.getId(o2[\"@id\"]) : o2[\"@id\"];\n        util$3.addValue(\n          subject,\n          property,\n          { \"@id\": id2 },\n          { propertyIsArray: true, allowDuplicate: false }\n        );\n        api$5.createNodeMap(o2, graphs, graph, issuer, id2);\n      } else if (graphTypes$3.isValue(o2)) {\n        util$3.addValue(\n          subject,\n          property,\n          o2,\n          { propertyIsArray: true, allowDuplicate: false }\n        );\n      } else if (graphTypes$3.isList(o2)) {\n        const _list = [];\n        api$5.createNodeMap(o2[\"@list\"], graphs, graph, issuer, name, _list);\n        o2 = { \"@list\": _list };\n        util$3.addValue(\n          subject,\n          property,\n          o2,\n          { propertyIsArray: true, allowDuplicate: false }\n        );\n      } else {\n        api$5.createNodeMap(o2, graphs, graph, issuer, name);\n        util$3.addValue(\n          subject,\n          property,\n          o2,\n          { propertyIsArray: true, allowDuplicate: false }\n        );\n      }\n    }\n  }\n};\napi$5.mergeNodeMapGraphs = (graphs) => {\n  const merged = {};\n  for (const name of Object.keys(graphs).sort()) {\n    for (const id2 of Object.keys(graphs[name]).sort()) {\n      const node = graphs[name][id2];\n      if (!(id2 in merged)) {\n        merged[id2] = { \"@id\": id2 };\n      }\n      const mergedNode = merged[id2];\n      for (const property of Object.keys(node).sort()) {\n        if (isKeyword$2(property) && property !== \"@type\") {\n          mergedNode[property] = util$3.clone(node[property]);\n        } else {\n          for (const value of node[property]) {\n            util$3.addValue(\n              mergedNode,\n              property,\n              util$3.clone(value),\n              { propertyIsArray: true, allowDuplicate: false }\n            );\n          }\n        }\n      }\n    }\n  }\n  return merged;\n};\napi$5.mergeNodeMaps = (graphs) => {\n  const defaultGraph = graphs[\"@default\"];\n  const graphNames = Object.keys(graphs).sort();\n  for (const graphName of graphNames) {\n    if (graphName === \"@default\") {\n      continue;\n    }\n    const nodeMap2 = graphs[graphName];\n    let subject = defaultGraph[graphName];\n    if (!subject) {\n      defaultGraph[graphName] = subject = {\n        \"@id\": graphName,\n        \"@graph\": []\n      };\n    } else if (!(\"@graph\" in subject)) {\n      subject[\"@graph\"] = [];\n    }\n    const graph = subject[\"@graph\"];\n    for (const id2 of Object.keys(nodeMap2).sort()) {\n      const node = nodeMap2[id2];\n      if (!graphTypes$3.isSubjectReference(node)) {\n        graph.push(node);\n      }\n    }\n  }\n  return defaultGraph;\n};\nconst {\n  isSubjectReference: _isSubjectReference$2\n} = graphTypes$5;\nconst {\n  createMergedNodeMap: _createMergedNodeMap$1\n} = nodeMap;\nconst api$4 = {};\nvar flatten = api$4;\napi$4.flatten = (input) => {\n  const defaultGraph = _createMergedNodeMap$1(input);\n  const flattened = [];\n  const keys2 = Object.keys(defaultGraph).sort();\n  for (let ki = 0; ki < keys2.length; ++ki) {\n    const node = defaultGraph[keys2[ki]];\n    if (!_isSubjectReference$2(node)) {\n      flattened.push(node);\n    }\n  }\n  return flattened;\n};\nconst JsonLdError$4 = JsonLdError_1;\nconst graphTypes$2 = graphTypes$5;\nconst types$2 = types$7;\nconst {\n  REGEX_BCP47,\n  addValue: _addValue$1\n} = util$5;\nconst {\n  handleEvent: _handleEvent$1\n} = events;\nconst {\n  // RDF,\n  RDF_LIST,\n  RDF_FIRST: RDF_FIRST$1,\n  RDF_REST: RDF_REST$1,\n  RDF_NIL: RDF_NIL$1,\n  RDF_TYPE: RDF_TYPE$1,\n  // RDF_PLAIN_LITERAL,\n  // RDF_XML_LITERAL,\n  RDF_JSON_LITERAL: RDF_JSON_LITERAL$1,\n  // RDF_OBJECT,\n  // RDF_LANGSTRING,\n  // XSD,\n  XSD_BOOLEAN: XSD_BOOLEAN$1,\n  XSD_DOUBLE: XSD_DOUBLE$1,\n  XSD_INTEGER: XSD_INTEGER$1,\n  XSD_STRING: XSD_STRING$1\n} = constants;\nconst api$3 = {};\nvar fromRdf = api$3;\napi$3.fromRDF = async (dataset, options) => {\n  const {\n    useRdfType = false,\n    useNativeTypes = false,\n    rdfDirection = null\n  } = options;\n  const defaultGraph = {};\n  const graphMap = { \"@default\": defaultGraph };\n  const referencedOnce = {};\n  if (rdfDirection) {\n    if (rdfDirection === \"compound-literal\") {\n      throw new JsonLdError$4(\n        \"Unsupported rdfDirection value.\",\n        \"jsonld.InvalidRdfDirection\",\n        { value: rdfDirection }\n      );\n    } else if (rdfDirection !== \"i18n-datatype\") {\n      throw new JsonLdError$4(\n        \"Unknown rdfDirection value.\",\n        \"jsonld.InvalidRdfDirection\",\n        { value: rdfDirection }\n      );\n    }\n  }\n  for (const quad of dataset) {\n    const name = quad.graph.termType === \"DefaultGraph\" ? \"@default\" : quad.graph.value;\n    if (!(name in graphMap)) {\n      graphMap[name] = {};\n    }\n    if (name !== \"@default\" && !(name in defaultGraph)) {\n      defaultGraph[name] = { \"@id\": name };\n    }\n    const nodeMap2 = graphMap[name];\n    const s2 = quad.subject.value;\n    const p2 = quad.predicate.value;\n    const o2 = quad.object;\n    if (!(s2 in nodeMap2)) {\n      nodeMap2[s2] = { \"@id\": s2 };\n    }\n    const node = nodeMap2[s2];\n    const objectIsNode = o2.termType.endsWith(\"Node\");\n    if (objectIsNode && !(o2.value in nodeMap2)) {\n      nodeMap2[o2.value] = { \"@id\": o2.value };\n    }\n    if (p2 === RDF_TYPE$1 && !useRdfType && objectIsNode) {\n      _addValue$1(node, \"@type\", o2.value, { propertyIsArray: true });\n      continue;\n    }\n    const value = _RDFToObject(o2, useNativeTypes, rdfDirection, options);\n    _addValue$1(node, p2, value, { propertyIsArray: true });\n    if (objectIsNode) {\n      if (o2.value === RDF_NIL$1) {\n        const object = nodeMap2[o2.value];\n        if (!(\"usages\" in object)) {\n          object.usages = [];\n        }\n        object.usages.push({\n          node,\n          property: p2,\n          value\n        });\n      } else if (o2.value in referencedOnce) {\n        referencedOnce[o2.value] = false;\n      } else {\n        referencedOnce[o2.value] = {\n          node,\n          property: p2,\n          value\n        };\n      }\n    }\n  }\n  for (const name in graphMap) {\n    const graphObject = graphMap[name];\n    if (!(RDF_NIL$1 in graphObject)) {\n      continue;\n    }\n    const nil = graphObject[RDF_NIL$1];\n    if (!nil.usages) {\n      continue;\n    }\n    for (let usage of nil.usages) {\n      let node = usage.node;\n      let property = usage.property;\n      let head = usage.value;\n      const list2 = [];\n      const listNodes = [];\n      let nodeKeyCount = Object.keys(node).length;\n      while (property === RDF_REST$1 && types$2.isObject(referencedOnce[node[\"@id\"]]) && types$2.isArray(node[RDF_FIRST$1]) && node[RDF_FIRST$1].length === 1 && types$2.isArray(node[RDF_REST$1]) && node[RDF_REST$1].length === 1 && (nodeKeyCount === 3 || nodeKeyCount === 4 && types$2.isArray(node[\"@type\"]) && node[\"@type\"].length === 1 && node[\"@type\"][0] === RDF_LIST)) {\n        list2.push(node[RDF_FIRST$1][0]);\n        listNodes.push(node[\"@id\"]);\n        usage = referencedOnce[node[\"@id\"]];\n        node = usage.node;\n        property = usage.property;\n        head = usage.value;\n        nodeKeyCount = Object.keys(node).length;\n        if (!graphTypes$2.isBlankNode(node)) {\n          break;\n        }\n      }\n      delete head[\"@id\"];\n      head[\"@list\"] = list2.reverse();\n      for (const listNode of listNodes) {\n        delete graphObject[listNode];\n      }\n    }\n    delete nil.usages;\n  }\n  const result = [];\n  const subjects = Object.keys(defaultGraph).sort();\n  for (const subject of subjects) {\n    const node = defaultGraph[subject];\n    if (subject in graphMap) {\n      const graph = node[\"@graph\"] = [];\n      const graphObject = graphMap[subject];\n      const graphSubjects = Object.keys(graphObject).sort();\n      for (const graphSubject of graphSubjects) {\n        const node2 = graphObject[graphSubject];\n        if (!graphTypes$2.isSubjectReference(node2)) {\n          graph.push(node2);\n        }\n      }\n    }\n    if (!graphTypes$2.isSubjectReference(node)) {\n      result.push(node);\n    }\n  }\n  return result;\n};\nfunction _RDFToObject(o2, useNativeTypes, rdfDirection, options) {\n  if (o2.termType.endsWith(\"Node\")) {\n    return { \"@id\": o2.value };\n  }\n  const rval = { \"@value\": o2.value };\n  if (o2.language) {\n    if (!o2.language.match(REGEX_BCP47)) {\n      if (options.eventHandler) {\n        _handleEvent$1({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"invalid @language value\",\n            level: \"warning\",\n            message: \"@language value must be valid BCP47.\",\n            details: {\n              language: o2.language\n            }\n          },\n          options\n        });\n      }\n    }\n    rval[\"@language\"] = o2.language;\n  } else {\n    let type = o2.datatype.value;\n    if (!type) {\n      type = XSD_STRING$1;\n    }\n    if (type === RDF_JSON_LITERAL$1) {\n      type = \"@json\";\n      try {\n        rval[\"@value\"] = JSON.parse(rval[\"@value\"]);\n      } catch (e2) {\n        throw new JsonLdError$4(\n          \"JSON literal could not be parsed.\",\n          \"jsonld.InvalidJsonLiteral\",\n          { code: \"invalid JSON literal\", value: rval[\"@value\"], cause: e2 }\n        );\n      }\n    }\n    if (useNativeTypes) {\n      if (type === XSD_BOOLEAN$1) {\n        if (rval[\"@value\"] === \"true\") {\n          rval[\"@value\"] = true;\n        } else if (rval[\"@value\"] === \"false\") {\n          rval[\"@value\"] = false;\n        }\n      } else if (types$2.isNumeric(rval[\"@value\"])) {\n        if (type === XSD_INTEGER$1) {\n          const i3 = parseInt(rval[\"@value\"], 10);\n          if (i3.toFixed(0) === rval[\"@value\"]) {\n            rval[\"@value\"] = i3;\n          }\n        } else if (type === XSD_DOUBLE$1) {\n          rval[\"@value\"] = parseFloat(rval[\"@value\"]);\n        }\n      }\n      if (![XSD_BOOLEAN$1, XSD_INTEGER$1, XSD_DOUBLE$1, XSD_STRING$1].includes(type)) {\n        rval[\"@type\"] = type;\n      }\n    } else if (rdfDirection === \"i18n-datatype\" && type.startsWith(\"https://www.w3.org/ns/i18n#\")) {\n      const [, language, direction] = type.split(/[#_]/);\n      if (language.length > 0) {\n        rval[\"@language\"] = language;\n        if (!language.match(REGEX_BCP47)) {\n          if (options.eventHandler) {\n            _handleEvent$1({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"invalid @language value\",\n                level: \"warning\",\n                message: \"@language value must be valid BCP47.\",\n                details: {\n                  language\n                }\n              },\n              options\n            });\n          }\n        }\n      }\n      rval[\"@direction\"] = direction;\n    } else if (type !== XSD_STRING$1) {\n      rval[\"@type\"] = type;\n    }\n  }\n  return rval;\n}\nvar canonicalize = function serialize(object) {\n  if (object === null || typeof object !== \"object\" || object.toJSON != null) {\n    return JSON.stringify(object);\n  }\n  if (Array.isArray(object)) {\n    return \"[\" + object.reduce((t2, cv, ci) => {\n      const comma = ci === 0 ? \"\" : \",\";\n      const value = cv === void 0 || typeof cv === \"symbol\" ? null : cv;\n      return t2 + comma + serialize(value);\n    }, \"\") + \"]\";\n  }\n  return \"{\" + Object.keys(object).sort().reduce((t2, cv, ci) => {\n    if (object[cv] === void 0 || typeof object[cv] === \"symbol\") {\n      return t2;\n    }\n    const comma = t2.length === 0 ? \"\" : \",\";\n    return t2 + comma + serialize(cv) + \":\" + serialize(object[cv]);\n  }, \"\") + \"}\";\n};\nconst { createNodeMap } = nodeMap;\nconst { isKeyword: isKeyword$1 } = context;\nconst graphTypes$1 = graphTypes$5;\nconst jsonCanonicalize = canonicalize;\nconst JsonLdError$3 = JsonLdError_1;\nconst types$1 = types$7;\nconst util$2 = util$5;\nconst {\n  handleEvent: _handleEvent\n} = events;\nconst {\n  // RDF,\n  // RDF_LIST,\n  RDF_FIRST,\n  RDF_REST,\n  RDF_NIL,\n  RDF_TYPE,\n  // RDF_PLAIN_LITERAL,\n  // RDF_XML_LITERAL,\n  RDF_JSON_LITERAL,\n  // RDF_OBJECT,\n  RDF_LANGSTRING,\n  // XSD,\n  XSD_BOOLEAN,\n  XSD_DOUBLE,\n  XSD_INTEGER,\n  XSD_STRING\n} = constants;\nconst {\n  isAbsolute: _isAbsoluteIri\n} = url$1;\nconst api$2 = {};\nvar toRdf = api$2;\napi$2.toRDF = (input, options) => {\n  const issuer = new util$2.IdentifierIssuer(\"_:b\");\n  const nodeMap2 = { \"@default\": {} };\n  createNodeMap(input, nodeMap2, \"@default\", issuer);\n  const dataset = [];\n  const graphNames = Object.keys(nodeMap2).sort();\n  for (const graphName of graphNames) {\n    let graphTerm;\n    if (graphName === \"@default\") {\n      graphTerm = { termType: \"DefaultGraph\", value: \"\" };\n    } else if (_isAbsoluteIri(graphName)) {\n      if (graphName.startsWith(\"_:\")) {\n        graphTerm = { termType: \"BlankNode\" };\n      } else {\n        graphTerm = { termType: \"NamedNode\" };\n      }\n      graphTerm.value = graphName;\n    } else {\n      if (options.eventHandler) {\n        _handleEvent({\n          event: {\n            type: [\"JsonLdEvent\"],\n            code: \"relative graph reference\",\n            level: \"warning\",\n            message: \"Relative graph reference found.\",\n            details: {\n              graph: graphName\n            }\n          },\n          options\n        });\n      }\n      continue;\n    }\n    _graphToRDF(dataset, nodeMap2[graphName], graphTerm, issuer, options);\n  }\n  return dataset;\n};\nfunction _graphToRDF(dataset, graph, graphTerm, issuer, options) {\n  const ids = Object.keys(graph).sort();\n  for (const id2 of ids) {\n    const node = graph[id2];\n    const properties = Object.keys(node).sort();\n    for (let property of properties) {\n      const items = node[property];\n      if (property === \"@type\") {\n        property = RDF_TYPE;\n      } else if (isKeyword$1(property)) {\n        continue;\n      }\n      for (const item of items) {\n        const subject = {\n          termType: id2.startsWith(\"_:\") ? \"BlankNode\" : \"NamedNode\",\n          value: id2\n        };\n        if (!_isAbsoluteIri(id2)) {\n          if (options.eventHandler) {\n            _handleEvent({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"relative subject reference\",\n                level: \"warning\",\n                message: \"Relative subject reference found.\",\n                details: {\n                  subject: id2\n                }\n              },\n              options\n            });\n          }\n          continue;\n        }\n        const predicate = {\n          termType: property.startsWith(\"_:\") ? \"BlankNode\" : \"NamedNode\",\n          value: property\n        };\n        if (!_isAbsoluteIri(property)) {\n          if (options.eventHandler) {\n            _handleEvent({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"relative predicate reference\",\n                level: \"warning\",\n                message: \"Relative predicate reference found.\",\n                details: {\n                  predicate: property\n                }\n              },\n              options\n            });\n          }\n          continue;\n        }\n        if (predicate.termType === \"BlankNode\" && !options.produceGeneralizedRdf) {\n          if (options.eventHandler) {\n            _handleEvent({\n              event: {\n                type: [\"JsonLdEvent\"],\n                code: \"blank node predicate\",\n                level: \"warning\",\n                message: \"Dropping blank node predicate.\",\n                details: {\n                  // FIXME: add better issuer API to get reverse mapping\n                  property: issuer.getOldIds().find((key) => issuer.getId(key) === property)\n                }\n              },\n              options\n            });\n          }\n          continue;\n        }\n        const object = _objectToRDF(\n          item,\n          issuer,\n          dataset,\n          graphTerm,\n          options.rdfDirection,\n          options\n        );\n        if (object) {\n          dataset.push({\n            subject,\n            predicate,\n            object,\n            graph: graphTerm\n          });\n        }\n      }\n    }\n  }\n}\nfunction _listToRDF(list2, issuer, dataset, graphTerm, rdfDirection, options) {\n  const first = { termType: \"NamedNode\", value: RDF_FIRST };\n  const rest = { termType: \"NamedNode\", value: RDF_REST };\n  const nil = { termType: \"NamedNode\", value: RDF_NIL };\n  const last = list2.pop();\n  const result = last ? { termType: \"BlankNode\", value: issuer.getId() } : nil;\n  let subject = result;\n  for (const item of list2) {\n    const object = _objectToRDF(\n      item,\n      issuer,\n      dataset,\n      graphTerm,\n      rdfDirection,\n      options\n    );\n    const next = { termType: \"BlankNode\", value: issuer.getId() };\n    dataset.push({\n      subject,\n      predicate: first,\n      object,\n      graph: graphTerm\n    });\n    dataset.push({\n      subject,\n      predicate: rest,\n      object: next,\n      graph: graphTerm\n    });\n    subject = next;\n  }\n  if (last) {\n    const object = _objectToRDF(\n      last,\n      issuer,\n      dataset,\n      graphTerm,\n      rdfDirection,\n      options\n    );\n    dataset.push({\n      subject,\n      predicate: first,\n      object,\n      graph: graphTerm\n    });\n    dataset.push({\n      subject,\n      predicate: rest,\n      object: nil,\n      graph: graphTerm\n    });\n  }\n  return result;\n}\nfunction _objectToRDF(item, issuer, dataset, graphTerm, rdfDirection, options) {\n  const object = {};\n  if (graphTypes$1.isValue(item)) {\n    object.termType = \"Literal\";\n    object.value = void 0;\n    object.datatype = {\n      termType: \"NamedNode\"\n    };\n    let value = item[\"@value\"];\n    const datatype = item[\"@type\"] || null;\n    if (datatype === \"@json\") {\n      object.value = jsonCanonicalize(value);\n      object.datatype.value = RDF_JSON_LITERAL;\n    } else if (types$1.isBoolean(value)) {\n      object.value = value.toString();\n      object.datatype.value = datatype || XSD_BOOLEAN;\n    } else if (types$1.isDouble(value) || datatype === XSD_DOUBLE) {\n      if (!types$1.isDouble(value)) {\n        value = parseFloat(value);\n      }\n      object.value = value.toExponential(15).replace(/(\\d)0*e\\+?/, \"$1E\");\n      object.datatype.value = datatype || XSD_DOUBLE;\n    } else if (types$1.isNumber(value)) {\n      object.value = value.toFixed(0);\n      object.datatype.value = datatype || XSD_INTEGER;\n    } else if (\"@direction\" in item && rdfDirection === \"i18n-datatype\") {\n      const language = (item[\"@language\"] || \"\").toLowerCase();\n      const direction = item[\"@direction\"];\n      const datatype2 = `https://www.w3.org/ns/i18n#${language}_${direction}`;\n      object.datatype.value = datatype2;\n      object.value = value;\n    } else if (\"@direction\" in item && rdfDirection === \"compound-literal\") {\n      throw new JsonLdError$3(\n        \"Unsupported rdfDirection value.\",\n        \"jsonld.InvalidRdfDirection\",\n        { value: rdfDirection }\n      );\n    } else if (\"@direction\" in item && rdfDirection) {\n      throw new JsonLdError$3(\n        \"Unknown rdfDirection value.\",\n        \"jsonld.InvalidRdfDirection\",\n        { value: rdfDirection }\n      );\n    } else if (\"@language\" in item) {\n      if (\"@direction\" in item && !rdfDirection) {\n        if (options.eventHandler) {\n          _handleEvent({\n            event: {\n              type: [\"JsonLdEvent\"],\n              code: \"rdfDirection not set\",\n              level: \"warning\",\n              message: \"rdfDirection not set for @direction.\",\n              details: {\n                object: object.value\n              }\n            },\n            options\n          });\n        }\n      }\n      object.value = value;\n      object.datatype.value = datatype || RDF_LANGSTRING;\n      object.language = item[\"@language\"];\n    } else {\n      if (\"@direction\" in item && !rdfDirection) {\n        if (options.eventHandler) {\n          _handleEvent({\n            event: {\n              type: [\"JsonLdEvent\"],\n              code: \"rdfDirection not set\",\n              level: \"warning\",\n              message: \"rdfDirection not set for @direction.\",\n              details: {\n                object: object.value\n              }\n            },\n            options\n          });\n        }\n      }\n      object.value = value;\n      object.datatype.value = datatype || XSD_STRING;\n    }\n  } else if (graphTypes$1.isList(item)) {\n    const _list = _listToRDF(\n      item[\"@list\"],\n      issuer,\n      dataset,\n      graphTerm,\n      rdfDirection,\n      options\n    );\n    object.termType = _list.termType;\n    object.value = _list.value;\n  } else {\n    const id2 = types$1.isObject(item) ? item[\"@id\"] : item;\n    object.termType = id2.startsWith(\"_:\") ? \"BlankNode\" : \"NamedNode\";\n    object.value = id2;\n  }\n  if (object.termType === \"NamedNode\" && !_isAbsoluteIri(object.value)) {\n    if (options.eventHandler) {\n      _handleEvent({\n        event: {\n          type: [\"JsonLdEvent\"],\n          code: \"relative object reference\",\n          level: \"warning\",\n          message: \"Relative object reference found.\",\n          details: {\n            object: object.value\n          }\n        },\n        options\n      });\n    }\n    return null;\n  }\n  return object;\n}\nconst { isKeyword } = context;\nconst graphTypes = graphTypes$5;\nconst types = types$7;\nconst util$1 = util$5;\nconst url = url$1;\nconst JsonLdError$2 = JsonLdError_1;\nconst {\n  createNodeMap: _createNodeMap$1,\n  mergeNodeMapGraphs: _mergeNodeMapGraphs\n} = nodeMap;\nconst api$1 = {};\nvar frame = api$1;\napi$1.frameMergedOrDefault = (input, frame2, options) => {\n  const state = {\n    options,\n    embedded: false,\n    graph: \"@default\",\n    graphMap: { \"@default\": {} },\n    subjectStack: [],\n    link: {},\n    bnodeMap: {}\n  };\n  const issuer = new util$1.IdentifierIssuer(\"_:b\");\n  _createNodeMap$1(input, state.graphMap, \"@default\", issuer);\n  if (options.merged) {\n    state.graphMap[\"@merged\"] = _mergeNodeMapGraphs(state.graphMap);\n    state.graph = \"@merged\";\n  }\n  state.subjects = state.graphMap[state.graph];\n  const framed = [];\n  api$1.frame(state, Object.keys(state.subjects).sort(), frame2, framed);\n  if (options.pruneBlankNodeIdentifiers) {\n    options.bnodesToClear = Object.keys(state.bnodeMap).filter((id2) => state.bnodeMap[id2].length === 1);\n  }\n  // remove @preserve from results\n  options.link = {};\n  return _cleanupPreserve(framed, options);\n};\napi$1.frame = (state, subjects, frame2, parent, property = null) => {\n  _validateFrame(frame2);\n  frame2 = frame2[0];\n  const options = state.options;\n  const flags = {\n    embed: _getFrameFlag(frame2, options, \"embed\"),\n    explicit: _getFrameFlag(frame2, options, \"explicit\"),\n    requireAll: _getFrameFlag(frame2, options, \"requireAll\")\n  };\n  if (!state.link.hasOwnProperty(state.graph)) {\n    state.link[state.graph] = {};\n  }\n  const link2 = state.link[state.graph];\n  const matches = _filterSubjects(state, subjects, frame2, flags);\n  const ids = Object.keys(matches).sort();\n  for (const id2 of ids) {\n    const subject = matches[id2];\n    if (property === null) {\n      state.uniqueEmbeds = { [state.graph]: {} };\n    } else {\n      state.uniqueEmbeds[state.graph] = state.uniqueEmbeds[state.graph] || {};\n    }\n    if (flags.embed === \"@link\" && id2 in link2) {\n      _addFrameOutput(parent, property, link2[id2]);\n      continue;\n    }\n    const output = { \"@id\": id2 };\n    if (id2.indexOf(\"_:\") === 0) {\n      util$1.addValue(state.bnodeMap, id2, output, { propertyIsArray: true });\n    }\n    link2[id2] = output;\n    if ((flags.embed === \"@first\" || flags.embed === \"@last\") && state.is11) {\n      throw new JsonLdError$2(\n        \"Invalid JSON-LD syntax; invalid value of @embed.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid @embed value\", frame: frame2 }\n      );\n    }\n    if (!state.embedded && state.uniqueEmbeds[state.graph].hasOwnProperty(id2)) {\n      continue;\n    }\n    if (state.embedded && (flags.embed === \"@never\" || _createsCircularReference(subject, state.graph, state.subjectStack))) {\n      _addFrameOutput(parent, property, output);\n      continue;\n    }\n    if (state.embedded && (flags.embed == \"@first\" || flags.embed == \"@once\") && state.uniqueEmbeds[state.graph].hasOwnProperty(id2)) {\n      _addFrameOutput(parent, property, output);\n      continue;\n    }\n    if (flags.embed === \"@last\") {\n      if (id2 in state.uniqueEmbeds[state.graph]) {\n        _removeEmbed(state, id2);\n      }\n    }\n    state.uniqueEmbeds[state.graph][id2] = { parent, property };\n    state.subjectStack.push({ subject, graph: state.graph });\n    if (id2 in state.graphMap) {\n      let recurse = false;\n      let subframe = null;\n      if (!(\"@graph\" in frame2)) {\n        recurse = state.graph !== \"@merged\";\n        subframe = {};\n      } else {\n        subframe = frame2[\"@graph\"][0];\n        recurse = !(id2 === \"@merged\" || id2 === \"@default\");\n        if (!types.isObject(subframe)) {\n          subframe = {};\n        }\n      }\n      if (recurse) {\n        api$1.frame(\n          { ...state, graph: id2, embedded: false },\n          Object.keys(state.graphMap[id2]).sort(),\n          [subframe],\n          output,\n          \"@graph\"\n        );\n      }\n    }\n    if (\"@included\" in frame2) {\n      api$1.frame(\n        { ...state, embedded: false },\n        subjects,\n        frame2[\"@included\"],\n        output,\n        \"@included\"\n      );\n    }\n    for (const prop of Object.keys(subject).sort()) {\n      if (isKeyword(prop)) {\n        output[prop] = util$1.clone(subject[prop]);\n        if (prop === \"@type\") {\n          for (const type of subject[\"@type\"]) {\n            if (type.indexOf(\"_:\") === 0) {\n              util$1.addValue(\n                state.bnodeMap,\n                type,\n                output,\n                { propertyIsArray: true }\n              );\n            }\n          }\n        }\n        continue;\n      }\n      if (flags.explicit && !(prop in frame2)) {\n        continue;\n      }\n      for (const o2 of subject[prop]) {\n        const subframe = prop in frame2 ? frame2[prop] : _createImplicitFrame(flags);\n        if (graphTypes.isList(o2)) {\n          const subframe2 = frame2[prop] && frame2[prop][0] && frame2[prop][0][\"@list\"] ? frame2[prop][0][\"@list\"] : _createImplicitFrame(flags);\n          const list2 = { \"@list\": [] };\n          _addFrameOutput(output, prop, list2);\n          const src = o2[\"@list\"];\n          for (const oo of src) {\n            if (graphTypes.isSubjectReference(oo)) {\n              api$1.frame(\n                { ...state, embedded: true },\n                [oo[\"@id\"]],\n                subframe2,\n                list2,\n                \"@list\"\n              );\n            } else {\n              _addFrameOutput(list2, \"@list\", util$1.clone(oo));\n            }\n          }\n        } else if (graphTypes.isSubjectReference(o2)) {\n          api$1.frame(\n            { ...state, embedded: true },\n            [o2[\"@id\"]],\n            subframe,\n            output,\n            prop\n          );\n        } else if (_valueMatch(subframe[0], o2)) {\n          _addFrameOutput(output, prop, util$1.clone(o2));\n        }\n      }\n    }\n    for (const prop of Object.keys(frame2).sort()) {\n      if (prop === \"@type\") {\n        if (!types.isObject(frame2[prop][0]) || !(\"@default\" in frame2[prop][0])) {\n          continue;\n        }\n      } else if (isKeyword(prop)) {\n        continue;\n      }\n      const next = frame2[prop][0] || {};\n      const omitDefaultOn = _getFrameFlag(next, options, \"omitDefault\");\n      if (!omitDefaultOn && !(prop in output)) {\n        let preserve = \"@null\";\n        if (\"@default\" in next) {\n          preserve = util$1.clone(next[\"@default\"]);\n        }\n        if (!types.isArray(preserve)) {\n          preserve = [preserve];\n        }\n        output[prop] = [{ \"@preserve\": preserve }];\n      }\n    }\n    for (const reverseProp of Object.keys(frame2[\"@reverse\"] || {}).sort()) {\n      const subframe = frame2[\"@reverse\"][reverseProp];\n      for (const subject2 of Object.keys(state.subjects)) {\n        const nodeValues = util$1.getValues(state.subjects[subject2], reverseProp);\n        if (nodeValues.some((v2) => v2[\"@id\"] === id2)) {\n          output[\"@reverse\"] = output[\"@reverse\"] || {};\n          util$1.addValue(\n            output[\"@reverse\"],\n            reverseProp,\n            [],\n            { propertyIsArray: true }\n          );\n          api$1.frame(\n            { ...state, embedded: true },\n            [subject2],\n            subframe,\n            output[\"@reverse\"][reverseProp],\n            property\n          );\n        }\n      }\n    }\n    _addFrameOutput(parent, property, output);\n    state.subjectStack.pop();\n  }\n};\napi$1.cleanupNull = (input, options) => {\n  if (types.isArray(input)) {\n    const noNulls = input.map((v2) => api$1.cleanupNull(v2, options));\n    return noNulls.filter((v2) => v2);\n  }\n  if (input === \"@null\") {\n    return null;\n  }\n  if (types.isObject(input)) {\n    if (\"@id\" in input) {\n      const id2 = input[\"@id\"];\n      if (options.link.hasOwnProperty(id2)) {\n        const idx = options.link[id2].indexOf(input);\n        if (idx !== -1) {\n          return options.link[id2][idx];\n        }\n        options.link[id2].push(input);\n      } else {\n        options.link[id2] = [input];\n      }\n    }\n    for (const key in input) {\n      input[key] = api$1.cleanupNull(input[key], options);\n    }\n  }\n  return input;\n};\nfunction _createImplicitFrame(flags) {\n  const frame2 = {};\n  for (const key in flags) {\n    if (flags[key] !== void 0) {\n      frame2[\"@\" + key] = [flags[key]];\n    }\n  }\n  return [frame2];\n}\nfunction _createsCircularReference(subjectToEmbed, graph, subjectStack) {\n  for (let i3 = subjectStack.length - 1; i3 >= 0; --i3) {\n    const subject = subjectStack[i3];\n    if (subject.graph === graph && subject.subject[\"@id\"] === subjectToEmbed[\"@id\"]) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction _getFrameFlag(frame2, options, name) {\n  const flag = \"@\" + name;\n  let rval = flag in frame2 ? frame2[flag][0] : options[name];\n  if (name === \"embed\") {\n    if (rval === true) {\n      rval = \"@once\";\n    } else if (rval === false) {\n      rval = \"@never\";\n    } else if (rval !== \"@always\" && rval !== \"@never\" && rval !== \"@link\" && rval !== \"@first\" && rval !== \"@last\" && rval !== \"@once\") {\n      throw new JsonLdError$2(\n        \"Invalid JSON-LD syntax; invalid value of @embed.\",\n        \"jsonld.SyntaxError\",\n        { code: \"invalid @embed value\", frame: frame2 }\n      );\n    }\n  }\n  return rval;\n}\nfunction _validateFrame(frame2) {\n  if (!types.isArray(frame2) || frame2.length !== 1 || !types.isObject(frame2[0])) {\n    throw new JsonLdError$2(\n      \"Invalid JSON-LD syntax; a JSON-LD frame must be a single object.\",\n      \"jsonld.SyntaxError\",\n      { frame: frame2 }\n    );\n  }\n  if (\"@id\" in frame2[0]) {\n    for (const id2 of util$1.asArray(frame2[0][\"@id\"])) {\n      if (!(types.isObject(id2) || url.isAbsolute(id2)) || types.isString(id2) && id2.indexOf(\"_:\") === 0) {\n        throw new JsonLdError$2(\n          \"Invalid JSON-LD syntax; invalid @id in frame.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid frame\", frame: frame2 }\n        );\n      }\n    }\n  }\n  if (\"@type\" in frame2[0]) {\n    for (const type of util$1.asArray(frame2[0][\"@type\"])) {\n      if (!(types.isObject(type) || url.isAbsolute(type) || type === \"@json\") || types.isString(type) && type.indexOf(\"_:\") === 0) {\n        throw new JsonLdError$2(\n          \"Invalid JSON-LD syntax; invalid @type in frame.\",\n          \"jsonld.SyntaxError\",\n          { code: \"invalid frame\", frame: frame2 }\n        );\n      }\n    }\n  }\n}\nfunction _filterSubjects(state, subjects, frame2, flags) {\n  const rval = {};\n  for (const id2 of subjects) {\n    const subject = state.graphMap[state.graph][id2];\n    if (_filterSubject(state, subject, frame2, flags)) {\n      rval[id2] = subject;\n    }\n  }\n  return rval;\n}\nfunction _filterSubject(state, subject, frame2, flags) {\n  let wildcard = true;\n  let matchesSome = false;\n  for (const key in frame2) {\n    let matchThis = false;\n    const nodeValues = util$1.getValues(subject, key);\n    const isEmpty2 = util$1.getValues(frame2, key).length === 0;\n    if (key === \"@id\") {\n      if (types.isEmptyObject(frame2[\"@id\"][0] || {})) {\n        matchThis = true;\n      } else if (frame2[\"@id\"].length >= 0) {\n        matchThis = frame2[\"@id\"].includes(nodeValues[0]);\n      }\n      if (!flags.requireAll) {\n        return matchThis;\n      }\n    } else if (key === \"@type\") {\n      wildcard = false;\n      if (isEmpty2) {\n        if (nodeValues.length > 0) {\n          return false;\n        }\n        matchThis = true;\n      } else if (frame2[\"@type\"].length === 1 && types.isEmptyObject(frame2[\"@type\"][0])) {\n        matchThis = nodeValues.length > 0;\n      } else {\n        for (const type of frame2[\"@type\"]) {\n          if (types.isObject(type) && \"@default\" in type) {\n            matchThis = true;\n          } else {\n            matchThis = matchThis || nodeValues.some((tt) => tt === type);\n          }\n        }\n      }\n      if (!flags.requireAll) {\n        return matchThis;\n      }\n    } else if (isKeyword(key)) {\n      continue;\n    } else {\n      const thisFrame = util$1.getValues(frame2, key)[0];\n      let hasDefault = false;\n      if (thisFrame) {\n        _validateFrame([thisFrame]);\n        hasDefault = \"@default\" in thisFrame;\n      }\n      wildcard = false;\n      if (nodeValues.length === 0 && hasDefault) {\n        continue;\n      }\n      if (nodeValues.length > 0 && isEmpty2) {\n        return false;\n      }\n      if (thisFrame === void 0) {\n        if (nodeValues.length > 0) {\n          return false;\n        }\n        matchThis = true;\n      } else {\n        if (graphTypes.isList(thisFrame)) {\n          const listValue = thisFrame[\"@list\"][0];\n          if (graphTypes.isList(nodeValues[0])) {\n            const nodeListValues = nodeValues[0][\"@list\"];\n            if (graphTypes.isValue(listValue)) {\n              matchThis = nodeListValues.some((lv) => _valueMatch(listValue, lv));\n            } else if (graphTypes.isSubject(listValue) || graphTypes.isSubjectReference(listValue)) {\n              matchThis = nodeListValues.some((lv) => _nodeMatch(\n                state,\n                listValue,\n                lv,\n                flags\n              ));\n            }\n          }\n        } else if (graphTypes.isValue(thisFrame)) {\n          matchThis = nodeValues.some((nv) => _valueMatch(thisFrame, nv));\n        } else if (graphTypes.isSubjectReference(thisFrame)) {\n          matchThis = nodeValues.some((nv) => _nodeMatch(state, thisFrame, nv, flags));\n        } else if (types.isObject(thisFrame)) {\n          matchThis = nodeValues.length > 0;\n        } else {\n          matchThis = false;\n        }\n      }\n    }\n    if (!matchThis && flags.requireAll) {\n      return false;\n    }\n    matchesSome = matchesSome || matchThis;\n  }\n  return wildcard || matchesSome;\n}\nfunction _removeEmbed(state, id2) {\n  const embeds = state.uniqueEmbeds[state.graph];\n  const embed = embeds[id2];\n  const parent = embed.parent;\n  const property = embed.property;\n  const subject = { \"@id\": id2 };\n  if (types.isArray(parent)) {\n    for (let i3 = 0; i3 < parent.length; ++i3) {\n      if (util$1.compareValues(parent[i3], subject)) {\n        parent[i3] = subject;\n        break;\n      }\n    }\n  } else {\n    const useArray = types.isArray(parent[property]);\n    util$1.removeValue(parent, property, subject, { propertyIsArray: useArray });\n    util$1.addValue(parent, property, subject, { propertyIsArray: useArray });\n  }\n  const removeDependents = (id3) => {\n    const ids = Object.keys(embeds);\n    for (const next of ids) {\n      if (next in embeds && types.isObject(embeds[next].parent) && embeds[next].parent[\"@id\"] === id3) {\n        delete embeds[next];\n        removeDependents(next);\n      }\n    }\n  };\n  removeDependents(id2);\n}\n/**\n * Removes the @preserve keywords from expanded result of framing.\n *\n * @param input the framed, framed output.\n * @param options the framing options used.\n *\n * @return the resulting output.\n */\nfunction _cleanupPreserve(input, options) {\n  if (types.isArray(input)) {\n    return input.map((value) => _cleanupPreserve(value, options));\n  }\n  if (types.isObject(input)) {\n    // remove @preserve\n    if (\"@preserve\" in input) {\n      return input[\"@preserve\"][0];\n    }\n    if (graphTypes.isValue(input)) {\n      return input;\n    }\n    if (graphTypes.isList(input)) {\n      input[\"@list\"] = _cleanupPreserve(input[\"@list\"], options);\n      return input;\n    }\n    if (\"@id\" in input) {\n      const id2 = input[\"@id\"];\n      if (options.link.hasOwnProperty(id2)) {\n        const idx = options.link[id2].indexOf(input);\n        if (idx !== -1) {\n          return options.link[id2][idx];\n        }\n        options.link[id2].push(input);\n      } else {\n        options.link[id2] = [input];\n      }\n    }\n    for (const prop in input) {\n      if (prop === \"@id\" && options.bnodesToClear.includes(input[prop])) {\n        delete input[\"@id\"];\n        continue;\n      }\n      input[prop] = _cleanupPreserve(input[prop], options);\n    }\n  }\n  return input;\n}\nfunction _addFrameOutput(parent, property, output) {\n  if (types.isObject(parent)) {\n    util$1.addValue(parent, property, output, { propertyIsArray: true });\n  } else {\n    parent.push(output);\n  }\n}\nfunction _nodeMatch(state, pattern, value, flags) {\n  if (!(\"@id\" in value)) {\n    return false;\n  }\n  const nodeObject = state.subjects[value[\"@id\"]];\n  return nodeObject && _filterSubject(state, nodeObject, pattern, flags);\n}\nfunction _valueMatch(pattern, value) {\n  const v1 = value[\"@value\"];\n  const t1 = value[\"@type\"];\n  const l1 = value[\"@language\"];\n  const v2 = pattern[\"@value\"] ? types.isArray(pattern[\"@value\"]) ? pattern[\"@value\"] : [pattern[\"@value\"]] : [];\n  const t2 = pattern[\"@type\"] ? types.isArray(pattern[\"@type\"]) ? pattern[\"@type\"] : [pattern[\"@type\"]] : [];\n  const l2 = pattern[\"@language\"] ? types.isArray(pattern[\"@language\"]) ? pattern[\"@language\"] : [pattern[\"@language\"]] : [];\n  if (v2.length === 0 && t2.length === 0 && l2.length === 0) {\n    return true;\n  }\n  if (!(v2.includes(v1) || types.isEmptyObject(v2[0]))) {\n    return false;\n  }\n  if (!(!t1 && t2.length === 0 || t2.includes(t1) || t1 && types.isEmptyObject(t2[0]))) {\n    return false;\n  }\n  if (!(!l1 && l2.length === 0 || l2.includes(l1) || l1 && types.isEmptyObject(l2[0]))) {\n    return false;\n  }\n  return true;\n}\nconst JsonLdError$1 = JsonLdError_1;\nconst {\n  isArray: _isArray$1,\n  isObject: _isObject$1,\n  isString: _isString$1,\n  isUndefined: _isUndefined\n} = types$7;\nconst {\n  isList: _isList,\n  isValue: _isValue,\n  isGraph: _isGraph,\n  isSimpleGraph: _isSimpleGraph,\n  isSubjectReference: _isSubjectReference$1\n} = graphTypes$5;\nconst {\n  expandIri: _expandIri$1,\n  getContextValue: _getContextValue,\n  isKeyword: _isKeyword,\n  process: _processContext$1,\n  processingMode: _processingMode$1\n} = context;\nconst {\n  removeBase: _removeBase,\n  prependBase: _prependBase\n} = url$1;\nconst {\n  REGEX_KEYWORD,\n  addValue: _addValue,\n  asArray: _asArray,\n  compareShortestLeast: _compareShortestLeast\n} = util$5;\nconst api = {};\nvar compact = api;\napi.compact = async ({\n  activeCtx,\n  activeProperty = null,\n  element,\n  options = {}\n}) => {\n  if (_isArray$1(element)) {\n    let rval = [];\n    for (let i3 = 0; i3 < element.length; ++i3) {\n      const compacted = await api.compact({\n        activeCtx,\n        activeProperty,\n        element: element[i3],\n        options\n      });\n      if (compacted === null) {\n        continue;\n      }\n      rval.push(compacted);\n    }\n    if (options.compactArrays && rval.length === 1) {\n      const container = _getContextValue(\n        activeCtx,\n        activeProperty,\n        \"@container\"\n      ) || [];\n      if (container.length === 0) {\n        rval = rval[0];\n      }\n    }\n    return rval;\n  }\n  const ctx = _getContextValue(activeCtx, activeProperty, \"@context\");\n  if (!_isUndefined(ctx)) {\n    activeCtx = await _processContext$1({\n      activeCtx,\n      localCtx: ctx,\n      propagate: true,\n      overrideProtected: true,\n      options\n    });\n  }\n  if (_isObject$1(element)) {\n    if (options.link && \"@id\" in element && options.link.hasOwnProperty(element[\"@id\"])) {\n      const linked = options.link[element[\"@id\"]];\n      for (let i3 = 0; i3 < linked.length; ++i3) {\n        if (linked[i3].expanded === element) {\n          return linked[i3].compacted;\n        }\n      }\n    }\n    if (_isValue(element) || _isSubjectReference$1(element)) {\n      const rval2 = api.compactValue({ activeCtx, activeProperty, value: element, options });\n      if (options.link && _isSubjectReference$1(element)) {\n        if (!options.link.hasOwnProperty(element[\"@id\"])) {\n          options.link[element[\"@id\"]] = [];\n        }\n        options.link[element[\"@id\"]].push({ expanded: element, compacted: rval2 });\n      }\n      return rval2;\n    }\n    if (_isList(element)) {\n      const container = _getContextValue(\n        activeCtx,\n        activeProperty,\n        \"@container\"\n      ) || [];\n      if (container.includes(\"@list\")) {\n        return api.compact({\n          activeCtx,\n          activeProperty,\n          element: element[\"@list\"],\n          options\n        });\n      }\n    }\n    const insideReverse = activeProperty === \"@reverse\";\n    const rval = {};\n    const inputCtx = activeCtx;\n    if (!_isValue(element) && !_isSubjectReference$1(element)) {\n      activeCtx = activeCtx.revertToPreviousContext();\n    }\n    const propertyScopedCtx = _getContextValue(inputCtx, activeProperty, \"@context\");\n    if (!_isUndefined(propertyScopedCtx)) {\n      activeCtx = await _processContext$1({\n        activeCtx,\n        localCtx: propertyScopedCtx,\n        propagate: true,\n        overrideProtected: true,\n        options\n      });\n    }\n    if (options.link && \"@id\" in element) {\n      if (!options.link.hasOwnProperty(element[\"@id\"])) {\n        options.link[element[\"@id\"]] = [];\n      }\n      options.link[element[\"@id\"]].push({ expanded: element, compacted: rval });\n    }\n    let types2 = element[\"@type\"] || [];\n    if (types2.length > 1) {\n      types2 = Array.from(types2).sort();\n    }\n    const typeContext = activeCtx;\n    for (const type of types2) {\n      const compactedType = api.compactIri(\n        { activeCtx: typeContext, iri: type, relativeTo: { vocab: true } }\n      );\n      const ctx2 = _getContextValue(inputCtx, compactedType, \"@context\");\n      if (!_isUndefined(ctx2)) {\n        activeCtx = await _processContext$1({\n          activeCtx,\n          localCtx: ctx2,\n          options,\n          propagate: false\n        });\n      }\n    }\n    const keys2 = Object.keys(element).sort();\n    for (const expandedProperty of keys2) {\n      const expandedValue = element[expandedProperty];\n      if (expandedProperty === \"@id\") {\n        let compactedValue = _asArray(expandedValue).map(\n          (expandedIri) => api.compactIri({\n            activeCtx,\n            iri: expandedIri,\n            relativeTo: { vocab: false },\n            base: options.base\n          })\n        );\n        if (compactedValue.length === 1) {\n          compactedValue = compactedValue[0];\n        }\n        const alias = api.compactIri(\n          { activeCtx, iri: \"@id\", relativeTo: { vocab: true } }\n        );\n        rval[alias] = compactedValue;\n        continue;\n      }\n      if (expandedProperty === \"@type\") {\n        let compactedValue = _asArray(expandedValue).map(\n          (expandedIri) => api.compactIri({\n            activeCtx: inputCtx,\n            iri: expandedIri,\n            relativeTo: { vocab: true }\n          })\n        );\n        if (compactedValue.length === 1) {\n          compactedValue = compactedValue[0];\n        }\n        const alias = api.compactIri(\n          { activeCtx, iri: \"@type\", relativeTo: { vocab: true } }\n        );\n        const container = _getContextValue(\n          activeCtx,\n          alias,\n          \"@container\"\n        ) || [];\n        const typeAsSet = container.includes(\"@set\") && _processingMode$1(activeCtx, 1.1);\n        const isArray2 = typeAsSet || _isArray$1(compactedValue) && expandedValue.length === 0;\n        _addValue(rval, alias, compactedValue, { propertyIsArray: isArray2 });\n        continue;\n      }\n      if (expandedProperty === \"@reverse\") {\n        const compactedValue = await api.compact({\n          activeCtx,\n          activeProperty: \"@reverse\",\n          element: expandedValue,\n          options\n        });\n        for (const compactedProperty in compactedValue) {\n          if (activeCtx.mappings.has(compactedProperty) && activeCtx.mappings.get(compactedProperty).reverse) {\n            const value = compactedValue[compactedProperty];\n            const container = _getContextValue(\n              activeCtx,\n              compactedProperty,\n              \"@container\"\n            ) || [];\n            const useArray = container.includes(\"@set\") || !options.compactArrays;\n            _addValue(\n              rval,\n              compactedProperty,\n              value,\n              { propertyIsArray: useArray }\n            );\n            delete compactedValue[compactedProperty];\n          }\n        }\n        if (Object.keys(compactedValue).length > 0) {\n          const alias = api.compactIri({\n            activeCtx,\n            iri: expandedProperty,\n            relativeTo: { vocab: true }\n          });\n          _addValue(rval, alias, compactedValue);\n        }\n        continue;\n      }\n      if (expandedProperty === \"@preserve\") {\n        const compactedValue = await api.compact({\n          activeCtx,\n          activeProperty,\n          element: expandedValue,\n          options\n        });\n        if (!(_isArray$1(compactedValue) && compactedValue.length === 0)) {\n          _addValue(rval, expandedProperty, compactedValue);\n        }\n        continue;\n      }\n      if (expandedProperty === \"@index\") {\n        const container = _getContextValue(\n          activeCtx,\n          activeProperty,\n          \"@container\"\n        ) || [];\n        if (container.includes(\"@index\")) {\n          continue;\n        }\n        const alias = api.compactIri({\n          activeCtx,\n          iri: expandedProperty,\n          relativeTo: { vocab: true }\n        });\n        _addValue(rval, alias, expandedValue);\n        continue;\n      }\n      if (expandedProperty !== \"@graph\" && expandedProperty !== \"@list\" && expandedProperty !== \"@included\" && _isKeyword(expandedProperty)) {\n        const alias = api.compactIri({\n          activeCtx,\n          iri: expandedProperty,\n          relativeTo: { vocab: true }\n        });\n        _addValue(rval, alias, expandedValue);\n        continue;\n      }\n      if (!_isArray$1(expandedValue)) {\n        throw new JsonLdError$1(\n          \"JSON-LD expansion error; expanded value must be an array.\",\n          \"jsonld.SyntaxError\"\n        );\n      }\n      if (expandedValue.length === 0) {\n        const itemActiveProperty = api.compactIri({\n          activeCtx,\n          iri: expandedProperty,\n          value: expandedValue,\n          relativeTo: { vocab: true },\n          reverse: insideReverse\n        });\n        const nestProperty = activeCtx.mappings.has(itemActiveProperty) ? activeCtx.mappings.get(itemActiveProperty)[\"@nest\"] : null;\n        let nestResult = rval;\n        if (nestProperty) {\n          _checkNestProperty(activeCtx, nestProperty, options);\n          if (!_isObject$1(rval[nestProperty])) {\n            rval[nestProperty] = {};\n          }\n          nestResult = rval[nestProperty];\n        }\n        _addValue(\n          nestResult,\n          itemActiveProperty,\n          expandedValue,\n          {\n            propertyIsArray: true\n          }\n        );\n      }\n      for (const expandedItem of expandedValue) {\n        const itemActiveProperty = api.compactIri({\n          activeCtx,\n          iri: expandedProperty,\n          value: expandedItem,\n          relativeTo: { vocab: true },\n          reverse: insideReverse\n        });\n        const nestProperty = activeCtx.mappings.has(itemActiveProperty) ? activeCtx.mappings.get(itemActiveProperty)[\"@nest\"] : null;\n        let nestResult = rval;\n        if (nestProperty) {\n          _checkNestProperty(activeCtx, nestProperty, options);\n          if (!_isObject$1(rval[nestProperty])) {\n            rval[nestProperty] = {};\n          }\n          nestResult = rval[nestProperty];\n        }\n        const container = _getContextValue(\n          activeCtx,\n          itemActiveProperty,\n          \"@container\"\n        ) || [];\n        const isGraph = _isGraph(expandedItem);\n        const isList = _isList(expandedItem);\n        let inner;\n        if (isList) {\n          inner = expandedItem[\"@list\"];\n        } else if (isGraph) {\n          inner = expandedItem[\"@graph\"];\n        }\n        let compactedItem = await api.compact({\n          activeCtx,\n          activeProperty: itemActiveProperty,\n          element: isList || isGraph ? inner : expandedItem,\n          options\n        });\n        if (isList) {\n          if (!_isArray$1(compactedItem)) {\n            compactedItem = [compactedItem];\n          }\n          if (!container.includes(\"@list\")) {\n            compactedItem = {\n              [api.compactIri({\n                activeCtx,\n                iri: \"@list\",\n                relativeTo: { vocab: true }\n              })]: compactedItem\n            };\n            if (\"@index\" in expandedItem) {\n              compactedItem[api.compactIri({\n                activeCtx,\n                iri: \"@index\",\n                relativeTo: { vocab: true }\n              })] = expandedItem[\"@index\"];\n            }\n          } else {\n            _addValue(nestResult, itemActiveProperty, compactedItem, {\n              valueIsArray: true,\n              allowDuplicate: true\n            });\n            continue;\n          }\n        }\n        if (isGraph) {\n          if (container.includes(\"@graph\") && (container.includes(\"@id\") || container.includes(\"@index\") && _isSimpleGraph(expandedItem))) {\n            let mapObject;\n            if (nestResult.hasOwnProperty(itemActiveProperty)) {\n              mapObject = nestResult[itemActiveProperty];\n            } else {\n              nestResult[itemActiveProperty] = mapObject = {};\n            }\n            const key = (container.includes(\"@id\") ? expandedItem[\"@id\"] : expandedItem[\"@index\"]) || api.compactIri({\n              activeCtx,\n              iri: \"@none\",\n              relativeTo: { vocab: true }\n            });\n            _addValue(\n              mapObject,\n              key,\n              compactedItem,\n              {\n                propertyIsArray: !options.compactArrays || container.includes(\"@set\")\n              }\n            );\n          } else if (container.includes(\"@graph\") && _isSimpleGraph(expandedItem)) {\n            if (_isArray$1(compactedItem) && compactedItem.length > 1) {\n              compactedItem = { \"@included\": compactedItem };\n            }\n            _addValue(\n              nestResult,\n              itemActiveProperty,\n              compactedItem,\n              {\n                propertyIsArray: !options.compactArrays || container.includes(\"@set\")\n              }\n            );\n          } else {\n            if (_isArray$1(compactedItem) && compactedItem.length === 1 && options.compactArrays) {\n              compactedItem = compactedItem[0];\n            }\n            compactedItem = {\n              [api.compactIri({\n                activeCtx,\n                iri: \"@graph\",\n                relativeTo: { vocab: true }\n              })]: compactedItem\n            };\n            if (\"@id\" in expandedItem) {\n              compactedItem[api.compactIri({\n                activeCtx,\n                iri: \"@id\",\n                relativeTo: { vocab: true }\n              })] = expandedItem[\"@id\"];\n            }\n            if (\"@index\" in expandedItem) {\n              compactedItem[api.compactIri({\n                activeCtx,\n                iri: \"@index\",\n                relativeTo: { vocab: true }\n              })] = expandedItem[\"@index\"];\n            }\n            _addValue(\n              nestResult,\n              itemActiveProperty,\n              compactedItem,\n              {\n                propertyIsArray: !options.compactArrays || container.includes(\"@set\")\n              }\n            );\n          }\n        } else if (container.includes(\"@language\") || container.includes(\"@index\") || container.includes(\"@id\") || container.includes(\"@type\")) {\n          let mapObject;\n          if (nestResult.hasOwnProperty(itemActiveProperty)) {\n            mapObject = nestResult[itemActiveProperty];\n          } else {\n            nestResult[itemActiveProperty] = mapObject = {};\n          }\n          let key;\n          if (container.includes(\"@language\")) {\n            if (_isValue(compactedItem)) {\n              compactedItem = compactedItem[\"@value\"];\n            }\n            key = expandedItem[\"@language\"];\n          } else if (container.includes(\"@index\")) {\n            const indexKey = _getContextValue(\n              activeCtx,\n              itemActiveProperty,\n              \"@index\"\n            ) || \"@index\";\n            const containerKey = api.compactIri(\n              { activeCtx, iri: indexKey, relativeTo: { vocab: true } }\n            );\n            if (indexKey === \"@index\") {\n              key = expandedItem[\"@index\"];\n              delete compactedItem[containerKey];\n            } else {\n              let others;\n              [key, ...others] = _asArray(compactedItem[indexKey] || []);\n              if (!_isString$1(key)) {\n                key = null;\n              } else {\n                switch (others.length) {\n                  case 0:\n                    delete compactedItem[indexKey];\n                    break;\n                  case 1:\n                    compactedItem[indexKey] = others[0];\n                    break;\n                  default:\n                    compactedItem[indexKey] = others;\n                    break;\n                }\n              }\n            }\n          } else if (container.includes(\"@id\")) {\n            const idKey = api.compactIri({\n              activeCtx,\n              iri: \"@id\",\n              relativeTo: { vocab: true }\n            });\n            key = compactedItem[idKey];\n            delete compactedItem[idKey];\n          } else if (container.includes(\"@type\")) {\n            const typeKey = api.compactIri({\n              activeCtx,\n              iri: \"@type\",\n              relativeTo: { vocab: true }\n            });\n            let types3;\n            [key, ...types3] = _asArray(compactedItem[typeKey] || []);\n            switch (types3.length) {\n              case 0:\n                delete compactedItem[typeKey];\n                break;\n              case 1:\n                compactedItem[typeKey] = types3[0];\n                break;\n              default:\n                compactedItem[typeKey] = types3;\n                break;\n            }\n            if (Object.keys(compactedItem).length === 1 && \"@id\" in expandedItem) {\n              compactedItem = await api.compact({\n                activeCtx,\n                activeProperty: itemActiveProperty,\n                element: { \"@id\": expandedItem[\"@id\"] },\n                options\n              });\n            }\n          }\n          if (!key) {\n            key = api.compactIri({\n              activeCtx,\n              iri: \"@none\",\n              relativeTo: { vocab: true }\n            });\n          }\n          _addValue(\n            mapObject,\n            key,\n            compactedItem,\n            {\n              propertyIsArray: container.includes(\"@set\")\n            }\n          );\n        } else {\n          const isArray2 = !options.compactArrays || container.includes(\"@set\") || container.includes(\"@list\") || _isArray$1(compactedItem) && compactedItem.length === 0 || expandedProperty === \"@list\" || expandedProperty === \"@graph\";\n          _addValue(\n            nestResult,\n            itemActiveProperty,\n            compactedItem,\n            { propertyIsArray: isArray2 }\n          );\n        }\n      }\n    }\n    return rval;\n  }\n  return element;\n};\napi.compactIri = ({\n  activeCtx,\n  iri,\n  value = null,\n  relativeTo = { vocab: false },\n  reverse = false,\n  base: base2 = null\n}) => {\n  if (iri === null) {\n    return iri;\n  }\n  if (activeCtx.isPropertyTermScoped && activeCtx.previousContext) {\n    activeCtx = activeCtx.previousContext;\n  }\n  const inverseCtx = activeCtx.getInverse();\n  if (_isKeyword(iri) && iri in inverseCtx && \"@none\" in inverseCtx[iri] && \"@type\" in inverseCtx[iri][\"@none\"] && \"@none\" in inverseCtx[iri][\"@none\"][\"@type\"]) {\n    return inverseCtx[iri][\"@none\"][\"@type\"][\"@none\"];\n  }\n  if (relativeTo.vocab && iri in inverseCtx) {\n    const defaultLanguage = activeCtx[\"@language\"] || \"@none\";\n    const containers = [];\n    if (_isObject$1(value) && \"@index\" in value && !(\"@graph\" in value)) {\n      containers.push(\"@index\", \"@index@set\");\n    }\n    if (_isObject$1(value) && \"@preserve\" in value) {\n      value = value[\"@preserve\"][0];\n    }\n    if (_isGraph(value)) {\n      if (\"@index\" in value) {\n        containers.push(\n          \"@graph@index\",\n          \"@graph@index@set\",\n          \"@index\",\n          \"@index@set\"\n        );\n      }\n      if (\"@id\" in value) {\n        containers.push(\n          \"@graph@id\",\n          \"@graph@id@set\"\n        );\n      }\n      containers.push(\"@graph\", \"@graph@set\", \"@set\");\n      if (!(\"@index\" in value)) {\n        containers.push(\n          \"@graph@index\",\n          \"@graph@index@set\",\n          \"@index\",\n          \"@index@set\"\n        );\n      }\n      if (!(\"@id\" in value)) {\n        containers.push(\"@graph@id\", \"@graph@id@set\");\n      }\n    } else if (_isObject$1(value) && !_isValue(value)) {\n      containers.push(\"@id\", \"@id@set\", \"@type\", \"@set@type\");\n    }\n    let typeOrLanguage = \"@language\";\n    let typeOrLanguageValue = \"@null\";\n    if (reverse) {\n      typeOrLanguage = \"@type\";\n      typeOrLanguageValue = \"@reverse\";\n      containers.push(\"@set\");\n    } else if (_isList(value)) {\n      if (!(\"@index\" in value)) {\n        containers.push(\"@list\");\n      }\n      const list2 = value[\"@list\"];\n      if (list2.length === 0) {\n        typeOrLanguage = \"@any\";\n        typeOrLanguageValue = \"@none\";\n      } else {\n        let commonLanguage = list2.length === 0 ? defaultLanguage : null;\n        let commonType = null;\n        for (let i3 = 0; i3 < list2.length; ++i3) {\n          const item = list2[i3];\n          let itemLanguage = \"@none\";\n          let itemType = \"@none\";\n          if (_isValue(item)) {\n            if (\"@direction\" in item) {\n              const lang = (item[\"@language\"] || \"\").toLowerCase();\n              const dir = item[\"@direction\"];\n              itemLanguage = `${lang}_${dir}`;\n            } else if (\"@language\" in item) {\n              itemLanguage = item[\"@language\"].toLowerCase();\n            } else if (\"@type\" in item) {\n              itemType = item[\"@type\"];\n            } else {\n              itemLanguage = \"@null\";\n            }\n          } else {\n            itemType = \"@id\";\n          }\n          if (commonLanguage === null) {\n            commonLanguage = itemLanguage;\n          } else if (itemLanguage !== commonLanguage && _isValue(item)) {\n            commonLanguage = \"@none\";\n          }\n          if (commonType === null) {\n            commonType = itemType;\n          } else if (itemType !== commonType) {\n            commonType = \"@none\";\n          }\n          if (commonLanguage === \"@none\" && commonType === \"@none\") {\n            break;\n          }\n        }\n        commonLanguage = commonLanguage || \"@none\";\n        commonType = commonType || \"@none\";\n        if (commonType !== \"@none\") {\n          typeOrLanguage = \"@type\";\n          typeOrLanguageValue = commonType;\n        } else {\n          typeOrLanguageValue = commonLanguage;\n        }\n      }\n    } else {\n      if (_isValue(value)) {\n        if (\"@language\" in value && !(\"@index\" in value)) {\n          containers.push(\"@language\", \"@language@set\");\n          typeOrLanguageValue = value[\"@language\"];\n          const dir = value[\"@direction\"];\n          if (dir) {\n            typeOrLanguageValue = `${typeOrLanguageValue}_${dir}`;\n          }\n        } else if (\"@direction\" in value && !(\"@index\" in value)) {\n          typeOrLanguageValue = `_${value[\"@direction\"]}`;\n        } else if (\"@type\" in value) {\n          typeOrLanguage = \"@type\";\n          typeOrLanguageValue = value[\"@type\"];\n        }\n      } else {\n        typeOrLanguage = \"@type\";\n        typeOrLanguageValue = \"@id\";\n      }\n      containers.push(\"@set\");\n    }\n    containers.push(\"@none\");\n    if (_isObject$1(value) && !(\"@index\" in value)) {\n      containers.push(\"@index\", \"@index@set\");\n    }\n    if (_isValue(value) && Object.keys(value).length === 1) {\n      containers.push(\"@language\", \"@language@set\");\n    }\n    const term = _selectTerm(\n      activeCtx,\n      iri,\n      value,\n      containers,\n      typeOrLanguage,\n      typeOrLanguageValue\n    );\n    if (term !== null) {\n      return term;\n    }\n  }\n  if (relativeTo.vocab) {\n    if (\"@vocab\" in activeCtx) {\n      const vocab = activeCtx[\"@vocab\"];\n      if (iri.indexOf(vocab) === 0 && iri !== vocab) {\n        const suffix = iri.substr(vocab.length);\n        if (!activeCtx.mappings.has(suffix)) {\n          return suffix;\n        }\n      }\n    }\n  }\n  let choice = null;\n  const partialMatches = [];\n  let iriMap = activeCtx.fastCurieMap;\n  const maxPartialLength = iri.length - 1;\n  for (let i3 = 0; i3 < maxPartialLength && iri[i3] in iriMap; ++i3) {\n    iriMap = iriMap[iri[i3]];\n    if (\"\" in iriMap) {\n      partialMatches.push(iriMap[\"\"][0]);\n    }\n  }\n  for (let i3 = partialMatches.length - 1; i3 >= 0; --i3) {\n    const entry = partialMatches[i3];\n    const terms = entry.terms;\n    for (const term of terms) {\n      const curie = term + \":\" + iri.substr(entry.iri.length);\n      const isUsableCurie = activeCtx.mappings.get(term)._prefix && (!activeCtx.mappings.has(curie) || value === null && activeCtx.mappings.get(curie)[\"@id\"] === iri);\n      if (isUsableCurie && (choice === null || _compareShortestLeast(curie, choice) < 0)) {\n        choice = curie;\n      }\n    }\n  }\n  if (choice !== null) {\n    return choice;\n  }\n  for (const [term, td] of activeCtx.mappings) {\n    if (td && td._prefix && iri.startsWith(term + \":\")) {\n      throw new JsonLdError$1(\n        `Absolute IRI \"${iri}\" confused with prefix \"${term}\".`,\n        \"jsonld.SyntaxError\",\n        { code: \"IRI confused with prefix\", context: activeCtx }\n      );\n    }\n  }\n  if (!relativeTo.vocab) {\n    if (\"@base\" in activeCtx) {\n      if (!activeCtx[\"@base\"]) {\n        return iri;\n      } else {\n        const _iri = _removeBase(_prependBase(base2, activeCtx[\"@base\"]), iri);\n        return REGEX_KEYWORD.test(_iri) ? `./${_iri}` : _iri;\n      }\n    } else {\n      return _removeBase(base2, iri);\n    }\n  }\n  return iri;\n};\napi.compactValue = ({ activeCtx, activeProperty, value, options }) => {\n  if (_isValue(value)) {\n    const type2 = _getContextValue(activeCtx, activeProperty, \"@type\");\n    const language = _getContextValue(activeCtx, activeProperty, \"@language\");\n    const direction = _getContextValue(activeCtx, activeProperty, \"@direction\");\n    const container = _getContextValue(activeCtx, activeProperty, \"@container\") || [];\n    const preserveIndex = \"@index\" in value && !container.includes(\"@index\");\n    if (!preserveIndex && type2 !== \"@none\") {\n      if (value[\"@type\"] === type2) {\n        return value[\"@value\"];\n      }\n      if (\"@language\" in value && value[\"@language\"] === language && \"@direction\" in value && value[\"@direction\"] === direction) {\n        return value[\"@value\"];\n      }\n      if (\"@language\" in value && value[\"@language\"] === language) {\n        return value[\"@value\"];\n      }\n      if (\"@direction\" in value && value[\"@direction\"] === direction) {\n        return value[\"@value\"];\n      }\n    }\n    const keyCount = Object.keys(value).length;\n    const isValueOnlyKey = keyCount === 1 || keyCount === 2 && \"@index\" in value && !preserveIndex;\n    const hasDefaultLanguage = \"@language\" in activeCtx;\n    const isValueString = _isString$1(value[\"@value\"]);\n    const hasNullMapping = activeCtx.mappings.has(activeProperty) && activeCtx.mappings.get(activeProperty)[\"@language\"] === null;\n    if (isValueOnlyKey && type2 !== \"@none\" && (!hasDefaultLanguage || !isValueString || hasNullMapping)) {\n      return value[\"@value\"];\n    }\n    const rval = {};\n    if (preserveIndex) {\n      rval[api.compactIri({\n        activeCtx,\n        iri: \"@index\",\n        relativeTo: { vocab: true }\n      })] = value[\"@index\"];\n    }\n    if (\"@type\" in value) {\n      rval[api.compactIri({\n        activeCtx,\n        iri: \"@type\",\n        relativeTo: { vocab: true }\n      })] = api.compactIri(\n        { activeCtx, iri: value[\"@type\"], relativeTo: { vocab: true } }\n      );\n    } else if (\"@language\" in value) {\n      rval[api.compactIri({\n        activeCtx,\n        iri: \"@language\",\n        relativeTo: { vocab: true }\n      })] = value[\"@language\"];\n    }\n    if (\"@direction\" in value) {\n      rval[api.compactIri({\n        activeCtx,\n        iri: \"@direction\",\n        relativeTo: { vocab: true }\n      })] = value[\"@direction\"];\n    }\n    rval[api.compactIri({\n      activeCtx,\n      iri: \"@value\",\n      relativeTo: { vocab: true }\n    })] = value[\"@value\"];\n    return rval;\n  }\n  const expandedProperty = _expandIri$1(\n    activeCtx,\n    activeProperty,\n    { vocab: true },\n    options\n  );\n  const type = _getContextValue(activeCtx, activeProperty, \"@type\");\n  const compacted = api.compactIri({\n    activeCtx,\n    iri: value[\"@id\"],\n    relativeTo: { vocab: type === \"@vocab\" },\n    base: options.base\n  });\n  if (type === \"@id\" || type === \"@vocab\" || expandedProperty === \"@graph\") {\n    return compacted;\n  }\n  return {\n    [api.compactIri({\n      activeCtx,\n      iri: \"@id\",\n      relativeTo: { vocab: true }\n    })]: compacted\n  };\n};\nfunction _selectTerm(activeCtx, iri, value, containers, typeOrLanguage, typeOrLanguageValue) {\n  if (typeOrLanguageValue === null) {\n    typeOrLanguageValue = \"@null\";\n  }\n  const prefs = [];\n  if ((typeOrLanguageValue === \"@id\" || typeOrLanguageValue === \"@reverse\") && _isObject$1(value) && \"@id\" in value) {\n    if (typeOrLanguageValue === \"@reverse\") {\n      prefs.push(\"@reverse\");\n    }\n    const term = api.compactIri(\n      { activeCtx, iri: value[\"@id\"], relativeTo: { vocab: true } }\n    );\n    if (activeCtx.mappings.has(term) && activeCtx.mappings.get(term) && activeCtx.mappings.get(term)[\"@id\"] === value[\"@id\"]) {\n      prefs.push.apply(prefs, [\"@vocab\", \"@id\"]);\n    } else {\n      prefs.push.apply(prefs, [\"@id\", \"@vocab\"]);\n    }\n  } else {\n    prefs.push(typeOrLanguageValue);\n    const langDir = prefs.find((el) => el.includes(\"_\"));\n    if (langDir) {\n      prefs.push(langDir.replace(/^[^_]+_/, \"_\"));\n    }\n  }\n  prefs.push(\"@none\");\n  const containerMap = activeCtx.inverse[iri];\n  for (const container of containers) {\n    if (!(container in containerMap)) {\n      continue;\n    }\n    const typeOrLanguageValueMap = containerMap[container][typeOrLanguage];\n    for (const pref of prefs) {\n      if (!(pref in typeOrLanguageValueMap)) {\n        continue;\n      }\n      return typeOrLanguageValueMap[pref];\n    }\n  }\n  return null;\n}\nfunction _checkNestProperty(activeCtx, nestProperty, options) {\n  if (_expandIri$1(activeCtx, nestProperty, { vocab: true }, options) !== \"@nest\") {\n    throw new JsonLdError$1(\n      \"JSON-LD compact error; nested property must have an @nest value resolving to @nest.\",\n      \"jsonld.SyntaxError\",\n      { code: \"invalid @nest value\" }\n    );\n  }\n}\nvar JsonLdProcessor;\nvar hasRequiredJsonLdProcessor;\nfunction requireJsonLdProcessor() {\n  if (hasRequiredJsonLdProcessor) return JsonLdProcessor;\n  hasRequiredJsonLdProcessor = 1;\n  JsonLdProcessor = (jsonld2) => {\n    class JsonLdProcessor2 {\n      toString() {\n        return \"[object JsonLdProcessor]\";\n      }\n    }\n    Object.defineProperty(JsonLdProcessor2, \"prototype\", {\n      writable: false,\n      enumerable: false\n    });\n    Object.defineProperty(JsonLdProcessor2.prototype, \"constructor\", {\n      writable: true,\n      enumerable: false,\n      configurable: true,\n      value: JsonLdProcessor2\n    });\n    JsonLdProcessor2.compact = function(input, ctx) {\n      if (arguments.length < 2) {\n        return Promise.reject(\n          new TypeError(\"Could not compact, too few arguments.\")\n        );\n      }\n      return jsonld2.compact(input, ctx);\n    };\n    JsonLdProcessor2.expand = function(input) {\n      if (arguments.length < 1) {\n        return Promise.reject(\n          new TypeError(\"Could not expand, too few arguments.\")\n        );\n      }\n      return jsonld2.expand(input);\n    };\n    JsonLdProcessor2.flatten = function(input) {\n      if (arguments.length < 1) {\n        return Promise.reject(\n          new TypeError(\"Could not flatten, too few arguments.\")\n        );\n      }\n      return jsonld2.flatten(input);\n    };\n    return JsonLdProcessor2;\n  };\n  return JsonLdProcessor;\n}\n/**\n * A JavaScript implementation of the JSON-LD API.\n *\n * @author Dave Longley\n *\n * @license BSD 3-Clause License\n * Copyright (c) 2011-2022 Digital Bazaar, Inc.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * Redistributions of source code must retain the above copyright notice,\n * this list of conditions and the following disclaimer.\n *\n * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * Neither the name of the Digital Bazaar, Inc. nor the names of its\n * contributors may be used to endorse or promote products derived from\n * this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\n * IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\n * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\n * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\nconst canonize = rdfCanonize;\nconst platform = platformBrowser;\nconst util = util$5;\nconst ContextResolver2 = ContextResolver_1;\nconst IdentifierIssuer2 = util.IdentifierIssuer;\nconst JsonLdError2 = JsonLdError_1;\nconst LRU = lruCache;\nconst NQuads2 = NQuads$1;\nconst { expand: _expand } = expand;\nconst { flatten: _flatten } = flatten;\nconst { fromRDF: _fromRDF } = fromRdf;\nconst { toRDF: _toRDF } = toRdf;\nconst {\n  frameMergedOrDefault: _frameMergedOrDefault,\n  cleanupNull: _cleanupNull\n} = frame;\nconst {\n  isArray: _isArray,\n  isObject: _isObject,\n  isString: _isString\n} = types$7;\nconst {\n  isSubjectReference: _isSubjectReference\n} = graphTypes$5;\nconst {\n  expandIri: _expandIri,\n  getInitialContext: _getInitialContext,\n  process: _processContext,\n  processingMode: _processingMode\n} = context;\nconst {\n  compact: _compact,\n  compactIri: _compactIri\n} = compact;\nconst {\n  createNodeMap: _createNodeMap,\n  createMergedNodeMap: _createMergedNodeMap,\n  mergeNodeMaps: _mergeNodeMaps\n} = nodeMap;\nconst {\n  logEventHandler: _logEventHandler,\n  logWarningEventHandler: _logWarningEventHandler,\n  safeEventHandler: _safeEventHandler,\n  setDefaultEventHandler: _setDefaultEventHandler,\n  setupEventHandler: _setupEventHandler,\n  strictEventHandler: _strictEventHandler,\n  unhandledEventHandler: _unhandledEventHandler\n} = events;\nconst wrapper = function(jsonld2) {\n  const _rdfParsers = {};\n  const RESOLVED_CONTEXT_CACHE_MAX_SIZE = 100;\n  const _resolvedContextCache = new LRU({ max: RESOLVED_CONTEXT_CACHE_MAX_SIZE });\n  jsonld2.compact = async function(input, ctx, options) {\n    if (arguments.length < 2) {\n      throw new TypeError(\"Could not compact, too few arguments.\");\n    }\n    if (ctx === null) {\n      throw new JsonLdError2(\n        \"The compaction context must not be null.\",\n        \"jsonld.CompactError\",\n        { code: \"invalid local context\" }\n      );\n    }\n    if (input === null) {\n      return null;\n    }\n    options = _setDefaults(options, {\n      base: _isString(input) ? input : \"\",\n      compactArrays: true,\n      compactToRelative: true,\n      graph: false,\n      skipExpansion: false,\n      link: false,\n      issuer: new IdentifierIssuer2(\"_:b\"),\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    if (options.link) {\n      options.skipExpansion = true;\n    }\n    if (!options.compactToRelative) {\n      delete options.base;\n    }\n    let expanded;\n    if (options.skipExpansion) {\n      expanded = input;\n    } else {\n      expanded = await jsonld2.expand(input, options);\n    }\n    const activeCtx = await jsonld2.processContext(\n      _getInitialContext(options),\n      ctx,\n      options\n    );\n    let compacted = await _compact({\n      activeCtx,\n      element: expanded,\n      options\n    });\n    if (options.compactArrays && !options.graph && _isArray(compacted)) {\n      if (compacted.length === 1) {\n        compacted = compacted[0];\n      } else if (compacted.length === 0) {\n        compacted = {};\n      }\n    } else if (options.graph && _isObject(compacted)) {\n      compacted = [compacted];\n    }\n    if (_isObject(ctx) && \"@context\" in ctx) {\n      ctx = ctx[\"@context\"];\n    }\n    ctx = util.clone(ctx);\n    if (!_isArray(ctx)) {\n      ctx = [ctx];\n    }\n    const tmp = ctx;\n    ctx = [];\n    for (let i3 = 0; i3 < tmp.length; ++i3) {\n      if (!_isObject(tmp[i3]) || Object.keys(tmp[i3]).length > 0) {\n        ctx.push(tmp[i3]);\n      }\n    }\n    const hasContext = ctx.length > 0;\n    if (ctx.length === 1) {\n      ctx = ctx[0];\n    }\n    if (_isArray(compacted)) {\n      const graphAlias = _compactIri({\n        activeCtx,\n        iri: \"@graph\",\n        relativeTo: { vocab: true }\n      });\n      const graph = compacted;\n      compacted = {};\n      if (hasContext) {\n        compacted[\"@context\"] = ctx;\n      }\n      compacted[graphAlias] = graph;\n    } else if (_isObject(compacted) && hasContext) {\n      const graph = compacted;\n      compacted = { \"@context\": ctx };\n      for (const key in graph) {\n        compacted[key] = graph[key];\n      }\n    }\n    return compacted;\n  };\n  jsonld2.expand = async function(input, options) {\n    if (arguments.length < 1) {\n      throw new TypeError(\"Could not expand, too few arguments.\");\n    }\n    options = _setDefaults(options, {\n      keepFreeFloatingNodes: false,\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    const toResolve = {};\n    const contextsToProcess = [];\n    if (\"expandContext\" in options) {\n      const expandContext = util.clone(options.expandContext);\n      if (_isObject(expandContext) && \"@context\" in expandContext) {\n        toResolve.expandContext = expandContext;\n      } else {\n        toResolve.expandContext = { \"@context\": expandContext };\n      }\n      contextsToProcess.push(toResolve.expandContext);\n    }\n    let defaultBase;\n    if (!_isString(input)) {\n      toResolve.input = util.clone(input);\n    } else {\n      const remoteDoc = await jsonld2.get(input, options);\n      defaultBase = remoteDoc.documentUrl;\n      toResolve.input = remoteDoc.document;\n      if (remoteDoc.contextUrl) {\n        toResolve.remoteContext = { \"@context\": remoteDoc.contextUrl };\n        contextsToProcess.push(toResolve.remoteContext);\n      }\n    }\n    if (!(\"base\" in options)) {\n      options.base = defaultBase || \"\";\n    }\n    let activeCtx = _getInitialContext(options);\n    for (const localCtx of contextsToProcess) {\n      activeCtx = await _processContext({ activeCtx, localCtx, options });\n    }\n    let expanded = await _expand({\n      activeCtx,\n      element: toResolve.input,\n      options\n    });\n    if (_isObject(expanded) && \"@graph\" in expanded && Object.keys(expanded).length === 1) {\n      expanded = expanded[\"@graph\"];\n    } else if (expanded === null) {\n      expanded = [];\n    }\n    if (!_isArray(expanded)) {\n      expanded = [expanded];\n    }\n    return expanded;\n  };\n  jsonld2.flatten = async function(input, ctx, options) {\n    if (arguments.length < 1) {\n      return new TypeError(\"Could not flatten, too few arguments.\");\n    }\n    if (typeof ctx === \"function\") {\n      ctx = null;\n    } else {\n      ctx = ctx || null;\n    }\n    options = _setDefaults(options, {\n      base: _isString(input) ? input : \"\",\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    const expanded = await jsonld2.expand(input, options);\n    const flattened = _flatten(expanded);\n    if (ctx === null) {\n      return flattened;\n    }\n    options.graph = true;\n    options.skipExpansion = true;\n    const compacted = await jsonld2.compact(flattened, ctx, options);\n    return compacted;\n  };\n  jsonld2.frame = async function(input, frame2, options) {\n    if (arguments.length < 2) {\n      throw new TypeError(\"Could not frame, too few arguments.\");\n    }\n    options = _setDefaults(options, {\n      base: _isString(input) ? input : \"\",\n      embed: \"@once\",\n      explicit: false,\n      requireAll: false,\n      omitDefault: false,\n      bnodesToClear: [],\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    if (_isString(frame2)) {\n      const remoteDoc = await jsonld2.get(frame2, options);\n      frame2 = remoteDoc.document;\n      if (remoteDoc.contextUrl) {\n        let ctx = frame2[\"@context\"];\n        if (!ctx) {\n          ctx = remoteDoc.contextUrl;\n        } else if (_isArray(ctx)) {\n          ctx.push(remoteDoc.contextUrl);\n        } else {\n          ctx = [ctx, remoteDoc.contextUrl];\n        }\n        frame2[\"@context\"] = ctx;\n      }\n    }\n    const frameContext = frame2 ? frame2[\"@context\"] || {} : {};\n    const activeCtx = await jsonld2.processContext(\n      _getInitialContext(options),\n      frameContext,\n      options\n    );\n    if (!options.hasOwnProperty(\"omitGraph\")) {\n      options.omitGraph = _processingMode(activeCtx, 1.1);\n    }\n    if (!options.hasOwnProperty(\"pruneBlankNodeIdentifiers\")) {\n      options.pruneBlankNodeIdentifiers = _processingMode(activeCtx, 1.1);\n    }\n    const expanded = await jsonld2.expand(input, options);\n    const opts = { ...options };\n    opts.isFrame = true;\n    opts.keepFreeFloatingNodes = true;\n    const expandedFrame = await jsonld2.expand(frame2, opts);\n    const frameKeys = Object.keys(frame2).map((key) => _expandIri(activeCtx, key, { vocab: true }));\n    opts.merged = !frameKeys.includes(\"@graph\");\n    opts.is11 = _processingMode(activeCtx, 1.1);\n    const framed = _frameMergedOrDefault(expanded, expandedFrame, opts);\n    opts.graph = !options.omitGraph;\n    opts.skipExpansion = true;\n    opts.link = {};\n    opts.framing = true;\n    let compacted = await jsonld2.compact(framed, frameContext, opts);\n    opts.link = {};\n    compacted = _cleanupNull(compacted, opts);\n    return compacted;\n  };\n  jsonld2.link = async function(input, ctx, options) {\n    const frame2 = {};\n    if (ctx) {\n      frame2[\"@context\"] = ctx;\n    }\n    frame2[\"@embed\"] = \"@link\";\n    return jsonld2.frame(input, frame2, options);\n  };\n  jsonld2.normalize = jsonld2.canonize = async function(input, options) {\n    if (arguments.length < 1) {\n      throw new TypeError(\"Could not canonize, too few arguments.\");\n    }\n    options = _setDefaults(options, {\n      base: _isString(input) ? input : null,\n      algorithm: \"URDNA2015\",\n      skipExpansion: false,\n      safe: true,\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    if (\"inputFormat\" in options) {\n      if (options.inputFormat !== \"application/n-quads\" && options.inputFormat !== \"application/nquads\") {\n        throw new JsonLdError2(\n          \"Unknown canonicalization input format.\",\n          \"jsonld.CanonizeError\"\n        );\n      }\n      const parsedInput = NQuads2.parse(input);\n      return canonize.canonize(parsedInput, options);\n    }\n    const opts = { ...options };\n    delete opts.format;\n    opts.produceGeneralizedRdf = false;\n    const dataset = await jsonld2.toRDF(input, opts);\n    return canonize.canonize(dataset, options);\n  };\n  jsonld2.fromRDF = async function(dataset, options) {\n    if (arguments.length < 1) {\n      throw new TypeError(\"Could not convert from RDF, too few arguments.\");\n    }\n    options = _setDefaults(options, {\n      format: _isString(dataset) ? \"application/n-quads\" : void 0\n    });\n    const { format: format2 } = options;\n    let { rdfParser } = options;\n    if (format2) {\n      rdfParser = rdfParser || _rdfParsers[format2];\n      if (!rdfParser) {\n        throw new JsonLdError2(\n          \"Unknown input format.\",\n          \"jsonld.UnknownFormat\",\n          { format: format2 }\n        );\n      }\n    } else {\n      rdfParser = () => dataset;\n    }\n    const parsedDataset = await rdfParser(dataset);\n    return _fromRDF(parsedDataset, options);\n  };\n  jsonld2.toRDF = async function(input, options) {\n    if (arguments.length < 1) {\n      throw new TypeError(\"Could not convert to RDF, too few arguments.\");\n    }\n    options = _setDefaults(options, {\n      base: _isString(input) ? input : \"\",\n      skipExpansion: false,\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    let expanded;\n    if (options.skipExpansion) {\n      expanded = input;\n    } else {\n      expanded = await jsonld2.expand(input, options);\n    }\n    const dataset = _toRDF(expanded, options);\n    if (options.format) {\n      if (options.format === \"application/n-quads\" || options.format === \"application/nquads\") {\n        return NQuads2.serialize(dataset);\n      }\n      throw new JsonLdError2(\n        \"Unknown output format.\",\n        \"jsonld.UnknownFormat\",\n        { format: options.format }\n      );\n    }\n    return dataset;\n  };\n  jsonld2.createNodeMap = async function(input, options) {\n    if (arguments.length < 1) {\n      throw new TypeError(\"Could not create node map, too few arguments.\");\n    }\n    options = _setDefaults(options, {\n      base: _isString(input) ? input : \"\",\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    const expanded = await jsonld2.expand(input, options);\n    return _createMergedNodeMap(expanded, options);\n  };\n  jsonld2.merge = async function(docs, ctx, options) {\n    if (arguments.length < 1) {\n      throw new TypeError(\"Could not merge, too few arguments.\");\n    }\n    if (!_isArray(docs)) {\n      throw new TypeError('Could not merge, \"docs\" must be an array.');\n    }\n    if (typeof ctx === \"function\") {\n      ctx = null;\n    } else {\n      ctx = ctx || null;\n    }\n    options = _setDefaults(options, {\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    const expanded = await Promise.all(docs.map((doc) => {\n      const opts = { ...options };\n      return jsonld2.expand(doc, opts);\n    }));\n    let mergeNodes = true;\n    if (\"mergeNodes\" in options) {\n      mergeNodes = options.mergeNodes;\n    }\n    const issuer = options.issuer || new IdentifierIssuer2(\"_:b\");\n    const graphs = { \"@default\": {} };\n    for (let i3 = 0; i3 < expanded.length; ++i3) {\n      const doc = util.relabelBlankNodes(expanded[i3], {\n        issuer: new IdentifierIssuer2(\"_:b\" + i3 + \"-\")\n      });\n      const _graphs = mergeNodes || i3 === 0 ? graphs : { \"@default\": {} };\n      _createNodeMap(doc, _graphs, \"@default\", issuer);\n      if (_graphs !== graphs) {\n        for (const graphName in _graphs) {\n          const _nodeMap = _graphs[graphName];\n          if (!(graphName in graphs)) {\n            graphs[graphName] = _nodeMap;\n            continue;\n          }\n          const nodeMap2 = graphs[graphName];\n          for (const key in _nodeMap) {\n            if (!(key in nodeMap2)) {\n              nodeMap2[key] = _nodeMap[key];\n            }\n          }\n        }\n      }\n    }\n    const defaultGraph = _mergeNodeMaps(graphs);\n    const flattened = [];\n    const keys2 = Object.keys(defaultGraph).sort();\n    for (let ki = 0; ki < keys2.length; ++ki) {\n      const node = defaultGraph[keys2[ki]];\n      if (!_isSubjectReference(node)) {\n        flattened.push(node);\n      }\n    }\n    if (ctx === null) {\n      return flattened;\n    }\n    options.graph = true;\n    options.skipExpansion = true;\n    const compacted = await jsonld2.compact(flattened, ctx, options);\n    return compacted;\n  };\n  Object.defineProperty(jsonld2, \"documentLoader\", {\n    get: () => jsonld2._documentLoader,\n    set: (v2) => jsonld2._documentLoader = v2\n  });\n  jsonld2.documentLoader = async (url2) => {\n    throw new JsonLdError2(\n      \"Could not retrieve a JSON-LD document from the URL. URL dereferencing not implemented.\",\n      \"jsonld.LoadDocumentError\",\n      { code: \"loading document failed\", url: url2 }\n    );\n  };\n  jsonld2.get = async function(url2, options) {\n    let load;\n    if (typeof options.documentLoader === \"function\") {\n      load = options.documentLoader;\n    } else {\n      load = jsonld2.documentLoader;\n    }\n    const remoteDoc = await load(url2);\n    try {\n      if (!remoteDoc.document) {\n        throw new JsonLdError2(\n          \"No remote document found at the given URL.\",\n          \"jsonld.NullRemoteDocument\"\n        );\n      }\n      if (_isString(remoteDoc.document)) {\n        remoteDoc.document = JSON.parse(remoteDoc.document);\n      }\n    } catch (e2) {\n      throw new JsonLdError2(\n        \"Could not retrieve a JSON-LD document from the URL.\",\n        \"jsonld.LoadDocumentError\",\n        {\n          code: \"loading document failed\",\n          cause: e2,\n          remoteDoc\n        }\n      );\n    }\n    return remoteDoc;\n  };\n  jsonld2.processContext = async function(activeCtx, localCtx, options) {\n    options = _setDefaults(options, {\n      base: \"\",\n      contextResolver: new ContextResolver2(\n        { sharedCache: _resolvedContextCache }\n      )\n    });\n    if (localCtx === null) {\n      return _getInitialContext(options);\n    }\n    localCtx = util.clone(localCtx);\n    if (!(_isObject(localCtx) && \"@context\" in localCtx)) {\n      localCtx = { \"@context\": localCtx };\n    }\n    return _processContext({ activeCtx, localCtx, options });\n  };\n  jsonld2.getContextValue = context.getContextValue;\n  jsonld2.documentLoaders = {};\n  jsonld2.useDocumentLoader = function(type) {\n    if (!(type in jsonld2.documentLoaders)) {\n      throw new JsonLdError2(\n        'Unknown document loader type: \"' + type + '\"',\n        \"jsonld.UnknownDocumentLoader\",\n        { type }\n      );\n    }\n    jsonld2.documentLoader = jsonld2.documentLoaders[type].apply(\n      jsonld2,\n      Array.prototype.slice.call(arguments, 1)\n    );\n  };\n  jsonld2.registerRDFParser = function(contentType, parser) {\n    _rdfParsers[contentType] = parser;\n  };\n  jsonld2.unregisterRDFParser = function(contentType) {\n    delete _rdfParsers[contentType];\n  };\n  jsonld2.registerRDFParser(\"application/n-quads\", NQuads2.parse);\n  jsonld2.registerRDFParser(\"application/nquads\", NQuads2.parse);\n  jsonld2.url = url$1;\n  jsonld2.logEventHandler = _logEventHandler;\n  jsonld2.logWarningEventHandler = _logWarningEventHandler;\n  jsonld2.safeEventHandler = _safeEventHandler;\n  jsonld2.setDefaultEventHandler = _setDefaultEventHandler;\n  jsonld2.strictEventHandler = _strictEventHandler;\n  jsonld2.unhandledEventHandler = _unhandledEventHandler;\n  jsonld2.util = util;\n  Object.assign(jsonld2, util);\n  jsonld2.promises = jsonld2;\n  jsonld2.RequestQueue = requireRequestQueue();\n  jsonld2.JsonLdProcessor = requireJsonLdProcessor()(jsonld2);\n  platform.setupGlobals(jsonld2);\n  platform.setupDocumentLoaders(jsonld2);\n  function _setDefaults(options, {\n    documentLoader = jsonld2.documentLoader,\n    ...defaults2\n  }) {\n    if (options && \"compactionMap\" in options) {\n      throw new JsonLdError2(\n        '\"compactionMap\" not supported.',\n        \"jsonld.OptionsError\"\n      );\n    }\n    if (options && \"expansionMap\" in options) {\n      throw new JsonLdError2(\n        '\"expansionMap\" not supported.',\n        \"jsonld.OptionsError\"\n      );\n    }\n    return Object.assign(\n      {},\n      { documentLoader },\n      defaults2,\n      options,\n      { eventHandler: _setupEventHandler({ options }) }\n    );\n  }\n  return jsonld2;\n};\nconst factory = function() {\n  return wrapper(function() {\n    return factory();\n  });\n};\nwrapper(factory);\nvar jsonld = factory;\nconst jsonld$1 = /* @__PURE__ */ getDefaultExportFromCjs(jsonld);\nconst ContextParser$1 = JSONLDContextParser.ContextParser;\nclass CustomGetter {\n  // search attributes to give to server\n  constructor(resourceId, resource, clientContext, serverContext, parentId = \"\", serverPagination = {}, serverSearch = {}) {\n    __publicField(this, \"resource\");\n    // content of the requested resource\n    __publicField(this, \"resourceId\");\n    __publicField(this, \"clientContext\");\n    // context given by the app\n    __publicField(this, \"serverContext\");\n    // context given by the server\n    __publicField(this, \"parentId\");\n    // id of the parent resource, used to get the absolute url of the current resource\n    __publicField(this, \"containerTypes\");\n    // types of resources interpreted as containers\n    __publicField(this, \"serverPagination\");\n    // pagination attributes to give to server\n    __publicField(this, \"serverSearch\");\n    this.clientContext = clientContext;\n    this.serverContext = serverContext;\n    this.parentId = parentId;\n    this.resource = resource;\n    this.resourceId = resourceId;\n    this.serverPagination = serverPagination;\n    this.serverSearch = serverSearch;\n    this.containerTypes = [\n      this.getExpandedPredicate(\"ldp:Container\"),\n      this.getExpandedPredicate(\"ldp:BasicContainer\"),\n      this.getExpandedPredicate(\"ldp:DirectContainer\"),\n      this.getExpandedPredicate(\"ldp:IndirectContainer\"),\n      this.getExpandedPredicate(\"sib:federatedContainer\")\n    ];\n  }\n  /**\n   * Get the property of a resource for a given path\n   * Which means that if the resource is not complete, it will fetch it\n   * And that we handle the `.` notation, traversing the path recursively\n   * @param path: string\n   */\n  async get(path) {\n    if (!path) return;\n    try {\n      const isUrl = new URL(path);\n      if (!isUrl.protocol.startsWith(\"http\"))\n        throw new Error(\"Not a valid HTTP url\");\n      if (isUrl) {\n        let resources = this.resource[this.getExpandedPredicate(path)];\n        if (!resources) return void 0;\n        if (!Array.isArray(resources)) resources = [resources];\n        const result = resources ? resources.map((res) => {\n          let resource = store.get(res[\"@id\"]);\n          if (resource) return resource;\n          resource = new CustomGetter(\n            res[\"@id\"],\n            { \"@id\": res[\"@id\"] },\n            this.clientContext,\n            this.serverContext,\n            this.parentId\n          ).getProxy();\n          store.cacheResource(res[\"@id\"], resource);\n          return resource;\n        }) : [];\n        return result;\n      }\n    } catch {\n      if (!path.split) return void 0;\n      const path1 = path.split(\".\");\n      const path2 = [];\n      let value;\n      if (!this.isFullResource()) {\n        await this.getResource(\n          this.resourceId,\n          { ...this.clientContext, ...this.serverContext },\n          this.parentId\n        );\n      }\n      while (true) {\n        value = await this.resource[this.getExpandedPredicate(path1[0])];\n        if (path1.length <= 1) break;\n        const lastPath1El = path1.pop();\n        if (lastPath1El) path2.unshift(lastPath1El);\n      }\n      if (path2.length === 0) {\n        if (!value || !value[\"@id\"]) return this.getLiteralValue(value);\n        return await this.getResource(\n          value[\"@id\"],\n          { ...this.clientContext, ...this.serverContext },\n          this.parentId || this.resourceId\n        );\n      }\n      if (!value || !value[\"@id\"]) return void 0;\n      const resource = await this.getResource(\n        value[\"@id\"],\n        { ...this.clientContext, ...this.serverContext },\n        this.parentId || this.resourceId\n      );\n      store.subscribeResourceTo(this.resourceId, value[\"@id\"]);\n      return resource ? await resource[path2.join(\".\")] : void 0;\n    }\n  }\n  /**\n   * Return value depending of the current language\n   * @param value\n   * @returns\n   */\n  getLiteralValue(value) {\n    if (typeof value !== \"object\") return value;\n    if (value[\"@value\"]) return value[\"@value\"];\n    if (!Array.isArray(value)) return value;\n    if (value.length === 0) return null;\n    if (!Array.isArray(value[0])) return value;\n    const ln = store._getLanguage();\n    let translatedValue = value.find(\n      (v2) => v2[\"@language\"] && v2[\"@language\"] === ln\n    );\n    if (!translatedValue)\n      translatedValue = value.find(\n        (v2) => v2[\"@language\"] && v2[\"@language\"] === \"en\"\n      );\n    return (translatedValue == null ? void 0 : translatedValue[\"@value\"]) ?? null;\n  }\n  /**\n   * Cache resource in the store, and return the created proxy\n   * @param id\n   * @param context\n   * @param iriParent\n   */\n  async getResource(id2, context2, iriParent, forceFetch = false) {\n    if (id2.startsWith(\"_:b\")) return await store.get(id2 + iriParent);\n    return store.getData(id2, context2, iriParent, void 0, forceFetch);\n  }\n  /**\n   * Return true if the resource is a container\n   */\n  isContainer() {\n    if (this.resource[\"@type\"]) {\n      if (Array.isArray(this.resource[\"@type\"]))\n        return this.containerTypes.some(\n          (type) => this.resource[\"@type\"].includes(type)\n        );\n      return this.containerTypes.includes(this.resource[\"@type\"]);\n    }\n    if (!this.resource.type) return false;\n    if (Array.isArray(this.resource.type))\n      return this.containerTypes.some(\n        (type) => this.resource.type.includes(type)\n      );\n    return this.containerTypes.includes(this.resource.type);\n  }\n  /**\n   * Return true if the given key in the current resource in an array\n   */\n  isArray() {\n    if (Array.isArray(this.resource)) return true;\n    return false;\n  }\n  /**\n   * Get all properties of a resource\n   */\n  getProperties() {\n    return Object.keys(this.resource).map(\n      (prop) => this.getCompactedPredicate(prop)\n    );\n  }\n  /**\n   * Get children of container as objects\n   */\n  getChildren(predicateName) {\n    return this.resource[this.getExpandedPredicate(predicateName)] || [];\n  }\n  /**\n   * Get children of container as Proxys\n   */\n  getLdpContains() {\n    let children = this.resource[this.getExpandedPredicate(\"ldp:contains\")];\n    if (!children) return null;\n    if (!Array.isArray(children)) children = [children];\n    const result = children ? children.map((res) => {\n      let resource = store.get(res[\"@id\"]);\n      if (resource) return resource;\n      resource = new CustomGetter(\n        res[\"@id\"],\n        { \"@id\": res[\"@id\"] },\n        this.clientContext,\n        this.serverContext,\n        this.parentId\n      ).getProxy();\n      store.cacheResource(res[\"@id\"], resource);\n      return resource;\n    }) : [];\n    return result;\n  }\n  merge(resource) {\n    this.resource = {\n      ...this.getResourceData(),\n      ...resource.getResourceData()\n    };\n  }\n  getResourceData() {\n    return this.resource;\n  }\n  /**\n   * return true resource seems complete\n   * @param prop\n   */\n  isFullResource() {\n    const propertiesKeys = Object.keys(this.resource).filter(\n      (p2) => !p2.startsWith(\"@\")\n    );\n    if (this.resource[\"@id\"].startsWith(\"_:b\")) return true;\n    if (propertiesKeys.length === 1 && propertiesKeys[0] === this.getExpandedPredicate(\"permissions\"))\n      return false;\n    if (propertiesKeys.length > 0) return true;\n    return false;\n  }\n  /**\n   * Get permissions of a resource\n   * @param resourceId\n   * @returns\n   */\n  async getPermissions() {\n    let permissions = this.resource[this.getExpandedPredicate(\"permissions\")];\n    if (!permissions) {\n      await this.getResource(\n        this.resourceId,\n        { ...this.clientContext, ...this.serverContext },\n        this.parentId,\n        true\n      );\n      permissions = this.resource[this.getExpandedPredicate(\"permissions\")];\n    }\n    if (!Array.isArray(permissions)) permissions = [permissions];\n    return permissions ? permissions : [];\n  }\n  /**\n   * returns compacted @type of resource\n   */\n  getType() {\n    return this.resource[\"@type\"] ? this.getCompactedIri(this.resource[\"@type\"]) : \"\";\n  }\n  /**\n   * Remove the resource from the cache\n   */\n  clearCache() {\n    store.clearCache(this.resourceId);\n  }\n  getExpandedPredicate(property) {\n    return ContextParser$1.expandTerm(\n      property,\n      { ...this.clientContext, ...this.serverContext },\n      true\n    );\n  }\n  getCompactedPredicate(property) {\n    return ContextParser$1.compactIri(\n      property,\n      { ...this.clientContext, ...this.serverContext },\n      true\n    );\n  }\n  getCompactedIri(id2) {\n    return ContextParser$1.compactIri(id2, {\n      ...this.clientContext,\n      ...this.serverContext\n    });\n  }\n  toString() {\n    return this.getCompactedIri(this.resource[\"@id\"]);\n  }\n  [Symbol.toPrimitive]() {\n    return this.getCompactedIri(this.resource[\"@id\"]);\n  }\n  /**\n   * Returns a Proxy which handles the different get requests\n   */\n  getProxy() {\n    return new Proxy(this, {\n      get: (resource, property) => {\n        if (!this.resource) return void 0;\n        if (typeof resource[property] === \"function\")\n          return resource[property].bind(resource);\n        switch (property) {\n          case \"@id\":\n            if (this.resource[\"@id\"])\n              return this.getCompactedIri(this.resource[\"@id\"]);\n            console.log(this.resource, this.resource[\"@id\"]);\n            return;\n          case \"@type\":\n            return this.resource[\"@type\"];\n          case \"properties\":\n            return this.getProperties();\n          case \"ldp:contains\":\n            return this.getLdpContains();\n          case \"permissions\":\n            return this.getPermissions();\n          case \"clientContext\":\n            return this.clientContext;\n          case \"serverContext\":\n            return this.serverContext;\n          case \"then\":\n            return;\n          default:\n            return resource.get(property);\n        }\n      }\n    });\n  }\n}\nconst ContextParser2 = JSONLDContextParser.ContextParser;\nconst myParser = new ContextParser2();\nconst base_context = {\n  \"@vocab\": \"https://cdn.startinblox.com/owl#\",\n  foaf: \"http://xmlns.com/foaf/0.1/\",\n  doap: \"http://usefulinc.com/ns/doap#\",\n  ldp: \"http://www.w3.org/ns/ldp#\",\n  rdfs: \"http://www.w3.org/2000/01/rdf-schema#\",\n  rdf: \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\n  xsd: \"http://www.w3.org/2001/XMLSchema#\",\n  geo: \"http://www.w3.org/2003/01/geo/wgs84_pos#\",\n  acl: \"http://www.w3.org/ns/auth/acl#\",\n  hd: \"http://cdn.startinblox.com/owl/ttl/vocab.ttl#\",\n  sib: \"http://cdn.startinblox.com/owl/ttl/vocab.ttl#\",\n  name: \"rdfs:label\",\n  deadline: \"xsd:dateTime\",\n  lat: \"geo:lat\",\n  lng: \"geo:long\",\n  jabberID: \"foaf:jabberID\",\n  permissions: \"acl:accessControl\",\n  mode: \"acl:mode\",\n  view: \"acl:Read\",\n  change: \"acl:Write\",\n  add: \"acl:Append\",\n  delete: \"acl:Delete\",\n  control: \"acl:Control\"\n};\nclass Store {\n  constructor(storeOptions) {\n    __publicField(this, \"cache\");\n    __publicField(this, \"subscriptionIndex\");\n    // index of all the containers per resource\n    __publicField(this, \"subscriptionVirtualContainersIndex\");\n    // index of all the containers per resource\n    __publicField(this, \"loadingList\");\n    __publicField(this, \"headers\");\n    __publicField(this, \"fetch\");\n    __publicField(this, \"session\");\n    __publicField(this, \"resolveResource\", (id2, resolve2) => {\n      const handler = (event) => {\n        if (event.detail.id === id2) {\n          if (event.detail.resource) {\n            resolve2(event.detail.resource);\n          } else {\n            resolve2(event.detail.fetchedResource);\n          }\n          document.removeEventListener(\"resourceReady\", handler);\n        }\n      };\n      return handler;\n    });\n    this.storeOptions = storeOptions;\n    this.cache = /* @__PURE__ */ new Map();\n    this.subscriptionIndex = /* @__PURE__ */ new Map();\n    this.subscriptionVirtualContainersIndex = /* @__PURE__ */ new Map();\n    this.loadingList = /* @__PURE__ */ new Set();\n    this.headers = {\n      Accept: \"application/ld+json\",\n      \"Content-Type\": \"application/ld+json\",\n      \"Cache-Control\": \"must-revalidate\"\n    };\n    this.fetch = this.storeOptions.fetchMethod;\n    this.session = this.storeOptions.session;\n  }\n  /**\n   * Fetch data and cache it\n   * @param id - uri of the resource to fetch\n   * @param context - context used to expand id and predicates when accessing the resource\n   * @param parentId - uri of the parent caller used to expand uri for local files\n   * @param localData - data to put in cache\n   * @param forceFetch - force the fetch of data\n   * @param serverPagination - Server pagination options\n   * @param serverSearch - Server search options\n   * @param predicateName - predicate name if we target a specific predicate from the resource, useful for arrays\n   *\n   * @returns The fetched resource\n   *\n   * @async\n   */\n  async getData(id2, context2 = {}, parentId = \"\", localData, forceFetch = false, serverPagination, serverSearch) {\n    var _a3;\n    let key = id2;\n    if (serverPagination) {\n      key = appendServerPaginationToIri(key, serverPagination);\n    }\n    if (serverSearch) {\n      key = appendServerSearchToIri(key, serverSearch);\n    }\n    if (localData == null && this.cache.has(key) && !this.loadingList.has(key)) {\n      const resource = this.get(key);\n      if (((_a3 = resource == null ? void 0 : resource.isFullResource) == null ? void 0 : _a3.call(resource)) && !forceFetch) return await resource;\n    }\n    return new Promise(async (resolve2) => {\n      document.addEventListener(\n        \"resourceReady\",\n        this.resolveResource(key, resolve2)\n      );\n      if (this.loadingList.has(key)) return;\n      this.loadingList.add(key);\n      const clientContext = await myParser.parse(context2);\n      let resource = null;\n      if (this._isLocalId(id2)) {\n        if (localData == null) localData = {};\n        localData[\"@id\"] = id2;\n        resource = localData;\n      } else\n        try {\n          resource = localData || await this.fetchData(\n            id2,\n            clientContext,\n            parentId,\n            serverPagination,\n            serverSearch\n          );\n        } catch (error2) {\n          console.error(error2);\n        }\n      if (!resource) {\n        this.loadingList.delete(key);\n        document.dispatchEvent(\n          new CustomEvent(\"resourceReady\", {\n            detail: { id: key, resource: null, fetchedResource: null }\n          })\n        );\n        return;\n      }\n      const serverContext = await myParser.parse([\n        resource[\"@context\"] || base_context\n      ]);\n      await this.cacheGraph(\n        resource,\n        clientContext,\n        serverContext,\n        parentId ? parentId : key,\n        serverPagination,\n        serverSearch\n      );\n      this.loadingList.delete(key);\n      document.dispatchEvent(\n        new CustomEvent(\"resourceReady\", {\n          detail: {\n            id: key,\n            resource: this.get(key),\n            fetchedResource: resource\n          }\n        })\n      );\n    });\n  }\n  async fetchAuthn(iri, options) {\n    let authenticated = false;\n    if (this.session) authenticated = await this.session;\n    if (this.fetch && authenticated) {\n      return this.fetch.then((fn) => fn(iri, options));\n    }\n    if (options.headers)\n      options.headers = this._convertHeaders(options.headers);\n    return fetch(iri, options).then((response) => response);\n  }\n  /**\n   * Fetch resource\n   * @param id - id of the resource\n   * @param context - context used to expand id\n   * @param idParent - id of the caller resource. Needed to expand id\n   * @param serverPagination - Server pagination query params\n   * @param serverSearch - Server search query params\n   * @returns data in json\n   */\n  async fetchData(id2, context2 = {}, parentId = \"\", serverPagination, serverSearch) {\n    let iri = this._getAbsoluteIri(id2, context2, parentId);\n    if (serverPagination)\n      iri = appendServerPaginationToIri(iri, serverPagination);\n    if (serverSearch) iri = appendServerSearchToIri(iri, serverSearch);\n    const headers = {\n      ...this.headers,\n      \"accept-language\": this._getLanguage()\n      // 'Prefer' : 'return=representation; max-triple-count=\"100\"' // Commenting out for now as it raises CORS errors\n    };\n    return this.fetchAuthn(iri, {\n      method: \"GET\",\n      headers,\n      credentials: \"include\"\n    }).then((response) => {\n      if (!response.ok) return;\n      return response.json();\n    });\n  }\n  /**\n   * Cache the whole graph\n   * @param resource - graph fetched\n   * @param clientContext - context of the client app\n   * @param parentContext - context of the server\n   * @param parentId - id of the parent caller\n   * @param serverPagination - Server pagination query params\n   * @param serverSearch - Server search query params\n   */\n  async cacheGraph(resource, clientContext, parentContext, parentId, serverPagination, serverSearch) {\n    const flattenedResources = await jsonld$1.flatten(resource);\n    const compactedResources = await Promise.all(\n      flattenedResources.map((r3) => jsonld$1.compact(r3, {}))\n    );\n    for (const resource2 of compactedResources) {\n      const id2 = resource2[\"@id\"] || resource2.id;\n      let key = resource2[\"@id\"] || resource2.id;\n      if (!key) console.log(\"No key or id for resource:\", resource2);\n      if (key === \"/\") key = parentId;\n      if (key.startsWith(\"_:b\")) key = key + parentId;\n      if (key === id2 && resource2[\"@type\"] === this.getExpandedPredicate(\"ldp:Container\", clientContext)) {\n        if (serverPagination)\n          key = appendServerPaginationToIri(key, serverPagination);\n        if (serverSearch) key = appendServerSearchToIri(key, serverSearch);\n      }\n      const resourceProxy = new CustomGetter(\n        key,\n        resource2,\n        clientContext,\n        parentContext,\n        parentId,\n        serverPagination,\n        serverSearch\n      ).getProxy();\n      if (resourceProxy.isContainer())\n        this.subscribeChildren(resourceProxy, id2);\n      if (this.get(key)) {\n        this.cache.get(key).merge(resourceProxy);\n      } else {\n        this.cacheResource(key, resourceProxy);\n      }\n    }\n  }\n  /**\n   * Put proxy in cache\n   * @param key\n   * @param resourceProxy\n   */\n  cacheResource(key, resourceProxy) {\n    this.cache.set(key, resourceProxy);\n  }\n  /**\n   * Update fetch\n   * @param method - 'POST', 'PATCH', 'PUT', '_LOCAL'\n   * @param resource - resource to send\n   * @param id - uri to update\n   * @returns - object\n   */\n  async _fetch(method, resource, id2) {\n    if (method !== \"_LOCAL\")\n      return this.fetchAuthn(id2, {\n        method,\n        headers: this.headers,\n        body: JSON.stringify(resource),\n        credentials: \"include\"\n      });\n    const resourceProxy = store.get(id2);\n    const clientContext = resourceProxy ? { ...resourceProxy.clientContext, ...resource[\"@context\"] } : resource[\"@context\"];\n    this.clearCache(id2);\n    await this.getData(id2, clientContext, \"\", resource);\n    return { ok: true };\n  }\n  /**\n   * Subscribe all the children of a container to its parent\n   * @param container\n   */\n  subscribeChildren(container, containerId) {\n    if (!container[\"ldp:contains\"]) return;\n    for (const res of container[\"ldp:contains\"]) {\n      this.subscribeResourceTo(containerId, res[\"@id\"] || res.id);\n    }\n  }\n  /**\n   * Update a resource\n   * @param method - can be POST, PUT or PATCH\n   * @param resource - content of the updated resource\n   * @param id - id of the resource to update\n   * @returns void\n   */\n  async _updateResource(method, resource, id2) {\n    if (![\"POST\", \"PUT\", \"PATCH\", \"_LOCAL\"].includes(method))\n      throw new Error(\"Error: method not allowed\");\n    const context2 = await myParser.parse([resource[\"@context\"] || {}]);\n    const expandedId = this._getExpandedId(id2, context2);\n    return this._fetch(method, resource, id2).then(async (response) => {\n      var _a3;\n      if (response.ok) {\n        if (method !== \"_LOCAL\") {\n          this.clearCache(expandedId);\n        }\n        this.getData(expandedId, resource[\"@context\"]).then(async () => {\n          const nestedResources = await this.getNestedResources(resource, id2);\n          const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];\n          const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];\n          return this.refreshResources([\n            ...nestedResources,\n            ...resourcesToRefresh\n          ]).then(\n            (resourceIds) => this.notifyResources([\n              expandedId,\n              ...resourceIds,\n              ...resourcesToNotify\n            ])\n          );\n        });\n        return ((_a3 = response.headers) == null ? void 0 : _a3.get(\"Location\")) || null;\n      }\n      throw response;\n    });\n  }\n  /**\n   * Clear cache and refetch data for a list of ids\n   * @param resourceIds -\n   * @returns - all the resource ids\n   */\n  async refreshResources(resourceIds) {\n    resourceIds = [...new Set(resourceIds.filter((id2) => this.cache.has(id2)))];\n    const resourceWithContexts = resourceIds.map((resourceId) => {\n      var _a3;\n      return {\n        id: resourceId,\n        context: (_a3 = store.get(resourceId)) == null ? void 0 : _a3.clientContext\n      };\n    });\n    for (const resource of resourceWithContexts) {\n      if (!this._isLocalId(resource.id)) this.clearCache(resource.id);\n    }\n    await Promise.all(\n      resourceWithContexts.map(\n        ({ id: id2, context: context2 }) => this.getData(id2, context2 || base_context)\n      )\n    );\n    return resourceIds;\n  }\n  /**\n   * Notifies all components for a list of ids\n   * @param resourceIds -\n   */\n  notifyResources(resourceIds) {\n    resourceIds = [...new Set(resourceIds)];\n    for (const id2 of resourceIds) PubSub$1.publish(id2);\n  }\n  /**\n   * Return id of nested properties of a resource\n   * @param resource - object\n   * @param id - string\n   */\n  getNestedResources(resource, id2) {\n    var _a3;\n    const cachedResource = store.get(id2);\n    if (!cachedResource || ((_a3 = cachedResource.isContainer) == null ? void 0 : _a3.call(cachedResource))) return [];\n    const nestedProperties = [];\n    const excludeKeys = [\"@context\"];\n    for (const p2 of Object.keys(resource)) {\n      if (resource[p2] && typeof resource[p2] === \"object\" && !excludeKeys.includes(p2) && resource[p2][\"@id\"]) {\n        nestedProperties.push(resource[p2][\"@id\"]);\n      }\n    }\n    return nestedProperties;\n  }\n  /**\n   * Returns the resource with id from the cache\n   * @param id - id of the resource to retrieve\n   *\n   * @returns Resource (Proxy) if in the cache, null otherwise\n   */\n  get(id2, serverPagination, serverSearch) {\n    if (serverPagination) {\n      id2 = appendServerPaginationToIri(id2, serverPagination);\n    }\n    if (serverSearch) {\n      id2 = appendServerSearchToIri(id2, serverSearch);\n    }\n    return this.cache.get(id2) || null;\n  }\n  /**\n   * Removes a resource from the cache\n   * @param id - id of the resource to remove from the cache\n   */\n  clearCache(id2) {\n    if (this.cache.has(id2)) {\n      const resource = this.cache.get(id2);\n      if (resource[\"@type\"] === \"ldp:Container\") {\n        for (const child of resource[\"ldp:contains\"]) {\n          if (child && child[\"@type\"] === \"ldp:Container\")\n            this.cache.delete(child[\"@id\"]);\n        }\n      }\n      this.cache.delete(id2);\n    }\n  }\n  /**\n   * Send data to create a local resource in a container\n   * @param resource - resource to create\n   * @param id - uri of the container to add resource. should start with ``\n   *\n   * @returns id of the posted resource\n   */\n  setLocalData(resource, id2) {\n    return this._updateResource(\"_LOCAL\", resource, id2);\n  }\n  /**\n   * Send a POST request to create a resource in a container\n   * @param resource - resource to create\n   * @param id - uri of the container to add resource\n   *\n   * @returns id of the posted resource\n   */\n  post(resource, id2) {\n    return this._updateResource(\"POST\", resource, id2);\n  }\n  /**\n   * Send a PUT request to edit a resource\n   * @param resource - resource data to send\n   * @param id - uri of the resource to edit\n   *\n   * @returns id of the edited resource\n   */\n  put(resource, id2) {\n    return this._updateResource(\"PUT\", resource, id2);\n  }\n  /**\n   * Send a PATCH request to edit a resource\n   * @param resource - resource data to send\n   * @param id - uri of the resource to patch\n   *\n   * @returns id of the edited resource\n   */\n  patch(resource, id2) {\n    return this._updateResource(\"PATCH\", resource, id2);\n  }\n  /**\n   * Send a DELETE request to delete a resource\n   * @param id - uri of the resource to delete\n   * @param context - can be used to expand id\n   *\n   * @returns id of the deleted resource\n   */\n  async delete(id2, context2 = {}) {\n    const expandedId = this._getExpandedId(id2, context2);\n    const deleted = await this.fetchAuthn(expandedId, {\n      method: \"DELETE\",\n      headers: this.headers,\n      credentials: \"include\"\n    });\n    const resourcesToNotify = this.subscriptionIndex.get(expandedId) || [];\n    const resourcesToRefresh = this.subscriptionVirtualContainersIndex.get(expandedId) || [];\n    this.refreshResources([...resourcesToNotify, ...resourcesToRefresh]).then(\n      (resourceIds) => this.notifyResources(resourceIds)\n    );\n    return deleted;\n  }\n  /**\n   * Convert headers object to Headers\n   * @param headersObject - object\n   * @returns {Headers}\n   */\n  _convertHeaders(headersObject) {\n    const headers = new Headers();\n    for (const [key, value] of Object.entries(headersObject)) {\n      headers.set(key, value);\n    }\n    return headers;\n  }\n  _getExpandedId(id2, context2) {\n    return context2 && Object.keys(context2) ? ContextParser2.expandTerm(id2, context2) : id2;\n  }\n  /**\n   * Returns the expanded predicate based on provided context or the base one.\n   * @param property The property to expand\n   * @param context Your current context\n   * @returns The fully expanded term\n   */\n  getExpandedPredicate(property, context2) {\n    if (!context2) return ContextParser2.expandTerm(property, base_context, true);\n    return ContextParser2.expandTerm(property, context2, true);\n  }\n  /**\n   * Returns the compacted IRI based on provided context or the base one.\n   * @param property The property to compact\n   * @param context Your current context\n   * @returns The compacted term\n   */\n  getCompactedIri(property, context2) {\n    if (!context2) return ContextParser2.compactIri(property, base_context, true);\n    return ContextParser2.compactIri(property, context2, true);\n  }\n  /**\n   * Check if the id is a local id\n   * @param id - string\n   * @returns boolean\n   */\n  _isLocalId(id2) {\n    return id2.startsWith(\"store://local.\");\n  }\n  /**\n   * Make a resource listen changes of another one\n   * @param resourceId - id of the resource which needs to be updated\n   * @param nestedResourceId - id of the resource which will change\n   */\n  subscribeResourceTo(resourceId, nestedResourceId) {\n    const existingSubscriptions = this.subscriptionIndex.get(nestedResourceId) || [];\n    this.subscriptionIndex.set(nestedResourceId, [\n      .../* @__PURE__ */ new Set([...existingSubscriptions, resourceId])\n    ]);\n  }\n  /**\n   * Make a virtual container listen for changes of a resource\n   * @param virtualContainerId - id of the container which needs to be updated\n   * @param nestedResourceId - id of the resource which will change\n   */\n  subscribeVirtualContainerTo(virtualContainerId, nestedResourceId) {\n    const existingSubscriptions = this.subscriptionVirtualContainersIndex.get(nestedResourceId) || [];\n    this.subscriptionVirtualContainersIndex.set(nestedResourceId, [\n      .../* @__PURE__ */ new Set([...existingSubscriptions, virtualContainerId])\n    ]);\n  }\n  /**\n   * Return absolute IRI of the resource\n   * @param id\n   * @param context\n   * @param parentId\n   */\n  _getAbsoluteIri(id2, context2, parentId) {\n    let iri = ContextParser2.expandTerm(id2, context2);\n    if (parentId && !parentId.startsWith(\"store://local\")) {\n      const parentIri = new URL(parentId, document.location.href).href;\n      iri = new URL(iri, parentIri).href;\n    } else {\n      iri = new URL(iri, document.location.href).href;\n    }\n    return iri;\n  }\n  /**\n   * Return the user session information\n   */\n  async getSession() {\n    return await this.session;\n  }\n  /**\n   * Return language of the users\n   */\n  _getLanguage() {\n    return localStorage.getItem(\"language\") || window.navigator.language.slice(0, 2);\n  }\n  /**\n   * Save the preferred language of the user\n   * @param selectedLanguageCode\n   */\n  selectLanguage(selectedLanguageCode) {\n    localStorage.setItem(\"language\", selectedLanguageCode);\n  }\n}\nlet store;\nif (window.sibStore) {\n  store = window.sibStore;\n} else {\n  const sibAuth = document.querySelector(\"sib-auth\");\n  const storeOptions = {};\n  if (sibAuth) {\n    const sibAuthDefined = customElements.whenDefined(sibAuth.localName);\n    storeOptions.session = sibAuthDefined.then(() => sibAuth.session);\n    storeOptions.fetchMethod = sibAuthDefined.then(\n      () => sibAuth.getFetch()\n    );\n  }\n  store = new Store(storeOptions);\n  window.sibStore = store;\n}\nconst AttributeBinderMixin = {\n  name: \"attribute-binder-mixin\",\n  use: [],\n  initialState: {\n    bindedAttributes: null\n  },\n  created() {\n    this.bindedAttributes = {};\n  },\n  /**\n   * Reset attributes values\n   */\n  resetAttributesData() {\n    for (const attr of Object.keys(this.bindedAttributes)) {\n      this.element.setAttribute(attr, this.bindedAttributes[attr]);\n    }\n  },\n  /**\n   * Replace store://XXX attributes by corresponding data\n   * @param reset - set to false if no need to reset data\n   */\n  async replaceAttributesData(reset = true) {\n    if (reset) this.resetAttributesData();\n    const oldAttributes = {};\n    for (const attr of this.element.attributes) {\n      if (!attr.value.match(/^store:\\/\\/(resource|container|user)/)) continue;\n      if (!this.bindedAttributes[attr.name])\n        this.bindedAttributes[attr.name] = attr.value;\n      oldAttributes[attr.name] = attr.value;\n    }\n    const newAttributes = await this.transformAttributes(\n      { ...oldAttributes },\n      this.resource\n    );\n    for (const attr of Object.keys(newAttributes)) {\n      if (oldAttributes[attr] === newAttributes[attr]) continue;\n      this.element.setAttribute(attr, newAttributes[attr]);\n    }\n  },\n  /**\n   * Transform attributes from `store://...` to their actual value\n   * @param attributes - object representing attributes of an element\n   * @param resource - resource to use to resolve attributes\n   * @returns - object representing attributes of an element with resolved values\n   */\n  async transformAttributes(attributes, resource) {\n    var _a3;\n    const isContainer = (_a3 = resource == null ? void 0 : resource.isContainer) == null ? void 0 : _a3.call(resource);\n    for (const attr of Object.keys(attributes)) {\n      const value = attributes[attr];\n      if (typeof value === \"string\") {\n        if (!isContainer && resource && value.startsWith(\"store://resource\")) {\n          const path = value.replace(\"store://resource.\", \"\");\n          attributes[attr] = resource ? await resource[path] : \"\";\n        } else if (isContainer && resource && value.startsWith(\"store://container\")) {\n          const path = value.replace(\"store://container.\", \"\");\n          attributes[attr] = resource ? await resource[path] : \"\";\n        } else if (value.startsWith(\"store://user\")) {\n          const userId = await this.retry(this.getUser.bind(this));\n          const user = (userId == null ? void 0 : userId[\"@id\"]) ? await store.getData(userId[\"@id\"], this.context || base_context) : null;\n          if (!user) {\n            attributes[attr] = \"\";\n            continue;\n          }\n          const path = value.replace(\"store://user.\", \"\");\n          attributes[attr] = user ? await user[path] : \"\";\n        }\n      }\n    }\n    return attributes;\n  },\n  /**\n   * Returns logged in user from sib-auth\n   * @returns userId\n   */\n  async getUser() {\n    const sibAuth = document.querySelector(\"sib-auth\");\n    return await sibAuth.getUser();\n  },\n  /**\n   * Retry [fn] for [maxRetries] times every [ms]\n   * @param fn\n   * @param ms\n   * @param maxRetries\n   * @returns\n   */\n  async retry(fn, ms = 200, maxRetries = 5) {\n    return new Promise((resolve2, reject) => {\n      let retries = 0;\n      fn().then(resolve2).catch(() => {\n        setTimeout(() => {\n          ++retries;\n          if (retries >= maxRetries) return reject();\n          this.retry(fn, ms).then(resolve2);\n        }, ms);\n      });\n    });\n  }\n};\nconst ContextMixin = {\n  name: \"store-mixin\",\n  use: [],\n  attributes: {\n    extraContext: {\n      type: String,\n      default: null\n    }\n  },\n  get context() {\n    return { ...base_context, ...this.extra_context };\n  },\n  get extra_context() {\n    const extraContextElement = this.extraContext ? document.getElementById(this.extraContext) : (\n      // take element extra context first\n      document.querySelector(\"[data-default-context]\")\n    );\n    if (extraContextElement)\n      return JSON.parse(extraContextElement.textContent || \"{}\");\n    return {};\n  }\n};\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t$2 = globalThis, e$4 = t$2.ShadowRoot && (void 0 === t$2.ShadyCSS || t$2.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype, s$3 = Symbol(), o$5 = /* @__PURE__ */ new WeakMap();\nlet n$4 = class n {\n  constructor(t2, e2, o2) {\n    if (this._$cssResult$ = true, o2 !== s$3) throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n    this.cssText = t2, this.t = e2;\n  }\n  get styleSheet() {\n    let t2 = this.o;\n    const s2 = this.t;\n    if (e$4 && void 0 === t2) {\n      const e2 = void 0 !== s2 && 1 === s2.length;\n      e2 && (t2 = o$5.get(s2)), void 0 === t2 && ((this.o = t2 = new CSSStyleSheet()).replaceSync(this.cssText), e2 && o$5.set(s2, t2));\n    }\n    return t2;\n  }\n  toString() {\n    return this.cssText;\n  }\n};\nconst r$4 = (t2) => new n$4(\"string\" == typeof t2 ? t2 : t2 + \"\", void 0, s$3), S$1 = (s2, o2) => {\n  if (e$4) s2.adoptedStyleSheets = o2.map((t2) => t2 instanceof CSSStyleSheet ? t2 : t2.styleSheet);\n  else for (const e2 of o2) {\n    const o3 = document.createElement(\"style\"), n3 = t$2.litNonce;\n    void 0 !== n3 && o3.setAttribute(\"nonce\", n3), o3.textContent = e2.cssText, s2.appendChild(o3);\n  }\n}, c$4 = e$4 ? (t2) => t2 : (t2) => t2 instanceof CSSStyleSheet ? ((t3) => {\n  let e2 = \"\";\n  for (const s2 of t3.cssRules) e2 += s2.cssText;\n  return r$4(e2);\n})(t2) : t2;\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst { is: i$5, defineProperty: e$3, getOwnPropertyDescriptor: r$3, getOwnPropertyNames: h$3, getOwnPropertySymbols: o$4, getPrototypeOf: n$3 } = Object, a$1 = globalThis, c$3 = a$1.trustedTypes, l$1 = c$3 ? c$3.emptyScript : \"\", p$1 = a$1.reactiveElementPolyfillSupport, d$1 = (t2, s2) => t2, u$1 = { toAttribute(t2, s2) {\n  switch (s2) {\n    case Boolean:\n      t2 = t2 ? l$1 : null;\n      break;\n    case Object:\n    case Array:\n      t2 = null == t2 ? t2 : JSON.stringify(t2);\n  }\n  return t2;\n}, fromAttribute(t2, s2) {\n  let i3 = t2;\n  switch (s2) {\n    case Boolean:\n      i3 = null !== t2;\n      break;\n    case Number:\n      i3 = null === t2 ? null : Number(t2);\n      break;\n    case Object:\n    case Array:\n      try {\n        i3 = JSON.parse(t2);\n      } catch (t3) {\n        i3 = null;\n      }\n  }\n  return i3;\n} }, f$3 = (t2, s2) => !i$5(t2, s2), y$1 = { attribute: true, type: String, converter: u$1, reflect: false, hasChanged: f$3 };\nSymbol.metadata ?? (Symbol.metadata = Symbol(\"metadata\")), a$1.litPropertyMetadata ?? (a$1.litPropertyMetadata = /* @__PURE__ */ new WeakMap());\nclass b extends HTMLElement {\n  static addInitializer(t2) {\n    this._$Ei(), (this.l ?? (this.l = [])).push(t2);\n  }\n  static get observedAttributes() {\n    return this.finalize(), this._$Eh && [...this._$Eh.keys()];\n  }\n  static createProperty(t2, s2 = y$1) {\n    if (s2.state && (s2.attribute = false), this._$Ei(), this.elementProperties.set(t2, s2), !s2.noAccessor) {\n      const i3 = Symbol(), r3 = this.getPropertyDescriptor(t2, i3, s2);\n      void 0 !== r3 && e$3(this.prototype, t2, r3);\n    }\n  }\n  static getPropertyDescriptor(t2, s2, i3) {\n    const { get: e2, set: h3 } = r$3(this.prototype, t2) ?? { get() {\n      return this[s2];\n    }, set(t3) {\n      this[s2] = t3;\n    } };\n    return { get() {\n      return e2 == null ? void 0 : e2.call(this);\n    }, set(s3) {\n      const r3 = e2 == null ? void 0 : e2.call(this);\n      h3.call(this, s3), this.requestUpdate(t2, r3, i3);\n    }, configurable: true, enumerable: true };\n  }\n  static getPropertyOptions(t2) {\n    return this.elementProperties.get(t2) ?? y$1;\n  }\n  static _$Ei() {\n    if (this.hasOwnProperty(d$1(\"elementProperties\"))) return;\n    const t2 = n$3(this);\n    t2.finalize(), void 0 !== t2.l && (this.l = [...t2.l]), this.elementProperties = new Map(t2.elementProperties);\n  }\n  static finalize() {\n    if (this.hasOwnProperty(d$1(\"finalized\"))) return;\n    if (this.finalized = true, this._$Ei(), this.hasOwnProperty(d$1(\"properties\"))) {\n      const t3 = this.properties, s2 = [...h$3(t3), ...o$4(t3)];\n      for (const i3 of s2) this.createProperty(i3, t3[i3]);\n    }\n    const t2 = this[Symbol.metadata];\n    if (null !== t2) {\n      const s2 = litPropertyMetadata.get(t2);\n      if (void 0 !== s2) for (const [t3, i3] of s2) this.elementProperties.set(t3, i3);\n    }\n    this._$Eh = /* @__PURE__ */ new Map();\n    for (const [t3, s2] of this.elementProperties) {\n      const i3 = this._$Eu(t3, s2);\n      void 0 !== i3 && this._$Eh.set(i3, t3);\n    }\n    this.elementStyles = this.finalizeStyles(this.styles);\n  }\n  static finalizeStyles(s2) {\n    const i3 = [];\n    if (Array.isArray(s2)) {\n      const e2 = new Set(s2.flat(1 / 0).reverse());\n      for (const s3 of e2) i3.unshift(c$4(s3));\n    } else void 0 !== s2 && i3.push(c$4(s2));\n    return i3;\n  }\n  static _$Eu(t2, s2) {\n    const i3 = s2.attribute;\n    return false === i3 ? void 0 : \"string\" == typeof i3 ? i3 : \"string\" == typeof t2 ? t2.toLowerCase() : void 0;\n  }\n  constructor() {\n    super(), this._$Ep = void 0, this.isUpdatePending = false, this.hasUpdated = false, this._$Em = null, this._$Ev();\n  }\n  _$Ev() {\n    var _a3;\n    this._$ES = new Promise((t2) => this.enableUpdating = t2), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (_a3 = this.constructor.l) == null ? void 0 : _a3.forEach((t2) => t2(this));\n  }\n  addController(t2) {\n    var _a3;\n    (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(t2), void 0 !== this.renderRoot && this.isConnected && ((_a3 = t2.hostConnected) == null ? void 0 : _a3.call(t2));\n  }\n  removeController(t2) {\n    var _a3;\n    (_a3 = this._$EO) == null ? void 0 : _a3.delete(t2);\n  }\n  _$E_() {\n    const t2 = /* @__PURE__ */ new Map(), s2 = this.constructor.elementProperties;\n    for (const i3 of s2.keys()) this.hasOwnProperty(i3) && (t2.set(i3, this[i3]), delete this[i3]);\n    t2.size > 0 && (this._$Ep = t2);\n  }\n  createRenderRoot() {\n    const t2 = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);\n    return S$1(t2, this.constructor.elementStyles), t2;\n  }\n  connectedCallback() {\n    var _a3;\n    this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(true), (_a3 = this._$EO) == null ? void 0 : _a3.forEach((t2) => {\n      var _a4;\n      return (_a4 = t2.hostConnected) == null ? void 0 : _a4.call(t2);\n    });\n  }\n  enableUpdating(t2) {\n  }\n  disconnectedCallback() {\n    var _a3;\n    (_a3 = this._$EO) == null ? void 0 : _a3.forEach((t2) => {\n      var _a4;\n      return (_a4 = t2.hostDisconnected) == null ? void 0 : _a4.call(t2);\n    });\n  }\n  attributeChangedCallback(t2, s2, i3) {\n    this._$AK(t2, i3);\n  }\n  _$EC(t2, s2) {\n    var _a3;\n    const i3 = this.constructor.elementProperties.get(t2), e2 = this.constructor._$Eu(t2, i3);\n    if (void 0 !== e2 && true === i3.reflect) {\n      const r3 = (void 0 !== ((_a3 = i3.converter) == null ? void 0 : _a3.toAttribute) ? i3.converter : u$1).toAttribute(s2, i3.type);\n      this._$Em = t2, null == r3 ? this.removeAttribute(e2) : this.setAttribute(e2, r3), this._$Em = null;\n    }\n  }\n  _$AK(t2, s2) {\n    var _a3;\n    const i3 = this.constructor, e2 = i3._$Eh.get(t2);\n    if (void 0 !== e2 && this._$Em !== e2) {\n      const t3 = i3.getPropertyOptions(e2), r3 = \"function\" == typeof t3.converter ? { fromAttribute: t3.converter } : void 0 !== ((_a3 = t3.converter) == null ? void 0 : _a3.fromAttribute) ? t3.converter : u$1;\n      this._$Em = e2, this[e2] = r3.fromAttribute(s2, t3.type), this._$Em = null;\n    }\n  }\n  requestUpdate(t2, s2, i3) {\n    if (void 0 !== t2) {\n      if (i3 ?? (i3 = this.constructor.getPropertyOptions(t2)), !(i3.hasChanged ?? f$3)(this[t2], s2)) return;\n      this.P(t2, s2, i3);\n    }\n    false === this.isUpdatePending && (this._$ES = this._$ET());\n  }\n  P(t2, s2, i3) {\n    this._$AL.has(t2) || this._$AL.set(t2, s2), true === i3.reflect && this._$Em !== t2 && (this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Set())).add(t2);\n  }\n  async _$ET() {\n    this.isUpdatePending = true;\n    try {\n      await this._$ES;\n    } catch (t3) {\n      Promise.reject(t3);\n    }\n    const t2 = this.scheduleUpdate();\n    return null != t2 && await t2, !this.isUpdatePending;\n  }\n  scheduleUpdate() {\n    return this.performUpdate();\n  }\n  performUpdate() {\n    var _a3;\n    if (!this.isUpdatePending) return;\n    if (!this.hasUpdated) {\n      if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {\n        for (const [t4, s3] of this._$Ep) this[t4] = s3;\n        this._$Ep = void 0;\n      }\n      const t3 = this.constructor.elementProperties;\n      if (t3.size > 0) for (const [s3, i3] of t3) true !== i3.wrapped || this._$AL.has(s3) || void 0 === this[s3] || this.P(s3, this[s3], i3);\n    }\n    let t2 = false;\n    const s2 = this._$AL;\n    try {\n      t2 = this.shouldUpdate(s2), t2 ? (this.willUpdate(s2), (_a3 = this._$EO) == null ? void 0 : _a3.forEach((t3) => {\n        var _a4;\n        return (_a4 = t3.hostUpdate) == null ? void 0 : _a4.call(t3);\n      }), this.update(s2)) : this._$EU();\n    } catch (s3) {\n      throw t2 = false, this._$EU(), s3;\n    }\n    t2 && this._$AE(s2);\n  }\n  willUpdate(t2) {\n  }\n  _$AE(t2) {\n    var _a3;\n    (_a3 = this._$EO) == null ? void 0 : _a3.forEach((t3) => {\n      var _a4;\n      return (_a4 = t3.hostUpdated) == null ? void 0 : _a4.call(t3);\n    }), this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t2)), this.updated(t2);\n  }\n  _$EU() {\n    this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = false;\n  }\n  get updateComplete() {\n    return this.getUpdateComplete();\n  }\n  getUpdateComplete() {\n    return this._$ES;\n  }\n  shouldUpdate(t2) {\n    return true;\n  }\n  update(t2) {\n    this._$Ej && (this._$Ej = this._$Ej.forEach((t3) => this._$EC(t3, this[t3]))), this._$EU();\n  }\n  updated(t2) {\n  }\n  firstUpdated(t2) {\n  }\n}\nb.elementStyles = [], b.shadowRootOptions = { mode: \"open\" }, b[d$1(\"elementProperties\")] = /* @__PURE__ */ new Map(), b[d$1(\"finalized\")] = /* @__PURE__ */ new Map(), p$1 == null ? void 0 : p$1({ ReactiveElement: b }), (a$1.reactiveElementVersions ?? (a$1.reactiveElementVersions = [])).push(\"2.0.4\");\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t$1 = globalThis, i$4 = t$1.trustedTypes, s$2 = i$4 ? i$4.createPolicy(\"lit-html\", { createHTML: (t2) => t2 }) : void 0, e$2 = \"$lit$\", h$2 = `lit$${Math.random().toFixed(9).slice(2)}$`, o$3 = \"?\" + h$2, n$2 = `<${o$3}>`, r$2 = document, l = () => r$2.createComment(\"\"), c$2 = (t2) => null === t2 || \"object\" != typeof t2 && \"function\" != typeof t2, a = Array.isArray, u = (t2) => a(t2) || \"function\" == typeof (t2 == null ? void 0 : t2[Symbol.iterator]), d = \"[ \t\\n\\f\\r]\", f$2 = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g, v = /-->/g, _ = />/g, m$1 = RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \t\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`, \"g\"), p = /'/g, g = /\"/g, $ = /^(?:script|style|textarea|title)$/i, y = (t2) => (i3, ...s2) => ({ _$litType$: t2, strings: i3, values: s2 }), x = y(1), T = Symbol.for(\"lit-noChange\"), E = Symbol.for(\"lit-nothing\"), A = /* @__PURE__ */ new WeakMap(), C = r$2.createTreeWalker(r$2, 129);\nfunction P$1(t2, i3) {\n  if (!a(t2) || !t2.hasOwnProperty(\"raw\")) throw Error(\"invalid template strings array\");\n  return void 0 !== s$2 ? s$2.createHTML(i3) : i3;\n}\nconst V = (t2, i3) => {\n  const s2 = t2.length - 1, o2 = [];\n  let r3, l2 = 2 === i3 ? \"<svg>\" : 3 === i3 ? \"<math>\" : \"\", c2 = f$2;\n  for (let i4 = 0; i4 < s2; i4++) {\n    const s3 = t2[i4];\n    let a2, u2, d2 = -1, y2 = 0;\n    for (; y2 < s3.length && (c2.lastIndex = y2, u2 = c2.exec(s3), null !== u2); ) y2 = c2.lastIndex, c2 === f$2 ? \"!--\" === u2[1] ? c2 = v : void 0 !== u2[1] ? c2 = _ : void 0 !== u2[2] ? ($.test(u2[2]) && (r3 = RegExp(\"</\" + u2[2], \"g\")), c2 = m$1) : void 0 !== u2[3] && (c2 = m$1) : c2 === m$1 ? \">\" === u2[0] ? (c2 = r3 ?? f$2, d2 = -1) : void 0 === u2[1] ? d2 = -2 : (d2 = c2.lastIndex - u2[2].length, a2 = u2[1], c2 = void 0 === u2[3] ? m$1 : '\"' === u2[3] ? g : p) : c2 === g || c2 === p ? c2 = m$1 : c2 === v || c2 === _ ? c2 = f$2 : (c2 = m$1, r3 = void 0);\n    const x2 = c2 === m$1 && t2[i4 + 1].startsWith(\"/>\") ? \" \" : \"\";\n    l2 += c2 === f$2 ? s3 + n$2 : d2 >= 0 ? (o2.push(a2), s3.slice(0, d2) + e$2 + s3.slice(d2) + h$2 + x2) : s3 + h$2 + (-2 === d2 ? i4 : x2);\n  }\n  return [P$1(t2, l2 + (t2[s2] || \"<?>\") + (2 === i3 ? \"</svg>\" : 3 === i3 ? \"</math>\" : \"\")), o2];\n};\nclass N {\n  constructor({ strings: t2, _$litType$: s2 }, n3) {\n    let r3;\n    this.parts = [];\n    let c2 = 0, a2 = 0;\n    const u2 = t2.length - 1, d2 = this.parts, [f2, v2] = V(t2, s2);\n    if (this.el = N.createElement(f2, n3), C.currentNode = this.el.content, 2 === s2 || 3 === s2) {\n      const t3 = this.el.content.firstChild;\n      t3.replaceWith(...t3.childNodes);\n    }\n    for (; null !== (r3 = C.nextNode()) && d2.length < u2; ) {\n      if (1 === r3.nodeType) {\n        if (r3.hasAttributes()) for (const t3 of r3.getAttributeNames()) if (t3.endsWith(e$2)) {\n          const i3 = v2[a2++], s3 = r3.getAttribute(t3).split(h$2), e2 = /([.?@])?(.*)/.exec(i3);\n          d2.push({ type: 1, index: c2, name: e2[2], strings: s3, ctor: \".\" === e2[1] ? H : \"?\" === e2[1] ? I : \"@\" === e2[1] ? L : k }), r3.removeAttribute(t3);\n        } else t3.startsWith(h$2) && (d2.push({ type: 6, index: c2 }), r3.removeAttribute(t3));\n        if ($.test(r3.tagName)) {\n          const t3 = r3.textContent.split(h$2), s3 = t3.length - 1;\n          if (s3 > 0) {\n            r3.textContent = i$4 ? i$4.emptyScript : \"\";\n            for (let i3 = 0; i3 < s3; i3++) r3.append(t3[i3], l()), C.nextNode(), d2.push({ type: 2, index: ++c2 });\n            r3.append(t3[s3], l());\n          }\n        }\n      } else if (8 === r3.nodeType) if (r3.data === o$3) d2.push({ type: 2, index: c2 });\n      else {\n        let t3 = -1;\n        for (; -1 !== (t3 = r3.data.indexOf(h$2, t3 + 1)); ) d2.push({ type: 7, index: c2 }), t3 += h$2.length - 1;\n      }\n      c2++;\n    }\n  }\n  static createElement(t2, i3) {\n    const s2 = r$2.createElement(\"template\");\n    return s2.innerHTML = t2, s2;\n  }\n}\nfunction S(t2, i3, s2 = t2, e2) {\n  var _a3, _b;\n  if (i3 === T) return i3;\n  let h3 = void 0 !== e2 ? (_a3 = s2._$Co) == null ? void 0 : _a3[e2] : s2._$Cl;\n  const o2 = c$2(i3) ? void 0 : i3._$litDirective$;\n  return (h3 == null ? void 0 : h3.constructor) !== o2 && ((_b = h3 == null ? void 0 : h3._$AO) == null ? void 0 : _b.call(h3, false), void 0 === o2 ? h3 = void 0 : (h3 = new o2(t2), h3._$AT(t2, s2, e2)), void 0 !== e2 ? (s2._$Co ?? (s2._$Co = []))[e2] = h3 : s2._$Cl = h3), void 0 !== h3 && (i3 = S(t2, h3._$AS(t2, i3.values), h3, e2)), i3;\n}\nclass M {\n  constructor(t2, i3) {\n    this._$AV = [], this._$AN = void 0, this._$AD = t2, this._$AM = i3;\n  }\n  get parentNode() {\n    return this._$AM.parentNode;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  u(t2) {\n    const { el: { content: i3 }, parts: s2 } = this._$AD, e2 = ((t2 == null ? void 0 : t2.creationScope) ?? r$2).importNode(i3, true);\n    C.currentNode = e2;\n    let h3 = C.nextNode(), o2 = 0, n3 = 0, l2 = s2[0];\n    for (; void 0 !== l2; ) {\n      if (o2 === l2.index) {\n        let i4;\n        2 === l2.type ? i4 = new R(h3, h3.nextSibling, this, t2) : 1 === l2.type ? i4 = new l2.ctor(h3, l2.name, l2.strings, this, t2) : 6 === l2.type && (i4 = new z(h3, this, t2)), this._$AV.push(i4), l2 = s2[++n3];\n      }\n      o2 !== (l2 == null ? void 0 : l2.index) && (h3 = C.nextNode(), o2++);\n    }\n    return C.currentNode = r$2, e2;\n  }\n  p(t2) {\n    let i3 = 0;\n    for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t2, s2, i3), i3 += s2.strings.length - 2) : s2._$AI(t2[i3])), i3++;\n  }\n}\nclass R {\n  get _$AU() {\n    var _a3;\n    return ((_a3 = this._$AM) == null ? void 0 : _a3._$AU) ?? this._$Cv;\n  }\n  constructor(t2, i3, s2, e2) {\n    this.type = 2, this._$AH = E, this._$AN = void 0, this._$AA = t2, this._$AB = i3, this._$AM = s2, this.options = e2, this._$Cv = (e2 == null ? void 0 : e2.isConnected) ?? true;\n  }\n  get parentNode() {\n    let t2 = this._$AA.parentNode;\n    const i3 = this._$AM;\n    return void 0 !== i3 && 11 === (t2 == null ? void 0 : t2.nodeType) && (t2 = i3.parentNode), t2;\n  }\n  get startNode() {\n    return this._$AA;\n  }\n  get endNode() {\n    return this._$AB;\n  }\n  _$AI(t2, i3 = this) {\n    t2 = S(this, t2, i3), c$2(t2) ? t2 === E || null == t2 || \"\" === t2 ? (this._$AH !== E && this._$AR(), this._$AH = E) : t2 !== this._$AH && t2 !== T && this._(t2) : void 0 !== t2._$litType$ ? this.$(t2) : void 0 !== t2.nodeType ? this.T(t2) : u(t2) ? this.k(t2) : this._(t2);\n  }\n  O(t2) {\n    return this._$AA.parentNode.insertBefore(t2, this._$AB);\n  }\n  T(t2) {\n    this._$AH !== t2 && (this._$AR(), this._$AH = this.O(t2));\n  }\n  _(t2) {\n    this._$AH !== E && c$2(this._$AH) ? this._$AA.nextSibling.data = t2 : this.T(r$2.createTextNode(t2)), this._$AH = t2;\n  }\n  $(t2) {\n    var _a3;\n    const { values: i3, _$litType$: s2 } = t2, e2 = \"number\" == typeof s2 ? this._$AC(t2) : (void 0 === s2.el && (s2.el = N.createElement(P$1(s2.h, s2.h[0]), this.options)), s2);\n    if (((_a3 = this._$AH) == null ? void 0 : _a3._$AD) === e2) this._$AH.p(i3);\n    else {\n      const t3 = new M(e2, this), s3 = t3.u(this.options);\n      t3.p(i3), this.T(s3), this._$AH = t3;\n    }\n  }\n  _$AC(t2) {\n    let i3 = A.get(t2.strings);\n    return void 0 === i3 && A.set(t2.strings, i3 = new N(t2)), i3;\n  }\n  k(t2) {\n    a(this._$AH) || (this._$AH = [], this._$AR());\n    const i3 = this._$AH;\n    let s2, e2 = 0;\n    for (const h3 of t2) e2 === i3.length ? i3.push(s2 = new R(this.O(l()), this.O(l()), this, this.options)) : s2 = i3[e2], s2._$AI(h3), e2++;\n    e2 < i3.length && (this._$AR(s2 && s2._$AB.nextSibling, e2), i3.length = e2);\n  }\n  _$AR(t2 = this._$AA.nextSibling, i3) {\n    var _a3;\n    for ((_a3 = this._$AP) == null ? void 0 : _a3.call(this, false, true, i3); t2 && t2 !== this._$AB; ) {\n      const i4 = t2.nextSibling;\n      t2.remove(), t2 = i4;\n    }\n  }\n  setConnected(t2) {\n    var _a3;\n    void 0 === this._$AM && (this._$Cv = t2, (_a3 = this._$AP) == null ? void 0 : _a3.call(this, t2));\n  }\n}\nclass k {\n  get tagName() {\n    return this.element.tagName;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  constructor(t2, i3, s2, e2, h3) {\n    this.type = 1, this._$AH = E, this._$AN = void 0, this.element = t2, this.name = i3, this._$AM = e2, this.options = h3, s2.length > 2 || \"\" !== s2[0] || \"\" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = E;\n  }\n  _$AI(t2, i3 = this, s2, e2) {\n    const h3 = this.strings;\n    let o2 = false;\n    if (void 0 === h3) t2 = S(this, t2, i3, 0), o2 = !c$2(t2) || t2 !== this._$AH && t2 !== T, o2 && (this._$AH = t2);\n    else {\n      const e3 = t2;\n      let n3, r3;\n      for (t2 = h3[0], n3 = 0; n3 < h3.length - 1; n3++) r3 = S(this, e3[s2 + n3], i3, n3), r3 === T && (r3 = this._$AH[n3]), o2 || (o2 = !c$2(r3) || r3 !== this._$AH[n3]), r3 === E ? t2 = E : t2 !== E && (t2 += (r3 ?? \"\") + h3[n3 + 1]), this._$AH[n3] = r3;\n    }\n    o2 && !e2 && this.j(t2);\n  }\n  j(t2) {\n    t2 === E ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t2 ?? \"\");\n  }\n}\nclass H extends k {\n  constructor() {\n    super(...arguments), this.type = 3;\n  }\n  j(t2) {\n    this.element[this.name] = t2 === E ? void 0 : t2;\n  }\n}\nclass I extends k {\n  constructor() {\n    super(...arguments), this.type = 4;\n  }\n  j(t2) {\n    this.element.toggleAttribute(this.name, !!t2 && t2 !== E);\n  }\n}\nclass L extends k {\n  constructor(t2, i3, s2, e2, h3) {\n    super(t2, i3, s2, e2, h3), this.type = 5;\n  }\n  _$AI(t2, i3 = this) {\n    if ((t2 = S(this, t2, i3, 0) ?? E) === T) return;\n    const s2 = this._$AH, e2 = t2 === E && s2 !== E || t2.capture !== s2.capture || t2.once !== s2.once || t2.passive !== s2.passive, h3 = t2 !== E && (s2 === E || e2);\n    e2 && this.element.removeEventListener(this.name, this, s2), h3 && this.element.addEventListener(this.name, this, t2), this._$AH = t2;\n  }\n  handleEvent(t2) {\n    var _a3;\n    \"function\" == typeof this._$AH ? this._$AH.call(((_a3 = this.options) == null ? void 0 : _a3.host) ?? this.element, t2) : this._$AH.handleEvent(t2);\n  }\n}\nclass z {\n  constructor(t2, i3, s2) {\n    this.element = t2, this.type = 6, this._$AN = void 0, this._$AM = i3, this.options = s2;\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AI(t2) {\n    S(this, t2);\n  }\n}\nconst j = t$1.litHtmlPolyfillSupport;\nj == null ? void 0 : j(N, R), (t$1.litHtmlVersions ?? (t$1.litHtmlVersions = [])).push(\"3.2.1\");\nconst B = (t2, i3, s2) => {\n  const e2 = (s2 == null ? void 0 : s2.renderBefore) ?? i3;\n  let h3 = e2._$litPart$;\n  if (void 0 === h3) {\n    const t3 = (s2 == null ? void 0 : s2.renderBefore) ?? null;\n    e2._$litPart$ = h3 = new R(i3.insertBefore(l(), t3), t3, void 0, s2 ?? {});\n  }\n  return h3._$AI(t2), h3;\n};\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nlet r$1 = class r extends b {\n  constructor() {\n    super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;\n  }\n  createRenderRoot() {\n    var _a3;\n    const t2 = super.createRenderRoot();\n    return (_a3 = this.renderOptions).renderBefore ?? (_a3.renderBefore = t2.firstChild), t2;\n  }\n  update(t2) {\n    const s2 = this.render();\n    this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(t2), this._$Do = B(s2, this.renderRoot, this.renderOptions);\n  }\n  connectedCallback() {\n    var _a3;\n    super.connectedCallback(), (_a3 = this._$Do) == null ? void 0 : _a3.setConnected(true);\n  }\n  disconnectedCallback() {\n    var _a3;\n    super.disconnectedCallback(), (_a3 = this._$Do) == null ? void 0 : _a3.setConnected(false);\n  }\n  render() {\n    return T;\n  }\n};\nr$1._$litElement$ = true, r$1[\"finalized\"] = true, (_a2 = globalThis.litElementHydrateSupport) == null ? void 0 : _a2.call(globalThis, { LitElement: r$1 });\nconst i$3 = globalThis.litElementPolyfillSupport;\ni$3 == null ? void 0 : i$3({ LitElement: r$1 });\n(globalThis.litElementVersions ?? (globalThis.litElementVersions = [])).push(\"4.1.1\");\nconst ServerPaginationMixin = {\n  name: \"server-pagination-mixin\",\n  use: [],\n  attributes: {\n    limit: {\n      type: Number,\n      default: void 0\n    },\n    offset: {\n      type: Number,\n      default: void 0\n    },\n    pageCount: {\n      type: Number,\n      default: 1e3\n    },\n    pageNumber: {\n      type: Number,\n      default: 0\n    }\n  },\n  initialState: {\n    currentOffset: []\n  },\n  attached() {\n    if (this.limit) {\n      this.setCurrentOffset(this.resourceId, 0);\n      const parentDiv = this.initServerPaginationDiv(this.div);\n      this.renderCallbacks.push({\n        template: this.renderServerPaginationNav(this.resourceId, parentDiv),\n        parent: parentDiv\n      });\n    }\n  },\n  getCurrentOffset(resourceId, limit) {\n    return this.currentOffset[`${resourceId}#p${limit}`];\n  },\n  async setCurrentOffset(resourceId, offset) {\n    const index2 = `${resourceId}#p${this.limit}`;\n    this.currentOffset[index2] = this.offset = offset;\n    this.pageNumber = Number(this.offset / this.limit);\n    this.currentPage[resourceId] = this.pageNumber;\n    await this.fetchData(this.dataSrc);\n  },\n  async decreaseCurrentOffset(resourceId) {\n    const index2 = `${resourceId}#p${this.limit}`;\n    this.currentOffset[index2] = this.offset = this.offset - this.limit;\n    this.currentPage[index2] = this.offset / this.limit;\n    this.pageNumber = this.offset / this.limit;\n    this.updateNavButtons(resourceId, index2, -1);\n    await this.fetchData(this.dataSrc);\n  },\n  async increaseCurrentOffset(resourceId) {\n    const index2 = `${resourceId}#p${this.limit}`;\n    this.currentOffset[index2] = this.offset = this.offset + this.limit;\n    this.currentPage[index2] = this.offset / this.limit;\n    this.updateNavButtons(resourceId, index2, 1);\n    await this.fetchData(this.dataSrc);\n  },\n  updateNavButtons(resourceId, index2, variance) {\n    this.element.querySelector(\"[data-id='prev']\").disabled = this.currentOffset[index2] <= 0;\n    this.element.querySelector(\"[data-id='current']\").innerText = this.getCurrentServedPage(resourceId, variance);\n  },\n  getServerNavElement(div) {\n    if (div) {\n      const insertNode = div.parentNode || div;\n      return insertNode.querySelector(`nav[data-id=\"nav\"]`);\n    }\n    return null;\n  },\n  getCurrentServedPage(context2, variance) {\n    this.currentPage[context2] = Number(this.currentPage[context2]) + variance;\n    this.pageNumber = this.currentPage[context2];\n    return this.currentPage[context2];\n  },\n  /**\n   * Find nav element or create it if not existing\n   * @param div - insert nav next to this div\n   */\n  initServerPaginationDiv(div) {\n    let nav = this.getServerNavElement(div);\n    if (!nav) {\n      nav = document.createElement(\"nav\");\n      nav.setAttribute(\"data-id\", \"nav\");\n      const insertNode = div.parentNode || div;\n      insertNode.appendChild(nav);\n    }\n    return nav;\n  },\n  /**\n   * Create pagination template\n   */\n  renderServerPaginationNav(resourceId, div) {\n    if (this.limit) {\n      const currentOffset = this.getCurrentOffset(resourceId, this.limit);\n      const currentPageNumber = this.getCurrentServedPage(resourceId, 1);\n      const pageCount = Math.ceil(this.pageCount / this.limit);\n      B(\n        x`\n        <button\n          data-id=\"prev\"\n          ?disabled=${currentOffset <= 0}\n          @click=${() => this.decreaseCurrentOffset(resourceId)}\n        >←</button>\n        <span data-id=\"current\">\n          ${currentPageNumber}\n        </span>\n        <button\n          data-id=\"next\"\n          ?disabled=${currentOffset >= (pageCount - 1) * this.limit}\n          @click=${() => this.increaseCurrentOffset(resourceId)}\n        >→</button>\n        <span>\n        </span>\n      `,\n        div\n      );\n    }\n  }\n};\nconst StoreMixin = {\n  name: \"store-mixin\",\n  use: [AttributeBinderMixin, ContextMixin, ServerPaginationMixin],\n  attributes: {\n    noRender: {\n      type: String,\n      default: null,\n      callback: function(value) {\n        if (value === null) this.fetchData(this.dataSrc);\n      }\n    },\n    dataSrc: {\n      type: String,\n      default: null,\n      callback: async function(value) {\n        var _a3, _b;\n        const filteredOnServer = ((_a3 = this.element.attributes[\"filtered-on\"]) == null ? void 0 : _a3.value) === \"server\";\n        const limited = ((_b = this.element.attributes.limit) == null ? void 0 : _b.value) !== void 0;\n        if (this.noRender === null && !filteredOnServer && !limited) {\n          await this.fetchData(value);\n        } else if (this.noRender === null && !filteredOnServer) {\n          this.resourceId = value;\n        }\n      }\n    },\n    loaderId: {\n      type: String,\n      default: \"\"\n    },\n    nestedField: {\n      type: String,\n      default: null\n    },\n    arrayField: {\n      type: String,\n      default: null,\n      callback: function(value) {\n        if (value)\n          this.predicateName = store.getExpandedPredicate(\n            this.arrayField,\n            this.context\n          );\n      }\n    },\n    predicateName: {\n      type: String,\n      default: null\n    }\n  },\n  initialState: {\n    resources: [],\n    resourceId: null,\n    subscription: null\n  },\n  created() {\n    if (this.element.closest(\"[no-render]\")) this.noRender = \"\";\n  },\n  detached() {\n    if (this.subscription) PubSub.unsubscribe(this.subscription);\n  },\n  get resource() {\n    var _a3;\n    const id2 = this.resourceId;\n    const serverPagination = formatAttributesToServerPaginationOptions(\n      this.element.attributes\n    );\n    const serverSearch = mergeServerSearchOptions(\n      formatAttributesToServerSearchOptions(this.element.attributes),\n      (_a3 = this.getDynamicServerSearch) == null ? void 0 : _a3.call(this)\n      // from `filterMixin`\n    );\n    return id2 ? store.get(id2, serverPagination, serverSearch) : null;\n  },\n  get loader() {\n    return this.loaderId ? document.getElementById(this.loaderId) : null;\n  },\n  async fetchData(value) {\n    var _a3;\n    this.empty();\n    if (this.subscription) PubSub.unsubscribe(this.subscription);\n    if (!value || value === \"undefined\") return;\n    this.resourceId = value;\n    if (this.nestedField) {\n      const resource = await store.getData(value, this.context);\n      const nestedResource = resource ? await resource[this.nestedField] : null;\n      this.resourceId = nestedResource ? await nestedResource[\"@id\"] : null;\n      if (resource && !this.resourceId && !nestedResource) {\n        for (const property in await resource) {\n          console.log(`${property}: ${await resource[property]}`);\n        }\n        throw `Error: the key \"${this.nestedField}\" does not exist on the resource at id \"${await resource[\"@id\"]}\"`;\n      }\n    }\n    this.updateNavigateSubscription();\n    this.subscription = PubSub.subscribe(\n      this.resourceId,\n      this.updateDOM.bind(this)\n    );\n    const serverPagination = formatAttributesToServerPaginationOptions(\n      this.element.attributes\n    );\n    const dynamicServerSearch = (_a3 = this.getDynamicServerSearch) == null ? void 0 : _a3.call(this);\n    const serverSearch = mergeServerSearchOptions(\n      formatAttributesToServerSearchOptions(this.element.attributes),\n      dynamicServerSearch\n    );\n    const forceRefetch = !!dynamicServerSearch;\n    await store.getData(\n      this.resourceId,\n      this.context,\n      void 0,\n      void 0,\n      forceRefetch,\n      serverPagination,\n      serverSearch\n    );\n    this.updateDOM();\n  },\n  toggleLoaderHidden(toggle) {\n    if (this.loader) this.loader.toggleAttribute(\"hidden\", toggle);\n  },\n  updateNavigateSubscription() {\n  },\n  async updateDOM() {\n    this.toggleLoaderHidden(false);\n    this.empty();\n    await this.replaceAttributesData();\n    await this.populate();\n    setTimeout(\n      () => (\n        // Brings the dispatchEvent at the end of the queue\n        this.element.dispatchEvent(\n          new CustomEvent(\"populate\", {\n            detail: { resource: { \"@id\": this.dataSrc } }\n          })\n        )\n      )\n    );\n    this.toggleLoaderHidden(true);\n  },\n  empty() {\n  },\n  update() {\n    if (this.noRender === null) this.updateDOM();\n  }\n};\nconst SolidAcChecker = {\n  name: \"solid-ac-checker\",\n  use: [StoreMixin],\n  attributes: {\n    permission: {\n      type: String,\n      default: \"\"\n    },\n    noPermission: {\n      type: String,\n      default: \"\"\n    }\n  },\n  populate: trackRenderAsync(async function() {\n    if (!this.resource) return;\n    let displayElement;\n    const ContextParser3 = JSONLDContextParser.ContextParser;\n    const permissions = await this.resource.permissions;\n    if (this.permission) {\n      displayElement = permissions.some((p2) => {\n        return ContextParser3.expandTerm(p2, this.context, true) === this.permission;\n      });\n    } else if (this.noPermission) {\n      displayElement = permissions.every((p2) => {\n        return ContextParser3.expandTerm(p2, this.context, true) !== this.noPermission;\n      });\n    } else {\n      console.warn(\n        'solid-ac-checker: you should define at least one of \"permission\" or \"no-permission\" attribute.'\n      );\n      return;\n    }\n    if (displayElement) this.element.removeAttribute(\"hidden\");\n  }, \"SolidAcChecker:populate\"),\n  empty() {\n    this.element.setAttribute(\"hidden\", \"\");\n  }\n};\nSib.register(SolidAcChecker);\nconst NextMixin = {\n  name: \"next-mixin\",\n  use: [],\n  attributes: {\n    next: {\n      type: String,\n      default: \"\"\n    }\n  },\n  // Here \"even.target\" points to the content of the widgets of the children of solid-display\n  goToNext(resource) {\n    if (this.next) {\n      this.element.dispatchEvent(\n        new CustomEvent(\"requestNavigation\", {\n          bubbles: true,\n          detail: { route: this.next, resource }\n        })\n      );\n    }\n  }\n};\nvar supportCustomEvent = window.CustomEvent;\nif (!supportCustomEvent || typeof supportCustomEvent === \"object\") {\n  supportCustomEvent = function CustomEvent2(event, x2) {\n    x2 = x2 || {};\n    var ev = document.createEvent(\"CustomEvent\");\n    ev.initCustomEvent(event, !!x2.bubbles, !!x2.cancelable, x2.detail || null);\n    return ev;\n  };\n  supportCustomEvent.prototype = window.Event.prototype;\n}\nfunction safeDispatchEvent(target, event) {\n  var check = \"on\" + event.type.toLowerCase();\n  if (typeof target[check] === \"function\") {\n    target[check](event);\n  }\n  return target.dispatchEvent(event);\n}\nfunction createsStackingContext(el) {\n  while (el && el !== document.body) {\n    var s2 = window.getComputedStyle(el);\n    var invalid = function(k2, ok) {\n      return !(s2[k2] === void 0 || s2[k2] === ok);\n    };\n    if (s2.opacity < 1 || invalid(\"zIndex\", \"auto\") || invalid(\"transform\", \"none\") || invalid(\"mixBlendMode\", \"normal\") || invalid(\"filter\", \"none\") || invalid(\"perspective\", \"none\") || s2[\"isolation\"] === \"isolate\" || s2.position === \"fixed\" || s2.webkitOverflowScrolling === \"touch\") {\n      return true;\n    }\n    el = el.parentElement;\n  }\n  return false;\n}\nfunction findNearestDialog(el) {\n  while (el) {\n    if (el.localName === \"dialog\") {\n      return (\n        /** @type {HTMLDialogElement} */\n        el\n      );\n    }\n    if (el.parentElement) {\n      el = el.parentElement;\n    } else if (el.parentNode) {\n      el = el.parentNode.host;\n    } else {\n      el = null;\n    }\n  }\n  return null;\n}\nfunction safeBlur(el) {\n  while (el && el.shadowRoot && el.shadowRoot.activeElement) {\n    el = el.shadowRoot.activeElement;\n  }\n  if (el && el.blur && el !== document.body) {\n    el.blur();\n  }\n}\nfunction inNodeList(nodeList, node) {\n  for (var i3 = 0; i3 < nodeList.length; ++i3) {\n    if (nodeList[i3] === node) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction isFormMethodDialog(el) {\n  if (!el || !el.hasAttribute(\"method\")) {\n    return false;\n  }\n  return el.getAttribute(\"method\").toLowerCase() === \"dialog\";\n}\nfunction findFocusableElementWithin(hostElement) {\n  var opts = [\"button\", \"input\", \"keygen\", \"select\", \"textarea\"];\n  var query = opts.map(function(el) {\n    return el + \":not([disabled])\";\n  });\n  query.push('[tabindex]:not([disabled]):not([tabindex=\"\"])');\n  var target = hostElement.querySelector(query.join(\", \"));\n  if (!target && \"attachShadow\" in Element.prototype) {\n    var elems = hostElement.querySelectorAll(\"*\");\n    for (var i3 = 0; i3 < elems.length; i3++) {\n      if (elems[i3].tagName && elems[i3].shadowRoot) {\n        target = findFocusableElementWithin(elems[i3].shadowRoot);\n        if (target) {\n          break;\n        }\n      }\n    }\n  }\n  return target;\n}\nfunction isConnected(element) {\n  return element.isConnected || document.body.contains(element);\n}\nfunction findFormSubmitter(event) {\n  if (event.submitter) {\n    return event.submitter;\n  }\n  var form = event.target;\n  if (!(form instanceof HTMLFormElement)) {\n    return null;\n  }\n  var submitter = dialogPolyfill.formSubmitter;\n  if (!submitter) {\n    var target = event.target;\n    var root2 = \"getRootNode\" in target && target.getRootNode() || document;\n    submitter = root2.activeElement;\n  }\n  if (!submitter || submitter.form !== form) {\n    return null;\n  }\n  return submitter;\n}\nfunction maybeHandleSubmit(event) {\n  if (event.defaultPrevented) {\n    return;\n  }\n  var form = (\n    /** @type {!HTMLFormElement} */\n    event.target\n  );\n  var value = dialogPolyfill.imagemapUseValue;\n  var submitter = findFormSubmitter(event);\n  if (value === null && submitter) {\n    value = submitter.value;\n  }\n  var dialog = findNearestDialog(form);\n  if (!dialog) {\n    return;\n  }\n  var formmethod = submitter && submitter.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n  if (formmethod !== \"dialog\") {\n    return;\n  }\n  event.preventDefault();\n  if (value != null) {\n    dialog.close(value);\n  } else {\n    dialog.close();\n  }\n}\nfunction dialogPolyfillInfo(dialog) {\n  this.dialog_ = dialog;\n  this.replacedStyleTop_ = false;\n  this.openAsModal_ = false;\n  if (!dialog.hasAttribute(\"role\")) {\n    dialog.setAttribute(\"role\", \"dialog\");\n  }\n  dialog.show = this.show.bind(this);\n  dialog.showModal = this.showModal.bind(this);\n  dialog.close = this.close.bind(this);\n  dialog.addEventListener(\"submit\", maybeHandleSubmit, false);\n  if (!(\"returnValue\" in dialog)) {\n    dialog.returnValue = \"\";\n  }\n  if (\"MutationObserver\" in window) {\n    var mo = new MutationObserver(this.maybeHideModal.bind(this));\n    mo.observe(dialog, { attributes: true, attributeFilter: [\"open\"] });\n  } else {\n    var removed = false;\n    var cb = (function() {\n      removed ? this.downgradeModal() : this.maybeHideModal();\n      removed = false;\n    }).bind(this);\n    var timeout;\n    var delayModel = function(ev) {\n      if (ev.target !== dialog) {\n        return;\n      }\n      var cand = \"DOMNodeRemoved\";\n      removed |= ev.type.substr(0, cand.length) === cand;\n      window.clearTimeout(timeout);\n      timeout = window.setTimeout(cb, 0);\n    };\n    [\"DOMAttrModified\", \"DOMNodeRemoved\", \"DOMNodeRemovedFromDocument\"].forEach(function(name) {\n      dialog.addEventListener(name, delayModel);\n    });\n  }\n  Object.defineProperty(dialog, \"open\", {\n    set: this.setOpen.bind(this),\n    get: dialog.hasAttribute.bind(dialog, \"open\")\n  });\n  this.backdrop_ = document.createElement(\"div\");\n  this.backdrop_.className = \"backdrop\";\n  this.backdrop_.addEventListener(\"mouseup\", this.backdropMouseEvent_.bind(this));\n  this.backdrop_.addEventListener(\"mousedown\", this.backdropMouseEvent_.bind(this));\n  this.backdrop_.addEventListener(\"click\", this.backdropMouseEvent_.bind(this));\n}\ndialogPolyfillInfo.prototype = /** @type {HTMLDialogElement.prototype} */\n{\n  get dialog() {\n    return this.dialog_;\n  },\n  /**\n   * Maybe remove this dialog from the modal top layer. This is called when\n   * a modal dialog may no longer be tenable, e.g., when the dialog is no\n   * longer open or is no longer part of the DOM.\n   */\n  maybeHideModal: function() {\n    if (this.dialog_.hasAttribute(\"open\") && isConnected(this.dialog_)) {\n      return;\n    }\n    this.downgradeModal();\n  },\n  /**\n   * Remove this dialog from the modal top layer, leaving it as a non-modal.\n   */\n  downgradeModal: function() {\n    if (!this.openAsModal_) {\n      return;\n    }\n    this.openAsModal_ = false;\n    this.dialog_.style.zIndex = \"\";\n    if (this.replacedStyleTop_) {\n      this.dialog_.style.top = \"\";\n      this.replacedStyleTop_ = false;\n    }\n    this.backdrop_.parentNode && this.backdrop_.parentNode.removeChild(this.backdrop_);\n    dialogPolyfill.dm.removeDialog(this);\n  },\n  /**\n   * @param {boolean} value whether to open or close this dialog\n   */\n  setOpen: function(value) {\n    if (value) {\n      this.dialog_.hasAttribute(\"open\") || this.dialog_.setAttribute(\"open\", \"\");\n    } else {\n      this.dialog_.removeAttribute(\"open\");\n      this.maybeHideModal();\n    }\n  },\n  /**\n   * Handles mouse events ('mouseup', 'mousedown', 'click') on the fake .backdrop element, redirecting them as if\n   * they were on the dialog itself.\n   *\n   * @param {!Event} e to redirect\n   */\n  backdropMouseEvent_: function(e2) {\n    if (!this.dialog_.hasAttribute(\"tabindex\")) {\n      var fake = document.createElement(\"div\");\n      this.dialog_.insertBefore(fake, this.dialog_.firstChild);\n      fake.tabIndex = -1;\n      fake.focus();\n      this.dialog_.removeChild(fake);\n    } else {\n      this.dialog_.focus();\n    }\n    var redirectedEvent = document.createEvent(\"MouseEvents\");\n    redirectedEvent.initMouseEvent(\n      e2.type,\n      e2.bubbles,\n      e2.cancelable,\n      window,\n      e2.detail,\n      e2.screenX,\n      e2.screenY,\n      e2.clientX,\n      e2.clientY,\n      e2.ctrlKey,\n      e2.altKey,\n      e2.shiftKey,\n      e2.metaKey,\n      e2.button,\n      e2.relatedTarget\n    );\n    this.dialog_.dispatchEvent(redirectedEvent);\n    e2.stopPropagation();\n  },\n  /**\n   * Focuses on the first focusable element within the dialog. This will always blur the current\n   * focus, even if nothing within the dialog is found.\n   */\n  focus_: function() {\n    var target = this.dialog_.querySelector(\"[autofocus]:not([disabled])\");\n    if (!target && this.dialog_.tabIndex >= 0) {\n      target = this.dialog_;\n    }\n    if (!target) {\n      target = findFocusableElementWithin(this.dialog_);\n    }\n    safeBlur(document.activeElement);\n    target && target.focus();\n  },\n  /**\n   * Sets the zIndex for the backdrop and dialog.\n   *\n   * @param {number} dialogZ\n   * @param {number} backdropZ\n   */\n  updateZIndex: function(dialogZ, backdropZ) {\n    if (dialogZ < backdropZ) {\n      throw new Error(\"dialogZ should never be < backdropZ\");\n    }\n    this.dialog_.style.zIndex = dialogZ;\n    this.backdrop_.style.zIndex = backdropZ;\n  },\n  /**\n   * Shows the dialog. If the dialog is already open, this does nothing.\n   */\n  show: function() {\n    if (!this.dialog_.open) {\n      this.setOpen(true);\n      this.focus_();\n    }\n  },\n  /**\n   * Show this dialog modally.\n   */\n  showModal: function() {\n    if (this.dialog_.hasAttribute(\"open\")) {\n      throw new Error(\"Failed to execute 'showModal' on dialog: The element is already open, and therefore cannot be opened modally.\");\n    }\n    if (!isConnected(this.dialog_)) {\n      throw new Error(\"Failed to execute 'showModal' on dialog: The element is not in a Document.\");\n    }\n    if (!dialogPolyfill.dm.pushDialog(this)) {\n      throw new Error(\"Failed to execute 'showModal' on dialog: There are too many open modal dialogs.\");\n    }\n    if (createsStackingContext(this.dialog_.parentElement)) {\n      console.warn(\"A dialog is being shown inside a stacking context. This may cause it to be unusable. For more information, see this link: https://github.com/GoogleChrome/dialog-polyfill/#stacking-context\");\n    }\n    this.setOpen(true);\n    this.openAsModal_ = true;\n    if (dialogPolyfill.needsCentering(this.dialog_)) {\n      dialogPolyfill.reposition(this.dialog_);\n      this.replacedStyleTop_ = true;\n    } else {\n      this.replacedStyleTop_ = false;\n    }\n    this.dialog_.parentNode.insertBefore(this.backdrop_, this.dialog_.nextSibling);\n    this.focus_();\n  },\n  /**\n   * Closes this HTMLDialogElement. This is optional vs clearing the open\n   * attribute, however this fires a 'close' event.\n   *\n   * @param {string=} opt_returnValue to use as the returnValue\n   */\n  close: function(opt_returnValue) {\n    if (!this.dialog_.hasAttribute(\"open\")) {\n      throw new Error(\"Failed to execute 'close' on dialog: The element does not have an 'open' attribute, and therefore cannot be closed.\");\n    }\n    this.setOpen(false);\n    if (opt_returnValue !== void 0) {\n      this.dialog_.returnValue = opt_returnValue;\n    }\n    var closeEvent = new supportCustomEvent(\"close\", {\n      bubbles: false,\n      cancelable: false\n    });\n    safeDispatchEvent(this.dialog_, closeEvent);\n  }\n};\nvar dialogPolyfill = {};\ndialogPolyfill.reposition = function(element) {\n  var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;\n  var topValue = scrollTop + (window.innerHeight - element.offsetHeight) / 2;\n  element.style.top = Math.max(scrollTop, topValue) + \"px\";\n};\ndialogPolyfill.isInlinePositionSetByStylesheet = function(element) {\n  for (var i3 = 0; i3 < document.styleSheets.length; ++i3) {\n    var styleSheet = document.styleSheets[i3];\n    var cssRules = null;\n    try {\n      cssRules = styleSheet.cssRules;\n    } catch (e2) {\n    }\n    if (!cssRules) {\n      continue;\n    }\n    for (var j2 = 0; j2 < cssRules.length; ++j2) {\n      var rule = cssRules[j2];\n      var selectedNodes = null;\n      try {\n        selectedNodes = document.querySelectorAll(rule.selectorText);\n      } catch (e2) {\n      }\n      if (!selectedNodes || !inNodeList(selectedNodes, element)) {\n        continue;\n      }\n      var cssTop = rule.style.getPropertyValue(\"top\");\n      var cssBottom = rule.style.getPropertyValue(\"bottom\");\n      if (cssTop && cssTop !== \"auto\" || cssBottom && cssBottom !== \"auto\") {\n        return true;\n      }\n    }\n  }\n  return false;\n};\ndialogPolyfill.needsCentering = function(dialog) {\n  var computedStyle = window.getComputedStyle(dialog);\n  if (computedStyle.position !== \"absolute\") {\n    return false;\n  }\n  if (dialog.style.top !== \"auto\" && dialog.style.top !== \"\" || dialog.style.bottom !== \"auto\" && dialog.style.bottom !== \"\") {\n    return false;\n  }\n  return !dialogPolyfill.isInlinePositionSetByStylesheet(dialog);\n};\ndialogPolyfill.forceRegisterDialog = function(element) {\n  if (window.HTMLDialogElement || element.showModal) {\n    console.warn(\"This browser already supports <dialog>, the polyfill may not work correctly\", element);\n  }\n  if (element.localName !== \"dialog\") {\n    throw new Error(\"Failed to register dialog: The element is not a dialog.\");\n  }\n  new dialogPolyfillInfo(\n    /** @type {!HTMLDialogElement} */\n    element\n  );\n};\ndialogPolyfill.registerDialog = function(element) {\n  if (!element.showModal) {\n    dialogPolyfill.forceRegisterDialog(element);\n  }\n};\ndialogPolyfill.DialogManager = function() {\n  this.pendingDialogStack = [];\n  var checkDOM = this.checkDOM_.bind(this);\n  this.overlay = document.createElement(\"div\");\n  this.overlay.className = \"_dialog_overlay\";\n  this.overlay.addEventListener(\"click\", (function(e2) {\n    this.forwardTab_ = void 0;\n    e2.stopPropagation();\n    checkDOM([]);\n  }).bind(this));\n  this.handleKey_ = this.handleKey_.bind(this);\n  this.handleFocus_ = this.handleFocus_.bind(this);\n  this.zIndexLow_ = 1e5;\n  this.zIndexHigh_ = 1e5 + 150;\n  this.forwardTab_ = void 0;\n  if (\"MutationObserver\" in window) {\n    this.mo_ = new MutationObserver(function(records) {\n      var removed = [];\n      records.forEach(function(rec) {\n        for (var i3 = 0, c2; c2 = rec.removedNodes[i3]; ++i3) {\n          if (!(c2 instanceof Element)) {\n            continue;\n          } else if (c2.localName === \"dialog\") {\n            removed.push(c2);\n          }\n          removed = removed.concat(c2.querySelectorAll(\"dialog\"));\n        }\n      });\n      removed.length && checkDOM(removed);\n    });\n  }\n};\ndialogPolyfill.DialogManager.prototype.blockDocument = function() {\n  document.documentElement.addEventListener(\"focus\", this.handleFocus_, true);\n  document.addEventListener(\"keydown\", this.handleKey_);\n  this.mo_ && this.mo_.observe(document, { childList: true, subtree: true });\n};\ndialogPolyfill.DialogManager.prototype.unblockDocument = function() {\n  document.documentElement.removeEventListener(\"focus\", this.handleFocus_, true);\n  document.removeEventListener(\"keydown\", this.handleKey_);\n  this.mo_ && this.mo_.disconnect();\n};\ndialogPolyfill.DialogManager.prototype.updateStacking = function() {\n  var zIndex = this.zIndexHigh_;\n  for (var i3 = 0, dpi; dpi = this.pendingDialogStack[i3]; ++i3) {\n    dpi.updateZIndex(--zIndex, --zIndex);\n    if (i3 === 0) {\n      this.overlay.style.zIndex = --zIndex;\n    }\n  }\n  var last = this.pendingDialogStack[0];\n  if (last) {\n    var p2 = last.dialog.parentNode || document.body;\n    p2.appendChild(this.overlay);\n  } else if (this.overlay.parentNode) {\n    this.overlay.parentNode.removeChild(this.overlay);\n  }\n};\ndialogPolyfill.DialogManager.prototype.containedByTopDialog_ = function(candidate) {\n  while (candidate = findNearestDialog(candidate)) {\n    for (var i3 = 0, dpi; dpi = this.pendingDialogStack[i3]; ++i3) {\n      if (dpi.dialog === candidate) {\n        return i3 === 0;\n      }\n    }\n    candidate = candidate.parentElement;\n  }\n  return false;\n};\ndialogPolyfill.DialogManager.prototype.handleFocus_ = function(event) {\n  var target = event.composedPath ? event.composedPath()[0] : event.target;\n  if (this.containedByTopDialog_(target)) {\n    return;\n  }\n  if (document.activeElement === document.documentElement) {\n    return;\n  }\n  event.preventDefault();\n  event.stopPropagation();\n  safeBlur(\n    /** @type {Element} */\n    target\n  );\n  if (this.forwardTab_ === void 0) {\n    return;\n  }\n  var dpi = this.pendingDialogStack[0];\n  var dialog = dpi.dialog;\n  var position = dialog.compareDocumentPosition(target);\n  if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n    if (this.forwardTab_) {\n      dpi.focus_();\n    } else if (target !== document.documentElement) {\n      document.documentElement.focus();\n    }\n  }\n  return false;\n};\ndialogPolyfill.DialogManager.prototype.handleKey_ = function(event) {\n  this.forwardTab_ = void 0;\n  if (event.keyCode === 27) {\n    event.preventDefault();\n    event.stopPropagation();\n    var cancelEvent = new supportCustomEvent(\"cancel\", {\n      bubbles: false,\n      cancelable: true\n    });\n    var dpi = this.pendingDialogStack[0];\n    if (dpi && safeDispatchEvent(dpi.dialog, cancelEvent)) {\n      dpi.dialog.close();\n    }\n  } else if (event.keyCode === 9) {\n    this.forwardTab_ = !event.shiftKey;\n  }\n};\ndialogPolyfill.DialogManager.prototype.checkDOM_ = function(removed) {\n  var clone = this.pendingDialogStack.slice();\n  clone.forEach(function(dpi) {\n    if (removed.indexOf(dpi.dialog) !== -1) {\n      dpi.downgradeModal();\n    } else {\n      dpi.maybeHideModal();\n    }\n  });\n};\ndialogPolyfill.DialogManager.prototype.pushDialog = function(dpi) {\n  var allowed = (this.zIndexHigh_ - this.zIndexLow_) / 2 - 1;\n  if (this.pendingDialogStack.length >= allowed) {\n    return false;\n  }\n  if (this.pendingDialogStack.unshift(dpi) === 1) {\n    this.blockDocument();\n  }\n  this.updateStacking();\n  return true;\n};\ndialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) {\n  var index2 = this.pendingDialogStack.indexOf(dpi);\n  if (index2 === -1) {\n    return;\n  }\n  this.pendingDialogStack.splice(index2, 1);\n  if (this.pendingDialogStack.length === 0) {\n    this.unblockDocument();\n  }\n  this.updateStacking();\n};\ndialogPolyfill.dm = new dialogPolyfill.DialogManager();\ndialogPolyfill.formSubmitter = null;\ndialogPolyfill.imagemapUseValue = null;\nif (window.HTMLDialogElement === void 0) {\n  var testForm = document.createElement(\"form\");\n  testForm.setAttribute(\"method\", \"dialog\");\n  if (testForm.method !== \"dialog\") {\n    var methodDescriptor = Object.getOwnPropertyDescriptor(HTMLFormElement.prototype, \"method\");\n    if (methodDescriptor) {\n      var realGet = methodDescriptor.get;\n      methodDescriptor.get = function() {\n        if (isFormMethodDialog(this)) {\n          return \"dialog\";\n        }\n        return realGet.call(this);\n      };\n      var realSet = methodDescriptor.set;\n      methodDescriptor.set = function(v2) {\n        if (typeof v2 === \"string\" && v2.toLowerCase() === \"dialog\") {\n          return this.setAttribute(\"method\", v2);\n        }\n        return realSet.call(this, v2);\n      };\n      Object.defineProperty(HTMLFormElement.prototype, \"method\", methodDescriptor);\n    }\n  }\n  document.addEventListener(\"click\", function(ev) {\n    dialogPolyfill.formSubmitter = null;\n    dialogPolyfill.imagemapUseValue = null;\n    if (ev.defaultPrevented) {\n      return;\n    }\n    var target = (\n      /** @type {Element} */\n      ev.target\n    );\n    if (\"composedPath\" in ev) {\n      var path = ev.composedPath();\n      target = path.shift() || target;\n    }\n    if (!target || !isFormMethodDialog(target.form)) {\n      return;\n    }\n    var valid = target.type === \"submit\" && [\"button\", \"input\"].indexOf(target.localName) > -1;\n    if (!valid) {\n      if (!(target.localName === \"input\" && target.type === \"image\")) {\n        return;\n      }\n      dialogPolyfill.imagemapUseValue = ev.offsetX + \",\" + ev.offsetY;\n    }\n    var dialog = findNearestDialog(target);\n    if (!dialog) {\n      return;\n    }\n    dialogPolyfill.formSubmitter = target;\n  }, false);\n  document.addEventListener(\"submit\", function(ev) {\n    var form = ev.target;\n    var dialog = findNearestDialog(form);\n    if (dialog) {\n      return;\n    }\n    var submitter = findFormSubmitter(ev);\n    var formmethod = submitter && submitter.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n    if (formmethod === \"dialog\") {\n      ev.preventDefault();\n    }\n  });\n  var nativeFormSubmit = HTMLFormElement.prototype.submit;\n  var replacementFormSubmit = function() {\n    if (!isFormMethodDialog(this)) {\n      return nativeFormSubmit.call(this);\n    }\n    var dialog = findNearestDialog(this);\n    dialog && dialog.close();\n  };\n  HTMLFormElement.prototype.submit = replacementFormSubmit;\n}\n/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst o$2 = (o2) => o2 ?? E;\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t = { ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6 }, e$1 = (t2) => (...e2) => ({ _$litDirective$: t2, values: e2 });\nlet i$2 = class i {\n  constructor(t2) {\n  }\n  get _$AU() {\n    return this._$AM._$AU;\n  }\n  _$AT(t2, e2, i3) {\n    this._$Ct = t2, this._$AM = e2, this._$Ci = i3;\n  }\n  _$AS(t2, e2) {\n    return this.update(t2, e2);\n  }\n  update(t2, e2) {\n    return this.render(...e2);\n  }\n};\nconst prevCache = /* @__PURE__ */ new WeakMap();\nclass SpreadDirective extends i$2 {\n  constructor(partInfo) {\n    super(partInfo);\n    __publicField(this, \"spreadData\");\n    this.spreadData = null;\n  }\n  render(spreadData) {\n    this.spreadData = spreadData;\n    return T;\n  }\n  update(part, [spreadData]) {\n    const prevData = prevCache.get(part);\n    if (prevData === spreadData) {\n      return T;\n    }\n    let element;\n    prevCache.set(part, spreadData);\n    if (part.type === t.ATTRIBUTE || part.type === t.PROPERTY) {\n      element = part.element;\n    } else {\n      console.warn(\n        \"Unsupported part type or missing element, skipping update.\"\n      );\n      return T;\n    }\n    if (spreadData) {\n      for (const key in spreadData) {\n        const value = spreadData[key];\n        if (value === T) continue;\n        const prefix = key[0];\n        if (prefix === \"@\") {\n          const prevHandler = prevData == null ? void 0 : prevData[key];\n          if (!prevHandler || prevHandler !== value) {\n            const name = key.slice(1);\n            if (prevHandler) element.removeEventListener(name, prevHandler);\n            element.addEventListener(name, value);\n          }\n          continue;\n        }\n        if (prefix === \".\") {\n          if (!prevData || prevData[key] !== value) {\n            element[key.slice(1)] = value;\n          }\n          continue;\n        }\n        if (prefix === \"?\") {\n          const attrName = key.slice(1);\n          if (!prevData || prevData[key] !== value) {\n            if (value) {\n              element.setAttribute(attrName, \"\");\n            } else {\n              element.removeAttribute(attrName);\n            }\n          }\n          continue;\n        }\n        if (!prevData || prevData[key] !== value) {\n          if (value != null) {\n            element.setAttribute(key, String(value));\n          } else {\n            element.removeAttribute(key);\n          }\n        }\n      }\n    }\n    if (prevData) {\n      for (const key in prevData) {\n        if (!spreadData || !(key in spreadData)) {\n          const prefix = key[0];\n          if (prefix === \"@\") {\n            element.removeEventListener(key.slice(1), prevData[key]);\n            continue;\n          }\n          if (prefix === \".\") {\n            element[key.slice(1)] = void 0;\n            continue;\n          }\n          if (prefix === \"?\") {\n            element.removeAttribute(key.slice(1));\n            continue;\n          }\n          element.removeAttribute(key);\n        }\n      }\n    }\n    return T;\n  }\n}\nconst spread = e$1(SpreadDirective);\nconst templateStringsCache = /* @__PURE__ */ new WeakMap();\nfunction filterOutNeedlessValues(arr, needlessValues) {\n  return arr.filter((_2, i3) => !needlessValues.some((nv) => nv.index === i3));\n}\nfunction preHTML(strings, ...values) {\n  let cachedStrings = templateStringsCache.get(strings);\n  if (cachedStrings) {\n    for (const cached of cachedStrings) {\n      const { needlessValues: needlessValues2 } = cached;\n      const isSame = needlessValues2.every((nv) => values[nv.index] === nv.value);\n      if (isSame) {\n        return x(\n          cached.strings,\n          ...filterOutNeedlessValues(values, needlessValues2)\n        );\n      }\n    }\n  }\n  const needlessValues = [];\n  const newStrings = [];\n  for (let i3 = 0; i3 < strings.length; i3++) {\n    let str = strings[i3];\n    while (str.endsWith(\"<\") || str.length >= 2 && str.endsWith(\"</\")) {\n      needlessValues.push({ value: values[i3], index: i3 });\n      str += values[i3] + strings[++i3];\n    }\n    newStrings.push(str);\n  }\n  const finalStrings = Object.assign([...newStrings], { raw: strings.raw });\n  if (!cachedStrings) {\n    cachedStrings = [];\n    templateStringsCache.set(strings, cachedStrings);\n  }\n  cachedStrings.push({\n    strings: finalStrings,\n    needlessValues\n  });\n  return x(\n    finalStrings,\n    ...filterOutNeedlessValues(values, needlessValues)\n  );\n}\nconst TranslationMixin = {\n  name: \"translation-mixin\",\n  use: [],\n  initialState: {\n    translationData: {}\n  },\n  created() {\n    this.getLang();\n  },\n  /**\n   * Returns the translation module\n   * @param langCode - string: language needed in 2 char\n   * @returns - object: {key: translation}\n   */\n  async getTranslationModule(langCode) {\n    const translationsModules = {\n      // define modules in a static way, snowpack does not support dynamic strings here\n      en: () => import(\"./en-D7xQ8_VL.js\"),\n      fr: () => import(\"./fr-ClQZ5-J-.js\")\n    };\n    if (!translationsModules[langCode]) {\n      console.warn(\n        `${langCode}.json translation file may not exist, English is setted by default`\n      );\n      langCode = \"en\";\n    }\n    const module2 = await translationsModules[langCode]();\n    return module2.default;\n  },\n  /**\n   * Loads the right translation file and reload the component\n   */\n  getLang() {\n    const languageStorage = store._getLanguage();\n    if (languageStorage) {\n      if (window.fetchTranslationPromise === void 0) {\n        window.fetchTranslationPromise = this.getTranslationModule(languageStorage);\n      }\n      window.fetchTranslationPromise.then((res) => {\n        if (res) {\n          this.translationData = res;\n          this.update();\n        }\n      });\n    }\n  },\n  /**\n   * Returns translation for a given key\n   * @param tradKey - string: key\n   * @returns - string: translation\n   */\n  t(tradKey) {\n    return this.translationData[tradKey] || \"\";\n  }\n};\nconst ValidationMixin = {\n  name: \"validation-mixin\",\n  use: [TranslationMixin],\n  attributes: {\n    confirmationMessage: {\n      type: String,\n      default: null\n    },\n    confirmationType: {\n      type: String,\n      default: null\n    },\n    confirmationSubmitText: {\n      type: String,\n      default: null\n    },\n    confirmationCancelText: {\n      type: String,\n      default: null\n    },\n    confirmationSubmitClass: {\n      type: String,\n      default: void 0\n    },\n    confirmationCancelClass: {\n      type: String,\n      default: void 0\n    },\n    confirmationWidget: {\n      type: String,\n      default: void 0\n    }\n  },\n  created() {\n    this.dialogID = uniqID();\n  },\n  showModal() {\n    const dialog = document.getElementById(this.dialogID);\n    dialogPolyfill.registerDialog(dialog);\n    return dialog.showModal();\n  },\n  performAction() {\n    if (this.element.hasAttribute(\"confirmation-message\") && !this.confirmationType)\n      console.warn(\"confirmation-type attribute is missing.\");\n    if (!this.confirmationType || this.confirmationType === \"confirm\" && confirm(this.confirmationMessage || this.t(\"validation.message\")))\n      this.validateModal();\n    if (this.confirmationType === \"dialog\") {\n      this.showModal();\n    }\n  },\n  getModalDialog() {\n    if (this.confirmationType !== \"dialog\") return \"\";\n    const quitDialog = () => {\n      const dialog = document.getElementById(this.dialogID);\n      if (dialog == null) return;\n      dialog.close();\n    };\n    const confirmChoice = () => {\n      this.validateModal();\n      quitDialog();\n    };\n    return x`\n      <dialog id=\"${this.dialogID}\">\n      ${this.confirmationWidget ? preHTML`<${this.confirmationWidget} value=${this.resourceId}></${this.confirmationWidget}>` : x`<p>${this.confirmationMessage || this.t(\"validation.message\")}</p>`}\n        <div>\n          <button\n            @click=${confirmChoice} \n            class=${o$2(this.confirmationSubmitClass)}\n          >\n          ${this.confirmationSubmitText || this.t(\"validation.submit-text\")}\n          </button>\n          <button\n            @click=${quitDialog}\n            class=${o$2(this.confirmationCancelClass)}\n          >\n          ${this.confirmationCancelText || this.t(\"validation.cancel-text\")}\n          </button>\n        </div>\n      </dialog>\n    `;\n  }\n};\nconst SolidDelete = {\n  name: \"solid-delete\",\n  use: [NextMixin, ValidationMixin, AttributeBinderMixin, ContextMixin],\n  attributes: {\n    dataSrc: {\n      type: String,\n      default: null,\n      callback: function() {\n        this.resourceId = this.dataSrc;\n      }\n    },\n    dataLabel: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    }\n  },\n  initialState: {\n    renderPlanned: false\n  },\n  created() {\n    this.planRender();\n  },\n  planRender() {\n    if (!this.renderPlanned) {\n      this.renderPlanned = true;\n      setTimeout(() => {\n        this.render();\n        this.renderPlanned = false;\n      });\n    }\n  },\n  delete(e2) {\n    e2.stopPropagation();\n    if (!this.dataSrc) return;\n    this.performAction();\n  },\n  deletion() {\n    return store.delete(this.dataSrc, this.context).then((response) => {\n      if (!response.ok) return;\n      this.goToNext(null);\n      const eventData = {\n        detail: { resource: { \"@id\": this.dataSrc } },\n        bubbles: true\n      };\n      this.element.dispatchEvent(new CustomEvent(\"save\", eventData));\n      this.element.dispatchEvent(new CustomEvent(\"resourceDeleted\", eventData));\n    });\n  },\n  validateModal() {\n    return this.deletion();\n  },\n  update() {\n    this.render();\n  },\n  render: trackRenderAsync(async function() {\n    await this.replaceAttributesData(false);\n    const button = x`<button @click=${this.delete.bind(this)}>${this.dataLabel || this.t(\"solid-delete.button\")}</button>${this.getModalDialog()}`;\n    B(button, this.element);\n  }, \"SolidDelete:render\")\n};\nSib.register(SolidDelete);\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass e extends i$2 {\n  constructor(i3) {\n    if (super(i3), this.it = E, i3.type !== t.CHILD) throw Error(this.constructor.directiveName + \"() can only be used in child bindings\");\n  }\n  render(r3) {\n    if (r3 === E || null == r3) return this._t = void 0, this.it = r3;\n    if (r3 === T) return r3;\n    if (\"string\" != typeof r3) throw Error(this.constructor.directiveName + \"() called with a non-string value\");\n    if (r3 === this.it) return this._t;\n    this.it = r3;\n    const s2 = [r3];\n    return s2.raw = s2, this._t = { _$litType$: this.constructor.resultType, strings: s2, values: [] };\n  }\n}\ne.directiveName = \"unsafeHTML\", e.resultType = 1;\nconst o$1 = e$1(e);\nconst CounterMixin = {\n  name: \"counter-mixin\",\n  use: [],\n  attributes: {\n    counterTemplate: {\n      type: String,\n      default: null\n    }\n  },\n  initialState: {\n    counter: null,\n    parentCounterDiv: null\n  },\n  attached() {\n    this.listPostProcessors.attach(\n      this.countResources.bind(this),\n      \"CounterMixin:countResources\"\n    );\n  },\n  async countResources(resources, listPostProcessors, div, context2) {\n    if (this.counterTemplate) {\n      this.initParentCounterDiv(div);\n      this.renderCallbacks.push({\n        // add counter template to render callback\n        template: await this.renderCounter(resources.length),\n        parent: this.parentCounterDiv\n      });\n    }\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  },\n  /**\n   * Create the parent div of the counter in the component.\n   * @param div: parent div where to insert the counter div\n   */\n  initParentCounterDiv(div) {\n    if (this.parentCounterDiv) return;\n    this.parentCounterDiv = document.createElement(\"div\");\n    this.element.insertBefore(this.parentCounterDiv, div);\n  },\n  async renderCounter(resourceNumber) {\n    let htmlCounter;\n    try {\n      htmlCounter = await evalTemplateString(this.counterTemplate, {\n        counter: resourceNumber\n      });\n    } catch (e2) {\n      console.error(new Error(\"error in counter-template\"), e2);\n      throw e2;\n    }\n    return x`${o$1(htmlCounter)}`;\n  }\n};\nconst FederationMixin = {\n  name: \"federation-mixin\",\n  use: [],\n  initialState: {\n    containerFetched: null\n  },\n  attached() {\n    this.listPostProcessors.attach(\n      this.fetchSources.bind(this),\n      \"FederationMixin:fetchSources\"\n    );\n  },\n  async fetchSources(resources, listPostProcessors, div, context2) {\n    this.containerFetched = [];\n    let newResources = await this.getResources(resources);\n    newResources = [...new Set(newResources)];\n    this.resources = [...newResources];\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(newResources, listPostProcessors, div, context2);\n  },\n  async getResources(resources) {\n    if (!resources && this.resources) resources = this.resources;\n    if (!resources) return [];\n    const newResources = [];\n    const getChildResources = async (res) => {\n      var _a3;\n      if (!res) return;\n      if ((_a3 = res.isContainer) == null ? void 0 : _a3.call(res)) {\n        const containerId = res[\"@id\"];\n        if (!this.containerFetched.includes(containerId)) {\n          this.containerFetched.push(containerId);\n          const resourcesFetched = await this.fetchSource(containerId);\n          if (resourcesFetched)\n            newResources.push(...await this.getResources(resourcesFetched));\n        }\n      } else {\n        newResources.push(res);\n      }\n    };\n    if (!Array.isArray(resources)) resources = [resources];\n    await Promise.all(resources.map((res) => getChildResources(res)));\n    return newResources;\n  },\n  async fetchSource(containerId) {\n    const cachedContainer = store.get(containerId);\n    if (!cachedContainer || cachedContainer[\"ldp:contains\"] === null) {\n      store.clearCache(containerId);\n    }\n    const container = await store.getData(containerId, this.context);\n    return container ? container[\"ldp:contains\"] : null;\n  }\n};\nconst isSet$1 = (field, fields) => {\n  if (!fields) return false;\n  const foundSets = fields.match(getSetRegexp(field));\n  return foundSets ? foundSets.length > 0 : false;\n};\nconst getSet = (field, fields) => {\n  const setString = fields.match(getSetRegexp(field));\n  if (!setString) return [];\n  const firstSetBracket = fields.indexOf(setString[0]) + setString[0].length - 1;\n  const lastSetBracket = findClosingBracketMatchIndex(fields, firstSetBracket);\n  const set2 = fields.substring(firstSetBracket + 1, lastSetBracket);\n  return parseFieldsString(set2);\n};\nconst getSetRegexp = (field) => {\n  return new RegExp(`(^|\\\\,|\\\\(|\\\\s)\\\\s*${field}\\\\s*\\\\(`, \"g\");\n};\nconst isSearchField = (field, searchForm) => {\n  return searchForm.hasAttribute(`search-${field}`);\n};\nconst getSearchField = (field, searchForm) => {\n  return parseFieldsString(searchForm.getAttribute(`search-${field}`) || \"\");\n};\nconst orThrow = (throwOn, ret) => {\n  if (throwOn === true && ret) throw true;\n  if (throwOn === false && !ret) throw false;\n  return ret;\n};\nconst matchValue = async (val, query, throwOn) => {\n  var _a3;\n  const subject = await val;\n  if (subject == null && query.value === \"\") return orThrow(throwOn, true);\n  if (subject == null) return orThrow(throwOn, false);\n  if (query.list) {\n    if (query.value.length === 0) return orThrow(throwOn, true);\n    for (const v2 of query.value) {\n      if (await matchValue(subject, { type: query.type, value: v2, list: false })) {\n        return orThrow(throwOn, true);\n      }\n    }\n    return orThrow(throwOn, false);\n  }\n  if ((_a3 = subject.isContainer) == null ? void 0 : _a3.call(subject)) {\n    let ret = Promise.resolve(query.value === \"\");\n    for (const value of subject[\"ldp:contains\"]) {\n      ret = await ret || await matchValue(value, query);\n      if (ret) return orThrow(throwOn, true);\n    }\n    return orThrow(throwOn, await ret);\n  }\n  if (Array.isArray(subject)) {\n    let ret = Promise.resolve(query.value === \"\");\n    for (const value of subject) {\n      ret = await ret || await matchValue(value, query);\n      if (ret) {\n        return true;\n      }\n    }\n    return orThrow(throwOn, await ret);\n  }\n  return orThrow(throwOn, compare[query.type](subject, query.value));\n};\nconst cacheFieldsProps = (cacheKey, filter, fields, searchForm) => {\n  if (!window.cachePropsSearchFilter[cacheKey]) {\n    window.cachePropsSearchFilter[cacheKey] = {\n      setFields: isSet$1(filter, fields) ? getSet(filter, fields) : null,\n      setSearchFields: isSearchField(filter, searchForm) ? getSearchField(filter, searchForm) : null\n    };\n  }\n};\nconst traversePath = async (resource, path, targetedType) => {\n  var _a3;\n  let result = [];\n  let currentRes;\n  let remainingPath = path;\n  if (path.length === 0) return [];\n  try {\n    currentRes = await resource[path[0]];\n    const lastPath1El = path.shift();\n    if (lastPath1El) remainingPath = path;\n    if (currentRes && remainingPath.length > 1) {\n      result = await traversePath(currentRes, remainingPath, targetedType);\n    } else if (currentRes && Array.isArray(currentRes)) {\n      for (const res of currentRes) {\n        if (remainingPath.length > 1) {\n          result = await traversePath(res, remainingPath, targetedType);\n        } else {\n          let targetsRes = await res[remainingPath[0]];\n          if (!targetsRes) return [];\n          if ((_a3 = targetsRes.isContainer) == null ? void 0 : _a3.call(targetsRes)) {\n            targetsRes = targetsRes[\"ldp:contains\"];\n          }\n          if (!Array.isArray(targetsRes)) targetsRes = [targetsRes];\n          for (const targetRes of targetsRes) {\n            if (!result.some((item) => item[\"@id\"] === targetRes[\"@id\"])) {\n              result.push({ \"@id\": targetRes[\"@id\"] });\n            }\n          }\n        }\n      }\n    }\n  } catch (e2) {\n    console.error(e2);\n    return [];\n  }\n  return result;\n};\nconst matchFilter = async (resource, filter, query, fieldsAttr, searchForm, filterId, throwOn) => {\n  let fields = null;\n  const cacheKey = `${filter}_${filterId}`;\n  cacheFieldsProps(cacheKey, filter, fieldsAttr, searchForm);\n  if (window.cachePropsSearchFilter[cacheKey].setFields !== null) {\n    fields = window.cachePropsSearchFilter[cacheKey].setFields;\n  } else if (window.cachePropsSearchFilter[cacheKey].setSearchFields !== null) {\n    fields = window.cachePropsSearchFilter[cacheKey].setSearchFields;\n  } else {\n    if (!await resource[filter] && filter.includes(\"ldp:contains\")) {\n      const path1 = filter.split(\".\");\n      const targetedType = path1[path1.length - 1];\n      let targetIds = [];\n      targetIds = await traversePath(resource, path1, targetedType);\n      if (!Array.isArray(targetIds) || targetIds.length === 0 && query.value !== \"\") {\n        throw !throwOn;\n      }\n      return await matchValue(targetIds, query, throwOn);\n    }\n    return matchValue(resource[filter], query, throwOn);\n  }\n  try {\n    await Promise.all(\n      (fields || []).map(\n        (field) => matchFilter(\n          resource,\n          field,\n          query,\n          fieldsAttr,\n          searchForm,\n          filterId,\n          true\n          // stop searching when 1 filter is true (= OR)\n        )\n      )\n    );\n  } catch {\n    return true;\n  }\n  throw false;\n};\nconst matchFilters = async (resource, filters, filterNames, fields, searchForm, filterId) => {\n  try {\n    await Promise.all(\n      filterNames.map(async (filter) => {\n        const match3 = await matchFilter(\n          resource,\n          filter,\n          filters[filter],\n          fields,\n          searchForm,\n          filterId,\n          false\n          // stop searching when 1 filter is false (= AND)\n        );\n        return match3;\n      })\n    );\n  } catch (_e) {\n    return false;\n  }\n  return true;\n};\nconst searchInResources = (resources, filters, fields, searchForm) => {\n  const filterNames = Object.keys(filters);\n  const filterId = uniqID();\n  window.cachePropsSearchFilter = {};\n  return Promise.all(\n    resources.map(async (resource) => {\n      const match3 = await matchFilters(\n        resource,\n        filters,\n        filterNames,\n        fields,\n        searchForm,\n        filterId\n      );\n      return match3;\n    })\n  );\n};\nconst FilterMixin = {\n  name: \"filter-mixin\",\n  use: [],\n  initialState: {\n    searchCount: null\n  },\n  attributes: {\n    searchFields: {\n      type: String,\n      default: null\n    },\n    filteredBy: {\n      type: String,\n      default: null,\n      callback(newValue) {\n        if (newValue && this.searchForm && newValue !== this.searchForm.getAttribute(\"id\")) {\n          this.searchForm.component.detach(this);\n          this.searchForm = null;\n          this.populate();\n        }\n      }\n    },\n    filteredOn: {\n      type: String,\n      // 'server' | 'client'\n      default: \"client\"\n    }\n  },\n  created() {\n    this.searchCount = /* @__PURE__ */ new Map();\n    this.element.addEventListener(\"populate\", () => {\n      var _a3;\n      if (!window.document.contains(this.element)) return;\n      (_a3 = this.searchForm) == null ? void 0 : _a3.component.updateAutoRanges();\n    });\n  },\n  attached() {\n    const filteredBy = this.filteredBy;\n    if (this.isFilteredOnServer() && filteredBy) {\n      this.searchForm = document.getElementById(filteredBy);\n      if (!this.searchForm) throw `#${filteredBy} is not in DOM`;\n      this.searchForm.addEventListener(\n        \"formChange\",\n        () => this.onServerSearchChange()\n      );\n    } else {\n      this.listPostProcessors.attach(\n        this.filterCallback.bind(this),\n        \"FilterMixin:filterCallback\"\n      );\n    }\n  },\n  get filters() {\n    var _a3, _b;\n    return ((_b = (_a3 = this.searchForm) == null ? void 0 : _a3.component) == null ? void 0 : _b.value) ?? {};\n  },\n  set filters(filters) {\n    var _a3, _b;\n    if ((_b = (_a3 = this.searchForm) == null ? void 0 : _a3.component) == null ? void 0 : _b.value) {\n      this.searchForm.component.value = filters;\n      this.filterList();\n    }\n  },\n  isFilteredOnServer() {\n    return this.filteredOn === \"server\" && !!this.fetchData;\n  },\n  async onServerSearchChange() {\n    await this.fetchData(this.dataSrc);\n    this.empty();\n    await this.populate();\n  },\n  getDynamicServerSearch() {\n    const filters = this.filters;\n    if (this.isFilteredOnServer() && filters) {\n      const fields = Object.keys(filters);\n      const value = Object.values(filters).map(({ value: value2 }) => value2).filter((value2) => !!value2).join(\" \").trim();\n      if (fields.length > 0 && value) {\n        return { fields, value };\n      }\n    }\n    return;\n  },\n  async filterCallback(resources, listPostProcessors, div, context2) {\n    if (this.filteredBy || this.searchFields) {\n      if (!this.searchCount.has(context2)) this.searchCount.set(context2, 1);\n      if (!this.searchForm) await this.createFilter(context2);\n      const filteredResources = await searchInResources(\n        resources,\n        this.filters,\n        this.fields,\n        this.searchForm\n      );\n      resources = resources.filter((_v, index2) => filteredResources[index2]);\n      this.resources = [...resources];\n    }\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(\n        resources,\n        listPostProcessors,\n        div,\n        context2 + (this.searchCount.get(context2) || \"\")\n      );\n  },\n  async filterList(context2) {\n    this.searchCount.set(context2, this.searchCount.get(context2) + 1);\n    if (!this.resource) return;\n    this.empty();\n    await this.populate();\n  },\n  async getValuesOfField(field) {\n    const arrayOfDataObjects = this.resource[\"ldp:contains\"];\n    const arrayOfDataIds = [];\n    for (const obj of arrayOfDataObjects) {\n      const nextArrayOfObjects = await obj[field];\n      if (!nextArrayOfObjects) continue;\n      if (typeof nextArrayOfObjects !== \"object\") {\n        console.warn(\n          `The format value of ${field} is not suitable with auto-range-[field] attribute`\n        );\n        continue;\n      }\n      if (!nextArrayOfObjects.isContainer()) {\n        arrayOfDataIds.push(nextArrayOfObjects[\"@id\"]);\n      } else {\n        if (!nextArrayOfObjects[\"ldp:contains\"]) continue;\n        for (const obj2 of nextArrayOfObjects[\"ldp:contains\"]) {\n          arrayOfDataIds.push(obj2[\"@id\"]);\n        }\n      }\n    }\n    return arrayOfDataIds;\n  },\n  async createFilter(context2) {\n    const filteredBy = this.filteredBy;\n    if (filteredBy != null) {\n      this.searchForm = document.getElementById(filteredBy);\n      if (!this.searchForm) throw `#${filteredBy} is not in DOM`;\n    } else {\n      this.searchForm = document.createElement(\"solid-form-search\");\n    }\n    this.searchForm.component.attach(this);\n    this.searchForm.addEventListener(\"formChange\", () => {\n      this.filterList(context2);\n    });\n    this.searchForm.toggleAttribute(\"naked\", true);\n    if (filteredBy) return;\n    const searchAttributes = Array.from(this.element.attributes).filter((attr) => attr.name.startsWith(\"search-\")).map((attr) => ({\n      name: attr.name.replace(\"search-\", \"\"),\n      value: attr.value\n    }));\n    for (const { name, value } of searchAttributes) {\n      this.searchForm.setAttribute(name, value);\n    }\n    this.element.insertBefore(this.searchForm, this.element.firstChild);\n    await this.searchForm.component.populate();\n  }\n};\nconst GrouperMixin = {\n  name: \"grouper-mixin\",\n  use: [],\n  attributes: {\n    groupBy: {\n      type: String,\n      default: null\n    },\n    groupWidget: {\n      type: String,\n      default: \"solid-group-default\"\n    },\n    groupClass: {\n      type: String,\n      default: \"\"\n    },\n    orderGroupAsc: {\n      type: Boolean,\n      default: null\n    },\n    orderGroupDesc: {\n      type: Boolean,\n      default: null\n    }\n  },\n  attached() {\n    this.listPostProcessors.attach(\n      this.groupResources.bind(this),\n      \"GrouperMixin:groupResources\"\n    );\n  },\n  async groupResources(resources, listPostProcessors, div, context2) {\n    const nextProcessor = listPostProcessors.shift();\n    if (this.groupBy) {\n      const groups = {};\n      for (const resource of resources) {\n        const valueGroup = await resource[this.groupBy];\n        if (valueGroup == null) continue;\n        if (!groups[valueGroup]) groups[valueGroup] = { resources: [] };\n        groups[valueGroup].resources.push(resource);\n      }\n      let sortedKeys = Object.keys(groups);\n      if (this.orderGroupAsc !== null || this.orderGroupDesc !== null) {\n        const order = this.orderGroupDesc !== null ? \"desc\" : \"asc\";\n        sortedKeys = Object.keys(groups).sort((a2, b2) => {\n          return generalComparator(a2, b2, order);\n        });\n      }\n      const parents = sortedKeys.map((g2) => ({\n        group: g2,\n        parent: this.renderGroup(g2, div)\n      }));\n      for (const { group, parent } of parents) {\n        if (nextProcessor)\n          await nextProcessor(\n            groups[group].resources,\n            // give only resources from group\n            listPostProcessors.deepCopy(),\n            // copy post processors\n            parent,\n            // parent is group widget\n            `${context2}_${group}`\n          );\n      }\n    } else {\n      if (nextProcessor)\n        await nextProcessor(resources, listPostProcessors, div, context2);\n    }\n  },\n  /**\n   * Create a group widget or find if it already exists\n   * @param groupName\n   */\n  renderGroup(groupName, div) {\n    let groupElt = this.element.querySelector(\n      `${this.groupWidget}[value=\"${groupName}\"]`\n    );\n    if (!groupElt) {\n      groupElt = document.createElement(this.groupWidget);\n      groupElt.setAttribute(\"value\", groupName);\n      if (this.groupClass) groupElt.setAttribute(\"class\", this.groupClass);\n      if (groupElt.component) groupElt.component.render();\n      div.appendChild(groupElt);\n    }\n    return groupElt.querySelector(\"[data-content]\") || groupElt;\n  }\n};\nconst HighlighterMixin = {\n  name: \"highlighter-mixin\",\n  use: [],\n  attached() {\n    this.listPostProcessors.attach(\n      this.hightlightCallback.bind(this),\n      \"HighlighterMixin:hightlightCallback\"\n    );\n  },\n  async hightlightCallback(resources, listPostProcessors, div, context2) {\n    for (const attr of this.element.attributes) {\n      if (attr.name.startsWith(\"highlight-\")) {\n        const field = attr.name.split(\"highlight-\")[1];\n        resources = await Promise.all(\n          resources.map(async (resource) => ({\n            sortingKey: await resource[field],\n            // fetch sorting value\n            proxy: resource\n            // and keep proxy\n          }))\n        );\n        resources = this.sortHighlighted(resources, \"sortingKey\", attr.value);\n        resources = resources.map((resource) => resource.proxy);\n      }\n    }\n    this.resources = [...resources];\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  },\n  sortHighlighted(resources, field, value) {\n    for (const [index2, res] of resources.entries()) {\n      if (res[field] && res[field] === value) {\n        resources.splice(0, 0, resources.splice(index2, 1)[0]);\n      }\n    }\n    return resources;\n  }\n};\nclass PostProcessorRegistry {\n  constructor(currentPostProcessors = []) {\n    __publicField(this, \"currentPostProcessors\");\n    this.currentPostProcessors = [...currentPostProcessors];\n  }\n  attach(callback, callbackName) {\n    this.currentPostProcessors.push({ name: callbackName, fn: callback });\n  }\n  getPostProcessors() {\n    return this.currentPostProcessors;\n  }\n  printCurrentCallbacks() {\n    if (this.currentPostProcessors.length === 0) {\n      console.log(\"No post-processors registered.\");\n    } else {\n      console.log(\"Registered post-processors:\");\n      for (const postProcessor of this.currentPostProcessors) {\n        console.log(`- ${postProcessor.name}`);\n      }\n    }\n  }\n  getFormattedCallbacks() {\n    if (this.currentPostProcessors.length === 0) {\n      return \"No post-processors registered.\";\n    }\n    let formattedText = \"Registered post-processors:\\n\";\n    for (const postProcessor of this.currentPostProcessors) {\n      formattedText += `- ${postProcessor.name}\n`;\n    }\n    return formattedText.trim();\n  }\n  static printFormattedCallbacks(currentPostProcessors) {\n    if (currentPostProcessors.length === 0) {\n      return \"No post-processors registered.\";\n    }\n    let formattedText = \"Registered post-processors:\\n\";\n    for (const postProcessor of currentPostProcessors) {\n      formattedText += `- ${postProcessor.name}\n`;\n    }\n    return formattedText.trim();\n  }\n  whichCallbackExecutedNext() {\n    if (this.currentPostProcessors.length === 0) {\n      return \"No post-processors registered.\";\n    }\n    return `Next post-processor to be executed is: ${this.currentPostProcessors[0].name}`;\n  }\n  deepCopy() {\n    const copy = new PostProcessorRegistry(this.currentPostProcessors);\n    return copy;\n  }\n  shift() {\n    const res = this.currentPostProcessors.shift();\n    if (res) {\n      return res.fn;\n    }\n    return void 0;\n  }\n}\nconst ListMixin = {\n  name: \"list-mixin\",\n  use: [],\n  attributes: {\n    emptyWidget: {\n      type: String,\n      default: null\n    },\n    emptyValue: {\n      type: String,\n      default: \"\"\n    }\n  },\n  initialState: {\n    // Processors functions to execute on the list before rendering\n    listPostProcessors: new PostProcessorRegistry(),\n    // Rendering to execute after all the processors have been executed\n    renderCallbacks: []\n  },\n  created() {\n    this.listPostProcessors = new PostProcessorRegistry();\n    this.renderCallbacks = [];\n  },\n  appendSingleElt(parent) {\n    this.appendChildElt(this.resource[\"@id\"], parent);\n  },\n  setElementAttribute(attr) {\n    const containerAttribute = \"solid-container\";\n    const resourceAttribute = \"solid-resource\";\n    if (attr === \"resource\") {\n      this.element.removeAttribute(containerAttribute);\n      this.element.setAttribute(resourceAttribute, \"\");\n    } else {\n      this.element.removeAttribute(resourceAttribute);\n      this.element.setAttribute(containerAttribute, \"\");\n    }\n  },\n  async populate() {\n    var _a3, _b, _c, _d;\n    const listPostProcessorsCopy = this.listPostProcessors.deepCopy();\n    const div = this.div;\n    if (!this.resource) return;\n    if (!((_b = (_a3 = this.resource).isContainer) == null ? void 0 : _b.call(_a3)) && !this.arrayField && !this.predicateName) {\n      this.setElementAttribute(\"resource\");\n      this.appendSingleElt(div);\n      return;\n    }\n    if ((_d = (_c = this.resource).isContainer) == null ? void 0 : _d.call(_c)) {\n      this.setElementAttribute(\"container\");\n      this.renderCallbacks = [];\n      listPostProcessorsCopy.attach(\n        this.renderDOM.bind(this),\n        \"ListMixin:renderDOM\"\n      );\n      listPostProcessorsCopy.attach(\n        this.handleEmptyWidget.bind(this),\n        \"ListMixin:handleEmptyWidget\"\n      );\n      const nextProcessor = listPostProcessorsCopy.shift();\n      await nextProcessor(\n        this.resource[\"ldp:contains\"],\n        listPostProcessorsCopy,\n        div,\n        this.dataSrc\n      );\n    } else if (this.arrayField && this.predicateName && this.resource[this.predicateName]) {\n      this.setElementAttribute(\"container\");\n      this.renderCallbacks = [];\n      listPostProcessorsCopy.attach(\n        this.renderDOM.bind(this),\n        \"ListMixin:renderDOM\"\n      );\n      listPostProcessorsCopy.attach(\n        this.handleEmptyWidget.bind(this),\n        \"ListMixin:handleEmptyWidget\"\n      );\n      const nextProcessor = listPostProcessorsCopy.shift();\n      await nextProcessor(\n        await this.resource[this.predicateName],\n        listPostProcessorsCopy,\n        div,\n        this.dataSrc\n      );\n    }\n    for (const renderCallback of this.renderCallbacks) {\n      B(renderCallback.template, renderCallback.parent);\n    }\n  },\n  /**\n   * Render resources in the DOM\n   * @param resources\n   * @param listPostProcessors\n   * @param div\n   * @param context\n   */\n  async renderDOM(resources, listPostProcessors, div, context2) {\n    for (const resource of resources) {\n      if (!resource) continue;\n      this.appendChildElt(resource[\"@id\"], div);\n    }\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  },\n  /**\n   * Show empty widget if no resources in the list\n   * @param resources\n   * @param listPostProcessors\n   * @param div\n   * @param context\n   */\n  async handleEmptyWidget(resources, listPostProcessors, div, context2) {\n    if (this.emptyWidget) {\n      const emptyWidgetTemplate = preHTML`<${this.emptyWidget} value=${o$2(this.emptyValue)}></${this.emptyWidget}>`;\n      if (!this.emptyWrapper) {\n        this.emptyWrapper = document.createElement(\"span\");\n        this.element.appendChild(this.emptyWrapper);\n      }\n      B(\n        resources.length > 0 ? x`` : emptyWidgetTemplate,\n        this.emptyWrapper\n      );\n    }\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  }\n};\nconst PaginateMixin = {\n  name: \"paginate-mixin\",\n  use: [],\n  attributes: {\n    paginateBy: {\n      type: Number,\n      default: 0\n    },\n    paginateLoop: {\n      type: String,\n      default: null\n    }\n  },\n  initialState: {\n    currentPage: []\n  },\n  created() {\n    this.currentPage = [];\n  },\n  attached() {\n    this.listPostProcessors.attach(\n      this.paginateCallback.bind(this),\n      \"PaginateMixin:paginateCallback\"\n    );\n  },\n  async paginateCallback(resources, listPostProcessors, div, context2) {\n    if (this.paginateBy > 0) {\n      if (!this.currentPage[context2]) this.currentPage[context2] = 1;\n      const parentDiv = this.initParentPaginationDiv(div, context2);\n      this.renderCallbacks.push({\n        template: this.renderPaginationNav(\n          this.getPageCount(resources.length),\n          context2,\n          div\n        ),\n        parent: parentDiv\n      });\n      const firstElementIndex = (this.getCurrentPage(context2) - 1) * this.paginateBy;\n      resources = resources.slice(\n        firstElementIndex,\n        firstElementIndex + this.paginateBy\n      );\n    }\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  },\n  getNavElement(div) {\n    const insertNode = div.parentNode || div;\n    return insertNode.querySelector(`nav[data-id=\"nav\"]`);\n  },\n  /**\n   * Find nav element or create it if not existing\n   * @param div - insert nav next to this div\n   */\n  initParentPaginationDiv(div) {\n    let nav = this.getNavElement(div);\n    if (!nav) {\n      nav = document.createElement(\"nav\");\n      nav.setAttribute(\"data-id\", \"nav\");\n      const insertNode = div.parentNode || div;\n      insertNode.appendChild(nav);\n    }\n    return nav;\n  },\n  getCurrentPage(context2) {\n    return this.currentPage[context2];\n  },\n  setCurrentPage(page, context2, pageCount) {\n    if (page < 1) page = !this.shouldLoop() ? 1 : pageCount;\n    if (page > pageCount) page = !this.shouldLoop() ? pageCount : 1;\n    this.currentPage[context2] = page;\n    this.empty();\n    this.populate();\n  },\n  getPageCount(size) {\n    return Math.max(1, Math.ceil(size / this.paginateBy));\n  },\n  shouldLoop() {\n    return this.paginateLoop !== null;\n  },\n  /**\n   * Create pagination template\n   * @param pageCount\n   * @param context\n   */\n  renderPaginationNav(pageCount, context2, div) {\n    this.getNavElement(div).toggleAttribute(\"hidden\", pageCount <= 1);\n    const currentPage = this.getCurrentPage(context2);\n    return x`\n      <button\n        data-id=\"prev\"\n        ?disabled=${!this.shouldLoop() && currentPage <= 1}\n        @click=${() => this.setCurrentPage(currentPage - 1, context2, pageCount)}\n      >←</button>\n      <button\n        data-id=\"next\"\n        ?disabled=${!this.shouldLoop() && currentPage >= pageCount}\n        @click=${() => this.setCurrentPage(currentPage + 1, context2, pageCount)}\n      >→</button>\n      <span>\n        <span data-id=\"current\">${currentPage}</span> / <span data-id=\"count\">${String(pageCount)}</span>\n      </span>\n    `;\n  }\n};\nconst RequiredMixin = {\n  name: \"required-mixin\",\n  use: [],\n  attached() {\n    this.listPostProcessors.attach(\n      this.requiredResources.bind(this),\n      \"RequiredMixin:requiredResources\"\n    );\n  },\n  async requiredResources(resources, listPostProcessors, div, context2) {\n    const displays = [];\n    const requiredFields = Array.from(this.element.attributes).filter((attr) => attr.name.startsWith(\"required-\")).map((attr) => {\n      return attr.value !== \"\" ? attr.value : attr.name.replace(\"required-\", \"\");\n    });\n    if (requiredFields.length > 0) {\n      for (const resource of resources) {\n        let hasProps = true;\n        for (const field of requiredFields) {\n          const res = await resource[field];\n          if (!res) {\n            hasProps = false;\n            break;\n          }\n        }\n        if (hasProps) displays.push(resource);\n      }\n    }\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(\n        requiredFields.length > 0 ? displays : resources,\n        listPostProcessors,\n        div,\n        context2\n      );\n  }\n};\nconst SorterMixin = {\n  name: \"sorter-mixin\",\n  use: [],\n  attributes: {\n    orderBy: {\n      type: String,\n      default: null\n    },\n    orderAsc: {\n      type: String,\n      default: null\n    },\n    orderDesc: {\n      type: String,\n      default: null\n    },\n    orderByRandom: {\n      type: String,\n      default: null\n    },\n    sortedBy: {\n      type: String,\n      default: null,\n      callback(newValue) {\n        if (newValue && this.sortForm && newValue !== this.sortForm.getAttribute(\"id\")) {\n          this.sortForm = null;\n          this.populate();\n        }\n      }\n    }\n  },\n  initialState: {\n    randomOrder: null\n  },\n  attached() {\n    this.listPostProcessors.attach(\n      this.orderCallback.bind(this),\n      \"SorterMixin:orderCallback\"\n    );\n  },\n  created() {\n    this.randomOrder = [];\n  },\n  async sorterList() {\n    if (!this.resource) return;\n    this.empty();\n    await this.populate();\n  },\n  linkSorterForm() {\n    this.sortForm.addEventListener(\"formChange\", () => {\n      this.sorterList();\n    });\n  },\n  async orderCallback(resources, listPostProcessors, div, context2) {\n    if (this.orderBy) this.orderAsc = this.orderBy;\n    let sortingKey = \"\";\n    let orderValueToSort = \"\";\n    if (this.orderAsc || this.orderDesc) {\n      sortingKey = this.orderAsc || this.orderDesc;\n    } else if (this.sortedBy) {\n      const sortedBy = this.sortedBy;\n      if (sortedBy != null) {\n        if (!this.sortForm) {\n          this.sortForm = document.getElementById(sortedBy);\n          if (!this.sortForm) throw `#${sortedBy} is not in DOM`;\n          this.linkSorterForm();\n        }\n        if (!this.sortForm.component.value.field) {\n          console.warn(\"The attribute field does not exist\");\n        } else {\n          sortingKey = this.sortForm.component.value.field.value;\n        }\n        const orderField = this.sortForm.component.value.order;\n        orderValueToSort = (orderField == null ? void 0 : orderField.value) ? orderField.value : \"asc\";\n      }\n    }\n    if (sortingKey) {\n      let orderToSort = true;\n      if (this.orderDesc || orderValueToSort === \"desc\") orderToSort = false;\n      resources = (await Promise.all(\n        resources.map(async (resource) => ({\n          sortingKey: await resource[sortingKey],\n          // fetch sorting value\n          proxy: resource\n          // and keep proxy\n        }))\n      )).sort(this.sortValuesByKey(\"sortingKey\", orderToSort)).map((r3) => r3.proxy);\n    } else if (this.isRandomSorted()) {\n      resources = this.shuffleResources(resources);\n    }\n    this.resources = [...resources];\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  },\n  isRandomSorted() {\n    return this.orderByRandom !== null;\n  },\n  sortValuesByKey(key, asc) {\n    return (a2, b2) => {\n      if (!Object.hasOwn(a2, key)) return 1;\n      if (!Object.hasOwn(b2, key)) return -1;\n      const varA = a2[key];\n      const varB = b2[key];\n      let comparison = 0;\n      if (typeof varA === \"string\" && typeof varB === \"string\") {\n        comparison = varA.localeCompare(varB, void 0, {\n          sensitivity: \"base\"\n        });\n        comparison = asc ? comparison : -comparison;\n      } else {\n        if (varA > varB) comparison = asc ? 1 : -1;\n        else if (varA < varB) comparison = asc ? -1 : 1;\n      }\n      return comparison;\n    };\n  },\n  shuffleResources(array) {\n    let currentIndex = array.length;\n    let temporaryValue;\n    let randomIndex;\n    if (this.randomOrder.length !== array.length) {\n      this.randomOrder = [...Array(array.length).keys()];\n      while (currentIndex !== 0) {\n        randomIndex = Math.floor(Math.random() * currentIndex);\n        currentIndex -= 1;\n        temporaryValue = this.randomOrder[currentIndex];\n        this.randomOrder[currentIndex] = this.randomOrder[randomIndex];\n        this.randomOrder[randomIndex] = temporaryValue;\n      }\n    }\n    return this.randomOrder.map((i3) => array[i3]);\n  }\n};\nconst ActionMixin = {\n  name: \"action-mixin\",\n  attributes: {\n    src: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"src\");\n      }\n    },\n    targetSrc: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"target-src\");\n      }\n    }\n  }\n};\nconst BlankMixin = {\n  name: \"blank-mixin\",\n  created() {\n    this.listAttributes.target = \"_blank\";\n  }\n};\nconst BooleanMixin = {\n  name: \"boolean-mixin\",\n  get type() {\n    return \"boolean\";\n  }\n};\nconst MailtoMixin = {\n  name: \"mailto-mixin\",\n  created() {\n    this.listAttributes.mailto = \"mailto:\";\n  }\n};\nconst MultipleMixin = {\n  name: \"multiple-mixin\",\n  attributes: {\n    fields: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"fields\");\n      }\n    },\n    next: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"next\");\n      }\n    },\n    emptyWidget: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"emptyWidget\");\n      }\n    }\n  }\n};\nconst NumberMixin = {\n  name: \"number-mixin\",\n  get type() {\n    return \"number\";\n  }\n};\nconst PlaceholderMixin = {\n  name: \"placeholder-mixin\",\n  attributes: {\n    placeholder: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"placeholder\");\n      }\n    }\n  },\n  attached() {\n    this.listAttributes.placeholder = this.placeholder || this.label || this.name || \"\";\n  }\n};\nconst TelMixin = {\n  name: \"tel-mixin\",\n  created() {\n    this.listAttributes.tel = \"tel:\";\n  }\n};\nconst attributeDirectory = {\n  multiple: MultipleMixin,\n  action: ActionMixin,\n  blank: BlankMixin,\n  mailto: MailtoMixin,\n  tel: TelMixin,\n  placeholder: PlaceholderMixin,\n  bool: BooleanMixin,\n  num: NumberMixin\n};\nconst index$4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  ActionMixin,\n  BlankMixin,\n  MailtoMixin,\n  MultipleMixin,\n  PlaceholderMixin,\n  TelMixin,\n  attributeDirectory\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst BaseWidgetMixin = {\n  name: \"widget-mixin\",\n  use: [],\n  attributes: {\n    value: {\n      type: String,\n      default: \"\",\n      callback: function() {\n        this.planRender();\n      }\n    },\n    name: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"name\");\n      }\n    },\n    label: {\n      type: String,\n      default: null,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"label\");\n      }\n    },\n    autoSubscribe: {\n      type: String,\n      default: null,\n      callback: function(newValue) {\n        if (this.subscription) PubSub.unsubscribe(this.subscription);\n        this.subscribe(newValue);\n      }\n    }\n  },\n  initialState: {\n    listValueTransformations: new PostProcessorRegistry(),\n    listTemplateAdditions: new PostProcessorRegistry(),\n    listAttributes: {},\n    listCallbacks: new PostProcessorRegistry(),\n    renderPlanned: false\n  },\n  get template() {\n    return null;\n  },\n  created() {\n    this.listValueTransformations = new PostProcessorRegistry();\n    this.listAttributes = {};\n    this.listTemplateAdditions = new PostProcessorRegistry();\n    this.listCallbacks = new PostProcessorRegistry();\n    this.subscription = null;\n  },\n  attached() {\n    this.planRender();\n  },\n  detached() {\n    if (this.subscription) PubSub.unsubscribe(this.subscription);\n  },\n  planRender() {\n    if (!this.renderPlanned && document.body.contains(this.element)) {\n      this.renderPlanned = true;\n      setTimeout(() => {\n        this.render();\n        this.renderPlanned = false;\n      });\n    }\n  },\n  render() {\n    const listValueTransformationsCopy = this.listValueTransformations.deepCopy();\n    listValueTransformationsCopy.attach(\n      this.renderTemplate.bind(this),\n      \"BaseWidgetMixin:renderTemplate\"\n    );\n    const nextProcessor = listValueTransformationsCopy.shift();\n    nextProcessor(this.value, listValueTransformationsCopy);\n    const listCallbacksCopy = this.listCallbacks.deepCopy();\n    const nextCallback = listCallbacksCopy.shift();\n    if (nextCallback) {\n      nextCallback(this.value, listCallbacksCopy);\n    }\n    this.element.dispatchEvent(\n      new CustomEvent(\"widgetRendered\", { bubbles: true })\n    );\n  },\n  renderTemplate(value) {\n    const template = this.template(value, { ...this.listAttributes });\n    const listTemplateAdditionsCopy = this.listTemplateAdditions.deepCopy();\n    listTemplateAdditionsCopy.attach(\n      this.templateToDOM.bind(this),\n      \"BaseWidgetMixin:templateToDOM\"\n    );\n    const nextProcessor = listTemplateAdditionsCopy.shift();\n    nextProcessor(template, listTemplateAdditionsCopy);\n  },\n  templateToDOM(template) {\n    B(template, this.element);\n  },\n  addToAttributes(value, attrKey) {\n    if (value !== null && value !== this.listAttributes[attrKey]) {\n      this.listAttributes[attrKey] = value;\n      this.planRender();\n    }\n  },\n  subscribe(event) {\n    this.subscription = PubSub.subscribe(event, () => this.planRender());\n  },\n  update() {\n    this.planRender();\n  }\n};\nvar slimselect = { exports: {} };\n(function(module2, exports2) {\n  (function(global2, factory2) {\n    module2.exports = factory2();\n  })(commonjsGlobal, function() {\n    class CssClasses {\n      constructor(classes) {\n        if (!classes) {\n          classes = {};\n        }\n        this.main = classes.main || \"ss-main\";\n        this.placeholder = classes.placeholder || \"ss-placeholder\";\n        this.values = classes.values || \"ss-values\";\n        this.single = classes.single || \"ss-single\";\n        this.max = classes.max || \"ss-max\";\n        this.value = classes.value || \"ss-value\";\n        this.valueText = classes.valueText || \"ss-value-text\";\n        this.valueDelete = classes.valueDelete || \"ss-value-delete\";\n        this.valueOut = classes.valueOut || \"ss-value-out\";\n        this.deselect = classes.deselect || \"ss-deselect\";\n        this.deselectPath = classes.deselectPath || \"M10,10 L90,90 M10,90 L90,10\";\n        this.arrow = classes.arrow || \"ss-arrow\";\n        this.arrowClose = classes.arrowClose || \"M10,30 L50,70 L90,30\";\n        this.arrowOpen = classes.arrowOpen || \"M10,70 L50,30 L90,70\";\n        this.content = classes.content || \"ss-content\";\n        this.openAbove = classes.openAbove || \"ss-open-above\";\n        this.openBelow = classes.openBelow || \"ss-open-below\";\n        this.search = classes.search || \"ss-search\";\n        this.searchHighlighter = classes.searchHighlighter || \"ss-search-highlight\";\n        this.searching = classes.searching || \"ss-searching\";\n        this.addable = classes.addable || \"ss-addable\";\n        this.addablePath = classes.addablePath || \"M50,10 L50,90 M10,50 L90,50\";\n        this.list = classes.list || \"ss-list\";\n        this.optgroup = classes.optgroup || \"ss-optgroup\";\n        this.optgroupLabel = classes.optgroupLabel || \"ss-optgroup-label\";\n        this.optgroupLabelText = classes.optgroupLabelText || \"ss-optgroup-label-text\";\n        this.optgroupActions = classes.optgroupActions || \"ss-optgroup-actions\";\n        this.optgroupSelectAll = classes.optgroupSelectAll || \"ss-selectall\";\n        this.optgroupSelectAllBox = classes.optgroupSelectAllBox || \"M60,10 L10,10 L10,90 L90,90 L90,50\";\n        this.optgroupSelectAllCheck = classes.optgroupSelectAllCheck || \"M30,45 L50,70 L90,10\";\n        this.optgroupClosable = classes.optgroupClosable || \"ss-closable\";\n        this.option = classes.option || \"ss-option\";\n        this.optionDelete = classes.optionDelete || \"M10,10 L90,90 M10,90 L90,10\";\n        this.highlighted = classes.highlighted || \"ss-highlighted\";\n        this.open = classes.open || \"ss-open\";\n        this.close = classes.close || \"ss-close\";\n        this.selected = classes.selected || \"ss-selected\";\n        this.error = classes.error || \"ss-error\";\n        this.disabled = classes.disabled || \"ss-disabled\";\n        this.hide = classes.hide || \"ss-hide\";\n      }\n    }\n    function generateID() {\n      return Math.random().toString(36).substring(2, 10);\n    }\n    function hasClassInTree(element, className) {\n      function hasClass(e2, c2) {\n        if (c2 && e2 && e2.classList && e2.classList.contains(c2)) {\n          return e2;\n        }\n        if (c2 && e2 && e2.dataset && e2.dataset.id && e2.dataset.id === className) {\n          return e2;\n        }\n        return null;\n      }\n      function parentByClass(e2, c2) {\n        if (!e2 || e2 === document) {\n          return null;\n        } else if (hasClass(e2, c2)) {\n          return e2;\n        } else {\n          return parentByClass(e2.parentNode, c2);\n        }\n      }\n      return hasClass(element, className) || parentByClass(element, className);\n    }\n    function debounce(func, wait = 50, immediate = false) {\n      let timeout;\n      return function(...args) {\n        const context2 = self;\n        const later = () => {\n          timeout = null;\n          if (!immediate) {\n            func.apply(context2, args);\n          }\n        };\n        const callNow = immediate && !timeout;\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n        if (callNow) {\n          func.apply(context2, args);\n        }\n      };\n    }\n    function isEqual2(a2, b2) {\n      return JSON.stringify(a2) === JSON.stringify(b2);\n    }\n    function kebabCase(str) {\n      const result = str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match3) => \"-\" + match3.toLowerCase());\n      return str[0] === str[0].toUpperCase() ? result.substring(1) : result;\n    }\n    class Optgroup {\n      constructor(optgroup) {\n        this.id = !optgroup.id || optgroup.id === \"\" ? generateID() : optgroup.id;\n        this.label = optgroup.label || \"\";\n        this.selectAll = optgroup.selectAll === void 0 ? false : optgroup.selectAll;\n        this.selectAllText = optgroup.selectAllText || \"Select All\";\n        this.closable = optgroup.closable || \"off\";\n        this.options = [];\n        if (optgroup.options) {\n          for (const o2 of optgroup.options) {\n            this.options.push(new Option(o2));\n          }\n        }\n      }\n    }\n    class Option {\n      constructor(option) {\n        this.id = !option.id || option.id === \"\" ? generateID() : option.id;\n        this.value = option.value === void 0 ? option.text : option.value;\n        this.text = option.text || \"\";\n        this.html = option.html || \"\";\n        this.selected = option.selected !== void 0 ? option.selected : false;\n        this.display = option.display !== void 0 ? option.display : true;\n        this.disabled = option.disabled !== void 0 ? option.disabled : false;\n        this.mandatory = option.mandatory !== void 0 ? option.mandatory : false;\n        this.placeholder = option.placeholder !== void 0 ? option.placeholder : false;\n        this.class = option.class || \"\";\n        this.style = option.style || \"\";\n        this.data = option.data || {};\n      }\n    }\n    class Store2 {\n      constructor(type, data) {\n        this.selectType = \"single\";\n        this.data = [];\n        this.selectedOrder = [];\n        this.selectType = type;\n        this.setData(data);\n      }\n      validateDataArray(data) {\n        if (!Array.isArray(data)) {\n          return new Error(\"Data must be an array\");\n        }\n        for (let dataObj of data) {\n          if (dataObj instanceof Optgroup || \"label\" in dataObj) {\n            if (!(\"label\" in dataObj)) {\n              return new Error(\"Optgroup must have a label\");\n            }\n            if (\"options\" in dataObj && dataObj.options) {\n              for (let option of dataObj.options) {\n                const validationError = this.validateOption(option);\n                if (validationError) {\n                  return validationError;\n                }\n              }\n            }\n          } else if (dataObj instanceof Option || \"text\" in dataObj) {\n            const validationError = this.validateOption(dataObj);\n            if (validationError) {\n              return validationError;\n            }\n          } else {\n            return new Error(\"Data object must be a valid optgroup or option\");\n          }\n        }\n        return null;\n      }\n      validateOption(option) {\n        if (!(\"text\" in option)) {\n          return new Error(\"Option must have a text\");\n        }\n        return null;\n      }\n      partialToFullData(data) {\n        let dataFinal = [];\n        data.forEach((dataObj) => {\n          if (dataObj instanceof Optgroup || \"label\" in dataObj) {\n            let optOptions = [];\n            if (\"options\" in dataObj && dataObj.options) {\n              dataObj.options.forEach((option) => {\n                optOptions.push(new Option(option));\n              });\n            }\n            if (optOptions.length > 0) {\n              dataFinal.push(new Optgroup(dataObj));\n            }\n          }\n          if (dataObj instanceof Option || \"text\" in dataObj) {\n            dataFinal.push(new Option(dataObj));\n          }\n        });\n        return dataFinal;\n      }\n      setData(data) {\n        this.data = this.partialToFullData(data);\n        if (this.selectType === \"single\") {\n          this.setSelectedBy(\"id\", this.getSelected());\n        }\n      }\n      getData() {\n        return this.filter(null, true);\n      }\n      getDataOptions() {\n        return this.filter(null, false);\n      }\n      addOption(option, addToStart = false) {\n        if (addToStart) {\n          let data = [new Option(option)];\n          this.setData(data.concat(this.getData()));\n        } else {\n          this.setData(this.getData().concat(new Option(option)));\n        }\n      }\n      setSelectedBy(selectedType, selectedValues) {\n        let firstOption = null;\n        let hasSelected = false;\n        const selectedObjects = [];\n        for (let dataObj of this.data) {\n          if (dataObj instanceof Optgroup) {\n            for (let option of dataObj.options) {\n              if (!firstOption) {\n                firstOption = option;\n              }\n              option.selected = hasSelected ? false : selectedValues.includes(option[selectedType]);\n              if (option.selected) {\n                selectedObjects.push(option);\n                if (this.selectType === \"single\") {\n                  hasSelected = true;\n                }\n              }\n            }\n          }\n          if (dataObj instanceof Option) {\n            if (!firstOption) {\n              firstOption = dataObj;\n            }\n            dataObj.selected = hasSelected ? false : selectedValues.includes(dataObj[selectedType]);\n            if (dataObj.selected) {\n              selectedObjects.push(dataObj);\n              if (this.selectType === \"single\") {\n                hasSelected = true;\n              }\n            }\n          }\n        }\n        if (this.selectType === \"single\" && firstOption && !hasSelected) {\n          firstOption.selected = true;\n          selectedObjects.push(firstOption);\n        }\n        const selectedIds = selectedValues.map((value) => {\n          var _a3;\n          return ((_a3 = selectedObjects.find((option) => option[selectedType] === value)) === null || _a3 === void 0 ? void 0 : _a3.id) || \"\";\n        });\n        this.selectedOrder = selectedIds;\n      }\n      getSelected() {\n        return this.getSelectedOptions().map((option) => option.id);\n      }\n      getSelectedValues() {\n        return this.getSelectedOptions().map((option) => option.value);\n      }\n      getSelectedOptions() {\n        return this.filter((opt) => {\n          return opt.selected;\n        }, false);\n      }\n      getOptgroupByID(id2) {\n        for (let dataObj of this.data) {\n          if (dataObj instanceof Optgroup && dataObj.id === id2) {\n            return dataObj;\n          }\n        }\n        return null;\n      }\n      getOptionByID(id2) {\n        let options = this.filter((opt) => {\n          return opt.id === id2;\n        }, false);\n        return options.length ? options[0] : null;\n      }\n      getSelectType() {\n        return this.selectType;\n      }\n      getFirstOption() {\n        let option = null;\n        for (let dataObj of this.data) {\n          if (dataObj instanceof Optgroup) {\n            option = dataObj.options[0];\n          } else if (dataObj instanceof Option) {\n            option = dataObj;\n          }\n          if (option) {\n            break;\n          }\n        }\n        return option;\n      }\n      search(search, searchFilter) {\n        search = search.trim();\n        if (search === \"\") {\n          return this.getData();\n        }\n        return this.filter((opt) => {\n          return searchFilter(opt, search);\n        }, true);\n      }\n      filter(filter, includeOptgroup) {\n        const dataSearch = [];\n        this.data.forEach((dataObj) => {\n          if (dataObj instanceof Optgroup) {\n            let optOptions = [];\n            dataObj.options.forEach((option) => {\n              if (!filter || filter(option)) {\n                if (!includeOptgroup) {\n                  dataSearch.push(new Option(option));\n                } else {\n                  optOptions.push(new Option(option));\n                }\n              }\n            });\n            if (optOptions.length > 0) {\n              let optgroup = new Optgroup(dataObj);\n              optgroup.options = optOptions;\n              dataSearch.push(optgroup);\n            }\n          }\n          if (dataObj instanceof Option) {\n            if (!filter || filter(dataObj)) {\n              dataSearch.push(new Option(dataObj));\n            }\n          }\n        });\n        return dataSearch;\n      }\n      selectedOrderOptions(options) {\n        const newOrder = [];\n        this.selectedOrder.forEach((id2) => {\n          const option = options.find((opt) => opt.id === id2);\n          if (option) {\n            newOrder.push(option);\n          }\n        });\n        options.forEach((option) => {\n          let isIn = false;\n          newOrder.forEach((selectedOption) => {\n            if (option.id === selectedOption.id) {\n              isIn = true;\n              return;\n            }\n          });\n          if (!isIn) {\n            newOrder.push(option);\n          }\n        });\n        return newOrder;\n      }\n    }\n    class Render {\n      constructor(settings, classes, store2, callbacks) {\n        this.store = store2;\n        this.settings = settings;\n        this.classes = classes;\n        this.callbacks = callbacks;\n        this.main = this.mainDiv();\n        this.content = this.contentDiv();\n        this.updateClassStyles();\n        this.updateAriaAttributes();\n        if (this.settings.contentLocation) {\n          this.settings.contentLocation.appendChild(this.content.main);\n        }\n      }\n      enable() {\n        this.main.main.classList.remove(this.classes.disabled);\n        this.content.search.input.disabled = false;\n      }\n      disable() {\n        this.main.main.classList.add(this.classes.disabled);\n        this.content.search.input.disabled = true;\n      }\n      open() {\n        this.main.arrow.path.setAttribute(\"d\", this.classes.arrowOpen);\n        this.main.main.classList.add(this.settings.openPosition === \"up\" ? this.classes.openAbove : this.classes.openBelow);\n        this.main.main.setAttribute(\"aria-expanded\", \"true\");\n        this.moveContent();\n        const selectedOptions = this.store.getSelectedOptions();\n        if (selectedOptions.length) {\n          const selectedId = selectedOptions[selectedOptions.length - 1].id;\n          const selectedOption = this.content.list.querySelector('[data-id=\"' + selectedId + '\"]');\n          if (selectedOption) {\n            this.ensureElementInView(this.content.list, selectedOption);\n          }\n        }\n      }\n      close() {\n        this.main.main.classList.remove(this.classes.openAbove);\n        this.main.main.classList.remove(this.classes.openBelow);\n        this.main.main.setAttribute(\"aria-expanded\", \"false\");\n        this.content.main.classList.remove(this.classes.openAbove);\n        this.content.main.classList.remove(this.classes.openBelow);\n        this.main.arrow.path.setAttribute(\"d\", this.classes.arrowClose);\n      }\n      updateClassStyles() {\n        this.main.main.className = \"\";\n        this.main.main.removeAttribute(\"style\");\n        this.content.main.className = \"\";\n        this.content.main.removeAttribute(\"style\");\n        this.main.main.classList.add(this.classes.main);\n        this.content.main.classList.add(this.classes.content);\n        if (this.settings.style !== \"\") {\n          this.main.main.style.cssText = this.settings.style;\n          this.content.main.style.cssText = this.settings.style;\n        }\n        if (this.settings.class.length) {\n          for (const c2 of this.settings.class) {\n            if (c2.trim() !== \"\") {\n              this.main.main.classList.add(c2.trim());\n              this.content.main.classList.add(c2.trim());\n            }\n          }\n        }\n        if (this.settings.contentPosition === \"relative\" || this.settings.contentPosition === \"fixed\") {\n          this.content.main.classList.add(\"ss-\" + this.settings.contentPosition);\n        }\n      }\n      updateAriaAttributes() {\n        this.main.main.role = \"combobox\";\n        this.main.main.setAttribute(\"aria-haspopup\", \"listbox\");\n        this.main.main.setAttribute(\"aria-controls\", this.content.main.id);\n        this.main.main.setAttribute(\"aria-expanded\", \"false\");\n        this.content.main.setAttribute(\"role\", \"listbox\");\n      }\n      mainDiv() {\n        var _a3;\n        const main = document.createElement(\"div\");\n        main.dataset.id = this.settings.id;\n        main.setAttribute(\"aria-label\", this.settings.ariaLabel);\n        main.tabIndex = 0;\n        main.onkeydown = (e2) => {\n          switch (e2.key) {\n            case \"ArrowUp\":\n            case \"ArrowDown\":\n              this.callbacks.open();\n              e2.key === \"ArrowDown\" ? this.highlight(\"down\") : this.highlight(\"up\");\n              return false;\n            case \"Tab\":\n              this.callbacks.close();\n              return true;\n            case \"Enter\":\n            case \" \":\n              this.callbacks.open();\n              const highlighted = this.content.list.querySelector(\".\" + this.classes.highlighted);\n              if (highlighted) {\n                highlighted.click();\n              }\n              return false;\n            case \"Escape\":\n              this.callbacks.close();\n              return false;\n          }\n          if (e2.key.length === 1) {\n            this.callbacks.open();\n          }\n          return true;\n        };\n        main.onclick = (e2) => {\n          if (this.settings.disabled) {\n            return;\n          }\n          this.settings.isOpen ? this.callbacks.close() : this.callbacks.open();\n        };\n        const values = document.createElement(\"div\");\n        values.classList.add(this.classes.values);\n        main.appendChild(values);\n        const deselect = document.createElement(\"div\");\n        deselect.classList.add(this.classes.deselect);\n        const selectedOptions = (_a3 = this.store) === null || _a3 === void 0 ? void 0 : _a3.getSelectedOptions();\n        if (!this.settings.allowDeselect || this.settings.isMultiple && selectedOptions && selectedOptions.length <= 0) {\n          deselect.classList.add(this.classes.hide);\n        } else {\n          deselect.classList.remove(this.classes.hide);\n        }\n        deselect.onclick = (e2) => {\n          e2.stopPropagation();\n          if (this.settings.disabled) {\n            return;\n          }\n          let shouldDelete = true;\n          const before = this.store.getSelectedOptions();\n          const after = [];\n          if (this.callbacks.beforeChange) {\n            shouldDelete = this.callbacks.beforeChange(after, before) === true;\n          }\n          if (shouldDelete) {\n            if (this.settings.isMultiple) {\n              this.callbacks.setSelected([], false);\n              this.updateDeselectAll();\n            } else {\n              const firstOption = this.store.getFirstOption();\n              const id2 = firstOption ? firstOption.id : \"\";\n              this.callbacks.setSelected(id2, false);\n            }\n            if (this.settings.closeOnSelect) {\n              this.callbacks.close();\n            }\n            if (this.callbacks.afterChange) {\n              this.callbacks.afterChange(this.store.getSelectedOptions());\n            }\n          }\n        };\n        const deselectSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        deselectSvg.setAttribute(\"viewBox\", \"0 0 100 100\");\n        const deselectPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        deselectPath.setAttribute(\"d\", this.classes.deselectPath);\n        deselectSvg.appendChild(deselectPath);\n        deselect.appendChild(deselectSvg);\n        main.appendChild(deselect);\n        const arrow = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        arrow.classList.add(this.classes.arrow);\n        arrow.setAttribute(\"viewBox\", \"0 0 100 100\");\n        const arrowPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        arrowPath.setAttribute(\"d\", this.classes.arrowClose);\n        if (this.settings.alwaysOpen) {\n          arrow.classList.add(this.classes.hide);\n        }\n        arrow.appendChild(arrowPath);\n        main.appendChild(arrow);\n        return {\n          main,\n          values,\n          deselect: {\n            main: deselect,\n            svg: deselectSvg,\n            path: deselectPath\n          },\n          arrow: {\n            main: arrow,\n            path: arrowPath\n          }\n        };\n      }\n      mainFocus(eventType) {\n        if (eventType !== \"click\") {\n          this.main.main.focus({ preventScroll: true });\n        }\n      }\n      placeholder() {\n        const placeholderOption = this.store.filter((o2) => o2.placeholder, false);\n        let placeholderText = this.settings.placeholderText;\n        if (placeholderOption.length) {\n          if (placeholderOption[0].html !== \"\") {\n            placeholderText = placeholderOption[0].html;\n          } else if (placeholderOption[0].text !== \"\") {\n            placeholderText = placeholderOption[0].text;\n          }\n        }\n        const placeholder = document.createElement(\"div\");\n        placeholder.classList.add(this.classes.placeholder);\n        placeholder.innerHTML = placeholderText;\n        return placeholder;\n      }\n      renderValues() {\n        if (!this.settings.isMultiple) {\n          this.renderSingleValue();\n          return;\n        }\n        this.renderMultipleValues();\n        this.updateDeselectAll();\n      }\n      renderSingleValue() {\n        const selected = this.store.filter((o2) => {\n          return o2.selected && !o2.placeholder;\n        }, false);\n        const selectedSingle = selected.length > 0 ? selected[0] : null;\n        if (!selectedSingle) {\n          this.main.values.innerHTML = this.placeholder().outerHTML;\n        } else {\n          const singleValue = document.createElement(\"div\");\n          singleValue.classList.add(this.classes.single);\n          if (selectedSingle.html) {\n            singleValue.innerHTML = selectedSingle.html;\n          } else {\n            singleValue.innerText = selectedSingle.text;\n          }\n          this.main.values.innerHTML = singleValue.outerHTML;\n        }\n        if (!this.settings.allowDeselect || !selected.length) {\n          this.main.deselect.main.classList.add(this.classes.hide);\n        } else {\n          this.main.deselect.main.classList.remove(this.classes.hide);\n        }\n      }\n      renderMultipleValues() {\n        let currentNodes = this.main.values.childNodes;\n        let selectedOptions = this.store.filter((opt) => {\n          return opt.selected && opt.display;\n        }, false);\n        if (selectedOptions.length === 0) {\n          this.main.values.innerHTML = this.placeholder().outerHTML;\n          return;\n        } else {\n          const placeholder = this.main.values.querySelector(\".\" + this.classes.placeholder);\n          if (placeholder) {\n            placeholder.remove();\n          }\n        }\n        if (selectedOptions.length > this.settings.maxValuesShown) {\n          const singleValue = document.createElement(\"div\");\n          singleValue.classList.add(this.classes.max);\n          singleValue.textContent = this.settings.maxValuesMessage.replace(\"{number}\", selectedOptions.length.toString());\n          this.main.values.innerHTML = singleValue.outerHTML;\n          return;\n        } else {\n          const maxValuesMessage = this.main.values.querySelector(\".\" + this.classes.max);\n          if (maxValuesMessage) {\n            maxValuesMessage.remove();\n          }\n        }\n        if (this.settings.keepOrder) {\n          selectedOptions = this.store.selectedOrderOptions(selectedOptions);\n        }\n        let removeNodes = [];\n        for (let i3 = 0; i3 < currentNodes.length; i3++) {\n          const node = currentNodes[i3];\n          const id2 = node.getAttribute(\"data-id\");\n          if (id2) {\n            const found = selectedOptions.filter((opt) => {\n              return opt.id === id2;\n            }, false);\n            if (!found.length) {\n              removeNodes.push(node);\n            }\n          }\n        }\n        for (const n3 of removeNodes) {\n          n3.classList.add(this.classes.valueOut);\n          setTimeout(() => {\n            if (this.main.values.hasChildNodes() && this.main.values.contains(n3)) {\n              this.main.values.removeChild(n3);\n            }\n          }, 100);\n        }\n        currentNodes = this.main.values.childNodes;\n        for (let d2 = 0; d2 < selectedOptions.length; d2++) {\n          let shouldAdd = true;\n          for (let i3 = 0; i3 < currentNodes.length; i3++) {\n            if (selectedOptions[d2].id === String(currentNodes[i3].dataset.id)) {\n              shouldAdd = false;\n            }\n          }\n          if (shouldAdd) {\n            if (this.settings.keepOrder) {\n              this.main.values.appendChild(this.multipleValue(selectedOptions[d2]));\n            } else {\n              if (currentNodes.length === 0) {\n                this.main.values.appendChild(this.multipleValue(selectedOptions[d2]));\n              } else if (d2 === 0) {\n                this.main.values.insertBefore(this.multipleValue(selectedOptions[d2]), currentNodes[d2]);\n              } else {\n                currentNodes[d2 - 1].insertAdjacentElement(\"afterend\", this.multipleValue(selectedOptions[d2]));\n              }\n            }\n          }\n        }\n      }\n      multipleValue(option) {\n        const value = document.createElement(\"div\");\n        value.classList.add(this.classes.value);\n        value.dataset.id = option.id;\n        const text2 = document.createElement(\"div\");\n        text2.classList.add(this.classes.valueText);\n        text2.textContent = option.text;\n        value.appendChild(text2);\n        if (!option.mandatory) {\n          const deleteDiv = document.createElement(\"div\");\n          deleteDiv.classList.add(this.classes.valueDelete);\n          deleteDiv.onclick = (e2) => {\n            e2.preventDefault();\n            e2.stopPropagation();\n            if (this.settings.disabled) {\n              return;\n            }\n            let shouldDelete = true;\n            const before = this.store.getSelectedOptions();\n            const after = before.filter((o2) => {\n              return o2.selected && o2.id !== option.id;\n            }, true);\n            if (this.settings.minSelected && after.length < this.settings.minSelected) {\n              return;\n            }\n            if (this.callbacks.beforeChange) {\n              shouldDelete = this.callbacks.beforeChange(after, before) === true;\n            }\n            if (shouldDelete) {\n              let selectedIds = [];\n              for (const o2 of after) {\n                if (o2 instanceof Optgroup) {\n                  for (const c2 of o2.options) {\n                    selectedIds.push(c2.id);\n                  }\n                }\n                if (o2 instanceof Option) {\n                  selectedIds.push(o2.id);\n                }\n              }\n              this.callbacks.setSelected(selectedIds, false);\n              if (this.settings.closeOnSelect) {\n                this.callbacks.close();\n              }\n              if (this.callbacks.afterChange) {\n                this.callbacks.afterChange(after);\n              }\n              this.updateDeselectAll();\n            }\n          };\n          const deleteSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n          deleteSvg.setAttribute(\"viewBox\", \"0 0 100 100\");\n          const deletePath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n          deletePath.setAttribute(\"d\", this.classes.optionDelete);\n          deleteSvg.appendChild(deletePath);\n          deleteDiv.appendChild(deleteSvg);\n          value.appendChild(deleteDiv);\n        }\n        return value;\n      }\n      contentDiv() {\n        const main = document.createElement(\"div\");\n        main.dataset.id = this.settings.id;\n        const search = this.searchDiv();\n        main.appendChild(search.main);\n        const list2 = this.listDiv();\n        main.appendChild(list2);\n        return {\n          main,\n          search,\n          list: list2\n        };\n      }\n      moveContent() {\n        if (this.settings.contentPosition === \"relative\") {\n          this.moveContentBelow();\n          return;\n        }\n        if (this.settings.openPosition === \"down\") {\n          this.moveContentBelow();\n          return;\n        } else if (this.settings.openPosition === \"up\") {\n          this.moveContentAbove();\n          return;\n        }\n        if (this.putContent() === \"up\") {\n          this.moveContentAbove();\n        } else {\n          this.moveContentBelow();\n        }\n      }\n      searchDiv() {\n        const main = document.createElement(\"div\");\n        const input = document.createElement(\"input\");\n        const addable = document.createElement(\"div\");\n        main.classList.add(this.classes.search);\n        const searchReturn = {\n          main,\n          input\n        };\n        if (!this.settings.showSearch) {\n          main.classList.add(this.classes.hide);\n          input.readOnly = true;\n        }\n        input.type = \"search\";\n        input.placeholder = this.settings.searchPlaceholder;\n        input.tabIndex = -1;\n        input.setAttribute(\"aria-label\", this.settings.searchPlaceholder);\n        input.setAttribute(\"autocapitalize\", \"off\");\n        input.setAttribute(\"autocomplete\", \"off\");\n        input.setAttribute(\"autocorrect\", \"off\");\n        input.oninput = debounce((e2) => {\n          this.callbacks.search(e2.target.value);\n        }, 100);\n        input.onkeydown = (e2) => {\n          switch (e2.key) {\n            case \"ArrowUp\":\n            case \"ArrowDown\":\n              e2.key === \"ArrowDown\" ? this.highlight(\"down\") : this.highlight(\"up\");\n              return false;\n            case \"Tab\":\n              this.callbacks.close();\n              return true;\n            case \"Escape\":\n              this.callbacks.close();\n              return false;\n            case \" \":\n              const highlighted = this.content.list.querySelector(\".\" + this.classes.highlighted);\n              if (highlighted) {\n                highlighted.click();\n                return false;\n              }\n              return true;\n            case \"Enter\":\n              if (this.callbacks.addable) {\n                addable.click();\n                return false;\n              } else {\n                const highlighted2 = this.content.list.querySelector(\".\" + this.classes.highlighted);\n                if (highlighted2) {\n                  highlighted2.click();\n                  return false;\n                }\n              }\n              return true;\n          }\n          return true;\n        };\n        main.appendChild(input);\n        if (this.callbacks.addable) {\n          addable.classList.add(this.classes.addable);\n          const plus = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n          plus.setAttribute(\"viewBox\", \"0 0 100 100\");\n          const plusPath = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n          plusPath.setAttribute(\"d\", this.classes.addablePath);\n          plus.appendChild(plusPath);\n          addable.appendChild(plus);\n          addable.onclick = (e2) => {\n            e2.preventDefault();\n            e2.stopPropagation();\n            if (!this.callbacks.addable) {\n              return;\n            }\n            const inputValue = this.content.search.input.value.trim();\n            if (inputValue === \"\") {\n              this.content.search.input.focus();\n              return;\n            }\n            const runFinish = (oo) => {\n              let newOption = new Option(oo);\n              this.callbacks.addOption(newOption);\n              if (this.settings.isMultiple) {\n                let ids = this.store.getSelected();\n                ids.push(newOption.id);\n                this.callbacks.setSelected(ids, true);\n              } else {\n                this.callbacks.setSelected([newOption.id], true);\n              }\n              this.callbacks.search(\"\");\n              if (this.settings.closeOnSelect) {\n                setTimeout(() => {\n                  this.callbacks.close();\n                }, 100);\n              }\n            };\n            const addableValue = this.callbacks.addable(inputValue);\n            if (addableValue === false || addableValue === void 0 || addableValue === null) {\n              return;\n            }\n            if (addableValue instanceof Promise) {\n              addableValue.then((value) => {\n                if (typeof value === \"string\") {\n                  runFinish({\n                    text: value,\n                    value\n                  });\n                } else if (addableValue instanceof Error) {\n                  this.renderError(addableValue.message);\n                } else {\n                  runFinish(value);\n                }\n              });\n            } else if (typeof addableValue === \"string\") {\n              runFinish({\n                text: addableValue,\n                value: addableValue\n              });\n            } else if (addableValue instanceof Error) {\n              this.renderError(addableValue.message);\n            } else {\n              runFinish(addableValue);\n            }\n            return;\n          };\n          main.appendChild(addable);\n          searchReturn.addable = {\n            main: addable,\n            svg: plus,\n            path: plusPath\n          };\n        }\n        return searchReturn;\n      }\n      searchFocus() {\n        this.content.search.input.focus();\n      }\n      getOptions(notPlaceholder = false, notDisabled = false, notHidden = false) {\n        let query = \".\" + this.classes.option;\n        if (notPlaceholder) {\n          query += \":not(.\" + this.classes.placeholder + \")\";\n        }\n        if (notDisabled) {\n          query += \":not(.\" + this.classes.disabled + \")\";\n        }\n        if (notHidden) {\n          query += \":not(.\" + this.classes.hide + \")\";\n        }\n        return Array.from(this.content.list.querySelectorAll(query));\n      }\n      highlight(dir) {\n        const options = this.getOptions(true, true, true);\n        if (options.length === 0) {\n          return;\n        }\n        if (options.length === 1) {\n          if (!options[0].classList.contains(this.classes.highlighted)) {\n            options[0].classList.add(this.classes.highlighted);\n            return;\n          }\n        }\n        let highlighted = false;\n        for (const o2 of options) {\n          if (o2.classList.contains(this.classes.highlighted)) {\n            highlighted = true;\n          }\n        }\n        if (!highlighted) {\n          for (const o2 of options) {\n            if (o2.classList.contains(this.classes.selected)) {\n              o2.classList.add(this.classes.highlighted);\n              break;\n            }\n          }\n        }\n        for (let i3 = 0; i3 < options.length; i3++) {\n          if (options[i3].classList.contains(this.classes.highlighted)) {\n            const prevOption = options[i3];\n            prevOption.classList.remove(this.classes.highlighted);\n            const prevParent = prevOption.parentElement;\n            if (prevParent && prevParent.classList.contains(this.classes.open)) {\n              const optgroupLabel = prevParent.querySelector(\".\" + this.classes.optgroupLabel);\n              if (optgroupLabel) {\n                optgroupLabel.click();\n              }\n            }\n            let selectOption = options[dir === \"down\" ? i3 + 1 < options.length ? i3 + 1 : 0 : i3 - 1 >= 0 ? i3 - 1 : options.length - 1];\n            selectOption.classList.add(this.classes.highlighted);\n            this.ensureElementInView(this.content.list, selectOption);\n            const selectParent = selectOption.parentElement;\n            if (selectParent && selectParent.classList.contains(this.classes.close)) {\n              const optgroupLabel = selectParent.querySelector(\".\" + this.classes.optgroupLabel);\n              if (optgroupLabel) {\n                optgroupLabel.click();\n              }\n            }\n            return;\n          }\n        }\n        options[dir === \"down\" ? 0 : options.length - 1].classList.add(this.classes.highlighted);\n        this.ensureElementInView(this.content.list, options[dir === \"down\" ? 0 : options.length - 1]);\n      }\n      listDiv() {\n        const options = document.createElement(\"div\");\n        options.classList.add(this.classes.list);\n        return options;\n      }\n      renderError(error2) {\n        this.content.list.innerHTML = \"\";\n        const errorDiv = document.createElement(\"div\");\n        errorDiv.classList.add(this.classes.error);\n        errorDiv.textContent = error2;\n        this.content.list.appendChild(errorDiv);\n      }\n      renderSearching() {\n        this.content.list.innerHTML = \"\";\n        const searchingDiv = document.createElement(\"div\");\n        searchingDiv.classList.add(this.classes.searching);\n        searchingDiv.textContent = this.settings.searchingText;\n        this.content.list.appendChild(searchingDiv);\n      }\n      renderOptions(data) {\n        this.content.list.innerHTML = \"\";\n        if (data.length === 0) {\n          const noResults = document.createElement(\"div\");\n          noResults.classList.add(this.classes.search);\n          if (this.callbacks.addable) {\n            noResults.innerHTML = this.settings.addableText.replace(\"{value}\", this.content.search.input.value);\n          } else {\n            noResults.innerHTML = this.settings.searchText;\n          }\n          this.content.list.appendChild(noResults);\n          return;\n        }\n        if (this.settings.allowDeselect && !this.settings.isMultiple) {\n          const placeholderOption = this.store.filter((o2) => o2.placeholder, false);\n          if (!placeholderOption.length) {\n            this.store.addOption(new Option({\n              text: \"\",\n              value: \"\",\n              selected: false,\n              placeholder: true\n            }), true);\n          }\n        }\n        for (const d2 of data) {\n          if (d2 instanceof Optgroup) {\n            const optgroupEl = document.createElement(\"div\");\n            optgroupEl.classList.add(this.classes.optgroup);\n            const optgroupLabel = document.createElement(\"div\");\n            optgroupLabel.classList.add(this.classes.optgroupLabel);\n            optgroupEl.appendChild(optgroupLabel);\n            const optgroupLabelText = document.createElement(\"div\");\n            optgroupLabelText.classList.add(this.classes.optgroupLabelText);\n            optgroupLabelText.textContent = d2.label;\n            optgroupLabel.appendChild(optgroupLabelText);\n            const optgroupActions = document.createElement(\"div\");\n            optgroupActions.classList.add(this.classes.optgroupActions);\n            optgroupLabel.appendChild(optgroupActions);\n            if (this.settings.isMultiple && d2.selectAll) {\n              const selectAll = document.createElement(\"div\");\n              selectAll.classList.add(this.classes.optgroupSelectAll);\n              let allSelected = true;\n              for (const o2 of d2.options) {\n                if (!o2.selected) {\n                  allSelected = false;\n                  break;\n                }\n              }\n              if (allSelected) {\n                selectAll.classList.add(this.classes.selected);\n              }\n              const selectAllText = document.createElement(\"span\");\n              selectAllText.textContent = d2.selectAllText;\n              selectAll.appendChild(selectAllText);\n              const selectAllSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n              selectAllSvg.setAttribute(\"viewBox\", \"0 0 100 100\");\n              selectAll.appendChild(selectAllSvg);\n              const selectAllBox = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n              selectAllBox.setAttribute(\"d\", this.classes.optgroupSelectAllBox);\n              selectAllSvg.appendChild(selectAllBox);\n              const selectAllCheck = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n              selectAllCheck.setAttribute(\"d\", this.classes.optgroupSelectAllCheck);\n              selectAllSvg.appendChild(selectAllCheck);\n              selectAll.addEventListener(\"click\", (e2) => {\n                e2.preventDefault();\n                e2.stopPropagation();\n                const currentSelected = this.store.getSelected();\n                if (allSelected) {\n                  const newSelected = currentSelected.filter((s2) => {\n                    for (const o2 of d2.options) {\n                      if (s2 === o2.id) {\n                        return false;\n                      }\n                    }\n                    return true;\n                  });\n                  this.callbacks.setSelected(newSelected, true);\n                  return;\n                } else {\n                  const newSelected = currentSelected.concat(d2.options.map((o2) => o2.id));\n                  for (const o2 of d2.options) {\n                    if (!this.store.getOptionByID(o2.id)) {\n                      this.callbacks.addOption(o2);\n                    }\n                  }\n                  this.callbacks.setSelected(newSelected, true);\n                  return;\n                }\n              });\n              optgroupActions.appendChild(selectAll);\n            }\n            if (d2.closable !== \"off\") {\n              const optgroupClosable = document.createElement(\"div\");\n              optgroupClosable.classList.add(this.classes.optgroupClosable);\n              const optgroupClosableSvg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n              optgroupClosableSvg.setAttribute(\"viewBox\", \"0 0 100 100\");\n              optgroupClosableSvg.classList.add(this.classes.arrow);\n              optgroupClosable.appendChild(optgroupClosableSvg);\n              const optgroupClosableArrow = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n              optgroupClosableSvg.appendChild(optgroupClosableArrow);\n              if (d2.options.some((o2) => o2.selected) || this.content.search.input.value.trim() !== \"\") {\n                optgroupClosable.classList.add(this.classes.open);\n                optgroupClosableArrow.setAttribute(\"d\", this.classes.arrowOpen);\n              } else if (d2.closable === \"open\") {\n                optgroupEl.classList.add(this.classes.open);\n                optgroupClosableArrow.setAttribute(\"d\", this.classes.arrowOpen);\n              } else if (d2.closable === \"close\") {\n                optgroupEl.classList.add(this.classes.close);\n                optgroupClosableArrow.setAttribute(\"d\", this.classes.arrowClose);\n              }\n              optgroupLabel.addEventListener(\"click\", (e2) => {\n                e2.preventDefault();\n                e2.stopPropagation();\n                if (optgroupEl.classList.contains(this.classes.close)) {\n                  optgroupEl.classList.remove(this.classes.close);\n                  optgroupEl.classList.add(this.classes.open);\n                  optgroupClosableArrow.setAttribute(\"d\", this.classes.arrowOpen);\n                } else {\n                  optgroupEl.classList.remove(this.classes.open);\n                  optgroupEl.classList.add(this.classes.close);\n                  optgroupClosableArrow.setAttribute(\"d\", this.classes.arrowClose);\n                }\n              });\n              optgroupActions.appendChild(optgroupClosable);\n            }\n            optgroupEl.appendChild(optgroupLabel);\n            for (const o2 of d2.options) {\n              optgroupEl.appendChild(this.option(o2));\n            }\n            this.content.list.appendChild(optgroupEl);\n          }\n          if (d2 instanceof Option) {\n            this.content.list.appendChild(this.option(d2));\n          }\n        }\n      }\n      option(option) {\n        if (option.placeholder) {\n          const placeholder = document.createElement(\"div\");\n          placeholder.classList.add(this.classes.option);\n          placeholder.classList.add(this.classes.hide);\n          return placeholder;\n        }\n        const optionEl = document.createElement(\"div\");\n        optionEl.dataset.id = option.id;\n        optionEl.classList.add(this.classes.option);\n        optionEl.setAttribute(\"role\", \"option\");\n        if (option.class) {\n          option.class.split(\" \").forEach((dataClass) => {\n            optionEl.classList.add(dataClass);\n          });\n        }\n        if (option.style) {\n          optionEl.style.cssText = option.style;\n        }\n        if (this.settings.searchHighlight && this.content.search.input.value.trim() !== \"\") {\n          optionEl.innerHTML = this.highlightText(option.html !== \"\" ? option.html : option.text, this.content.search.input.value, this.classes.searchHighlighter);\n        } else if (option.html !== \"\") {\n          optionEl.innerHTML = option.html;\n        } else {\n          optionEl.textContent = option.text;\n        }\n        if (this.settings.showOptionTooltips && optionEl.textContent) {\n          optionEl.setAttribute(\"title\", optionEl.textContent);\n        }\n        if (!option.display) {\n          optionEl.classList.add(this.classes.hide);\n        }\n        if (option.disabled) {\n          optionEl.classList.add(this.classes.disabled);\n        }\n        if (option.selected && this.settings.hideSelected) {\n          optionEl.classList.add(this.classes.hide);\n        }\n        if (option.selected) {\n          optionEl.classList.add(this.classes.selected);\n          optionEl.setAttribute(\"aria-selected\", \"true\");\n          this.main.main.setAttribute(\"aria-activedescendant\", optionEl.id);\n        } else {\n          optionEl.classList.remove(this.classes.selected);\n          optionEl.setAttribute(\"aria-selected\", \"false\");\n        }\n        optionEl.addEventListener(\"click\", (e2) => {\n          e2.preventDefault();\n          e2.stopPropagation();\n          const selectedOptions = this.store.getSelected();\n          const element = e2.currentTarget;\n          const elementID = String(element.dataset.id);\n          if (option.disabled || option.selected && !this.settings.allowDeselect) {\n            return;\n          }\n          if (this.settings.isMultiple && this.settings.maxSelected <= selectedOptions.length && !option.selected || this.settings.isMultiple && this.settings.minSelected >= selectedOptions.length && option.selected) {\n            return;\n          }\n          let shouldUpdate = false;\n          const before = this.store.getSelectedOptions();\n          let after = [];\n          if (this.settings.isMultiple) {\n            if (option.selected) {\n              after = before.filter((o2) => o2.id !== elementID);\n            } else {\n              after = before.concat(option);\n            }\n          }\n          if (!this.settings.isMultiple) {\n            if (option.selected) {\n              after = [];\n            } else {\n              after = [option];\n            }\n          }\n          if (!this.callbacks.beforeChange) {\n            shouldUpdate = true;\n          }\n          if (this.callbacks.beforeChange) {\n            if (this.callbacks.beforeChange(after, before) === false) {\n              shouldUpdate = false;\n            } else {\n              shouldUpdate = true;\n            }\n          }\n          if (shouldUpdate) {\n            if (!this.store.getOptionByID(elementID)) {\n              this.callbacks.addOption(option);\n            }\n            this.callbacks.setSelected(after.map((o2) => o2.id), false);\n            if (this.settings.closeOnSelect) {\n              this.callbacks.close();\n            }\n            if (this.callbacks.afterChange) {\n              this.callbacks.afterChange(after);\n            }\n          }\n        });\n        return optionEl;\n      }\n      destroy() {\n        this.main.main.remove();\n        this.content.main.remove();\n      }\n      highlightText(str, search, className) {\n        let completedString = str;\n        const regex2 = new RegExp(\"(?![^<]*>)(\" + search.trim() + \")(?![^<]*>[^<>]*</)\", \"i\");\n        if (!str.match(regex2)) {\n          return str;\n        }\n        const matchStartPosition = str.match(regex2).index;\n        const matchEndPosition = matchStartPosition + str.match(regex2)[0].toString().length;\n        const originalTextFoundByRegex = str.substring(matchStartPosition, matchEndPosition);\n        completedString = completedString.replace(regex2, `<mark class=\"${className}\">${originalTextFoundByRegex}</mark>`);\n        return completedString;\n      }\n      moveContentAbove() {\n        const mainHeight = this.main.main.offsetHeight;\n        const contentHeight = this.content.main.offsetHeight;\n        this.main.main.classList.remove(this.classes.openBelow);\n        this.main.main.classList.add(this.classes.openAbove);\n        this.content.main.classList.remove(this.classes.openBelow);\n        this.content.main.classList.add(this.classes.openAbove);\n        const containerRect = this.main.main.getBoundingClientRect();\n        this.content.main.style.margin = \"-\" + (mainHeight + contentHeight - 1) + \"px 0px 0px 0px\";\n        this.content.main.style.top = containerRect.top + containerRect.height + (this.settings.contentPosition === \"fixed\" ? 0 : window.scrollY) + \"px\";\n        this.content.main.style.left = containerRect.left + (this.settings.contentPosition === \"fixed\" ? 0 : window.scrollX) + \"px\";\n        this.content.main.style.width = containerRect.width + \"px\";\n      }\n      moveContentBelow() {\n        this.main.main.classList.remove(this.classes.openAbove);\n        this.main.main.classList.add(this.classes.openBelow);\n        this.content.main.classList.remove(this.classes.openAbove);\n        this.content.main.classList.add(this.classes.openBelow);\n        const containerRect = this.main.main.getBoundingClientRect();\n        this.content.main.style.margin = \"-1px 0px 0px 0px\";\n        if (this.settings.contentPosition !== \"relative\") {\n          this.content.main.style.top = containerRect.top + containerRect.height + (this.settings.contentPosition === \"fixed\" ? 0 : window.scrollY) + \"px\";\n          this.content.main.style.left = containerRect.left + (this.settings.contentPosition === \"fixed\" ? 0 : window.scrollX) + \"px\";\n          this.content.main.style.width = containerRect.width + \"px\";\n        }\n      }\n      ensureElementInView(container, element) {\n        const cTop = container.scrollTop + container.offsetTop;\n        const cBottom = cTop + container.clientHeight;\n        const eTop = element.offsetTop;\n        const eBottom = eTop + element.clientHeight;\n        if (eTop < cTop) {\n          container.scrollTop -= cTop - eTop;\n        } else if (eBottom > cBottom) {\n          container.scrollTop += eBottom - cBottom;\n        }\n      }\n      putContent() {\n        const mainHeight = this.main.main.offsetHeight;\n        const mainRect = this.main.main.getBoundingClientRect();\n        const contentHeight = this.content.main.offsetHeight;\n        const spaceBelow = window.innerHeight - (mainRect.top + mainHeight);\n        if (spaceBelow <= contentHeight) {\n          if (mainRect.top > contentHeight) {\n            return \"up\";\n          } else {\n            return \"down\";\n          }\n        }\n        return \"down\";\n      }\n      updateDeselectAll() {\n        if (!this.store || !this.settings) {\n          return;\n        }\n        const selected = this.store.getSelectedOptions();\n        const hasSelectedItems = selected && selected.length > 0;\n        const isMultiple = this.settings.isMultiple;\n        const allowDeselect = this.settings.allowDeselect;\n        const deselectButton = this.main.deselect.main;\n        const hideClass = this.classes.hide;\n        if (allowDeselect && !(isMultiple && !hasSelectedItems)) {\n          deselectButton.classList.remove(hideClass);\n        } else {\n          deselectButton.classList.add(hideClass);\n        }\n      }\n    }\n    class Select {\n      constructor(select) {\n        this.listen = false;\n        this.observer = null;\n        this.select = select;\n        this.valueChange = this.valueChange.bind(this);\n        this.select.addEventListener(\"change\", this.valueChange, {\n          passive: true\n        });\n        this.observer = new MutationObserver(this.observeCall.bind(this));\n        this.changeListen(true);\n      }\n      enable() {\n        this.select.disabled = false;\n      }\n      disable() {\n        this.select.disabled = true;\n      }\n      hideUI() {\n        this.select.tabIndex = -1;\n        this.select.style.display = \"none\";\n        this.select.setAttribute(\"aria-hidden\", \"true\");\n      }\n      showUI() {\n        this.select.removeAttribute(\"tabindex\");\n        this.select.style.display = \"\";\n        this.select.removeAttribute(\"aria-hidden\");\n      }\n      changeListen(listen) {\n        this.listen = listen;\n        if (listen) {\n          if (this.observer) {\n            this.observer.observe(this.select, {\n              subtree: true,\n              childList: true,\n              attributes: true\n            });\n          }\n        }\n        if (!listen) {\n          if (this.observer) {\n            this.observer.disconnect();\n          }\n        }\n      }\n      valueChange(ev) {\n        if (this.listen && this.onValueChange) {\n          this.onValueChange(this.getSelectedOptions());\n        }\n        return true;\n      }\n      observeCall(mutations) {\n        if (!this.listen) {\n          return;\n        }\n        let classChanged = false;\n        let disabledChanged = false;\n        let optgroupOptionChanged = false;\n        for (const m2 of mutations) {\n          if (m2.target === this.select) {\n            if (m2.attributeName === \"disabled\") {\n              disabledChanged = true;\n            }\n            if (m2.attributeName === \"class\") {\n              classChanged = true;\n            }\n            if (m2.type === \"childList\") {\n              for (const n3 of m2.addedNodes) {\n                if (n3.nodeName === \"OPTION\" && n3.value === this.select.value) {\n                  this.select.dispatchEvent(new Event(\"change\"));\n                  break;\n                }\n              }\n              optgroupOptionChanged = true;\n            }\n          }\n          if (m2.target.nodeName === \"OPTGROUP\" || m2.target.nodeName === \"OPTION\") {\n            optgroupOptionChanged = true;\n          }\n        }\n        if (classChanged && this.onClassChange) {\n          this.onClassChange(this.select.className.split(\" \"));\n        }\n        if (disabledChanged && this.onDisabledChange) {\n          this.changeListen(false);\n          this.onDisabledChange(this.select.disabled);\n          this.changeListen(true);\n        }\n        if (optgroupOptionChanged && this.onOptionsChange) {\n          this.changeListen(false);\n          this.onOptionsChange(this.getData());\n          this.changeListen(true);\n        }\n      }\n      getData() {\n        let data = [];\n        const nodes = this.select.childNodes;\n        for (const n3 of nodes) {\n          if (n3.nodeName === \"OPTGROUP\") {\n            data.push(this.getDataFromOptgroup(n3));\n          }\n          if (n3.nodeName === \"OPTION\") {\n            data.push(this.getDataFromOption(n3));\n          }\n        }\n        return data;\n      }\n      getDataFromOptgroup(optgroup) {\n        let data = {\n          id: optgroup.id,\n          label: optgroup.label,\n          selectAll: optgroup.dataset ? optgroup.dataset.selectall === \"true\" : false,\n          selectAllText: optgroup.dataset ? optgroup.dataset.selectalltext : \"Select all\",\n          closable: optgroup.dataset ? optgroup.dataset.closable : \"off\",\n          options: []\n        };\n        const options = optgroup.childNodes;\n        for (const o2 of options) {\n          if (o2.nodeName === \"OPTION\") {\n            data.options.push(this.getDataFromOption(o2));\n          }\n        }\n        return data;\n      }\n      getDataFromOption(option) {\n        return {\n          id: option.id,\n          value: option.value,\n          text: option.text,\n          html: option.dataset && option.dataset.html ? option.dataset.html : \"\",\n          selected: option.selected,\n          display: option.style.display !== \"none\",\n          disabled: option.disabled,\n          mandatory: option.dataset ? option.dataset.mandatory === \"true\" : false,\n          placeholder: option.dataset.placeholder === \"true\",\n          class: option.className,\n          style: option.style.cssText,\n          data: option.dataset\n        };\n      }\n      getSelectedOptions() {\n        let options = [];\n        const opts = this.select.childNodes;\n        for (const o2 of opts) {\n          if (o2.nodeName === \"OPTGROUP\") {\n            const optgroupOptions = o2.childNodes;\n            for (const oo of optgroupOptions) {\n              if (oo.nodeName === \"OPTION\") {\n                const option = oo;\n                if (option.selected) {\n                  options.push(this.getDataFromOption(option));\n                }\n              }\n            }\n          }\n          if (o2.nodeName === \"OPTION\") {\n            const option = o2;\n            if (option.selected) {\n              options.push(this.getDataFromOption(option));\n            }\n          }\n        }\n        return options;\n      }\n      getSelectedValues() {\n        return this.getSelectedOptions().map((option) => option.value);\n      }\n      setSelected(ids) {\n        this.changeListen(false);\n        const options = this.select.childNodes;\n        for (const o2 of options) {\n          if (o2.nodeName === \"OPTGROUP\") {\n            const optgroup = o2;\n            const optgroupOptions = optgroup.childNodes;\n            for (const oo of optgroupOptions) {\n              if (oo.nodeName === \"OPTION\") {\n                const option = oo;\n                option.selected = ids.includes(option.id);\n              }\n            }\n          }\n          if (o2.nodeName === \"OPTION\") {\n            const option = o2;\n            option.selected = ids.includes(option.id);\n          }\n        }\n        this.changeListen(true);\n      }\n      setSelectedByValue(values) {\n        this.changeListen(false);\n        const options = this.select.childNodes;\n        for (const o2 of options) {\n          if (o2.nodeName === \"OPTGROUP\") {\n            const optgroup = o2;\n            const optgroupOptions = optgroup.childNodes;\n            for (const oo of optgroupOptions) {\n              if (oo.nodeName === \"OPTION\") {\n                const option = oo;\n                option.selected = values.includes(option.value);\n              }\n            }\n          }\n          if (o2.nodeName === \"OPTION\") {\n            const option = o2;\n            option.selected = values.includes(option.value);\n          }\n        }\n        this.changeListen(true);\n      }\n      updateSelect(id2, style, classes) {\n        this.changeListen(false);\n        if (id2) {\n          this.select.dataset.id = id2;\n        }\n        if (style) {\n          this.select.style.cssText = style;\n        }\n        if (classes) {\n          this.select.className = \"\";\n          classes.forEach((c2) => {\n            if (c2.trim() !== \"\") {\n              this.select.classList.add(c2.trim());\n            }\n          });\n        }\n        this.changeListen(true);\n      }\n      updateOptions(data) {\n        this.changeListen(false);\n        this.select.innerHTML = \"\";\n        for (const d2 of data) {\n          if (d2 instanceof Optgroup) {\n            this.select.appendChild(this.createOptgroup(d2));\n          }\n          if (d2 instanceof Option) {\n            this.select.appendChild(this.createOption(d2));\n          }\n        }\n        this.select.dispatchEvent(new Event(\"change\", { bubbles: true }));\n        this.changeListen(true);\n      }\n      createOptgroup(optgroup) {\n        const optgroupEl = document.createElement(\"optgroup\");\n        optgroupEl.id = optgroup.id;\n        optgroupEl.label = optgroup.label;\n        if (optgroup.selectAll) {\n          optgroupEl.dataset.selectAll = \"true\";\n        }\n        if (optgroup.closable !== \"off\") {\n          optgroupEl.dataset.closable = optgroup.closable;\n        }\n        if (optgroup.options) {\n          for (const o2 of optgroup.options) {\n            optgroupEl.appendChild(this.createOption(o2));\n          }\n        }\n        return optgroupEl;\n      }\n      createOption(info) {\n        const optionEl = document.createElement(\"option\");\n        optionEl.id = info.id;\n        optionEl.value = info.value;\n        optionEl.textContent = info.text;\n        if (info.html !== \"\") {\n          optionEl.setAttribute(\"data-html\", info.html);\n        }\n        if (info.selected) {\n          optionEl.selected = info.selected;\n        }\n        if (info.disabled) {\n          optionEl.disabled = true;\n        }\n        if (!info.display) {\n          optionEl.style.display = \"none\";\n        }\n        if (info.placeholder) {\n          optionEl.setAttribute(\"data-placeholder\", \"true\");\n        }\n        if (info.mandatory) {\n          optionEl.setAttribute(\"data-mandatory\", \"true\");\n        }\n        if (info.class) {\n          info.class.split(\" \").forEach((optionClass) => {\n            optionEl.classList.add(optionClass);\n          });\n        }\n        if (info.data && typeof info.data === \"object\") {\n          Object.keys(info.data).forEach((key) => {\n            optionEl.setAttribute(\"data-\" + kebabCase(key), info.data[key]);\n          });\n        }\n        return optionEl;\n      }\n      destroy() {\n        this.changeListen(false);\n        this.select.removeEventListener(\"change\", this.valueChange);\n        if (this.observer) {\n          this.observer.disconnect();\n          this.observer = null;\n        }\n        delete this.select.dataset.id;\n        this.showUI();\n      }\n    }\n    class Settings {\n      constructor(settings) {\n        this.id = \"\";\n        this.style = \"\";\n        this.class = [];\n        this.isMultiple = false;\n        this.isOpen = false;\n        this.isFullOpen = false;\n        this.intervalMove = null;\n        if (!settings) {\n          settings = {};\n        }\n        this.id = \"ss-\" + generateID();\n        this.style = settings.style || \"\";\n        this.class = settings.class || [];\n        this.disabled = settings.disabled !== void 0 ? settings.disabled : false;\n        this.alwaysOpen = settings.alwaysOpen !== void 0 ? settings.alwaysOpen : false;\n        this.showSearch = settings.showSearch !== void 0 ? settings.showSearch : true;\n        this.focusSearch = settings.focusSearch !== void 0 ? settings.focusSearch : true;\n        this.ariaLabel = settings.ariaLabel || \"Combobox\";\n        this.searchPlaceholder = settings.searchPlaceholder || \"Search\";\n        this.searchText = settings.searchText || \"No Results\";\n        this.searchingText = settings.searchingText || \"Searching...\";\n        this.searchHighlight = settings.searchHighlight !== void 0 ? settings.searchHighlight : false;\n        this.closeOnSelect = settings.closeOnSelect !== void 0 ? settings.closeOnSelect : true;\n        this.contentLocation = settings.contentLocation || document.body;\n        this.contentPosition = settings.contentPosition || \"absolute\";\n        this.openPosition = settings.openPosition || \"auto\";\n        this.placeholderText = settings.placeholderText !== void 0 ? settings.placeholderText : \"Select Value\";\n        this.allowDeselect = settings.allowDeselect !== void 0 ? settings.allowDeselect : false;\n        this.hideSelected = settings.hideSelected !== void 0 ? settings.hideSelected : false;\n        this.keepOrder = settings.keepOrder !== void 0 ? settings.keepOrder : false;\n        this.showOptionTooltips = settings.showOptionTooltips !== void 0 ? settings.showOptionTooltips : false;\n        this.minSelected = settings.minSelected || 0;\n        this.maxSelected = settings.maxSelected || 1e3;\n        this.timeoutDelay = settings.timeoutDelay || 200;\n        this.maxValuesShown = settings.maxValuesShown || 20;\n        this.maxValuesMessage = settings.maxValuesMessage || \"{number} selected\";\n        this.addableText = settings.addableText || 'Press \"Enter\" to add {value}';\n      }\n    }\n    class SlimSelect2 {\n      constructor(config2) {\n        var _a3;\n        this.events = {\n          search: void 0,\n          searchFilter: (opt, search) => {\n            return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;\n          },\n          addable: void 0,\n          beforeChange: void 0,\n          afterChange: void 0,\n          beforeOpen: void 0,\n          afterOpen: void 0,\n          beforeClose: void 0,\n          afterClose: void 0\n        };\n        this.windowResize = debounce(() => {\n          if (!this.settings.isOpen && !this.settings.isFullOpen) {\n            return;\n          }\n          this.render.moveContent();\n        });\n        this.windowScroll = debounce(() => {\n          if (!this.settings.isOpen && !this.settings.isFullOpen) {\n            return;\n          }\n          this.render.moveContent();\n        });\n        this.documentClick = (e2) => {\n          if (!this.settings.isOpen) {\n            return;\n          }\n          if (e2.target && !hasClassInTree(e2.target, this.settings.id)) {\n            this.close(e2.type);\n          }\n        };\n        this.windowVisibilityChange = () => {\n          if (document.hidden) {\n            this.close();\n          }\n        };\n        this.selectEl = typeof config2.select === \"string\" ? document.querySelector(config2.select) : config2.select;\n        if (!this.selectEl) {\n          if (config2.events && config2.events.error) {\n            config2.events.error(new Error(\"Could not find select element\"));\n          }\n          return;\n        }\n        if (this.selectEl.tagName !== \"SELECT\") {\n          if (config2.events && config2.events.error) {\n            config2.events.error(new Error(\"Element isnt of type select\"));\n          }\n          return;\n        }\n        if (this.selectEl.dataset.ssid) {\n          this.destroy();\n        }\n        this.settings = new Settings(config2.settings);\n        this.cssClasses = new CssClasses(config2.cssClasses);\n        const debounceEvents = [\"afterChange\", \"beforeOpen\", \"afterOpen\", \"beforeClose\", \"afterClose\"];\n        for (const key in config2.events) {\n          if (!config2.events.hasOwnProperty(key)) {\n            continue;\n          }\n          if (debounceEvents.indexOf(key) !== -1) {\n            this.events[key] = debounce(config2.events[key], 100);\n          } else {\n            this.events[key] = config2.events[key];\n          }\n        }\n        this.settings.disabled = ((_a3 = config2.settings) === null || _a3 === void 0 ? void 0 : _a3.disabled) ? config2.settings.disabled : this.selectEl.disabled;\n        this.settings.isMultiple = this.selectEl.multiple;\n        this.settings.style = this.selectEl.style.cssText;\n        this.settings.class = this.selectEl.className.split(\" \");\n        this.select = new Select(this.selectEl);\n        this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class);\n        this.select.hideUI();\n        this.select.onValueChange = (options) => {\n          this.setSelected(options.map((option) => option.id));\n        };\n        this.select.onClassChange = (classes) => {\n          this.settings.class = classes;\n          this.render.updateClassStyles();\n        };\n        this.select.onDisabledChange = (disabled) => {\n          if (disabled) {\n            this.disable();\n          } else {\n            this.enable();\n          }\n        };\n        this.select.onOptionsChange = (data) => {\n          this.setData(data);\n        };\n        this.store = new Store2(this.settings.isMultiple ? \"multiple\" : \"single\", config2.data ? config2.data : this.select.getData());\n        if (config2.data) {\n          this.select.updateOptions(this.store.getData());\n        }\n        const renderCallbacks = {\n          open: this.open.bind(this),\n          close: this.close.bind(this),\n          addable: this.events.addable ? this.events.addable : void 0,\n          setSelected: this.setSelected.bind(this),\n          addOption: this.addOption.bind(this),\n          search: this.search.bind(this),\n          beforeChange: this.events.beforeChange,\n          afterChange: this.events.afterChange\n        };\n        this.render = new Render(this.settings, this.cssClasses, this.store, renderCallbacks);\n        this.render.renderValues();\n        this.render.renderOptions(this.store.getData());\n        const selectAriaLabel = this.selectEl.getAttribute(\"aria-label\");\n        const selectAriaLabelledBy = this.selectEl.getAttribute(\"aria-labelledby\");\n        if (selectAriaLabel) {\n          this.render.main.main.setAttribute(\"aria-label\", selectAriaLabel);\n        } else if (selectAriaLabelledBy) {\n          this.render.main.main.setAttribute(\"aria-labelledby\", selectAriaLabelledBy);\n        }\n        if (this.selectEl.parentNode) {\n          this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);\n        }\n        window.addEventListener(\"resize\", this.windowResize, false);\n        if (this.settings.openPosition === \"auto\") {\n          window.addEventListener(\"scroll\", this.windowScroll, false);\n        }\n        document.addEventListener(\"visibilitychange\", this.windowVisibilityChange);\n        if (this.settings.disabled) {\n          this.disable();\n        }\n        if (this.settings.alwaysOpen) {\n          this.open();\n        }\n        this.selectEl.slim = this;\n      }\n      enable() {\n        this.settings.disabled = false;\n        this.select.enable();\n        this.render.enable();\n      }\n      disable() {\n        this.settings.disabled = true;\n        this.select.disable();\n        this.render.disable();\n      }\n      getData() {\n        return this.store.getData();\n      }\n      setData(data) {\n        const selected = this.store.getSelected();\n        const err = this.store.validateDataArray(data);\n        if (err) {\n          if (this.events.error) {\n            this.events.error(err);\n          }\n          return;\n        }\n        this.store.setData(data);\n        const dataClean = this.store.getData();\n        this.select.updateOptions(dataClean);\n        this.render.renderValues();\n        this.render.renderOptions(dataClean);\n        if (this.events.afterChange && !isEqual2(selected, this.store.getSelected())) {\n          this.events.afterChange(this.store.getSelectedOptions());\n        }\n      }\n      getSelected() {\n        let options = this.store.getSelectedOptions();\n        if (this.settings.keepOrder) {\n          options = this.store.selectedOrderOptions(options);\n        }\n        return options.map((option) => option.value);\n      }\n      setSelected(values, runAfterChange = true) {\n        const selected = this.store.getSelected();\n        const options = this.store.getDataOptions();\n        values = Array.isArray(values) ? values : [values];\n        const ids = [];\n        for (const value of values) {\n          if (options.find((option) => option.id == value)) {\n            ids.push(value);\n            continue;\n          }\n          for (const option of options.filter((option2) => option2.value == value)) {\n            ids.push(option.id);\n          }\n        }\n        this.store.setSelectedBy(\"id\", ids);\n        const data = this.store.getData();\n        this.select.updateOptions(data);\n        this.render.renderValues();\n        if (this.render.content.search.input.value !== \"\") {\n          this.search(this.render.content.search.input.value);\n        } else {\n          this.render.renderOptions(data);\n        }\n        if (runAfterChange && this.events.afterChange && !isEqual2(selected, this.store.getSelected())) {\n          this.events.afterChange(this.store.getSelectedOptions());\n        }\n      }\n      addOption(option) {\n        const selected = this.store.getSelected();\n        if (!this.store.getDataOptions().some((o2) => {\n          var _a3;\n          return o2.value === ((_a3 = option.value) !== null && _a3 !== void 0 ? _a3 : option.text);\n        })) {\n          this.store.addOption(option);\n        }\n        const data = this.store.getData();\n        this.select.updateOptions(data);\n        this.render.renderValues();\n        this.render.renderOptions(data);\n        if (this.events.afterChange && !isEqual2(selected, this.store.getSelected())) {\n          this.events.afterChange(this.store.getSelectedOptions());\n        }\n      }\n      open() {\n        if (this.settings.disabled || this.settings.isOpen) {\n          return;\n        }\n        if (this.events.beforeOpen) {\n          this.events.beforeOpen();\n        }\n        this.render.open();\n        if (this.settings.showSearch && this.settings.focusSearch) {\n          this.render.searchFocus();\n        }\n        this.settings.isOpen = true;\n        setTimeout(() => {\n          if (this.events.afterOpen) {\n            this.events.afterOpen();\n          }\n          if (this.settings.isOpen) {\n            this.settings.isFullOpen = true;\n          }\n          document.addEventListener(\"click\", this.documentClick);\n        }, this.settings.timeoutDelay);\n        if (this.settings.contentPosition === \"absolute\") {\n          if (this.settings.intervalMove) {\n            clearInterval(this.settings.intervalMove);\n          }\n          this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);\n        }\n      }\n      close(eventType = null) {\n        if (!this.settings.isOpen || this.settings.alwaysOpen) {\n          return;\n        }\n        if (this.events.beforeClose) {\n          this.events.beforeClose();\n        }\n        this.render.close();\n        if (this.render.content.search.input.value !== \"\") {\n          this.search(\"\");\n        }\n        this.render.mainFocus(eventType);\n        this.settings.isOpen = false;\n        this.settings.isFullOpen = false;\n        setTimeout(() => {\n          if (this.events.afterClose) {\n            this.events.afterClose();\n          }\n          document.removeEventListener(\"click\", this.documentClick);\n        }, this.settings.timeoutDelay);\n        if (this.settings.intervalMove) {\n          clearInterval(this.settings.intervalMove);\n        }\n      }\n      search(value) {\n        if (this.render.content.search.input.value !== value) {\n          this.render.content.search.input.value = value;\n        }\n        if (!this.events.search) {\n          this.render.renderOptions(value === \"\" ? this.store.getData() : this.store.search(value, this.events.searchFilter));\n          return;\n        }\n        this.render.renderSearching();\n        const searchResp = this.events.search(value, this.store.getSelectedOptions());\n        if (searchResp instanceof Promise) {\n          searchResp.then((data) => {\n            this.render.renderOptions(this.store.partialToFullData(data));\n          }).catch((err) => {\n            this.render.renderError(typeof err === \"string\" ? err : err.message);\n          });\n          return;\n        } else if (Array.isArray(searchResp)) {\n          this.render.renderOptions(this.store.partialToFullData(searchResp));\n        } else {\n          this.render.renderError(\"Search event must return a promise or an array of data\");\n        }\n      }\n      destroy() {\n        document.removeEventListener(\"click\", this.documentClick);\n        window.removeEventListener(\"resize\", this.windowResize, false);\n        if (this.settings.openPosition === \"auto\") {\n          window.removeEventListener(\"scroll\", this.windowScroll, false);\n        }\n        document.removeEventListener(\"visibilitychange\", this.windowVisibilityChange);\n        this.store.setData([]);\n        this.render.destroy();\n        this.select.destroy();\n      }\n    }\n    return SlimSelect2;\n  });\n})(slimselect);\nvar slimselectExports = slimselect.exports;\nconst SlimSelect = /* @__PURE__ */ getDefaultExportFromCjs(slimselectExports);\nconst AutocompletionMixin = {\n  name: \"autocompletion-mixin\",\n  use: [TranslationMixin],\n  attributes: {\n    searchText: {\n      type: String,\n      default: null,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"searchText\");\n      }\n    },\n    searchPlaceholder: {\n      type: String,\n      default: null,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"searchPlaceholder\");\n      }\n    }\n  },\n  initialState: {\n    slimSelect: null,\n    mutationObserver: null\n  },\n  created() {\n    importInlineCSS(\n      \"slimselect-base\",\n      () => import(\"./slimselect-CT2Oyr_0.js\")\n    );\n    importInlineCSS(\n      \"slimselect-local\",\n      () => import(\"./slimselect-Bx1deYT1.js\")\n    );\n    this.slimSelect = null;\n    this.addToAttributes(true, \"autocomplete\");\n    this.listCallbacks.attach(\n      this.addCallback.bind(this),\n      \"AutocompletionMixin:addCallback\"\n    );\n  },\n  detached() {\n    if (this.slimSelect) this.slimSelect.destroy();\n    if (this.mutationObserver) this.mutationObserver.disconnect();\n  },\n  addCallback(value, listCallbacks) {\n    if (this.slimSelect) return;\n    asyncQuerySelector(\"select:has(option)\", this.element).then((select) => {\n      this.initSlimSelect(select);\n    });\n    const nextProcessor = listCallbacks.shift();\n    if (nextProcessor) nextProcessor(value, listCallbacks);\n  },\n  async initSlimSelect(select) {\n    await new Promise((resolve2) => setTimeout(resolve2, 500));\n    const slimSelect = new SlimSelect({\n      select,\n      settings: {\n        contentPosition: \"fixed\",\n        placeholderText: this.placeholder || this.t(\"autocompletion.placeholder\"),\n        searchText: this.searchText || this.t(\"autocompletion.searchText\"),\n        searchPlaceholder: this.searchPlaceholder || this.t(\"autocompletion.searchPlaceholder\"),\n        contentLocation: this.element\n      },\n      events: {\n        searchFilter: (option, filterValue) => fuzzyCompare(option.text, filterValue)\n      }\n    });\n    this.slimSelect = slimSelect;\n    this.element.addEventListener(\"input\", (e2) => {\n      if (e2.target !== this.element) {\n        e2.stopPropagation();\n      }\n    });\n  }\n};\nconst decodeCache = {};\nfunction getDecodeCache(exclude) {\n  let cache = decodeCache[exclude];\n  if (cache) {\n    return cache;\n  }\n  cache = decodeCache[exclude] = [];\n  for (let i3 = 0; i3 < 128; i3++) {\n    const ch = String.fromCharCode(i3);\n    cache.push(ch);\n  }\n  for (let i3 = 0; i3 < exclude.length; i3++) {\n    const ch = exclude.charCodeAt(i3);\n    cache[ch] = \"%\" + (\"0\" + ch.toString(16).toUpperCase()).slice(-2);\n  }\n  return cache;\n}\nfunction decode$1(string, exclude) {\n  if (typeof exclude !== \"string\") {\n    exclude = decode$1.defaultChars;\n  }\n  const cache = getDecodeCache(exclude);\n  return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n    let result = \"\";\n    for (let i3 = 0, l2 = seq.length; i3 < l2; i3 += 3) {\n      const b1 = parseInt(seq.slice(i3 + 1, i3 + 3), 16);\n      if (b1 < 128) {\n        result += cache[b1];\n        continue;\n      }\n      if ((b1 & 224) === 192 && i3 + 3 < l2) {\n        const b2 = parseInt(seq.slice(i3 + 4, i3 + 6), 16);\n        if ((b2 & 192) === 128) {\n          const chr = b1 << 6 & 1984 | b2 & 63;\n          if (chr < 128) {\n            result += \"��\";\n          } else {\n            result += String.fromCharCode(chr);\n          }\n          i3 += 3;\n          continue;\n        }\n      }\n      if ((b1 & 240) === 224 && i3 + 6 < l2) {\n        const b2 = parseInt(seq.slice(i3 + 4, i3 + 6), 16);\n        const b3 = parseInt(seq.slice(i3 + 7, i3 + 9), 16);\n        if ((b2 & 192) === 128 && (b3 & 192) === 128) {\n          const chr = b1 << 12 & 61440 | b2 << 6 & 4032 | b3 & 63;\n          if (chr < 2048 || chr >= 55296 && chr <= 57343) {\n            result += \"���\";\n          } else {\n            result += String.fromCharCode(chr);\n          }\n          i3 += 6;\n          continue;\n        }\n      }\n      if ((b1 & 248) === 240 && i3 + 9 < l2) {\n        const b2 = parseInt(seq.slice(i3 + 4, i3 + 6), 16);\n        const b3 = parseInt(seq.slice(i3 + 7, i3 + 9), 16);\n        const b4 = parseInt(seq.slice(i3 + 10, i3 + 12), 16);\n        if ((b2 & 192) === 128 && (b3 & 192) === 128 && (b4 & 192) === 128) {\n          let chr = b1 << 18 & 1835008 | b2 << 12 & 258048 | b3 << 6 & 4032 | b4 & 63;\n          if (chr < 65536 || chr > 1114111) {\n            result += \"����\";\n          } else {\n            chr -= 65536;\n            result += String.fromCharCode(55296 + (chr >> 10), 56320 + (chr & 1023));\n          }\n          i3 += 9;\n          continue;\n        }\n      }\n      result += \"�\";\n    }\n    return result;\n  });\n}\ndecode$1.defaultChars = \";/?:@&=+$,#\";\ndecode$1.componentChars = \"\";\nconst encodeCache = {};\nfunction getEncodeCache(exclude) {\n  let cache = encodeCache[exclude];\n  if (cache) {\n    return cache;\n  }\n  cache = encodeCache[exclude] = [];\n  for (let i3 = 0; i3 < 128; i3++) {\n    const ch = String.fromCharCode(i3);\n    if (/^[0-9a-z]$/i.test(ch)) {\n      cache.push(ch);\n    } else {\n      cache.push(\"%\" + (\"0\" + i3.toString(16).toUpperCase()).slice(-2));\n    }\n  }\n  for (let i3 = 0; i3 < exclude.length; i3++) {\n    cache[exclude.charCodeAt(i3)] = exclude[i3];\n  }\n  return cache;\n}\nfunction encode$1(string, exclude, keepEscaped) {\n  if (typeof exclude !== \"string\") {\n    keepEscaped = exclude;\n    exclude = encode$1.defaultChars;\n  }\n  if (typeof keepEscaped === \"undefined\") {\n    keepEscaped = true;\n  }\n  const cache = getEncodeCache(exclude);\n  let result = \"\";\n  for (let i3 = 0, l2 = string.length; i3 < l2; i3++) {\n    const code2 = string.charCodeAt(i3);\n    if (keepEscaped && code2 === 37 && i3 + 2 < l2) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i3 + 1, i3 + 3))) {\n        result += string.slice(i3, i3 + 3);\n        i3 += 2;\n        continue;\n      }\n    }\n    if (code2 < 128) {\n      result += cache[code2];\n      continue;\n    }\n    if (code2 >= 55296 && code2 <= 57343) {\n      if (code2 >= 55296 && code2 <= 56319 && i3 + 1 < l2) {\n        const nextCode = string.charCodeAt(i3 + 1);\n        if (nextCode >= 56320 && nextCode <= 57343) {\n          result += encodeURIComponent(string[i3] + string[i3 + 1]);\n          i3++;\n          continue;\n        }\n      }\n      result += \"%EF%BF%BD\";\n      continue;\n    }\n    result += encodeURIComponent(string[i3]);\n  }\n  return result;\n}\nencode$1.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode$1.componentChars = \"-_.!~*'()\";\nfunction format(url2) {\n  let result = \"\";\n  result += url2.protocol || \"\";\n  result += url2.slashes ? \"//\" : \"\";\n  result += url2.auth ? url2.auth + \"@\" : \"\";\n  if (url2.hostname && url2.hostname.indexOf(\":\") !== -1) {\n    result += \"[\" + url2.hostname + \"]\";\n  } else {\n    result += url2.hostname || \"\";\n  }\n  result += url2.port ? \":\" + url2.port : \"\";\n  result += url2.pathname || \"\";\n  result += url2.search || \"\";\n  result += url2.hash || \"\";\n  return result;\n}\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.pathname = null;\n}\nconst protocolPattern = /^([a-z0-9.+-]+:)/i;\nconst portPattern = /:[0-9]*$/;\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/;\nconst delims = [\"<\", \">\", '\"', \"`\", \" \", \"\\r\", \"\\n\", \"\t\"];\nconst unwise = [\"{\", \"}\", \"|\", \"\\\\\", \"^\", \"`\"].concat(delims);\nconst autoEscape = [\"'\"].concat(unwise);\nconst nonHostChars = [\"%\", \"/\", \"?\", \";\", \"#\"].concat(autoEscape);\nconst hostEndingChars = [\"/\", \"?\", \"#\"];\nconst hostnameMaxLen = 255;\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/;\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/;\nconst hostlessProtocol = {\n  javascript: true,\n  \"javascript:\": true\n};\nconst slashedProtocol = {\n  http: true,\n  https: true,\n  ftp: true,\n  gopher: true,\n  file: true,\n  \"http:\": true,\n  \"https:\": true,\n  \"ftp:\": true,\n  \"gopher:\": true,\n  \"file:\": true\n};\nfunction urlParse(url2, slashesDenoteHost) {\n  if (url2 && url2 instanceof Url) return url2;\n  const u2 = new Url();\n  u2.parse(url2, slashesDenoteHost);\n  return u2;\n}\nUrl.prototype.parse = function(url2, slashesDenoteHost) {\n  let lowerProto, hec, slashes;\n  let rest = url2;\n  rest = rest.trim();\n  if (!slashesDenoteHost && url2.split(\"#\").length === 1) {\n    const simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n      }\n      return this;\n    }\n  }\n  let proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    lowerProto = proto.toLowerCase();\n    this.protocol = proto;\n    rest = rest.substr(proto.length);\n  }\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    slashes = rest.substr(0, 2) === \"//\";\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n  if (!hostlessProtocol[proto] && (slashes || proto && !slashedProtocol[proto])) {\n    let hostEnd = -1;\n    for (let i3 = 0; i3 < hostEndingChars.length; i3++) {\n      hec = rest.indexOf(hostEndingChars[i3]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec;\n      }\n    }\n    let auth, atSign;\n    if (hostEnd === -1) {\n      atSign = rest.lastIndexOf(\"@\");\n    } else {\n      atSign = rest.lastIndexOf(\"@\", hostEnd);\n    }\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = auth;\n    }\n    hostEnd = -1;\n    for (let i3 = 0; i3 < nonHostChars.length; i3++) {\n      hec = rest.indexOf(nonHostChars[i3]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec;\n      }\n    }\n    if (hostEnd === -1) {\n      hostEnd = rest.length;\n    }\n    if (rest[hostEnd - 1] === \":\") {\n      hostEnd--;\n    }\n    const host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n    this.parseHost(host);\n    this.hostname = this.hostname || \"\";\n    const ipv6Hostname = this.hostname[0] === \"[\" && this.hostname[this.hostname.length - 1] === \"]\";\n    if (!ipv6Hostname) {\n      const hostparts = this.hostname.split(/\\./);\n      for (let i3 = 0, l2 = hostparts.length; i3 < l2; i3++) {\n        const part = hostparts[i3];\n        if (!part) {\n          continue;\n        }\n        if (!part.match(hostnamePartPattern)) {\n          let newpart = \"\";\n          for (let j2 = 0, k2 = part.length; j2 < k2; j2++) {\n            if (part.charCodeAt(j2) > 127) {\n              newpart += \"x\";\n            } else {\n              newpart += part[j2];\n            }\n          }\n          if (!newpart.match(hostnamePartPattern)) {\n            const validParts = hostparts.slice(0, i3);\n            const notHost = hostparts.slice(i3 + 1);\n            const bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = notHost.join(\".\") + rest;\n            }\n            this.hostname = validParts.join(\".\");\n            break;\n          }\n        }\n      }\n    }\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = \"\";\n    }\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n    }\n  }\n  const hash = rest.indexOf(\"#\");\n  if (hash !== -1) {\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  const qm = rest.indexOf(\"?\");\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    rest = rest.slice(0, qm);\n  }\n  if (rest) {\n    this.pathname = rest;\n  }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = \"\";\n  }\n  return this;\n};\nUrl.prototype.parseHost = function(host) {\n  let port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== \":\") {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) {\n    this.hostname = host;\n  }\n};\nconst mdurl = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  decode: decode$1,\n  encode: encode$1,\n  format,\n  parse: urlParse\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst Any = /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nconst Cc = /[\\0-\\x1F\\x7F-\\x9F]/;\nconst regex$1 = /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/;\nconst P = /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\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\\u1B7D\\u1B7E\\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-\\u2E5D\\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]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/;\nconst regex = /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/;\nconst Z = /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\nconst ucmicro = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Any,\n  Cc,\n  Cf: regex$1,\n  P,\n  S: regex,\n  Z\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst htmlDecodeTree = new Uint16Array(\n  // prettier-ignore\n  'ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\\0\\0\\0\\0\\0\\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\\\bfms¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTǇǋǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\\0\\0\\0͔͂\\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\\0\\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\\0\\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\\0ц\\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\\0\\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\\0\\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\\0ֿ\\0\\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\\0ࣃbleBracket;柦nǔࣈ\\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻\"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\\0စbleBracket;柧nǔည\\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\\0\\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉ǲኀ\\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\\0ጬጱ\\0\\0\\0\\0\\0ጸጽ፷ᎅ\\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻ǲᕔ\\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\\0ᖰᖶᖿ\\0\\0\\0\\0ᗆᗛᗫᙟ᙭\\0ᚕ᚛ᚲᚹ\\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\\0\\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\\0\\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\\0ᠳƲᠯ\\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\\0᧨ᨑᨕᨲ\\0ᨷᩐ\\0\\0᪴\\0\\0᫁\\0\\0ᬡᬮ᭍᭒\\0᯽\\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\\0\\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\\0\\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\\0\\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\\0\\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\\0\\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\\0\\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤĳạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\\0\\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\\0ᾞ\\0ᾡᾧ\\0\\0ῆῌ\\0ΐ\\0ῦῪ \\0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ﬃɩᾹ\\0\\0᾽g;耀ﬀig;耀ﬄ;쀀𝔣lig;耀ﬁlig;쀀fjƀaltῙ῜ῡt;晭ig;耀ﬂns;斱of;䆒ǰ΅\\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒α‚‰‸⁅⁈\\0⁐β•‥‧‪‬\\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\\0‶;慔;慖ʴ‾⁁\\0\\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\\0⊪\\0⊸⋅⋎\\0⋕⋳\\0\\0⋸⌢⍧⍢⍿\\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\\0⒪\\0⒱\\0\\0\\0\\0\\0⒵Ⓔ\\0ⓆⓈⓍ\\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସǳ⧟\\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\\0\\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0ⴭ\\0ⴸⵈⵠⵥ⵲ⶄᬇ\\0\\0ⶍⶫ\\0ⷈⷎ\\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗǈⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\\0\\0⵼\\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\\0⹽\\0⺀⺝\\0⺢⺹\\0\\0⻋ຜ\\0⼓\\0\\0⼫⾼\\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\\0\\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\\0㍺㎤\\0\\0㏬㏰\\0㐨㑈㑚㒭㒱㓊㓱\\0㘖\\0\\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\\0\\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\\0㙾㛂\\0\\0\\0\\0\\0㛛㜃\\0㜉㝬\\0\\0\\0㞇ɲ㙖\\0\\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼ǲ㚋\\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\\0\\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\\0\\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\\0㪋\\0㪐㪛\\0\\0㪝㪨㪫㪯\\0\\0㫃㫎\\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split(\"\").map((c2) => c2.charCodeAt(0))\n);\nconst xmlDecodeTree = new Uint16Array(\n  // prettier-ignore\n  \"Ȁaglq\t\u0015\u0018\\x1Bɭ\u000f\\0\\0\u0012p;䀦os;䀧t;䀾t;䀼uot;䀢\".split(\"\").map((c2) => c2.charCodeAt(0))\n);\nvar _a;\nconst decodeMap = /* @__PURE__ */ new Map([\n  [0, 65533],\n  // C1 Unicode control character reference replacements\n  [128, 8364],\n  [130, 8218],\n  [131, 402],\n  [132, 8222],\n  [133, 8230],\n  [134, 8224],\n  [135, 8225],\n  [136, 710],\n  [137, 8240],\n  [138, 352],\n  [139, 8249],\n  [140, 338],\n  [142, 381],\n  [145, 8216],\n  [146, 8217],\n  [147, 8220],\n  [148, 8221],\n  [149, 8226],\n  [150, 8211],\n  [151, 8212],\n  [152, 732],\n  [153, 8482],\n  [154, 353],\n  [155, 8250],\n  [156, 339],\n  [158, 382],\n  [159, 376]\n]);\nconst fromCodePoint$1 = (\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins\n  (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n      codePoint -= 65536;\n      output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296);\n      codePoint = 56320 | codePoint & 1023;\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n  }\n);\nfunction replaceCodePoint(codePoint) {\n  var _a3;\n  if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {\n    return 65533;\n  }\n  return (_a3 = decodeMap.get(codePoint)) !== null && _a3 !== void 0 ? _a3 : codePoint;\n}\nvar CharCodes;\n(function(CharCodes2) {\n  CharCodes2[CharCodes2[\"NUM\"] = 35] = \"NUM\";\n  CharCodes2[CharCodes2[\"SEMI\"] = 59] = \"SEMI\";\n  CharCodes2[CharCodes2[\"EQUALS\"] = 61] = \"EQUALS\";\n  CharCodes2[CharCodes2[\"ZERO\"] = 48] = \"ZERO\";\n  CharCodes2[CharCodes2[\"NINE\"] = 57] = \"NINE\";\n  CharCodes2[CharCodes2[\"LOWER_A\"] = 97] = \"LOWER_A\";\n  CharCodes2[CharCodes2[\"LOWER_F\"] = 102] = \"LOWER_F\";\n  CharCodes2[CharCodes2[\"LOWER_X\"] = 120] = \"LOWER_X\";\n  CharCodes2[CharCodes2[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n  CharCodes2[CharCodes2[\"UPPER_A\"] = 65] = \"UPPER_A\";\n  CharCodes2[CharCodes2[\"UPPER_F\"] = 70] = \"UPPER_F\";\n  CharCodes2[CharCodes2[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\nconst TO_LOWER_BIT = 32;\nvar BinTrieFlags;\n(function(BinTrieFlags2) {\n  BinTrieFlags2[BinTrieFlags2[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n  BinTrieFlags2[BinTrieFlags2[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n  BinTrieFlags2[BinTrieFlags2[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code2) {\n  return code2 >= CharCodes.ZERO && code2 <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code2) {\n  return code2 >= CharCodes.UPPER_A && code2 <= CharCodes.UPPER_F || code2 >= CharCodes.LOWER_A && code2 <= CharCodes.LOWER_F;\n}\nfunction isAsciiAlphaNumeric(code2) {\n  return code2 >= CharCodes.UPPER_A && code2 <= CharCodes.UPPER_Z || code2 >= CharCodes.LOWER_A && code2 <= CharCodes.LOWER_Z || isNumber(code2);\n}\nfunction isEntityInAttributeInvalidEnd(code2) {\n  return code2 === CharCodes.EQUALS || isAsciiAlphaNumeric(code2);\n}\nvar EntityDecoderState;\n(function(EntityDecoderState2) {\n  EntityDecoderState2[EntityDecoderState2[\"EntityStart\"] = 0] = \"EntityStart\";\n  EntityDecoderState2[EntityDecoderState2[\"NumericStart\"] = 1] = \"NumericStart\";\n  EntityDecoderState2[EntityDecoderState2[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n  EntityDecoderState2[EntityDecoderState2[\"NumericHex\"] = 3] = \"NumericHex\";\n  EntityDecoderState2[EntityDecoderState2[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nvar DecodingMode;\n(function(DecodingMode2) {\n  DecodingMode2[DecodingMode2[\"Legacy\"] = 0] = \"Legacy\";\n  DecodingMode2[DecodingMode2[\"Strict\"] = 1] = \"Strict\";\n  DecodingMode2[DecodingMode2[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\nclass EntityDecoder {\n  constructor(decodeTree, emitCodePoint, errors2) {\n    this.decodeTree = decodeTree;\n    this.emitCodePoint = emitCodePoint;\n    this.errors = errors2;\n    this.state = EntityDecoderState.EntityStart;\n    this.consumed = 1;\n    this.result = 0;\n    this.treeIndex = 0;\n    this.excess = 1;\n    this.decodeMode = DecodingMode.Strict;\n  }\n  /** Resets the instance to make it reusable. */\n  startEntity(decodeMode) {\n    this.decodeMode = decodeMode;\n    this.state = EntityDecoderState.EntityStart;\n    this.result = 0;\n    this.treeIndex = 0;\n    this.excess = 1;\n    this.consumed = 1;\n  }\n  /**\n   * Write an entity to the decoder. This can be called multiple times with partial entities.\n   * If the entity is incomplete, the decoder will return -1.\n   *\n   * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n   * entity is incomplete, and resume when the next string is written.\n   *\n   * @param string The string containing the entity (or a continuation of the entity).\n   * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n   */\n  write(str, offset) {\n    switch (this.state) {\n      case EntityDecoderState.EntityStart: {\n        if (str.charCodeAt(offset) === CharCodes.NUM) {\n          this.state = EntityDecoderState.NumericStart;\n          this.consumed += 1;\n          return this.stateNumericStart(str, offset + 1);\n        }\n        this.state = EntityDecoderState.NamedEntity;\n        return this.stateNamedEntity(str, offset);\n      }\n      case EntityDecoderState.NumericStart: {\n        return this.stateNumericStart(str, offset);\n      }\n      case EntityDecoderState.NumericDecimal: {\n        return this.stateNumericDecimal(str, offset);\n      }\n      case EntityDecoderState.NumericHex: {\n        return this.stateNumericHex(str, offset);\n      }\n      case EntityDecoderState.NamedEntity: {\n        return this.stateNamedEntity(str, offset);\n      }\n    }\n  }\n  /**\n   * Switches between the numeric decimal and hexadecimal states.\n   *\n   * Equivalent to the `Numeric character reference state` in the HTML spec.\n   *\n   * @param str The string containing the entity (or a continuation of the entity).\n   * @param offset The current offset.\n   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n   */\n  stateNumericStart(str, offset) {\n    if (offset >= str.length) {\n      return -1;\n    }\n    if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n      this.state = EntityDecoderState.NumericHex;\n      this.consumed += 1;\n      return this.stateNumericHex(str, offset + 1);\n    }\n    this.state = EntityDecoderState.NumericDecimal;\n    return this.stateNumericDecimal(str, offset);\n  }\n  addToNumericResult(str, start, end, base2) {\n    if (start !== end) {\n      const digitCount = end - start;\n      this.result = this.result * Math.pow(base2, digitCount) + parseInt(str.substr(start, digitCount), base2);\n      this.consumed += digitCount;\n    }\n  }\n  /**\n   * Parses a hexadecimal numeric entity.\n   *\n   * Equivalent to the `Hexademical character reference state` in the HTML spec.\n   *\n   * @param str The string containing the entity (or a continuation of the entity).\n   * @param offset The current offset.\n   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n   */\n  stateNumericHex(str, offset) {\n    const startIdx = offset;\n    while (offset < str.length) {\n      const char = str.charCodeAt(offset);\n      if (isNumber(char) || isHexadecimalCharacter(char)) {\n        offset += 1;\n      } else {\n        this.addToNumericResult(str, startIdx, offset, 16);\n        return this.emitNumericEntity(char, 3);\n      }\n    }\n    this.addToNumericResult(str, startIdx, offset, 16);\n    return -1;\n  }\n  /**\n   * Parses a decimal numeric entity.\n   *\n   * Equivalent to the `Decimal character reference state` in the HTML spec.\n   *\n   * @param str The string containing the entity (or a continuation of the entity).\n   * @param offset The current offset.\n   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n   */\n  stateNumericDecimal(str, offset) {\n    const startIdx = offset;\n    while (offset < str.length) {\n      const char = str.charCodeAt(offset);\n      if (isNumber(char)) {\n        offset += 1;\n      } else {\n        this.addToNumericResult(str, startIdx, offset, 10);\n        return this.emitNumericEntity(char, 2);\n      }\n    }\n    this.addToNumericResult(str, startIdx, offset, 10);\n    return -1;\n  }\n  /**\n   * Validate and emit a numeric entity.\n   *\n   * Implements the logic from the `Hexademical character reference start\n   * state` and `Numeric character reference end state` in the HTML spec.\n   *\n   * @param lastCp The last code point of the entity. Used to see if the\n   *               entity was terminated with a semicolon.\n   * @param expectedLength The minimum number of characters that should be\n   *                       consumed. Used to validate that at least one digit\n   *                       was consumed.\n   * @returns The number of characters that were consumed.\n   */\n  emitNumericEntity(lastCp, expectedLength) {\n    var _a3;\n    if (this.consumed <= expectedLength) {\n      (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);\n      return 0;\n    }\n    if (lastCp === CharCodes.SEMI) {\n      this.consumed += 1;\n    } else if (this.decodeMode === DecodingMode.Strict) {\n      return 0;\n    }\n    this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n    if (this.errors) {\n      if (lastCp !== CharCodes.SEMI) {\n        this.errors.missingSemicolonAfterCharacterReference();\n      }\n      this.errors.validateNumericCharacterReference(this.result);\n    }\n    return this.consumed;\n  }\n  /**\n   * Parses a named entity.\n   *\n   * Equivalent to the `Named character reference state` in the HTML spec.\n   *\n   * @param str The string containing the entity (or a continuation of the entity).\n   * @param offset The current offset.\n   * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n   */\n  stateNamedEntity(str, offset) {\n    const { decodeTree } = this;\n    let current = decodeTree[this.treeIndex];\n    let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n    for (; offset < str.length; offset++, this.excess++) {\n      const char = str.charCodeAt(offset);\n      this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n      if (this.treeIndex < 0) {\n        return this.result === 0 || // If we are parsing an attribute\n        this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity,\n        (valueLength === 0 || // And there should be no invalid characters.\n        isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity();\n      }\n      current = decodeTree[this.treeIndex];\n      valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n      if (valueLength !== 0) {\n        if (char === CharCodes.SEMI) {\n          return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n        }\n        if (this.decodeMode !== DecodingMode.Strict) {\n          this.result = this.treeIndex;\n          this.consumed += this.excess;\n          this.excess = 0;\n        }\n      }\n    }\n    return -1;\n  }\n  /**\n   * Emit a named entity that was not terminated with a semicolon.\n   *\n   * @returns The number of characters consumed.\n   */\n  emitNotTerminatedNamedEntity() {\n    var _a3;\n    const { result, decodeTree } = this;\n    const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n    this.emitNamedEntityData(result, valueLength, this.consumed);\n    (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.missingSemicolonAfterCharacterReference();\n    return this.consumed;\n  }\n  /**\n   * Emit a named entity.\n   *\n   * @param result The index of the entity in the decode tree.\n   * @param valueLength The number of bytes in the entity.\n   * @param consumed The number of characters consumed.\n   *\n   * @returns The number of characters consumed.\n   */\n  emitNamedEntityData(result, valueLength, consumed2) {\n    const { decodeTree } = this;\n    this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed2);\n    if (valueLength === 3) {\n      this.emitCodePoint(decodeTree[result + 2], consumed2);\n    }\n    return consumed2;\n  }\n  /**\n   * Signal to the parser that the end of the input was reached.\n   *\n   * Remaining data will be emitted and relevant errors will be produced.\n   *\n   * @returns The number of characters consumed.\n   */\n  end() {\n    var _a3;\n    switch (this.state) {\n      case EntityDecoderState.NamedEntity: {\n        return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;\n      }\n      case EntityDecoderState.NumericDecimal: {\n        return this.emitNumericEntity(0, 2);\n      }\n      case EntityDecoderState.NumericHex: {\n        return this.emitNumericEntity(0, 3);\n      }\n      case EntityDecoderState.NumericStart: {\n        (_a3 = this.errors) === null || _a3 === void 0 ? void 0 : _a3.absenceOfDigitsInNumericCharacterReference(this.consumed);\n        return 0;\n      }\n      case EntityDecoderState.EntityStart: {\n        return 0;\n      }\n    }\n  }\n}\nfunction getDecoder(decodeTree) {\n  let ret = \"\";\n  const decoder = new EntityDecoder(decodeTree, (str) => ret += fromCodePoint$1(str));\n  return function decodeWithTrie(str, decodeMode) {\n    let lastIndex = 0;\n    let offset = 0;\n    while ((offset = str.indexOf(\"&\", offset)) >= 0) {\n      ret += str.slice(lastIndex, offset);\n      decoder.startEntity(decodeMode);\n      const len = decoder.write(\n        str,\n        // Skip the \"&\"\n        offset + 1\n      );\n      if (len < 0) {\n        lastIndex = offset + decoder.end();\n        break;\n      }\n      lastIndex = offset + len;\n      offset = len === 0 ? lastIndex + 1 : lastIndex;\n    }\n    const result = ret + str.slice(lastIndex);\n    ret = \"\";\n    return result;\n  };\n}\nfunction determineBranch(decodeTree, current, nodeIdx, char) {\n  const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n  const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n  if (branchCount === 0) {\n    return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;\n  }\n  if (jumpOffset) {\n    const value = char - jumpOffset;\n    return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1;\n  }\n  let lo = nodeIdx;\n  let hi = lo + branchCount - 1;\n  while (lo <= hi) {\n    const mid = lo + hi >>> 1;\n    const midVal = decodeTree[mid];\n    if (midVal < char) {\n      lo = mid + 1;\n    } else if (midVal > char) {\n      hi = mid - 1;\n    } else {\n      return decodeTree[mid + branchCount];\n    }\n  }\n  return -1;\n}\nconst htmlDecoder = getDecoder(htmlDecodeTree);\ngetDecoder(xmlDecodeTree);\nfunction decodeHTML(str, mode = DecodingMode.Legacy) {\n  return htmlDecoder(str, mode);\n}\nfunction _class$1(obj) {\n  return Object.prototype.toString.call(obj);\n}\nfunction isString$3(obj) {\n  return _class$1(obj) === \"[object String]\";\n}\nconst _hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction has(object, key) {\n  return _hasOwnProperty.call(object, key);\n}\nfunction assign$1(obj) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  sources.forEach(function(source) {\n    if (!source) {\n      return;\n    }\n    if (typeof source !== \"object\") {\n      throw new TypeError(source + \"must be object\");\n    }\n    Object.keys(source).forEach(function(key) {\n      obj[key] = source[key];\n    });\n  });\n  return obj;\n}\nfunction arrayReplaceAt(src, pos, newElements) {\n  return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1));\n}\nfunction isValidEntityCode(c2) {\n  if (c2 >= 55296 && c2 <= 57343) {\n    return false;\n  }\n  if (c2 >= 64976 && c2 <= 65007) {\n    return false;\n  }\n  if ((c2 & 65535) === 65535 || (c2 & 65535) === 65534) {\n    return false;\n  }\n  if (c2 >= 0 && c2 <= 8) {\n    return false;\n  }\n  if (c2 === 11) {\n    return false;\n  }\n  if (c2 >= 14 && c2 <= 31) {\n    return false;\n  }\n  if (c2 >= 127 && c2 <= 159) {\n    return false;\n  }\n  if (c2 > 1114111) {\n    return false;\n  }\n  return true;\n}\nfunction fromCodePoint(c2) {\n  if (c2 > 65535) {\n    c2 -= 65536;\n    const surrogate1 = 55296 + (c2 >> 10);\n    const surrogate2 = 56320 + (c2 & 1023);\n    return String.fromCharCode(surrogate1, surrogate2);\n  }\n  return String.fromCharCode(c2);\n}\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g;\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi;\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + \"|\" + ENTITY_RE.source, \"gi\");\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;\nfunction replaceEntityPattern(match3, name) {\n  if (name.charCodeAt(0) === 35 && DIGITAL_ENTITY_TEST_RE.test(name)) {\n    const code2 = name[1].toLowerCase() === \"x\" ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n    if (isValidEntityCode(code2)) {\n      return fromCodePoint(code2);\n    }\n    return match3;\n  }\n  const decoded = decodeHTML(match3);\n  if (decoded !== match3) {\n    return decoded;\n  }\n  return match3;\n}\nfunction unescapeMd(str) {\n  if (str.indexOf(\"\\\\\") < 0) {\n    return str;\n  }\n  return str.replace(UNESCAPE_MD_RE, \"$1\");\n}\nfunction unescapeAll(str) {\n  if (str.indexOf(\"\\\\\") < 0 && str.indexOf(\"&\") < 0) {\n    return str;\n  }\n  return str.replace(UNESCAPE_ALL_RE, function(match3, escaped, entity2) {\n    if (escaped) {\n      return escaped;\n    }\n    return replaceEntityPattern(match3, entity2);\n  });\n}\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/;\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g;\nconst HTML_REPLACEMENTS = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\"\n};\nfunction replaceUnsafeChar(ch) {\n  return HTML_REPLACEMENTS[ch];\n}\nfunction escapeHtml(str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar);\n  }\n  return str;\n}\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g;\nfunction escapeRE$1(str) {\n  return str.replace(REGEXP_ESCAPE_RE, \"\\\\$&\");\n}\nfunction isSpace(code2) {\n  switch (code2) {\n    case 9:\n    case 32:\n      return true;\n  }\n  return false;\n}\nfunction isWhiteSpace(code2) {\n  if (code2 >= 8192 && code2 <= 8202) {\n    return true;\n  }\n  switch (code2) {\n    case 9:\n    case 10:\n    case 11:\n    case 12:\n    case 13:\n    case 32:\n    case 160:\n    case 5760:\n    case 8239:\n    case 8287:\n    case 12288:\n      return true;\n  }\n  return false;\n}\nfunction isPunctChar(ch) {\n  return P.test(ch) || regex.test(ch);\n}\nfunction isMdAsciiPunct(ch) {\n  switch (ch) {\n    case 33:\n    case 34:\n    case 35:\n    case 36:\n    case 37:\n    case 38:\n    case 39:\n    case 40:\n    case 41:\n    case 42:\n    case 43:\n    case 44:\n    case 45:\n    case 46:\n    case 47:\n    case 58:\n    case 59:\n    case 60:\n    case 61:\n    case 62:\n    case 63:\n    case 64:\n    case 91:\n    case 92:\n    case 93:\n    case 94:\n    case 95:\n    case 96:\n    case 123:\n    case 124:\n    case 125:\n    case 126:\n      return true;\n    default:\n      return false;\n  }\n}\nfunction normalizeReference(str) {\n  str = str.trim().replace(/\\s+/g, \" \");\n  if (\"ẞ\".toLowerCase() === \"Ṿ\") {\n    str = str.replace(/ẞ/g, \"ß\");\n  }\n  return str.toLowerCase().toUpperCase();\n}\nconst lib = { mdurl, ucmicro };\nconst utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  arrayReplaceAt,\n  assign: assign$1,\n  escapeHtml,\n  escapeRE: escapeRE$1,\n  fromCodePoint,\n  has,\n  isMdAsciiPunct,\n  isPunctChar,\n  isSpace,\n  isString: isString$3,\n  isValidEntityCode,\n  isWhiteSpace,\n  lib,\n  normalizeReference,\n  unescapeAll,\n  unescapeMd\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction parseLinkLabel(state, start, disableNested) {\n  let level2, found, marker, prevPos;\n  const max = state.posMax;\n  const oldPos = state.pos;\n  state.pos = start + 1;\n  level2 = 1;\n  while (state.pos < max) {\n    marker = state.src.charCodeAt(state.pos);\n    if (marker === 93) {\n      level2--;\n      if (level2 === 0) {\n        found = true;\n        break;\n      }\n    }\n    prevPos = state.pos;\n    state.md.inline.skipToken(state);\n    if (marker === 91) {\n      if (prevPos === state.pos - 1) {\n        level2++;\n      } else if (disableNested) {\n        state.pos = oldPos;\n        return -1;\n      }\n    }\n  }\n  let labelEnd = -1;\n  if (found) {\n    labelEnd = state.pos;\n  }\n  state.pos = oldPos;\n  return labelEnd;\n}\nfunction parseLinkDestination(str, start, max) {\n  let code2;\n  let pos = start;\n  const result = {\n    ok: false,\n    pos: 0,\n    str: \"\"\n  };\n  if (str.charCodeAt(pos) === 60) {\n    pos++;\n    while (pos < max) {\n      code2 = str.charCodeAt(pos);\n      if (code2 === 10) {\n        return result;\n      }\n      if (code2 === 60) {\n        return result;\n      }\n      if (code2 === 62) {\n        result.pos = pos + 1;\n        result.str = unescapeAll(str.slice(start + 1, pos));\n        result.ok = true;\n        return result;\n      }\n      if (code2 === 92 && pos + 1 < max) {\n        pos += 2;\n        continue;\n      }\n      pos++;\n    }\n    return result;\n  }\n  let level2 = 0;\n  while (pos < max) {\n    code2 = str.charCodeAt(pos);\n    if (code2 === 32) {\n      break;\n    }\n    if (code2 < 32 || code2 === 127) {\n      break;\n    }\n    if (code2 === 92 && pos + 1 < max) {\n      if (str.charCodeAt(pos + 1) === 32) {\n        break;\n      }\n      pos += 2;\n      continue;\n    }\n    if (code2 === 40) {\n      level2++;\n      if (level2 > 32) {\n        return result;\n      }\n    }\n    if (code2 === 41) {\n      if (level2 === 0) {\n        break;\n      }\n      level2--;\n    }\n    pos++;\n  }\n  if (start === pos) {\n    return result;\n  }\n  if (level2 !== 0) {\n    return result;\n  }\n  result.str = unescapeAll(str.slice(start, pos));\n  result.pos = pos;\n  result.ok = true;\n  return result;\n}\nfunction parseLinkTitle(str, start, max, prev_state) {\n  let code2;\n  let pos = start;\n  const state = {\n    // if `true`, this is a valid link title\n    ok: false,\n    // if `true`, this link can be continued on the next line\n    can_continue: false,\n    // if `ok`, it's the position of the first character after the closing marker\n    pos: 0,\n    // if `ok`, it's the unescaped title\n    str: \"\",\n    // expected closing marker character code\n    marker: 0\n  };\n  if (prev_state) {\n    state.str = prev_state.str;\n    state.marker = prev_state.marker;\n  } else {\n    if (pos >= max) {\n      return state;\n    }\n    let marker = str.charCodeAt(pos);\n    if (marker !== 34 && marker !== 39 && marker !== 40) {\n      return state;\n    }\n    start++;\n    pos++;\n    if (marker === 40) {\n      marker = 41;\n    }\n    state.marker = marker;\n  }\n  while (pos < max) {\n    code2 = str.charCodeAt(pos);\n    if (code2 === state.marker) {\n      state.pos = pos + 1;\n      state.str += unescapeAll(str.slice(start, pos));\n      state.ok = true;\n      return state;\n    } else if (code2 === 40 && state.marker === 41) {\n      return state;\n    } else if (code2 === 92 && pos + 1 < max) {\n      pos++;\n    }\n    pos++;\n  }\n  state.can_continue = true;\n  state.str += unescapeAll(str.slice(start, pos));\n  return state;\n}\nconst helpers = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  parseLinkDestination,\n  parseLinkLabel,\n  parseLinkTitle\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst default_rules = {};\ndefault_rules.code_inline = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  return \"<code\" + slf.renderAttrs(token) + \">\" + escapeHtml(token.content) + \"</code>\";\n};\ndefault_rules.code_block = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  return \"<pre\" + slf.renderAttrs(token) + \"><code>\" + escapeHtml(tokens[idx].content) + \"</code></pre>\\n\";\n};\ndefault_rules.fence = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  const info = token.info ? unescapeAll(token.info).trim() : \"\";\n  let langName = \"\";\n  let langAttrs = \"\";\n  if (info) {\n    const arr = info.split(/(\\s+)/g);\n    langName = arr[0];\n    langAttrs = arr.slice(2).join(\"\");\n  }\n  let highlighted;\n  if (options.highlight) {\n    highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content);\n  } else {\n    highlighted = escapeHtml(token.content);\n  }\n  if (highlighted.indexOf(\"<pre\") === 0) {\n    return highlighted + \"\\n\";\n  }\n  if (info) {\n    const i3 = token.attrIndex(\"class\");\n    const tmpAttrs = token.attrs ? token.attrs.slice() : [];\n    if (i3 < 0) {\n      tmpAttrs.push([\"class\", options.langPrefix + langName]);\n    } else {\n      tmpAttrs[i3] = tmpAttrs[i3].slice();\n      tmpAttrs[i3][1] += \" \" + options.langPrefix + langName;\n    }\n    const tmpToken = {\n      attrs: tmpAttrs\n    };\n    return `<pre><code${slf.renderAttrs(tmpToken)}>${highlighted}</code></pre>\n`;\n  }\n  return `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>\n`;\n};\ndefault_rules.image = function(tokens, idx, options, env, slf) {\n  const token = tokens[idx];\n  token.attrs[token.attrIndex(\"alt\")][1] = slf.renderInlineAsText(token.children, options, env);\n  return slf.renderToken(tokens, idx, options);\n};\ndefault_rules.hardbreak = function(tokens, idx, options) {\n  return options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\";\n};\ndefault_rules.softbreak = function(tokens, idx, options) {\n  return options.breaks ? options.xhtmlOut ? \"<br />\\n\" : \"<br>\\n\" : \"\\n\";\n};\ndefault_rules.text = function(tokens, idx) {\n  return escapeHtml(tokens[idx].content);\n};\ndefault_rules.html_block = function(tokens, idx) {\n  return tokens[idx].content;\n};\ndefault_rules.html_inline = function(tokens, idx) {\n  return tokens[idx].content;\n};\nfunction Renderer() {\n  this.rules = assign$1({}, default_rules);\n}\nRenderer.prototype.renderAttrs = function renderAttrs(token) {\n  let i3, l2, result;\n  if (!token.attrs) {\n    return \"\";\n  }\n  result = \"\";\n  for (i3 = 0, l2 = token.attrs.length; i3 < l2; i3++) {\n    result += \" \" + escapeHtml(token.attrs[i3][0]) + '=\"' + escapeHtml(token.attrs[i3][1]) + '\"';\n  }\n  return result;\n};\nRenderer.prototype.renderToken = function renderToken(tokens, idx, options) {\n  const token = tokens[idx];\n  let result = \"\";\n  if (token.hidden) {\n    return \"\";\n  }\n  if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n    result += \"\\n\";\n  }\n  result += (token.nesting === -1 ? \"</\" : \"<\") + token.tag;\n  result += this.renderAttrs(token);\n  if (token.nesting === 0 && options.xhtmlOut) {\n    result += \" /\";\n  }\n  let needLf = false;\n  if (token.block) {\n    needLf = true;\n    if (token.nesting === 1) {\n      if (idx + 1 < tokens.length) {\n        const nextToken = tokens[idx + 1];\n        if (nextToken.type === \"inline\" || nextToken.hidden) {\n          needLf = false;\n        } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n          needLf = false;\n        }\n      }\n    }\n  }\n  result += needLf ? \">\\n\" : \">\";\n  return result;\n};\nRenderer.prototype.renderInline = function(tokens, options, env) {\n  let result = \"\";\n  const rules = this.rules;\n  for (let i3 = 0, len = tokens.length; i3 < len; i3++) {\n    const type = tokens[i3].type;\n    if (typeof rules[type] !== \"undefined\") {\n      result += rules[type](tokens, i3, options, env, this);\n    } else {\n      result += this.renderToken(tokens, i3, options);\n    }\n  }\n  return result;\n};\nRenderer.prototype.renderInlineAsText = function(tokens, options, env) {\n  let result = \"\";\n  for (let i3 = 0, len = tokens.length; i3 < len; i3++) {\n    switch (tokens[i3].type) {\n      case \"text\":\n        result += tokens[i3].content;\n        break;\n      case \"image\":\n        result += this.renderInlineAsText(tokens[i3].children, options, env);\n        break;\n      case \"html_inline\":\n      case \"html_block\":\n        result += tokens[i3].content;\n        break;\n      case \"softbreak\":\n      case \"hardbreak\":\n        result += \"\\n\";\n        break;\n    }\n  }\n  return result;\n};\nRenderer.prototype.render = function(tokens, options, env) {\n  let result = \"\";\n  const rules = this.rules;\n  for (let i3 = 0, len = tokens.length; i3 < len; i3++) {\n    const type = tokens[i3].type;\n    if (type === \"inline\") {\n      result += this.renderInline(tokens[i3].children, options, env);\n    } else if (typeof rules[type] !== \"undefined\") {\n      result += rules[type](tokens, i3, options, env, this);\n    } else {\n      result += this.renderToken(tokens, i3, options, env);\n    }\n  }\n  return result;\n};\nfunction Ruler() {\n  this.__rules__ = [];\n  this.__cache__ = null;\n}\nRuler.prototype.__find__ = function(name) {\n  for (let i3 = 0; i3 < this.__rules__.length; i3++) {\n    if (this.__rules__[i3].name === name) {\n      return i3;\n    }\n  }\n  return -1;\n};\nRuler.prototype.__compile__ = function() {\n  const self2 = this;\n  const chains = [\"\"];\n  self2.__rules__.forEach(function(rule) {\n    if (!rule.enabled) {\n      return;\n    }\n    rule.alt.forEach(function(altName) {\n      if (chains.indexOf(altName) < 0) {\n        chains.push(altName);\n      }\n    });\n  });\n  self2.__cache__ = {};\n  chains.forEach(function(chain) {\n    self2.__cache__[chain] = [];\n    self2.__rules__.forEach(function(rule) {\n      if (!rule.enabled) {\n        return;\n      }\n      if (chain && rule.alt.indexOf(chain) < 0) {\n        return;\n      }\n      self2.__cache__[chain].push(rule.fn);\n    });\n  });\n};\nRuler.prototype.at = function(name, fn, options) {\n  const index2 = this.__find__(name);\n  const opt = options || {};\n  if (index2 === -1) {\n    throw new Error(\"Parser rule not found: \" + name);\n  }\n  this.__rules__[index2].fn = fn;\n  this.__rules__[index2].alt = opt.alt || [];\n  this.__cache__ = null;\n};\nRuler.prototype.before = function(beforeName, ruleName, fn, options) {\n  const index2 = this.__find__(beforeName);\n  const opt = options || {};\n  if (index2 === -1) {\n    throw new Error(\"Parser rule not found: \" + beforeName);\n  }\n  this.__rules__.splice(index2, 0, {\n    name: ruleName,\n    enabled: true,\n    fn,\n    alt: opt.alt || []\n  });\n  this.__cache__ = null;\n};\nRuler.prototype.after = function(afterName, ruleName, fn, options) {\n  const index2 = this.__find__(afterName);\n  const opt = options || {};\n  if (index2 === -1) {\n    throw new Error(\"Parser rule not found: \" + afterName);\n  }\n  this.__rules__.splice(index2 + 1, 0, {\n    name: ruleName,\n    enabled: true,\n    fn,\n    alt: opt.alt || []\n  });\n  this.__cache__ = null;\n};\nRuler.prototype.push = function(ruleName, fn, options) {\n  const opt = options || {};\n  this.__rules__.push({\n    name: ruleName,\n    enabled: true,\n    fn,\n    alt: opt.alt || []\n  });\n  this.__cache__ = null;\n};\nRuler.prototype.enable = function(list2, ignoreInvalid) {\n  if (!Array.isArray(list2)) {\n    list2 = [list2];\n  }\n  const result = [];\n  list2.forEach(function(name) {\n    const idx = this.__find__(name);\n    if (idx < 0) {\n      if (ignoreInvalid) {\n        return;\n      }\n      throw new Error(\"Rules manager: invalid rule name \" + name);\n    }\n    this.__rules__[idx].enabled = true;\n    result.push(name);\n  }, this);\n  this.__cache__ = null;\n  return result;\n};\nRuler.prototype.enableOnly = function(list2, ignoreInvalid) {\n  if (!Array.isArray(list2)) {\n    list2 = [list2];\n  }\n  this.__rules__.forEach(function(rule) {\n    rule.enabled = false;\n  });\n  this.enable(list2, ignoreInvalid);\n};\nRuler.prototype.disable = function(list2, ignoreInvalid) {\n  if (!Array.isArray(list2)) {\n    list2 = [list2];\n  }\n  const result = [];\n  list2.forEach(function(name) {\n    const idx = this.__find__(name);\n    if (idx < 0) {\n      if (ignoreInvalid) {\n        return;\n      }\n      throw new Error(\"Rules manager: invalid rule name \" + name);\n    }\n    this.__rules__[idx].enabled = false;\n    result.push(name);\n  }, this);\n  this.__cache__ = null;\n  return result;\n};\nRuler.prototype.getRules = function(chainName) {\n  if (this.__cache__ === null) {\n    this.__compile__();\n  }\n  return this.__cache__[chainName] || [];\n};\nfunction Token(type, tag, nesting) {\n  this.type = type;\n  this.tag = tag;\n  this.attrs = null;\n  this.map = null;\n  this.nesting = nesting;\n  this.level = 0;\n  this.children = null;\n  this.content = \"\";\n  this.markup = \"\";\n  this.info = \"\";\n  this.meta = null;\n  this.block = false;\n  this.hidden = false;\n}\nToken.prototype.attrIndex = function attrIndex(name) {\n  if (!this.attrs) {\n    return -1;\n  }\n  const attrs = this.attrs;\n  for (let i3 = 0, len = attrs.length; i3 < len; i3++) {\n    if (attrs[i3][0] === name) {\n      return i3;\n    }\n  }\n  return -1;\n};\nToken.prototype.attrPush = function attrPush(attrData) {\n  if (this.attrs) {\n    this.attrs.push(attrData);\n  } else {\n    this.attrs = [attrData];\n  }\n};\nToken.prototype.attrSet = function attrSet(name, value) {\n  const idx = this.attrIndex(name);\n  const attrData = [name, value];\n  if (idx < 0) {\n    this.attrPush(attrData);\n  } else {\n    this.attrs[idx] = attrData;\n  }\n};\nToken.prototype.attrGet = function attrGet(name) {\n  const idx = this.attrIndex(name);\n  let value = null;\n  if (idx >= 0) {\n    value = this.attrs[idx][1];\n  }\n  return value;\n};\nToken.prototype.attrJoin = function attrJoin(name, value) {\n  const idx = this.attrIndex(name);\n  if (idx < 0) {\n    this.attrPush([name, value]);\n  } else {\n    this.attrs[idx][1] = this.attrs[idx][1] + \" \" + value;\n  }\n};\nfunction StateCore(src, md, env) {\n  this.src = src;\n  this.env = env;\n  this.tokens = [];\n  this.inlineMode = false;\n  this.md = md;\n}\nStateCore.prototype.Token = Token;\nconst NEWLINES_RE = /\\r\\n?|\\n/g;\nconst NULL_RE = /\\0/g;\nfunction normalize$3(state) {\n  let str;\n  str = state.src.replace(NEWLINES_RE, \"\\n\");\n  str = str.replace(NULL_RE, \"�\");\n  state.src = str;\n}\nfunction block(state) {\n  let token;\n  if (state.inlineMode) {\n    token = new state.Token(\"inline\", \"\", 0);\n    token.content = state.src;\n    token.map = [0, 1];\n    token.children = [];\n    state.tokens.push(token);\n  } else {\n    state.md.block.parse(state.src, state.md, state.env, state.tokens);\n  }\n}\nfunction inline(state) {\n  const tokens = state.tokens;\n  for (let i3 = 0, l2 = tokens.length; i3 < l2; i3++) {\n    const tok = tokens[i3];\n    if (tok.type === \"inline\") {\n      state.md.inline.parse(tok.content, state.md, state.env, tok.children);\n    }\n  }\n}\nfunction isLinkOpen$1(str) {\n  return /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose$1(str) {\n  return /^<\\/a\\s*>/i.test(str);\n}\nfunction linkify$1(state) {\n  const blockTokens = state.tokens;\n  if (!state.md.options.linkify) {\n    return;\n  }\n  for (let j2 = 0, l2 = blockTokens.length; j2 < l2; j2++) {\n    if (blockTokens[j2].type !== \"inline\" || !state.md.linkify.pretest(blockTokens[j2].content)) {\n      continue;\n    }\n    let tokens = blockTokens[j2].children;\n    let htmlLinkLevel = 0;\n    for (let i3 = tokens.length - 1; i3 >= 0; i3--) {\n      const currentToken = tokens[i3];\n      if (currentToken.type === \"link_close\") {\n        i3--;\n        while (tokens[i3].level !== currentToken.level && tokens[i3].type !== \"link_open\") {\n          i3--;\n        }\n        continue;\n      }\n      if (currentToken.type === \"html_inline\") {\n        if (isLinkOpen$1(currentToken.content) && htmlLinkLevel > 0) {\n          htmlLinkLevel--;\n        }\n        if (isLinkClose$1(currentToken.content)) {\n          htmlLinkLevel++;\n        }\n      }\n      if (htmlLinkLevel > 0) {\n        continue;\n      }\n      if (currentToken.type === \"text\" && state.md.linkify.test(currentToken.content)) {\n        const text2 = currentToken.content;\n        let links = state.md.linkify.match(text2);\n        const nodes = [];\n        let level2 = currentToken.level;\n        let lastPos = 0;\n        if (links.length > 0 && links[0].index === 0 && i3 > 0 && tokens[i3 - 1].type === \"text_special\") {\n          links = links.slice(1);\n        }\n        for (let ln = 0; ln < links.length; ln++) {\n          const url2 = links[ln].url;\n          const fullUrl = state.md.normalizeLink(url2);\n          if (!state.md.validateLink(fullUrl)) {\n            continue;\n          }\n          let urlText = links[ln].text;\n          if (!links[ln].schema) {\n            urlText = state.md.normalizeLinkText(\"http://\" + urlText).replace(/^http:\\/\\//, \"\");\n          } else if (links[ln].schema === \"mailto:\" && !/^mailto:/i.test(urlText)) {\n            urlText = state.md.normalizeLinkText(\"mailto:\" + urlText).replace(/^mailto:/, \"\");\n          } else {\n            urlText = state.md.normalizeLinkText(urlText);\n          }\n          const pos = links[ln].index;\n          if (pos > lastPos) {\n            const token = new state.Token(\"text\", \"\", 0);\n            token.content = text2.slice(lastPos, pos);\n            token.level = level2;\n            nodes.push(token);\n          }\n          const token_o = new state.Token(\"link_open\", \"a\", 1);\n          token_o.attrs = [[\"href\", fullUrl]];\n          token_o.level = level2++;\n          token_o.markup = \"linkify\";\n          token_o.info = \"auto\";\n          nodes.push(token_o);\n          const token_t = new state.Token(\"text\", \"\", 0);\n          token_t.content = urlText;\n          token_t.level = level2;\n          nodes.push(token_t);\n          const token_c = new state.Token(\"link_close\", \"a\", -1);\n          token_c.level = --level2;\n          token_c.markup = \"linkify\";\n          token_c.info = \"auto\";\n          nodes.push(token_c);\n          lastPos = links[ln].lastIndex;\n        }\n        if (lastPos < text2.length) {\n          const token = new state.Token(\"text\", \"\", 0);\n          token.content = text2.slice(lastPos);\n          token.level = level2;\n          nodes.push(token);\n        }\n        blockTokens[j2].children = tokens = arrayReplaceAt(tokens, i3, nodes);\n      }\n    }\n  }\n}\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/;\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i;\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig;\nconst SCOPED_ABBR = {\n  c: \"©\",\n  r: \"®\",\n  tm: \"™\"\n};\nfunction replaceFn(match3, name) {\n  return SCOPED_ABBR[name.toLowerCase()];\n}\nfunction replace_scoped(inlineTokens) {\n  let inside_autolink = 0;\n  for (let i3 = inlineTokens.length - 1; i3 >= 0; i3--) {\n    const token = inlineTokens[i3];\n    if (token.type === \"text\" && !inside_autolink) {\n      token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn);\n    }\n    if (token.type === \"link_open\" && token.info === \"auto\") {\n      inside_autolink--;\n    }\n    if (token.type === \"link_close\" && token.info === \"auto\") {\n      inside_autolink++;\n    }\n  }\n}\nfunction replace_rare(inlineTokens) {\n  let inside_autolink = 0;\n  for (let i3 = inlineTokens.length - 1; i3 >= 0; i3--) {\n    const token = inlineTokens[i3];\n    if (token.type === \"text\" && !inside_autolink) {\n      if (RARE_RE.test(token.content)) {\n        token.content = token.content.replace(/\\+-/g, \"±\").replace(/\\.{2,}/g, \"…\").replace(/([?!])…/g, \"$1..\").replace(/([?!]){4,}/g, \"$1$1$1\").replace(/,{2,}/g, \",\").replace(/(^|[^-])---(?=[^-]|$)/mg, \"$1—\").replace(/(^|\\s)--(?=\\s|$)/mg, \"$1–\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, \"$1–\");\n      }\n    }\n    if (token.type === \"link_open\" && token.info === \"auto\") {\n      inside_autolink--;\n    }\n    if (token.type === \"link_close\" && token.info === \"auto\") {\n      inside_autolink++;\n    }\n  }\n}\nfunction replace(state) {\n  let blkIdx;\n  if (!state.md.options.typographer) {\n    return;\n  }\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== \"inline\") {\n      continue;\n    }\n    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n      replace_scoped(state.tokens[blkIdx].children);\n    }\n    if (RARE_RE.test(state.tokens[blkIdx].content)) {\n      replace_rare(state.tokens[blkIdx].children);\n    }\n  }\n}\nconst QUOTE_TEST_RE = /['\"]/;\nconst QUOTE_RE = /['\"]/g;\nconst APOSTROPHE = \"’\";\nfunction replaceAt(str, index2, ch) {\n  return str.slice(0, index2) + ch + str.slice(index2 + 1);\n}\nfunction process_inlines(tokens, state) {\n  let j2;\n  const stack = [];\n  for (let i3 = 0; i3 < tokens.length; i3++) {\n    const token = tokens[i3];\n    const thisLevel = tokens[i3].level;\n    for (j2 = stack.length - 1; j2 >= 0; j2--) {\n      if (stack[j2].level <= thisLevel) {\n        break;\n      }\n    }\n    stack.length = j2 + 1;\n    if (token.type !== \"text\") {\n      continue;\n    }\n    let text2 = token.content;\n    let pos = 0;\n    let max = text2.length;\n    OUTER:\n      while (pos < max) {\n        QUOTE_RE.lastIndex = pos;\n        const t2 = QUOTE_RE.exec(text2);\n        if (!t2) {\n          break;\n        }\n        let canOpen = true;\n        let canClose = true;\n        pos = t2.index + 1;\n        const isSingle = t2[0] === \"'\";\n        let lastChar = 32;\n        if (t2.index - 1 >= 0) {\n          lastChar = text2.charCodeAt(t2.index - 1);\n        } else {\n          for (j2 = i3 - 1; j2 >= 0; j2--) {\n            if (tokens[j2].type === \"softbreak\" || tokens[j2].type === \"hardbreak\") break;\n            if (!tokens[j2].content) continue;\n            lastChar = tokens[j2].content.charCodeAt(tokens[j2].content.length - 1);\n            break;\n          }\n        }\n        let nextChar = 32;\n        if (pos < max) {\n          nextChar = text2.charCodeAt(pos);\n        } else {\n          for (j2 = i3 + 1; j2 < tokens.length; j2++) {\n            if (tokens[j2].type === \"softbreak\" || tokens[j2].type === \"hardbreak\") break;\n            if (!tokens[j2].content) continue;\n            nextChar = tokens[j2].content.charCodeAt(0);\n            break;\n          }\n        }\n        const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n        const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n        const isLastWhiteSpace = isWhiteSpace(lastChar);\n        const isNextWhiteSpace = isWhiteSpace(nextChar);\n        if (isNextWhiteSpace) {\n          canOpen = false;\n        } else if (isNextPunctChar) {\n          if (!(isLastWhiteSpace || isLastPunctChar)) {\n            canOpen = false;\n          }\n        }\n        if (isLastWhiteSpace) {\n          canClose = false;\n        } else if (isLastPunctChar) {\n          if (!(isNextWhiteSpace || isNextPunctChar)) {\n            canClose = false;\n          }\n        }\n        if (nextChar === 34 && t2[0] === '\"') {\n          if (lastChar >= 48 && lastChar <= 57) {\n            canClose = canOpen = false;\n          }\n        }\n        if (canOpen && canClose) {\n          canOpen = isLastPunctChar;\n          canClose = isNextPunctChar;\n        }\n        if (!canOpen && !canClose) {\n          if (isSingle) {\n            token.content = replaceAt(token.content, t2.index, APOSTROPHE);\n          }\n          continue;\n        }\n        if (canClose) {\n          for (j2 = stack.length - 1; j2 >= 0; j2--) {\n            let item = stack[j2];\n            if (stack[j2].level < thisLevel) {\n              break;\n            }\n            if (item.single === isSingle && stack[j2].level === thisLevel) {\n              item = stack[j2];\n              let openQuote;\n              let closeQuote;\n              if (isSingle) {\n                openQuote = state.md.options.quotes[2];\n                closeQuote = state.md.options.quotes[3];\n              } else {\n                openQuote = state.md.options.quotes[0];\n                closeQuote = state.md.options.quotes[1];\n              }\n              token.content = replaceAt(token.content, t2.index, closeQuote);\n              tokens[item.token].content = replaceAt(\n                tokens[item.token].content,\n                item.pos,\n                openQuote\n              );\n              pos += closeQuote.length - 1;\n              if (item.token === i3) {\n                pos += openQuote.length - 1;\n              }\n              text2 = token.content;\n              max = text2.length;\n              stack.length = j2;\n              continue OUTER;\n            }\n          }\n        }\n        if (canOpen) {\n          stack.push({\n            token: i3,\n            pos: t2.index,\n            single: isSingle,\n            level: thisLevel\n          });\n        } else if (canClose && isSingle) {\n          token.content = replaceAt(token.content, t2.index, APOSTROPHE);\n        }\n      }\n  }\n}\nfunction smartquotes(state) {\n  if (!state.md.options.typographer) {\n    return;\n  }\n  for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== \"inline\" || !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n      continue;\n    }\n    process_inlines(state.tokens[blkIdx].children, state);\n  }\n}\nfunction text_join(state) {\n  let curr, last;\n  const blockTokens = state.tokens;\n  const l2 = blockTokens.length;\n  for (let j2 = 0; j2 < l2; j2++) {\n    if (blockTokens[j2].type !== \"inline\") continue;\n    const tokens = blockTokens[j2].children;\n    const max = tokens.length;\n    for (curr = 0; curr < max; curr++) {\n      if (tokens[curr].type === \"text_special\") {\n        tokens[curr].type = \"text\";\n      }\n    }\n    for (curr = last = 0; curr < max; curr++) {\n      if (tokens[curr].type === \"text\" && curr + 1 < max && tokens[curr + 1].type === \"text\") {\n        tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n      } else {\n        if (curr !== last) {\n          tokens[last] = tokens[curr];\n        }\n        last++;\n      }\n    }\n    if (curr !== last) {\n      tokens.length = last;\n    }\n  }\n}\nconst _rules$2 = [\n  [\"normalize\", normalize$3],\n  [\"block\", block],\n  [\"inline\", inline],\n  [\"linkify\", linkify$1],\n  [\"replacements\", replace],\n  [\"smartquotes\", smartquotes],\n  // `text_join` finds `text_special` tokens (for escape sequences)\n  // and joins them with the rest of the text\n  [\"text_join\", text_join]\n];\nfunction Core() {\n  this.ruler = new Ruler();\n  for (let i3 = 0; i3 < _rules$2.length; i3++) {\n    this.ruler.push(_rules$2[i3][0], _rules$2[i3][1]);\n  }\n}\nCore.prototype.process = function(state) {\n  const rules = this.ruler.getRules(\"\");\n  for (let i3 = 0, l2 = rules.length; i3 < l2; i3++) {\n    rules[i3](state);\n  }\n};\nCore.prototype.State = StateCore;\nfunction StateBlock(src, md, env, tokens) {\n  this.src = src;\n  this.md = md;\n  this.env = env;\n  this.tokens = tokens;\n  this.bMarks = [];\n  this.eMarks = [];\n  this.tShift = [];\n  this.sCount = [];\n  this.bsCount = [];\n  this.blkIndent = 0;\n  this.line = 0;\n  this.lineMax = 0;\n  this.tight = false;\n  this.ddIndent = -1;\n  this.listIndent = -1;\n  this.parentType = \"root\";\n  this.level = 0;\n  const s2 = this.src;\n  for (let start = 0, pos = 0, indent = 0, offset = 0, len = s2.length, indent_found = false; pos < len; pos++) {\n    const ch = s2.charCodeAt(pos);\n    if (!indent_found) {\n      if (isSpace(ch)) {\n        indent++;\n        if (ch === 9) {\n          offset += 4 - offset % 4;\n        } else {\n          offset++;\n        }\n        continue;\n      } else {\n        indent_found = true;\n      }\n    }\n    if (ch === 10 || pos === len - 1) {\n      if (ch !== 10) {\n        pos++;\n      }\n      this.bMarks.push(start);\n      this.eMarks.push(pos);\n      this.tShift.push(indent);\n      this.sCount.push(offset);\n      this.bsCount.push(0);\n      indent_found = false;\n      indent = 0;\n      offset = 0;\n      start = pos + 1;\n    }\n  }\n  this.bMarks.push(s2.length);\n  this.eMarks.push(s2.length);\n  this.tShift.push(0);\n  this.sCount.push(0);\n  this.bsCount.push(0);\n  this.lineMax = this.bMarks.length - 1;\n}\nStateBlock.prototype.push = function(type, tag, nesting) {\n  const token = new Token(type, tag, nesting);\n  token.block = true;\n  if (nesting < 0) this.level--;\n  token.level = this.level;\n  if (nesting > 0) this.level++;\n  this.tokens.push(token);\n  return token;\n};\nStateBlock.prototype.isEmpty = function isEmpty(line) {\n  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line];\n};\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines(from) {\n  for (let max = this.lineMax; from < max; from++) {\n    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n      break;\n    }\n  }\n  return from;\n};\nStateBlock.prototype.skipSpaces = function skipSpaces(pos) {\n  for (let max = this.src.length; pos < max; pos++) {\n    const ch = this.src.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      break;\n    }\n  }\n  return pos;\n};\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack(pos, min) {\n  if (pos <= min) {\n    return pos;\n  }\n  while (pos > min) {\n    if (!isSpace(this.src.charCodeAt(--pos))) {\n      return pos + 1;\n    }\n  }\n  return pos;\n};\nStateBlock.prototype.skipChars = function skipChars(pos, code2) {\n  for (let max = this.src.length; pos < max; pos++) {\n    if (this.src.charCodeAt(pos) !== code2) {\n      break;\n    }\n  }\n  return pos;\n};\nStateBlock.prototype.skipCharsBack = function skipCharsBack(pos, code2, min) {\n  if (pos <= min) {\n    return pos;\n  }\n  while (pos > min) {\n    if (code2 !== this.src.charCodeAt(--pos)) {\n      return pos + 1;\n    }\n  }\n  return pos;\n};\nStateBlock.prototype.getLines = function getLines(begin, end, indent, keepLastLF) {\n  if (begin >= end) {\n    return \"\";\n  }\n  const queue = new Array(end - begin);\n  for (let i3 = 0, line = begin; line < end; line++, i3++) {\n    let lineIndent = 0;\n    const lineStart = this.bMarks[line];\n    let first = lineStart;\n    let last;\n    if (line + 1 < end || keepLastLF) {\n      last = this.eMarks[line] + 1;\n    } else {\n      last = this.eMarks[line];\n    }\n    while (first < last && lineIndent < indent) {\n      const ch = this.src.charCodeAt(first);\n      if (isSpace(ch)) {\n        if (ch === 9) {\n          lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4;\n        } else {\n          lineIndent++;\n        }\n      } else if (first - lineStart < this.tShift[line]) {\n        lineIndent++;\n      } else {\n        break;\n      }\n      first++;\n    }\n    if (lineIndent > indent) {\n      queue[i3] = new Array(lineIndent - indent + 1).join(\" \") + this.src.slice(first, last);\n    } else {\n      queue[i3] = this.src.slice(first, last);\n    }\n  }\n  return queue.join(\"\");\n};\nStateBlock.prototype.Token = Token;\nconst MAX_AUTOCOMPLETED_CELLS = 65536;\nfunction getLine(state, line) {\n  const pos = state.bMarks[line] + state.tShift[line];\n  const max = state.eMarks[line];\n  return state.src.slice(pos, max);\n}\nfunction escapedSplit(str) {\n  const result = [];\n  const max = str.length;\n  let pos = 0;\n  let ch = str.charCodeAt(pos);\n  let isEscaped = false;\n  let lastPos = 0;\n  let current = \"\";\n  while (pos < max) {\n    if (ch === 124) {\n      if (!isEscaped) {\n        result.push(current + str.substring(lastPos, pos));\n        current = \"\";\n        lastPos = pos + 1;\n      } else {\n        current += str.substring(lastPos, pos - 1);\n        lastPos = pos;\n      }\n    }\n    isEscaped = ch === 92;\n    pos++;\n    ch = str.charCodeAt(pos);\n  }\n  result.push(current + str.substring(lastPos));\n  return result;\n}\nfunction table(state, startLine, endLine, silent) {\n  if (startLine + 2 > endLine) {\n    return false;\n  }\n  let nextLine = startLine + 1;\n  if (state.sCount[nextLine] < state.blkIndent) {\n    return false;\n  }\n  if (state.sCount[nextLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  let pos = state.bMarks[nextLine] + state.tShift[nextLine];\n  if (pos >= state.eMarks[nextLine]) {\n    return false;\n  }\n  const firstCh = state.src.charCodeAt(pos++);\n  if (firstCh !== 124 && firstCh !== 45 && firstCh !== 58) {\n    return false;\n  }\n  if (pos >= state.eMarks[nextLine]) {\n    return false;\n  }\n  const secondCh = state.src.charCodeAt(pos++);\n  if (secondCh !== 124 && secondCh !== 45 && secondCh !== 58 && !isSpace(secondCh)) {\n    return false;\n  }\n  if (firstCh === 45 && isSpace(secondCh)) {\n    return false;\n  }\n  while (pos < state.eMarks[nextLine]) {\n    const ch = state.src.charCodeAt(pos);\n    if (ch !== 124 && ch !== 45 && ch !== 58 && !isSpace(ch)) {\n      return false;\n    }\n    pos++;\n  }\n  let lineText = getLine(state, startLine + 1);\n  let columns = lineText.split(\"|\");\n  const aligns = [];\n  for (let i3 = 0; i3 < columns.length; i3++) {\n    const t2 = columns[i3].trim();\n    if (!t2) {\n      if (i3 === 0 || i3 === columns.length - 1) {\n        continue;\n      } else {\n        return false;\n      }\n    }\n    if (!/^:?-+:?$/.test(t2)) {\n      return false;\n    }\n    if (t2.charCodeAt(t2.length - 1) === 58) {\n      aligns.push(t2.charCodeAt(0) === 58 ? \"center\" : \"right\");\n    } else if (t2.charCodeAt(0) === 58) {\n      aligns.push(\"left\");\n    } else {\n      aligns.push(\"\");\n    }\n  }\n  lineText = getLine(state, startLine).trim();\n  if (lineText.indexOf(\"|\") === -1) {\n    return false;\n  }\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  columns = escapedSplit(lineText);\n  if (columns.length && columns[0] === \"\") columns.shift();\n  if (columns.length && columns[columns.length - 1] === \"\") columns.pop();\n  const columnCount = columns.length;\n  if (columnCount === 0 || columnCount !== aligns.length) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  const oldParentType = state.parentType;\n  state.parentType = \"table\";\n  const terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n  const token_to = state.push(\"table_open\", \"table\", 1);\n  const tableLines = [startLine, 0];\n  token_to.map = tableLines;\n  const token_tho = state.push(\"thead_open\", \"thead\", 1);\n  token_tho.map = [startLine, startLine + 1];\n  const token_htro = state.push(\"tr_open\", \"tr\", 1);\n  token_htro.map = [startLine, startLine + 1];\n  for (let i3 = 0; i3 < columns.length; i3++) {\n    const token_ho = state.push(\"th_open\", \"th\", 1);\n    if (aligns[i3]) {\n      token_ho.attrs = [[\"style\", \"text-align:\" + aligns[i3]]];\n    }\n    const token_il = state.push(\"inline\", \"\", 0);\n    token_il.content = columns[i3].trim();\n    token_il.children = [];\n    state.push(\"th_close\", \"th\", -1);\n  }\n  state.push(\"tr_close\", \"tr\", -1);\n  state.push(\"thead_close\", \"thead\", -1);\n  let tbodyLines;\n  let autocompletedCells = 0;\n  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n    if (state.sCount[nextLine] < state.blkIndent) {\n      break;\n    }\n    let terminate = false;\n    for (let i3 = 0, l2 = terminatorRules.length; i3 < l2; i3++) {\n      if (terminatorRules[i3](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n    lineText = getLine(state, nextLine).trim();\n    if (!lineText) {\n      break;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      break;\n    }\n    columns = escapedSplit(lineText);\n    if (columns.length && columns[0] === \"\") columns.shift();\n    if (columns.length && columns[columns.length - 1] === \"\") columns.pop();\n    autocompletedCells += columnCount - columns.length;\n    if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) {\n      break;\n    }\n    if (nextLine === startLine + 2) {\n      const token_tbo = state.push(\"tbody_open\", \"tbody\", 1);\n      token_tbo.map = tbodyLines = [startLine + 2, 0];\n    }\n    const token_tro = state.push(\"tr_open\", \"tr\", 1);\n    token_tro.map = [nextLine, nextLine + 1];\n    for (let i3 = 0; i3 < columnCount; i3++) {\n      const token_tdo = state.push(\"td_open\", \"td\", 1);\n      if (aligns[i3]) {\n        token_tdo.attrs = [[\"style\", \"text-align:\" + aligns[i3]]];\n      }\n      const token_il = state.push(\"inline\", \"\", 0);\n      token_il.content = columns[i3] ? columns[i3].trim() : \"\";\n      token_il.children = [];\n      state.push(\"td_close\", \"td\", -1);\n    }\n    state.push(\"tr_close\", \"tr\", -1);\n  }\n  if (tbodyLines) {\n    state.push(\"tbody_close\", \"tbody\", -1);\n    tbodyLines[1] = nextLine;\n  }\n  state.push(\"table_close\", \"table\", -1);\n  tableLines[1] = nextLine;\n  state.parentType = oldParentType;\n  state.line = nextLine;\n  return true;\n}\nfunction code(state, startLine, endLine) {\n  if (state.sCount[startLine] - state.blkIndent < 4) {\n    return false;\n  }\n  let nextLine = startLine + 1;\n  let last = nextLine;\n  while (nextLine < endLine) {\n    if (state.isEmpty(nextLine)) {\n      nextLine++;\n      continue;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      nextLine++;\n      last = nextLine;\n      continue;\n    }\n    break;\n  }\n  state.line = last;\n  const token = state.push(\"code_block\", \"code\", 0);\n  token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + \"\\n\";\n  token.map = [startLine, state.line];\n  return true;\n}\nfunction fence(state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  let max = state.eMarks[startLine];\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (pos + 3 > max) {\n    return false;\n  }\n  const marker = state.src.charCodeAt(pos);\n  if (marker !== 126 && marker !== 96) {\n    return false;\n  }\n  let mem = pos;\n  pos = state.skipChars(pos, marker);\n  let len = pos - mem;\n  if (len < 3) {\n    return false;\n  }\n  const markup = state.src.slice(mem, pos);\n  const params = state.src.slice(pos, max);\n  if (marker === 96) {\n    if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n      return false;\n    }\n  }\n  if (silent) {\n    return true;\n  }\n  let nextLine = startLine;\n  let haveEndMarker = false;\n  for (; ; ) {\n    nextLine++;\n    if (nextLine >= endLine) {\n      break;\n    }\n    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n    if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n      break;\n    }\n    if (state.src.charCodeAt(pos) !== marker) {\n      continue;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      continue;\n    }\n    pos = state.skipChars(pos, marker);\n    if (pos - mem < len) {\n      continue;\n    }\n    pos = state.skipSpaces(pos);\n    if (pos < max) {\n      continue;\n    }\n    haveEndMarker = true;\n    break;\n  }\n  len = state.sCount[startLine];\n  state.line = nextLine + (haveEndMarker ? 1 : 0);\n  const token = state.push(\"fence\", \"code\", 0);\n  token.info = params;\n  token.content = state.getLines(startLine + 1, nextLine, len, true);\n  token.markup = markup;\n  token.map = [startLine, state.line];\n  return true;\n}\nfunction blockquote(state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  let max = state.eMarks[startLine];\n  const oldLineMax = state.lineMax;\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (state.src.charCodeAt(pos) !== 62) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  const oldBMarks = [];\n  const oldBSCount = [];\n  const oldSCount = [];\n  const oldTShift = [];\n  const terminatorRules = state.md.block.ruler.getRules(\"blockquote\");\n  const oldParentType = state.parentType;\n  state.parentType = \"blockquote\";\n  let lastLineEmpty = false;\n  let nextLine;\n  for (nextLine = startLine; nextLine < endLine; nextLine++) {\n    const isOutdented = state.sCount[nextLine] < state.blkIndent;\n    pos = state.bMarks[nextLine] + state.tShift[nextLine];\n    max = state.eMarks[nextLine];\n    if (pos >= max) {\n      break;\n    }\n    if (state.src.charCodeAt(pos++) === 62 && !isOutdented) {\n      let initial = state.sCount[nextLine] + 1;\n      let spaceAfterMarker;\n      let adjustTab;\n      if (state.src.charCodeAt(pos) === 32) {\n        pos++;\n        initial++;\n        adjustTab = false;\n        spaceAfterMarker = true;\n      } else if (state.src.charCodeAt(pos) === 9) {\n        spaceAfterMarker = true;\n        if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n          pos++;\n          initial++;\n          adjustTab = false;\n        } else {\n          adjustTab = true;\n        }\n      } else {\n        spaceAfterMarker = false;\n      }\n      let offset = initial;\n      oldBMarks.push(state.bMarks[nextLine]);\n      state.bMarks[nextLine] = pos;\n      while (pos < max) {\n        const ch = state.src.charCodeAt(pos);\n        if (isSpace(ch)) {\n          if (ch === 9) {\n            offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4;\n          } else {\n            offset++;\n          }\n        } else {\n          break;\n        }\n        pos++;\n      }\n      lastLineEmpty = pos >= max;\n      oldBSCount.push(state.bsCount[nextLine]);\n      state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0);\n      oldSCount.push(state.sCount[nextLine]);\n      state.sCount[nextLine] = offset - initial;\n      oldTShift.push(state.tShift[nextLine]);\n      state.tShift[nextLine] = pos - state.bMarks[nextLine];\n      continue;\n    }\n    if (lastLineEmpty) {\n      break;\n    }\n    let terminate = false;\n    for (let i3 = 0, l2 = terminatorRules.length; i3 < l2; i3++) {\n      if (terminatorRules[i3](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      state.lineMax = nextLine;\n      if (state.blkIndent !== 0) {\n        oldBMarks.push(state.bMarks[nextLine]);\n        oldBSCount.push(state.bsCount[nextLine]);\n        oldTShift.push(state.tShift[nextLine]);\n        oldSCount.push(state.sCount[nextLine]);\n        state.sCount[nextLine] -= state.blkIndent;\n      }\n      break;\n    }\n    oldBMarks.push(state.bMarks[nextLine]);\n    oldBSCount.push(state.bsCount[nextLine]);\n    oldTShift.push(state.tShift[nextLine]);\n    oldSCount.push(state.sCount[nextLine]);\n    state.sCount[nextLine] = -1;\n  }\n  const oldIndent = state.blkIndent;\n  state.blkIndent = 0;\n  const token_o = state.push(\"blockquote_open\", \"blockquote\", 1);\n  token_o.markup = \">\";\n  const lines = [startLine, 0];\n  token_o.map = lines;\n  state.md.block.tokenize(state, startLine, nextLine);\n  const token_c = state.push(\"blockquote_close\", \"blockquote\", -1);\n  token_c.markup = \">\";\n  state.lineMax = oldLineMax;\n  state.parentType = oldParentType;\n  lines[1] = state.line;\n  for (let i3 = 0; i3 < oldTShift.length; i3++) {\n    state.bMarks[i3 + startLine] = oldBMarks[i3];\n    state.tShift[i3 + startLine] = oldTShift[i3];\n    state.sCount[i3 + startLine] = oldSCount[i3];\n    state.bsCount[i3 + startLine] = oldBSCount[i3];\n  }\n  state.blkIndent = oldIndent;\n  return true;\n}\nfunction hr(state, startLine, endLine, silent) {\n  const max = state.eMarks[startLine];\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  const marker = state.src.charCodeAt(pos++);\n  if (marker !== 42 && marker !== 45 && marker !== 95) {\n    return false;\n  }\n  let cnt = 1;\n  while (pos < max) {\n    const ch = state.src.charCodeAt(pos++);\n    if (ch !== marker && !isSpace(ch)) {\n      return false;\n    }\n    if (ch === marker) {\n      cnt++;\n    }\n  }\n  if (cnt < 3) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  state.line = startLine + 1;\n  const token = state.push(\"hr\", \"hr\", 0);\n  token.map = [startLine, state.line];\n  token.markup = Array(cnt + 1).join(String.fromCharCode(marker));\n  return true;\n}\nfunction skipBulletListMarker(state, startLine) {\n  const max = state.eMarks[startLine];\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  const marker = state.src.charCodeAt(pos++);\n  if (marker !== 42 && marker !== 45 && marker !== 43) {\n    return -1;\n  }\n  if (pos < max) {\n    const ch = state.src.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      return -1;\n    }\n  }\n  return pos;\n}\nfunction skipOrderedListMarker(state, startLine) {\n  const start = state.bMarks[startLine] + state.tShift[startLine];\n  const max = state.eMarks[startLine];\n  let pos = start;\n  if (pos + 1 >= max) {\n    return -1;\n  }\n  let ch = state.src.charCodeAt(pos++);\n  if (ch < 48 || ch > 57) {\n    return -1;\n  }\n  for (; ; ) {\n    if (pos >= max) {\n      return -1;\n    }\n    ch = state.src.charCodeAt(pos++);\n    if (ch >= 48 && ch <= 57) {\n      if (pos - start >= 10) {\n        return -1;\n      }\n      continue;\n    }\n    if (ch === 41 || ch === 46) {\n      break;\n    }\n    return -1;\n  }\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      return -1;\n    }\n  }\n  return pos;\n}\nfunction markTightParagraphs(state, idx) {\n  const level2 = state.level + 2;\n  for (let i3 = idx + 2, l2 = state.tokens.length - 2; i3 < l2; i3++) {\n    if (state.tokens[i3].level === level2 && state.tokens[i3].type === \"paragraph_open\") {\n      state.tokens[i3 + 2].hidden = true;\n      state.tokens[i3].hidden = true;\n      i3 += 2;\n    }\n  }\n}\nfunction list(state, startLine, endLine, silent) {\n  let max, pos, start, token;\n  let nextLine = startLine;\n  let tight = true;\n  if (state.sCount[nextLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (state.listIndent >= 0 && state.sCount[nextLine] - state.listIndent >= 4 && state.sCount[nextLine] < state.blkIndent) {\n    return false;\n  }\n  let isTerminatingParagraph = false;\n  if (silent && state.parentType === \"paragraph\") {\n    if (state.sCount[nextLine] >= state.blkIndent) {\n      isTerminatingParagraph = true;\n    }\n  }\n  let isOrdered;\n  let markerValue;\n  let posAfterMarker;\n  if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n    isOrdered = true;\n    start = state.bMarks[nextLine] + state.tShift[nextLine];\n    markerValue = Number(state.src.slice(start, posAfterMarker - 1));\n    if (isTerminatingParagraph && markerValue !== 1) return false;\n  } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n    isOrdered = false;\n  } else {\n    return false;\n  }\n  if (isTerminatingParagraph) {\n    if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false;\n  }\n  if (silent) {\n    return true;\n  }\n  const markerCharCode = state.src.charCodeAt(posAfterMarker - 1);\n  const listTokIdx = state.tokens.length;\n  if (isOrdered) {\n    token = state.push(\"ordered_list_open\", \"ol\", 1);\n    if (markerValue !== 1) {\n      token.attrs = [[\"start\", markerValue]];\n    }\n  } else {\n    token = state.push(\"bullet_list_open\", \"ul\", 1);\n  }\n  const listLines = [nextLine, 0];\n  token.map = listLines;\n  token.markup = String.fromCharCode(markerCharCode);\n  let prevEmptyEnd = false;\n  const terminatorRules = state.md.block.ruler.getRules(\"list\");\n  const oldParentType = state.parentType;\n  state.parentType = \"list\";\n  while (nextLine < endLine) {\n    pos = posAfterMarker;\n    max = state.eMarks[nextLine];\n    const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine]);\n    let offset = initial;\n    while (pos < max) {\n      const ch = state.src.charCodeAt(pos);\n      if (ch === 9) {\n        offset += 4 - (offset + state.bsCount[nextLine]) % 4;\n      } else if (ch === 32) {\n        offset++;\n      } else {\n        break;\n      }\n      pos++;\n    }\n    const contentStart = pos;\n    let indentAfterMarker;\n    if (contentStart >= max) {\n      indentAfterMarker = 1;\n    } else {\n      indentAfterMarker = offset - initial;\n    }\n    if (indentAfterMarker > 4) {\n      indentAfterMarker = 1;\n    }\n    const indent = initial + indentAfterMarker;\n    token = state.push(\"list_item_open\", \"li\", 1);\n    token.markup = String.fromCharCode(markerCharCode);\n    const itemLines = [nextLine, 0];\n    token.map = itemLines;\n    if (isOrdered) {\n      token.info = state.src.slice(start, posAfterMarker - 1);\n    }\n    const oldTight = state.tight;\n    const oldTShift = state.tShift[nextLine];\n    const oldSCount = state.sCount[nextLine];\n    const oldListIndent = state.listIndent;\n    state.listIndent = state.blkIndent;\n    state.blkIndent = indent;\n    state.tight = true;\n    state.tShift[nextLine] = contentStart - state.bMarks[nextLine];\n    state.sCount[nextLine] = offset;\n    if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n      state.line = Math.min(state.line + 2, endLine);\n    } else {\n      state.md.block.tokenize(state, nextLine, endLine, true);\n    }\n    if (!state.tight || prevEmptyEnd) {\n      tight = false;\n    }\n    prevEmptyEnd = state.line - nextLine > 1 && state.isEmpty(state.line - 1);\n    state.blkIndent = state.listIndent;\n    state.listIndent = oldListIndent;\n    state.tShift[nextLine] = oldTShift;\n    state.sCount[nextLine] = oldSCount;\n    state.tight = oldTight;\n    token = state.push(\"list_item_close\", \"li\", -1);\n    token.markup = String.fromCharCode(markerCharCode);\n    nextLine = state.line;\n    itemLines[1] = nextLine;\n    if (nextLine >= endLine) {\n      break;\n    }\n    if (state.sCount[nextLine] < state.blkIndent) {\n      break;\n    }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      break;\n    }\n    let terminate = false;\n    for (let i3 = 0, l2 = terminatorRules.length; i3 < l2; i3++) {\n      if (terminatorRules[i3](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n    if (isOrdered) {\n      posAfterMarker = skipOrderedListMarker(state, nextLine);\n      if (posAfterMarker < 0) {\n        break;\n      }\n      start = state.bMarks[nextLine] + state.tShift[nextLine];\n    } else {\n      posAfterMarker = skipBulletListMarker(state, nextLine);\n      if (posAfterMarker < 0) {\n        break;\n      }\n    }\n    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) {\n      break;\n    }\n  }\n  if (isOrdered) {\n    token = state.push(\"ordered_list_close\", \"ol\", -1);\n  } else {\n    token = state.push(\"bullet_list_close\", \"ul\", -1);\n  }\n  token.markup = String.fromCharCode(markerCharCode);\n  listLines[1] = nextLine;\n  state.line = nextLine;\n  state.parentType = oldParentType;\n  if (tight) {\n    markTightParagraphs(state, listTokIdx);\n  }\n  return true;\n}\nfunction reference(state, startLine, _endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  let max = state.eMarks[startLine];\n  let nextLine = startLine + 1;\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (state.src.charCodeAt(pos) !== 91) {\n    return false;\n  }\n  function getNextLine(nextLine2) {\n    const endLine = state.lineMax;\n    if (nextLine2 >= endLine || state.isEmpty(nextLine2)) {\n      return null;\n    }\n    let isContinuation = false;\n    if (state.sCount[nextLine2] - state.blkIndent > 3) {\n      isContinuation = true;\n    }\n    if (state.sCount[nextLine2] < 0) {\n      isContinuation = true;\n    }\n    if (!isContinuation) {\n      const terminatorRules = state.md.block.ruler.getRules(\"reference\");\n      const oldParentType = state.parentType;\n      state.parentType = \"reference\";\n      let terminate = false;\n      for (let i3 = 0, l2 = terminatorRules.length; i3 < l2; i3++) {\n        if (terminatorRules[i3](state, nextLine2, endLine, true)) {\n          terminate = true;\n          break;\n        }\n      }\n      state.parentType = oldParentType;\n      if (terminate) {\n        return null;\n      }\n    }\n    const pos2 = state.bMarks[nextLine2] + state.tShift[nextLine2];\n    const max2 = state.eMarks[nextLine2];\n    return state.src.slice(pos2, max2 + 1);\n  }\n  let str = state.src.slice(pos, max + 1);\n  max = str.length;\n  let labelEnd = -1;\n  for (pos = 1; pos < max; pos++) {\n    const ch = str.charCodeAt(pos);\n    if (ch === 91) {\n      return false;\n    } else if (ch === 93) {\n      labelEnd = pos;\n      break;\n    } else if (ch === 10) {\n      const lineContent = getNextLine(nextLine);\n      if (lineContent !== null) {\n        str += lineContent;\n        max = str.length;\n        nextLine++;\n      }\n    } else if (ch === 92) {\n      pos++;\n      if (pos < max && str.charCodeAt(pos) === 10) {\n        const lineContent = getNextLine(nextLine);\n        if (lineContent !== null) {\n          str += lineContent;\n          max = str.length;\n          nextLine++;\n        }\n      }\n    }\n  }\n  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 58) {\n    return false;\n  }\n  for (pos = labelEnd + 2; pos < max; pos++) {\n    const ch = str.charCodeAt(pos);\n    if (ch === 10) {\n      const lineContent = getNextLine(nextLine);\n      if (lineContent !== null) {\n        str += lineContent;\n        max = str.length;\n        nextLine++;\n      }\n    } else if (isSpace(ch)) ;\n    else {\n      break;\n    }\n  }\n  const destRes = state.md.helpers.parseLinkDestination(str, pos, max);\n  if (!destRes.ok) {\n    return false;\n  }\n  const href = state.md.normalizeLink(destRes.str);\n  if (!state.md.validateLink(href)) {\n    return false;\n  }\n  pos = destRes.pos;\n  const destEndPos = pos;\n  const destEndLineNo = nextLine;\n  const start = pos;\n  for (; pos < max; pos++) {\n    const ch = str.charCodeAt(pos);\n    if (ch === 10) {\n      const lineContent = getNextLine(nextLine);\n      if (lineContent !== null) {\n        str += lineContent;\n        max = str.length;\n        nextLine++;\n      }\n    } else if (isSpace(ch)) ;\n    else {\n      break;\n    }\n  }\n  let titleRes = state.md.helpers.parseLinkTitle(str, pos, max);\n  while (titleRes.can_continue) {\n    const lineContent = getNextLine(nextLine);\n    if (lineContent === null) break;\n    str += lineContent;\n    pos = max;\n    max = str.length;\n    nextLine++;\n    titleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes);\n  }\n  let title;\n  if (pos < max && start !== pos && titleRes.ok) {\n    title = titleRes.str;\n    pos = titleRes.pos;\n  } else {\n    title = \"\";\n    pos = destEndPos;\n    nextLine = destEndLineNo;\n  }\n  while (pos < max) {\n    const ch = str.charCodeAt(pos);\n    if (!isSpace(ch)) {\n      break;\n    }\n    pos++;\n  }\n  if (pos < max && str.charCodeAt(pos) !== 10) {\n    if (title) {\n      title = \"\";\n      pos = destEndPos;\n      nextLine = destEndLineNo;\n      while (pos < max) {\n        const ch = str.charCodeAt(pos);\n        if (!isSpace(ch)) {\n          break;\n        }\n        pos++;\n      }\n    }\n  }\n  if (pos < max && str.charCodeAt(pos) !== 10) {\n    return false;\n  }\n  const label = normalizeReference(str.slice(1, labelEnd));\n  if (!label) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  if (typeof state.env.references === \"undefined\") {\n    state.env.references = {};\n  }\n  if (typeof state.env.references[label] === \"undefined\") {\n    state.env.references[label] = { title, href };\n  }\n  state.line = nextLine;\n  return true;\n}\nconst block_names = [\n  \"address\",\n  \"article\",\n  \"aside\",\n  \"base\",\n  \"basefont\",\n  \"blockquote\",\n  \"body\",\n  \"caption\",\n  \"center\",\n  \"col\",\n  \"colgroup\",\n  \"dd\",\n  \"details\",\n  \"dialog\",\n  \"dir\",\n  \"div\",\n  \"dl\",\n  \"dt\",\n  \"fieldset\",\n  \"figcaption\",\n  \"figure\",\n  \"footer\",\n  \"form\",\n  \"frame\",\n  \"frameset\",\n  \"h1\",\n  \"h2\",\n  \"h3\",\n  \"h4\",\n  \"h5\",\n  \"h6\",\n  \"head\",\n  \"header\",\n  \"hr\",\n  \"html\",\n  \"iframe\",\n  \"legend\",\n  \"li\",\n  \"link\",\n  \"main\",\n  \"menu\",\n  \"menuitem\",\n  \"nav\",\n  \"noframes\",\n  \"ol\",\n  \"optgroup\",\n  \"option\",\n  \"p\",\n  \"param\",\n  \"search\",\n  \"section\",\n  \"summary\",\n  \"table\",\n  \"tbody\",\n  \"td\",\n  \"tfoot\",\n  \"th\",\n  \"thead\",\n  \"title\",\n  \"tr\",\n  \"track\",\n  \"ul\"\n];\nconst attr_name = \"[a-zA-Z_:][a-zA-Z0-9:._-]*\";\nconst unquoted = \"[^\\\"'=<>`\\\\x00-\\\\x20]+\";\nconst single_quoted = \"'[^']*'\";\nconst double_quoted = '\"[^\"]*\"';\nconst attr_value = \"(?:\" + unquoted + \"|\" + single_quoted + \"|\" + double_quoted + \")\";\nconst attribute = \"(?:\\\\s+\" + attr_name + \"(?:\\\\s*=\\\\s*\" + attr_value + \")?)\";\nconst open_tag = \"<[A-Za-z][A-Za-z0-9\\\\-]*\" + attribute + \"*\\\\s*\\\\/?>\";\nconst close_tag = \"<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>\";\nconst comment = \"<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->\";\nconst processing = \"<[?][\\\\s\\\\S]*?[?]>\";\nconst declaration = \"<![A-Za-z][^>]*>\";\nconst cdata = \"<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\";\nconst HTML_TAG_RE = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \"|\" + comment + \"|\" + processing + \"|\" + declaration + \"|\" + cdata + \")\");\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp(\"^(?:\" + open_tag + \"|\" + close_tag + \")\");\nconst HTML_SEQUENCES = [\n  [/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true],\n  [/^<!--/, /-->/, true],\n  [/^<\\?/, /\\?>/, true],\n  [/^<![A-Z]/, />/, true],\n  [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n  [new RegExp(\"^</?(\" + block_names.join(\"|\") + \")(?=(\\\\s|/?>|$))\", \"i\"), /^$/, true],\n  [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + \"\\\\s*$\"), /^$/, false]\n];\nfunction html_block(state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  let max = state.eMarks[startLine];\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  if (!state.md.options.html) {\n    return false;\n  }\n  if (state.src.charCodeAt(pos) !== 60) {\n    return false;\n  }\n  let lineText = state.src.slice(pos, max);\n  let i3 = 0;\n  for (; i3 < HTML_SEQUENCES.length; i3++) {\n    if (HTML_SEQUENCES[i3][0].test(lineText)) {\n      break;\n    }\n  }\n  if (i3 === HTML_SEQUENCES.length) {\n    return false;\n  }\n  if (silent) {\n    return HTML_SEQUENCES[i3][2];\n  }\n  let nextLine = startLine + 1;\n  if (!HTML_SEQUENCES[i3][1].test(lineText)) {\n    for (; nextLine < endLine; nextLine++) {\n      if (state.sCount[nextLine] < state.blkIndent) {\n        break;\n      }\n      pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      max = state.eMarks[nextLine];\n      lineText = state.src.slice(pos, max);\n      if (HTML_SEQUENCES[i3][1].test(lineText)) {\n        if (lineText.length !== 0) {\n          nextLine++;\n        }\n        break;\n      }\n    }\n  }\n  state.line = nextLine;\n  const token = state.push(\"html_block\", \"\", 0);\n  token.map = [startLine, nextLine];\n  token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n  return true;\n}\nfunction heading(state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine];\n  let max = state.eMarks[startLine];\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  let ch = state.src.charCodeAt(pos);\n  if (ch !== 35 || pos >= max) {\n    return false;\n  }\n  let level2 = 1;\n  ch = state.src.charCodeAt(++pos);\n  while (ch === 35 && pos < max && level2 <= 6) {\n    level2++;\n    ch = state.src.charCodeAt(++pos);\n  }\n  if (level2 > 6 || pos < max && !isSpace(ch)) {\n    return false;\n  }\n  if (silent) {\n    return true;\n  }\n  max = state.skipSpacesBack(max, pos);\n  const tmp = state.skipCharsBack(max, 35, pos);\n  if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n    max = tmp;\n  }\n  state.line = startLine + 1;\n  const token_o = state.push(\"heading_open\", \"h\" + String(level2), 1);\n  token_o.markup = \"########\".slice(0, level2);\n  token_o.map = [startLine, state.line];\n  const token_i = state.push(\"inline\", \"\", 0);\n  token_i.content = state.src.slice(pos, max).trim();\n  token_i.map = [startLine, state.line];\n  token_i.children = [];\n  const token_c = state.push(\"heading_close\", \"h\" + String(level2), -1);\n  token_c.markup = \"########\".slice(0, level2);\n  return true;\n}\nfunction lheading(state, startLine, endLine) {\n  const terminatorRules = state.md.block.ruler.getRules(\"paragraph\");\n  if (state.sCount[startLine] - state.blkIndent >= 4) {\n    return false;\n  }\n  const oldParentType = state.parentType;\n  state.parentType = \"paragraph\";\n  let level2 = 0;\n  let marker;\n  let nextLine = startLine + 1;\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    if (state.sCount[nextLine] - state.blkIndent > 3) {\n      continue;\n    }\n    if (state.sCount[nextLine] >= state.blkIndent) {\n      let pos = state.bMarks[nextLine] + state.tShift[nextLine];\n      const max = state.eMarks[nextLine];\n      if (pos < max) {\n        marker = state.src.charCodeAt(pos);\n        if (marker === 45 || marker === 61) {\n          pos = state.skipChars(pos, marker);\n          pos = state.skipSpaces(pos);\n          if (pos >= max) {\n            level2 = marker === 61 ? 1 : 2;\n            break;\n          }\n        }\n      }\n    }\n    if (state.sCount[nextLine] < 0) {\n      continue;\n    }\n    let terminate = false;\n    for (let i3 = 0, l2 = terminatorRules.length; i3 < l2; i3++) {\n      if (terminatorRules[i3](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n  }\n  if (!level2) {\n    return false;\n  }\n  const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n  state.line = nextLine + 1;\n  const token_o = state.push(\"heading_open\", \"h\" + String(level2), 1);\n  token_o.markup = String.fromCharCode(marker);\n  token_o.map = [startLine, state.line];\n  const token_i = state.push(\"inline\", \"\", 0);\n  token_i.content = content;\n  token_i.map = [startLine, state.line - 1];\n  token_i.children = [];\n  const token_c = state.push(\"heading_close\", \"h\" + String(level2), -1);\n  token_c.markup = String.fromCharCode(marker);\n  state.parentType = oldParentType;\n  return true;\n}\nfunction paragraph(state, startLine, endLine) {\n  const terminatorRules = state.md.block.ruler.getRules(\"paragraph\");\n  const oldParentType = state.parentType;\n  let nextLine = startLine + 1;\n  state.parentType = \"paragraph\";\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    if (state.sCount[nextLine] - state.blkIndent > 3) {\n      continue;\n    }\n    if (state.sCount[nextLine] < 0) {\n      continue;\n    }\n    let terminate = false;\n    for (let i3 = 0, l2 = terminatorRules.length; i3 < l2; i3++) {\n      if (terminatorRules[i3](state, nextLine, endLine, true)) {\n        terminate = true;\n        break;\n      }\n    }\n    if (terminate) {\n      break;\n    }\n  }\n  const content = state.getLines(startLine, nextLine, state.blkIndent, false).trim();\n  state.line = nextLine;\n  const token_o = state.push(\"paragraph_open\", \"p\", 1);\n  token_o.map = [startLine, state.line];\n  const token_i = state.push(\"inline\", \"\", 0);\n  token_i.content = content;\n  token_i.map = [startLine, state.line];\n  token_i.children = [];\n  state.push(\"paragraph_close\", \"p\", -1);\n  state.parentType = oldParentType;\n  return true;\n}\nconst _rules$1 = [\n  // First 2 params - rule name & source. Secondary array - list of rules,\n  // which can be terminated by this one.\n  [\"table\", table, [\"paragraph\", \"reference\"]],\n  [\"code\", code],\n  [\"fence\", fence, [\"paragraph\", \"reference\", \"blockquote\", \"list\"]],\n  [\"blockquote\", blockquote, [\"paragraph\", \"reference\", \"blockquote\", \"list\"]],\n  [\"hr\", hr, [\"paragraph\", \"reference\", \"blockquote\", \"list\"]],\n  [\"list\", list, [\"paragraph\", \"reference\", \"blockquote\"]],\n  [\"reference\", reference],\n  [\"html_block\", html_block, [\"paragraph\", \"reference\", \"blockquote\"]],\n  [\"heading\", heading, [\"paragraph\", \"reference\", \"blockquote\"]],\n  [\"lheading\", lheading],\n  [\"paragraph\", paragraph]\n];\nfunction ParserBlock() {\n  this.ruler = new Ruler();\n  for (let i3 = 0; i3 < _rules$1.length; i3++) {\n    this.ruler.push(_rules$1[i3][0], _rules$1[i3][1], { alt: (_rules$1[i3][2] || []).slice() });\n  }\n}\nParserBlock.prototype.tokenize = function(state, startLine, endLine) {\n  const rules = this.ruler.getRules(\"\");\n  const len = rules.length;\n  const maxNesting = state.md.options.maxNesting;\n  let line = startLine;\n  let hasEmptyLines = false;\n  while (line < endLine) {\n    state.line = line = state.skipEmptyLines(line);\n    if (line >= endLine) {\n      break;\n    }\n    if (state.sCount[line] < state.blkIndent) {\n      break;\n    }\n    if (state.level >= maxNesting) {\n      state.line = endLine;\n      break;\n    }\n    const prevLine = state.line;\n    let ok = false;\n    for (let i3 = 0; i3 < len; i3++) {\n      ok = rules[i3](state, line, endLine, false);\n      if (ok) {\n        if (prevLine >= state.line) {\n          throw new Error(\"block rule didn't increment state.line\");\n        }\n        break;\n      }\n    }\n    if (!ok) throw new Error(\"none of the block rules matched\");\n    state.tight = !hasEmptyLines;\n    if (state.isEmpty(state.line - 1)) {\n      hasEmptyLines = true;\n    }\n    line = state.line;\n    if (line < endLine && state.isEmpty(line)) {\n      hasEmptyLines = true;\n      line++;\n      state.line = line;\n    }\n  }\n};\nParserBlock.prototype.parse = function(src, md, env, outTokens) {\n  if (!src) {\n    return;\n  }\n  const state = new this.State(src, md, env, outTokens);\n  this.tokenize(state, state.line, state.lineMax);\n};\nParserBlock.prototype.State = StateBlock;\nfunction StateInline(src, md, env, outTokens) {\n  this.src = src;\n  this.env = env;\n  this.md = md;\n  this.tokens = outTokens;\n  this.tokens_meta = Array(outTokens.length);\n  this.pos = 0;\n  this.posMax = this.src.length;\n  this.level = 0;\n  this.pending = \"\";\n  this.pendingLevel = 0;\n  this.cache = {};\n  this.delimiters = [];\n  this._prev_delimiters = [];\n  this.backticks = {};\n  this.backticksScanned = false;\n  this.linkLevel = 0;\n}\nStateInline.prototype.pushPending = function() {\n  const token = new Token(\"text\", \"\", 0);\n  token.content = this.pending;\n  token.level = this.pendingLevel;\n  this.tokens.push(token);\n  this.pending = \"\";\n  return token;\n};\nStateInline.prototype.push = function(type, tag, nesting) {\n  if (this.pending) {\n    this.pushPending();\n  }\n  const token = new Token(type, tag, nesting);\n  let token_meta = null;\n  if (nesting < 0) {\n    this.level--;\n    this.delimiters = this._prev_delimiters.pop();\n  }\n  token.level = this.level;\n  if (nesting > 0) {\n    this.level++;\n    this._prev_delimiters.push(this.delimiters);\n    this.delimiters = [];\n    token_meta = { delimiters: this.delimiters };\n  }\n  this.pendingLevel = this.level;\n  this.tokens.push(token);\n  this.tokens_meta.push(token_meta);\n  return token;\n};\nStateInline.prototype.scanDelims = function(start, canSplitWord) {\n  const max = this.posMax;\n  const marker = this.src.charCodeAt(start);\n  const lastChar = start > 0 ? this.src.charCodeAt(start - 1) : 32;\n  let pos = start;\n  while (pos < max && this.src.charCodeAt(pos) === marker) {\n    pos++;\n  }\n  const count = pos - start;\n  const nextChar = pos < max ? this.src.charCodeAt(pos) : 32;\n  const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctChar(String.fromCharCode(lastChar));\n  const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctChar(String.fromCharCode(nextChar));\n  const isLastWhiteSpace = isWhiteSpace(lastChar);\n  const isNextWhiteSpace = isWhiteSpace(nextChar);\n  const left_flanking = !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar);\n  const right_flanking = !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar);\n  const can_open = left_flanking && (canSplitWord || !right_flanking || isLastPunctChar);\n  const can_close = right_flanking && (canSplitWord || !left_flanking || isNextPunctChar);\n  return { can_open, can_close, length: count };\n};\nStateInline.prototype.Token = Token;\nfunction isTerminatorChar(ch) {\n  switch (ch) {\n    case 10:\n    case 33:\n    case 35:\n    case 36:\n    case 37:\n    case 38:\n    case 42:\n    case 43:\n    case 45:\n    case 58:\n    case 60:\n    case 61:\n    case 62:\n    case 64:\n    case 91:\n    case 92:\n    case 93:\n    case 94:\n    case 95:\n    case 96:\n    case 123:\n    case 125:\n    case 126:\n      return true;\n    default:\n      return false;\n  }\n}\nfunction text(state, silent) {\n  let pos = state.pos;\n  while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n    pos++;\n  }\n  if (pos === state.pos) {\n    return false;\n  }\n  if (!silent) {\n    state.pending += state.src.slice(state.pos, pos);\n  }\n  state.pos = pos;\n  return true;\n}\nconst SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;\nfunction linkify(state, silent) {\n  if (!state.md.options.linkify) return false;\n  if (state.linkLevel > 0) return false;\n  const pos = state.pos;\n  const max = state.posMax;\n  if (pos + 3 > max) return false;\n  if (state.src.charCodeAt(pos) !== 58) return false;\n  if (state.src.charCodeAt(pos + 1) !== 47) return false;\n  if (state.src.charCodeAt(pos + 2) !== 47) return false;\n  const match3 = state.pending.match(SCHEME_RE);\n  if (!match3) return false;\n  const proto = match3[1];\n  const link2 = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length));\n  if (!link2) return false;\n  let url2 = link2.url;\n  if (url2.length <= proto.length) return false;\n  url2 = url2.replace(/\\*+$/, \"\");\n  const fullUrl = state.md.normalizeLink(url2);\n  if (!state.md.validateLink(fullUrl)) return false;\n  if (!silent) {\n    state.pending = state.pending.slice(0, -proto.length);\n    const token_o = state.push(\"link_open\", \"a\", 1);\n    token_o.attrs = [[\"href\", fullUrl]];\n    token_o.markup = \"linkify\";\n    token_o.info = \"auto\";\n    const token_t = state.push(\"text\", \"\", 0);\n    token_t.content = state.md.normalizeLinkText(url2);\n    const token_c = state.push(\"link_close\", \"a\", -1);\n    token_c.markup = \"linkify\";\n    token_c.info = \"auto\";\n  }\n  state.pos += url2.length - proto.length;\n  return true;\n}\nfunction newline(state, silent) {\n  let pos = state.pos;\n  if (state.src.charCodeAt(pos) !== 10) {\n    return false;\n  }\n  const pmax = state.pending.length - 1;\n  const max = state.posMax;\n  if (!silent) {\n    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 32) {\n      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 32) {\n        let ws = pmax - 1;\n        while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 32) ws--;\n        state.pending = state.pending.slice(0, ws);\n        state.push(\"hardbreak\", \"br\", 0);\n      } else {\n        state.pending = state.pending.slice(0, -1);\n        state.push(\"softbreak\", \"br\", 0);\n      }\n    } else {\n      state.push(\"softbreak\", \"br\", 0);\n    }\n  }\n  pos++;\n  while (pos < max && isSpace(state.src.charCodeAt(pos))) {\n    pos++;\n  }\n  state.pos = pos;\n  return true;\n}\nconst ESCAPED = [];\nfor (let i3 = 0; i3 < 256; i3++) {\n  ESCAPED.push(0);\n}\n\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach(function(ch) {\n  ESCAPED[ch.charCodeAt(0)] = 1;\n});\nfunction escape(state, silent) {\n  let pos = state.pos;\n  const max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 92) return false;\n  pos++;\n  if (pos >= max) return false;\n  let ch1 = state.src.charCodeAt(pos);\n  if (ch1 === 10) {\n    if (!silent) {\n      state.push(\"hardbreak\", \"br\", 0);\n    }\n    pos++;\n    while (pos < max) {\n      ch1 = state.src.charCodeAt(pos);\n      if (!isSpace(ch1)) break;\n      pos++;\n    }\n    state.pos = pos;\n    return true;\n  }\n  let escapedStr = state.src[pos];\n  if (ch1 >= 55296 && ch1 <= 56319 && pos + 1 < max) {\n    const ch2 = state.src.charCodeAt(pos + 1);\n    if (ch2 >= 56320 && ch2 <= 57343) {\n      escapedStr += state.src[pos + 1];\n      pos++;\n    }\n  }\n  const origStr = \"\\\\\" + escapedStr;\n  if (!silent) {\n    const token = state.push(\"text_special\", \"\", 0);\n    if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n      token.content = escapedStr;\n    } else {\n      token.content = origStr;\n    }\n    token.markup = origStr;\n    token.info = \"escape\";\n  }\n  state.pos = pos + 1;\n  return true;\n}\nfunction backtick(state, silent) {\n  let pos = state.pos;\n  const ch = state.src.charCodeAt(pos);\n  if (ch !== 96) {\n    return false;\n  }\n  const start = pos;\n  pos++;\n  const max = state.posMax;\n  while (pos < max && state.src.charCodeAt(pos) === 96) {\n    pos++;\n  }\n  const marker = state.src.slice(start, pos);\n  const openerLength = marker.length;\n  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n    if (!silent) state.pending += marker;\n    state.pos += openerLength;\n    return true;\n  }\n  let matchEnd = pos;\n  let matchStart;\n  while ((matchStart = state.src.indexOf(\"`\", matchEnd)) !== -1) {\n    matchEnd = matchStart + 1;\n    while (matchEnd < max && state.src.charCodeAt(matchEnd) === 96) {\n      matchEnd++;\n    }\n    const closerLength = matchEnd - matchStart;\n    if (closerLength === openerLength) {\n      if (!silent) {\n        const token = state.push(\"code_inline\", \"code\", 0);\n        token.markup = marker;\n        token.content = state.src.slice(pos, matchStart).replace(/\\n/g, \" \").replace(/^ (.+) $/, \"$1\");\n      }\n      state.pos = matchEnd;\n      return true;\n    }\n    state.backticks[closerLength] = matchStart;\n  }\n  state.backticksScanned = true;\n  if (!silent) state.pending += marker;\n  state.pos += openerLength;\n  return true;\n}\nfunction strikethrough_tokenize(state, silent) {\n  const start = state.pos;\n  const marker = state.src.charCodeAt(start);\n  if (silent) {\n    return false;\n  }\n  if (marker !== 126) {\n    return false;\n  }\n  const scanned = state.scanDelims(state.pos, true);\n  let len = scanned.length;\n  const ch = String.fromCharCode(marker);\n  if (len < 2) {\n    return false;\n  }\n  let token;\n  if (len % 2) {\n    token = state.push(\"text\", \"\", 0);\n    token.content = ch;\n    len--;\n  }\n  for (let i3 = 0; i3 < len; i3 += 2) {\n    token = state.push(\"text\", \"\", 0);\n    token.content = ch + ch;\n    state.delimiters.push({\n      marker,\n      length: 0,\n      // disable \"rule of 3\" length checks meant for emphasis\n      token: state.tokens.length - 1,\n      end: -1,\n      open: scanned.can_open,\n      close: scanned.can_close\n    });\n  }\n  state.pos += scanned.length;\n  return true;\n}\nfunction postProcess$1(state, delimiters) {\n  let token;\n  const loneMarkers = [];\n  const max = delimiters.length;\n  for (let i3 = 0; i3 < max; i3++) {\n    const startDelim = delimiters[i3];\n    if (startDelim.marker !== 126) {\n      continue;\n    }\n    if (startDelim.end === -1) {\n      continue;\n    }\n    const endDelim = delimiters[startDelim.end];\n    token = state.tokens[startDelim.token];\n    token.type = \"s_open\";\n    token.tag = \"s\";\n    token.nesting = 1;\n    token.markup = \"~~\";\n    token.content = \"\";\n    token = state.tokens[endDelim.token];\n    token.type = \"s_close\";\n    token.tag = \"s\";\n    token.nesting = -1;\n    token.markup = \"~~\";\n    token.content = \"\";\n    if (state.tokens[endDelim.token - 1].type === \"text\" && state.tokens[endDelim.token - 1].content === \"~\") {\n      loneMarkers.push(endDelim.token - 1);\n    }\n  }\n  while (loneMarkers.length) {\n    const i3 = loneMarkers.pop();\n    let j2 = i3 + 1;\n    while (j2 < state.tokens.length && state.tokens[j2].type === \"s_close\") {\n      j2++;\n    }\n    j2--;\n    if (i3 !== j2) {\n      token = state.tokens[j2];\n      state.tokens[j2] = state.tokens[i3];\n      state.tokens[i3] = token;\n    }\n  }\n}\nfunction strikethrough_postProcess(state) {\n  const tokens_meta = state.tokens_meta;\n  const max = state.tokens_meta.length;\n  postProcess$1(state, state.delimiters);\n  for (let curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      postProcess$1(state, tokens_meta[curr].delimiters);\n    }\n  }\n}\nconst r_strikethrough = {\n  tokenize: strikethrough_tokenize,\n  postProcess: strikethrough_postProcess\n};\nfunction emphasis_tokenize(state, silent) {\n  const start = state.pos;\n  const marker = state.src.charCodeAt(start);\n  if (silent) {\n    return false;\n  }\n  if (marker !== 95 && marker !== 42) {\n    return false;\n  }\n  const scanned = state.scanDelims(state.pos, marker === 42);\n  for (let i3 = 0; i3 < scanned.length; i3++) {\n    const token = state.push(\"text\", \"\", 0);\n    token.content = String.fromCharCode(marker);\n    state.delimiters.push({\n      // Char code of the starting marker (number).\n      //\n      marker,\n      // Total length of these series of delimiters.\n      //\n      length: scanned.length,\n      // A position of the token this delimiter corresponds to.\n      //\n      token: state.tokens.length - 1,\n      // If this delimiter is matched as a valid opener, `end` will be\n      // equal to its position, otherwise it's `-1`.\n      //\n      end: -1,\n      // Boolean flags that determine if this delimiter could open or close\n      // an emphasis.\n      //\n      open: scanned.can_open,\n      close: scanned.can_close\n    });\n  }\n  state.pos += scanned.length;\n  return true;\n}\nfunction postProcess(state, delimiters) {\n  const max = delimiters.length;\n  for (let i3 = max - 1; i3 >= 0; i3--) {\n    const startDelim = delimiters[i3];\n    if (startDelim.marker !== 95 && startDelim.marker !== 42) {\n      continue;\n    }\n    if (startDelim.end === -1) {\n      continue;\n    }\n    const endDelim = delimiters[startDelim.end];\n    const isStrong = i3 > 0 && delimiters[i3 - 1].end === startDelim.end + 1 && // check that first two markers match and adjacent\n    delimiters[i3 - 1].marker === startDelim.marker && delimiters[i3 - 1].token === startDelim.token - 1 && // check that last two markers are adjacent (we can safely assume they match)\n    delimiters[startDelim.end + 1].token === endDelim.token + 1;\n    const ch = String.fromCharCode(startDelim.marker);\n    const token_o = state.tokens[startDelim.token];\n    token_o.type = isStrong ? \"strong_open\" : \"em_open\";\n    token_o.tag = isStrong ? \"strong\" : \"em\";\n    token_o.nesting = 1;\n    token_o.markup = isStrong ? ch + ch : ch;\n    token_o.content = \"\";\n    const token_c = state.tokens[endDelim.token];\n    token_c.type = isStrong ? \"strong_close\" : \"em_close\";\n    token_c.tag = isStrong ? \"strong\" : \"em\";\n    token_c.nesting = -1;\n    token_c.markup = isStrong ? ch + ch : ch;\n    token_c.content = \"\";\n    if (isStrong) {\n      state.tokens[delimiters[i3 - 1].token].content = \"\";\n      state.tokens[delimiters[startDelim.end + 1].token].content = \"\";\n      i3--;\n    }\n  }\n}\nfunction emphasis_post_process(state) {\n  const tokens_meta = state.tokens_meta;\n  const max = state.tokens_meta.length;\n  postProcess(state, state.delimiters);\n  for (let curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      postProcess(state, tokens_meta[curr].delimiters);\n    }\n  }\n}\nconst r_emphasis = {\n  tokenize: emphasis_tokenize,\n  postProcess: emphasis_post_process\n};\nfunction link(state, silent) {\n  let code2, label, res, ref;\n  let href = \"\";\n  let title = \"\";\n  let start = state.pos;\n  let parseReference = true;\n  if (state.src.charCodeAt(state.pos) !== 91) {\n    return false;\n  }\n  const oldPos = state.pos;\n  const max = state.posMax;\n  const labelStart = state.pos + 1;\n  const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true);\n  if (labelEnd < 0) {\n    return false;\n  }\n  let pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 40) {\n    parseReference = false;\n    pos++;\n    for (; pos < max; pos++) {\n      code2 = state.src.charCodeAt(pos);\n      if (!isSpace(code2) && code2 !== 10) {\n        break;\n      }\n    }\n    if (pos >= max) {\n      return false;\n    }\n    start = pos;\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str);\n      if (state.md.validateLink(href)) {\n        pos = res.pos;\n      } else {\n        href = \"\";\n      }\n      start = pos;\n      for (; pos < max; pos++) {\n        code2 = state.src.charCodeAt(pos);\n        if (!isSpace(code2) && code2 !== 10) {\n          break;\n        }\n      }\n      res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n      if (pos < max && start !== pos && res.ok) {\n        title = res.str;\n        pos = res.pos;\n        for (; pos < max; pos++) {\n          code2 = state.src.charCodeAt(pos);\n          if (!isSpace(code2) && code2 !== 10) {\n            break;\n          }\n        }\n      }\n    }\n    if (pos >= max || state.src.charCodeAt(pos) !== 41) {\n      parseReference = true;\n    }\n    pos++;\n  }\n  if (parseReference) {\n    if (typeof state.env.references === \"undefined\") {\n      return false;\n    }\n    if (pos < max && state.src.charCodeAt(pos) === 91) {\n      start = pos + 1;\n      pos = state.md.helpers.parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = labelEnd + 1;\n      }\n    } else {\n      pos = labelEnd + 1;\n    }\n    if (!label) {\n      label = state.src.slice(labelStart, labelEnd);\n    }\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n  if (!silent) {\n    state.pos = labelStart;\n    state.posMax = labelEnd;\n    const token_o = state.push(\"link_open\", \"a\", 1);\n    const attrs = [[\"href\", href]];\n    token_o.attrs = attrs;\n    if (title) {\n      attrs.push([\"title\", title]);\n    }\n    state.linkLevel++;\n    state.md.inline.tokenize(state);\n    state.linkLevel--;\n    state.push(\"link_close\", \"a\", -1);\n  }\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n}\nfunction image(state, silent) {\n  let code2, content, label, pos, ref, res, title, start;\n  let href = \"\";\n  const oldPos = state.pos;\n  const max = state.posMax;\n  if (state.src.charCodeAt(state.pos) !== 33) {\n    return false;\n  }\n  if (state.src.charCodeAt(state.pos + 1) !== 91) {\n    return false;\n  }\n  const labelStart = state.pos + 2;\n  const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false);\n  if (labelEnd < 0) {\n    return false;\n  }\n  pos = labelEnd + 1;\n  if (pos < max && state.src.charCodeAt(pos) === 40) {\n    pos++;\n    for (; pos < max; pos++) {\n      code2 = state.src.charCodeAt(pos);\n      if (!isSpace(code2) && code2 !== 10) {\n        break;\n      }\n    }\n    if (pos >= max) {\n      return false;\n    }\n    start = pos;\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax);\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str);\n      if (state.md.validateLink(href)) {\n        pos = res.pos;\n      } else {\n        href = \"\";\n      }\n    }\n    start = pos;\n    for (; pos < max; pos++) {\n      code2 = state.src.charCodeAt(pos);\n      if (!isSpace(code2) && code2 !== 10) {\n        break;\n      }\n    }\n    res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax);\n    if (pos < max && start !== pos && res.ok) {\n      title = res.str;\n      pos = res.pos;\n      for (; pos < max; pos++) {\n        code2 = state.src.charCodeAt(pos);\n        if (!isSpace(code2) && code2 !== 10) {\n          break;\n        }\n      }\n    } else {\n      title = \"\";\n    }\n    if (pos >= max || state.src.charCodeAt(pos) !== 41) {\n      state.pos = oldPos;\n      return false;\n    }\n    pos++;\n  } else {\n    if (typeof state.env.references === \"undefined\") {\n      return false;\n    }\n    if (pos < max && state.src.charCodeAt(pos) === 91) {\n      start = pos + 1;\n      pos = state.md.helpers.parseLinkLabel(state, pos);\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++);\n      } else {\n        pos = labelEnd + 1;\n      }\n    } else {\n      pos = labelEnd + 1;\n    }\n    if (!label) {\n      label = state.src.slice(labelStart, labelEnd);\n    }\n    ref = state.env.references[normalizeReference(label)];\n    if (!ref) {\n      state.pos = oldPos;\n      return false;\n    }\n    href = ref.href;\n    title = ref.title;\n  }\n  if (!silent) {\n    content = state.src.slice(labelStart, labelEnd);\n    const tokens = [];\n    state.md.inline.parse(\n      content,\n      state.md,\n      state.env,\n      tokens\n    );\n    const token = state.push(\"image\", \"img\", 0);\n    const attrs = [[\"src\", href], [\"alt\", \"\"]];\n    token.attrs = attrs;\n    token.children = tokens;\n    token.content = content;\n    if (title) {\n      attrs.push([\"title\", title]);\n    }\n  }\n  state.pos = pos;\n  state.posMax = max;\n  return true;\n}\nconst EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/;\nconst AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\\x00-\\x20]*)$/;\nfunction autolink(state, silent) {\n  let pos = state.pos;\n  if (state.src.charCodeAt(pos) !== 60) {\n    return false;\n  }\n  const start = state.pos;\n  const max = state.posMax;\n  for (; ; ) {\n    if (++pos >= max) return false;\n    const ch = state.src.charCodeAt(pos);\n    if (ch === 60) return false;\n    if (ch === 62) break;\n  }\n  const url2 = state.src.slice(start + 1, pos);\n  if (AUTOLINK_RE.test(url2)) {\n    const fullUrl = state.md.normalizeLink(url2);\n    if (!state.md.validateLink(fullUrl)) {\n      return false;\n    }\n    if (!silent) {\n      const token_o = state.push(\"link_open\", \"a\", 1);\n      token_o.attrs = [[\"href\", fullUrl]];\n      token_o.markup = \"autolink\";\n      token_o.info = \"auto\";\n      const token_t = state.push(\"text\", \"\", 0);\n      token_t.content = state.md.normalizeLinkText(url2);\n      const token_c = state.push(\"link_close\", \"a\", -1);\n      token_c.markup = \"autolink\";\n      token_c.info = \"auto\";\n    }\n    state.pos += url2.length + 2;\n    return true;\n  }\n  if (EMAIL_RE.test(url2)) {\n    const fullUrl = state.md.normalizeLink(\"mailto:\" + url2);\n    if (!state.md.validateLink(fullUrl)) {\n      return false;\n    }\n    if (!silent) {\n      const token_o = state.push(\"link_open\", \"a\", 1);\n      token_o.attrs = [[\"href\", fullUrl]];\n      token_o.markup = \"autolink\";\n      token_o.info = \"auto\";\n      const token_t = state.push(\"text\", \"\", 0);\n      token_t.content = state.md.normalizeLinkText(url2);\n      const token_c = state.push(\"link_close\", \"a\", -1);\n      token_c.markup = \"autolink\";\n      token_c.info = \"auto\";\n    }\n    state.pos += url2.length + 2;\n    return true;\n  }\n  return false;\n}\nfunction isLinkOpen(str) {\n  return /^<a[>\\s]/i.test(str);\n}\nfunction isLinkClose(str) {\n  return /^<\\/a\\s*>/i.test(str);\n}\nfunction isLetter(ch) {\n  const lc = ch | 32;\n  return lc >= 97 && lc <= 122;\n}\nfunction html_inline(state, silent) {\n  if (!state.md.options.html) {\n    return false;\n  }\n  const max = state.posMax;\n  const pos = state.pos;\n  if (state.src.charCodeAt(pos) !== 60 || pos + 2 >= max) {\n    return false;\n  }\n  const ch = state.src.charCodeAt(pos + 1);\n  if (ch !== 33 && ch !== 63 && ch !== 47 && !isLetter(ch)) {\n    return false;\n  }\n  const match3 = state.src.slice(pos).match(HTML_TAG_RE);\n  if (!match3) {\n    return false;\n  }\n  if (!silent) {\n    const token = state.push(\"html_inline\", \"\", 0);\n    token.content = match3[0];\n    if (isLinkOpen(token.content)) state.linkLevel++;\n    if (isLinkClose(token.content)) state.linkLevel--;\n  }\n  state.pos += match3[0].length;\n  return true;\n}\nconst DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nconst NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\nfunction entity(state, silent) {\n  const pos = state.pos;\n  const max = state.posMax;\n  if (state.src.charCodeAt(pos) !== 38) return false;\n  if (pos + 1 >= max) return false;\n  const ch = state.src.charCodeAt(pos + 1);\n  if (ch === 35) {\n    const match3 = state.src.slice(pos).match(DIGITAL_RE);\n    if (match3) {\n      if (!silent) {\n        const code2 = match3[1][0].toLowerCase() === \"x\" ? parseInt(match3[1].slice(1), 16) : parseInt(match3[1], 10);\n        const token = state.push(\"text_special\", \"\", 0);\n        token.content = isValidEntityCode(code2) ? fromCodePoint(code2) : fromCodePoint(65533);\n        token.markup = match3[0];\n        token.info = \"entity\";\n      }\n      state.pos += match3[0].length;\n      return true;\n    }\n  } else {\n    const match3 = state.src.slice(pos).match(NAMED_RE);\n    if (match3) {\n      const decoded = decodeHTML(match3[0]);\n      if (decoded !== match3[0]) {\n        if (!silent) {\n          const token = state.push(\"text_special\", \"\", 0);\n          token.content = decoded;\n          token.markup = match3[0];\n          token.info = \"entity\";\n        }\n        state.pos += match3[0].length;\n        return true;\n      }\n    }\n  }\n  return false;\n}\nfunction processDelimiters(delimiters) {\n  const openersBottom = {};\n  const max = delimiters.length;\n  if (!max) return;\n  let headerIdx = 0;\n  let lastTokenIdx = -2;\n  const jumps = [];\n  for (let closerIdx = 0; closerIdx < max; closerIdx++) {\n    const closer = delimiters[closerIdx];\n    jumps.push(0);\n    if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n      headerIdx = closerIdx;\n    }\n    lastTokenIdx = closer.token;\n    closer.length = closer.length || 0;\n    if (!closer.close) continue;\n    if (!openersBottom.hasOwnProperty(closer.marker)) {\n      openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1];\n    }\n    const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + closer.length % 3];\n    let openerIdx = headerIdx - jumps[headerIdx] - 1;\n    let newMinOpenerIdx = openerIdx;\n    for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n      const opener = delimiters[openerIdx];\n      if (opener.marker !== closer.marker) continue;\n      if (opener.open && opener.end < 0) {\n        let isOddMatch = false;\n        if (opener.close || closer.open) {\n          if ((opener.length + closer.length) % 3 === 0) {\n            if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n              isOddMatch = true;\n            }\n          }\n        }\n        if (!isOddMatch) {\n          const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open ? jumps[openerIdx - 1] + 1 : 0;\n          jumps[closerIdx] = closerIdx - openerIdx + lastJump;\n          jumps[openerIdx] = lastJump;\n          closer.open = false;\n          opener.end = closerIdx;\n          opener.close = false;\n          newMinOpenerIdx = -1;\n          lastTokenIdx = -2;\n          break;\n        }\n      }\n    }\n    if (newMinOpenerIdx !== -1) {\n      openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length || 0) % 3] = newMinOpenerIdx;\n    }\n  }\n}\nfunction link_pairs(state) {\n  const tokens_meta = state.tokens_meta;\n  const max = state.tokens_meta.length;\n  processDelimiters(state.delimiters);\n  for (let curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      processDelimiters(tokens_meta[curr].delimiters);\n    }\n  }\n}\nfunction fragments_join(state) {\n  let curr, last;\n  let level2 = 0;\n  const tokens = state.tokens;\n  const max = state.tokens.length;\n  for (curr = last = 0; curr < max; curr++) {\n    if (tokens[curr].nesting < 0) level2--;\n    tokens[curr].level = level2;\n    if (tokens[curr].nesting > 0) level2++;\n    if (tokens[curr].type === \"text\" && curr + 1 < max && tokens[curr + 1].type === \"text\") {\n      tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content;\n    } else {\n      if (curr !== last) {\n        tokens[last] = tokens[curr];\n      }\n      last++;\n    }\n  }\n  if (curr !== last) {\n    tokens.length = last;\n  }\n}\nconst _rules = [\n  [\"text\", text],\n  [\"linkify\", linkify],\n  [\"newline\", newline],\n  [\"escape\", escape],\n  [\"backticks\", backtick],\n  [\"strikethrough\", r_strikethrough.tokenize],\n  [\"emphasis\", r_emphasis.tokenize],\n  [\"link\", link],\n  [\"image\", image],\n  [\"autolink\", autolink],\n  [\"html_inline\", html_inline],\n  [\"entity\", entity]\n];\nconst _rules2 = [\n  [\"balance_pairs\", link_pairs],\n  [\"strikethrough\", r_strikethrough.postProcess],\n  [\"emphasis\", r_emphasis.postProcess],\n  // rules for pairs separate '**' into its own text tokens, which may be left unused,\n  // rule below merges unused segments back with the rest of the text\n  [\"fragments_join\", fragments_join]\n];\nfunction ParserInline() {\n  this.ruler = new Ruler();\n  for (let i3 = 0; i3 < _rules.length; i3++) {\n    this.ruler.push(_rules[i3][0], _rules[i3][1]);\n  }\n  this.ruler2 = new Ruler();\n  for (let i3 = 0; i3 < _rules2.length; i3++) {\n    this.ruler2.push(_rules2[i3][0], _rules2[i3][1]);\n  }\n}\nParserInline.prototype.skipToken = function(state) {\n  const pos = state.pos;\n  const rules = this.ruler.getRules(\"\");\n  const len = rules.length;\n  const maxNesting = state.md.options.maxNesting;\n  const cache = state.cache;\n  if (typeof cache[pos] !== \"undefined\") {\n    state.pos = cache[pos];\n    return;\n  }\n  let ok = false;\n  if (state.level < maxNesting) {\n    for (let i3 = 0; i3 < len; i3++) {\n      state.level++;\n      ok = rules[i3](state, true);\n      state.level--;\n      if (ok) {\n        if (pos >= state.pos) {\n          throw new Error(\"inline rule didn't increment state.pos\");\n        }\n        break;\n      }\n    }\n  } else {\n    state.pos = state.posMax;\n  }\n  if (!ok) {\n    state.pos++;\n  }\n  cache[pos] = state.pos;\n};\nParserInline.prototype.tokenize = function(state) {\n  const rules = this.ruler.getRules(\"\");\n  const len = rules.length;\n  const end = state.posMax;\n  const maxNesting = state.md.options.maxNesting;\n  while (state.pos < end) {\n    const prevPos = state.pos;\n    let ok = false;\n    if (state.level < maxNesting) {\n      for (let i3 = 0; i3 < len; i3++) {\n        ok = rules[i3](state, false);\n        if (ok) {\n          if (prevPos >= state.pos) {\n            throw new Error(\"inline rule didn't increment state.pos\");\n          }\n          break;\n        }\n      }\n    }\n    if (ok) {\n      if (state.pos >= end) {\n        break;\n      }\n      continue;\n    }\n    state.pending += state.src[state.pos++];\n  }\n  if (state.pending) {\n    state.pushPending();\n  }\n};\nParserInline.prototype.parse = function(str, md, env, outTokens) {\n  const state = new this.State(str, md, env, outTokens);\n  this.tokenize(state);\n  const rules = this.ruler2.getRules(\"\");\n  const len = rules.length;\n  for (let i3 = 0; i3 < len; i3++) {\n    rules[i3](state);\n  }\n};\nParserInline.prototype.State = StateInline;\nfunction reFactory(opts) {\n  const re = {};\n  opts = opts || {};\n  re.src_Any = Any.source;\n  re.src_Cc = Cc.source;\n  re.src_Z = Z.source;\n  re.src_P = P.source;\n  re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join(\"|\");\n  re.src_ZCc = [re.src_Z, re.src_Cc].join(\"|\");\n  const text_separators = \"[><｜]\";\n  re.src_pseudo_letter = \"(?:(?!\" + text_separators + \"|\" + re.src_ZPCc + \")\" + re.src_Any + \")\";\n  re.src_ip4 = \"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\";\n  re.src_auth = \"(?:(?:(?!\" + re.src_ZCc + \"|[@/\\\\[\\\\]()]).)+@)?\";\n  re.src_port = \"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\";\n  re.src_host_terminator = \"(?=$|\" + text_separators + \"|\" + re.src_ZPCc + \")(?!\" + (opts[\"---\"] ? \"-(?!--)|\" : \"-|\") + \"_|:\\\\d|\\\\.-|\\\\.(?!$|\" + re.src_ZPCc + \"))\";\n  re.src_path = \"(?:[/?#](?:(?!\" + re.src_ZCc + \"|\" + text_separators + `|[()[\\\\]{}.,\"'?!\\\\-;]).|\\\\[(?:(?!` + re.src_ZCc + \"|\\\\]).)*\\\\]|\\\\((?:(?!\" + re.src_ZCc + \"|[)]).)*\\\\)|\\\\{(?:(?!\" + re.src_ZCc + '|[}]).)*\\\\}|\\\\\"(?:(?!' + re.src_ZCc + `|[\"]).)+\\\\\"|\\\\'(?:(?!` + re.src_ZCc + \"|[']).)+\\\\'|\\\\'(?=\" + re.src_pseudo_letter + \"|[-])|\\\\.{2,}[a-zA-Z0-9%/&]|\\\\.(?!\" + re.src_ZCc + \"|[.]|$)|\" + (opts[\"---\"] ? \"\\\\-(?!--(?:[^-]|$))(?:-*)|\" : \"\\\\-+|\") + // allow `,,,` in paths\n  \",(?!\" + re.src_ZCc + \"|$)|;(?!\" + re.src_ZCc + \"|$)|\\\\!+(?!\" + re.src_ZCc + \"|[!]|$)|\\\\?(?!\" + re.src_ZCc + \"|[?]|$))+|\\\\/)?\";\n  re.src_email_name = '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*';\n  re.src_xn = \"xn--[a-z0-9\\\\-]{1,59}\";\n  re.src_domain_root = // Allow letters & digits (http://test1)\n  \"(?:\" + re.src_xn + \"|\" + re.src_pseudo_letter + \"{1,63})\";\n  re.src_domain = \"(?:\" + re.src_xn + \"|(?:\" + re.src_pseudo_letter + \")|(?:\" + re.src_pseudo_letter + \"(?:-|\" + re.src_pseudo_letter + \"){0,61}\" + re.src_pseudo_letter + \"))\";\n  re.src_host = \"(?:(?:(?:(?:\" + re.src_domain + \")\\\\.)*\" + re.src_domain + \"))\";\n  re.tpl_host_fuzzy = \"(?:\" + re.src_ip4 + \"|(?:(?:(?:\" + re.src_domain + \")\\\\.)+(?:%TLDS%)))\";\n  re.tpl_host_no_ip_fuzzy = \"(?:(?:(?:\" + re.src_domain + \")\\\\.)+(?:%TLDS%))\";\n  re.src_host_strict = re.src_host + re.src_host_terminator;\n  re.tpl_host_fuzzy_strict = re.tpl_host_fuzzy + re.src_host_terminator;\n  re.src_host_port_strict = re.src_host + re.src_port + re.src_host_terminator;\n  re.tpl_host_port_fuzzy_strict = re.tpl_host_fuzzy + re.src_port + re.src_host_terminator;\n  re.tpl_host_port_no_ip_fuzzy_strict = re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator;\n  re.tpl_host_fuzzy_test = \"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\" + re.src_ZPCc + \"|>|$))\";\n  re.tpl_email_fuzzy = \"(^|\" + text_separators + '|\"|\\\\(|' + re.src_ZCc + \")(\" + re.src_email_name + \"@\" + re.tpl_host_fuzzy_strict + \")\";\n  re.tpl_link_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n  // but can start with > (markdown blockquote)\n  \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|｜]|\" + re.src_ZPCc + \"))((?![$+<=>^`|｜])\" + re.tpl_host_port_fuzzy_strict + re.src_path + \")\";\n  re.tpl_link_no_ip_fuzzy = // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n  // but can start with > (markdown blockquote)\n  \"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|｜]|\" + re.src_ZPCc + \"))((?![$+<=>^`|｜])\" + re.tpl_host_port_no_ip_fuzzy_strict + re.src_path + \")\";\n  return re;\n}\nfunction assign(obj) {\n  const sources = Array.prototype.slice.call(arguments, 1);\n  sources.forEach(function(source) {\n    if (!source) {\n      return;\n    }\n    Object.keys(source).forEach(function(key) {\n      obj[key] = source[key];\n    });\n  });\n  return obj;\n}\nfunction _class(obj) {\n  return Object.prototype.toString.call(obj);\n}\nfunction isString$2(obj) {\n  return _class(obj) === \"[object String]\";\n}\nfunction isObject$4(obj) {\n  return _class(obj) === \"[object Object]\";\n}\nfunction isRegExp(obj) {\n  return _class(obj) === \"[object RegExp]\";\n}\nfunction isFunction$3(obj) {\n  return _class(obj) === \"[object Function]\";\n}\nfunction escapeRE(str) {\n  return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, \"\\\\$&\");\n}\nconst defaultOptions$1 = {\n  fuzzyLink: true,\n  fuzzyEmail: true,\n  fuzzyIP: false\n};\nfunction isOptionsObj(obj) {\n  return Object.keys(obj || {}).reduce(function(acc, k2) {\n    return acc || defaultOptions$1.hasOwnProperty(k2);\n  }, false);\n}\nconst defaultSchemas = {\n  \"http:\": {\n    validate: function(text2, pos, self2) {\n      const tail = text2.slice(pos);\n      if (!self2.re.http) {\n        self2.re.http = new RegExp(\n          \"^\\\\/\\\\/\" + self2.re.src_auth + self2.re.src_host_port_strict + self2.re.src_path,\n          \"i\"\n        );\n      }\n      if (self2.re.http.test(tail)) {\n        return tail.match(self2.re.http)[0].length;\n      }\n      return 0;\n    }\n  },\n  \"https:\": \"http:\",\n  \"ftp:\": \"http:\",\n  \"//\": {\n    validate: function(text2, pos, self2) {\n      const tail = text2.slice(pos);\n      if (!self2.re.no_http) {\n        self2.re.no_http = new RegExp(\n          \"^\" + self2.re.src_auth + // Don't allow single-level domains, because of false positives like '//test'\n          // with code comments\n          \"(?:localhost|(?:(?:\" + self2.re.src_domain + \")\\\\.)+\" + self2.re.src_domain_root + \")\" + self2.re.src_port + self2.re.src_host_terminator + self2.re.src_path,\n          \"i\"\n        );\n      }\n      if (self2.re.no_http.test(tail)) {\n        if (pos >= 3 && text2[pos - 3] === \":\") {\n          return 0;\n        }\n        if (pos >= 3 && text2[pos - 3] === \"/\") {\n          return 0;\n        }\n        return tail.match(self2.re.no_http)[0].length;\n      }\n      return 0;\n    }\n  },\n  \"mailto:\": {\n    validate: function(text2, pos, self2) {\n      const tail = text2.slice(pos);\n      if (!self2.re.mailto) {\n        self2.re.mailto = new RegExp(\n          \"^\" + self2.re.src_email_name + \"@\" + self2.re.src_host_strict,\n          \"i\"\n        );\n      }\n      if (self2.re.mailto.test(tail)) {\n        return tail.match(self2.re.mailto)[0].length;\n      }\n      return 0;\n    }\n  }\n};\nconst tlds_2ch_src_re = \"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\";\nconst tlds_default = \"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\".split(\"|\");\nfunction resetScanCache(self2) {\n  self2.__index__ = -1;\n  self2.__text_cache__ = \"\";\n}\nfunction createValidator(re) {\n  return function(text2, pos) {\n    const tail = text2.slice(pos);\n    if (re.test(tail)) {\n      return tail.match(re)[0].length;\n    }\n    return 0;\n  };\n}\nfunction createNormalizer() {\n  return function(match3, self2) {\n    self2.normalize(match3);\n  };\n}\nfunction compile(self2) {\n  const re = self2.re = reFactory(self2.__opts__);\n  const tlds2 = self2.__tlds__.slice();\n  self2.onCompile();\n  if (!self2.__tlds_replaced__) {\n    tlds2.push(tlds_2ch_src_re);\n  }\n  tlds2.push(re.src_xn);\n  re.src_tlds = tlds2.join(\"|\");\n  function untpl(tpl) {\n    return tpl.replace(\"%TLDS%\", re.src_tlds);\n  }\n  re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), \"i\");\n  re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), \"i\");\n  re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), \"i\");\n  re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), \"i\");\n  const aliases = [];\n  self2.__compiled__ = {};\n  function schemaError(name, val) {\n    throw new Error('(LinkifyIt) Invalid schema \"' + name + '\": ' + val);\n  }\n  Object.keys(self2.__schemas__).forEach(function(name) {\n    const val = self2.__schemas__[name];\n    if (val === null) {\n      return;\n    }\n    const compiled = { validate: null, link: null };\n    self2.__compiled__[name] = compiled;\n    if (isObject$4(val)) {\n      if (isRegExp(val.validate)) {\n        compiled.validate = createValidator(val.validate);\n      } else if (isFunction$3(val.validate)) {\n        compiled.validate = val.validate;\n      } else {\n        schemaError(name, val);\n      }\n      if (isFunction$3(val.normalize)) {\n        compiled.normalize = val.normalize;\n      } else if (!val.normalize) {\n        compiled.normalize = createNormalizer();\n      } else {\n        schemaError(name, val);\n      }\n      return;\n    }\n    if (isString$2(val)) {\n      aliases.push(name);\n      return;\n    }\n    schemaError(name, val);\n  });\n  aliases.forEach(function(alias) {\n    if (!self2.__compiled__[self2.__schemas__[alias]]) {\n      return;\n    }\n    self2.__compiled__[alias].validate = self2.__compiled__[self2.__schemas__[alias]].validate;\n    self2.__compiled__[alias].normalize = self2.__compiled__[self2.__schemas__[alias]].normalize;\n  });\n  self2.__compiled__[\"\"] = { validate: null, normalize: createNormalizer() };\n  const slist = Object.keys(self2.__compiled__).filter(function(name) {\n    return name.length > 0 && self2.__compiled__[name];\n  }).map(escapeRE).join(\"|\");\n  self2.re.schema_test = RegExp(\"(^|(?!_)(?:[><｜]|\" + re.src_ZPCc + \"))(\" + slist + \")\", \"i\");\n  self2.re.schema_search = RegExp(\"(^|(?!_)(?:[><｜]|\" + re.src_ZPCc + \"))(\" + slist + \")\", \"ig\");\n  self2.re.schema_at_start = RegExp(\"^\" + self2.re.schema_search.source, \"i\");\n  self2.re.pretest = RegExp(\n    \"(\" + self2.re.schema_test.source + \")|(\" + self2.re.host_fuzzy_test.source + \")|@\",\n    \"i\"\n  );\n  resetScanCache(self2);\n}\nfunction Match(self2, shift) {\n  const start = self2.__index__;\n  const end = self2.__last_index__;\n  const text2 = self2.__text_cache__.slice(start, end);\n  this.schema = self2.__schema__.toLowerCase();\n  this.index = start + shift;\n  this.lastIndex = end + shift;\n  this.raw = text2;\n  this.text = text2;\n  this.url = text2;\n}\nfunction createMatch(self2, shift) {\n  const match3 = new Match(self2, shift);\n  self2.__compiled__[match3.schema].normalize(match3, self2);\n  return match3;\n}\nfunction LinkifyIt(schemas, options) {\n  if (!(this instanceof LinkifyIt)) {\n    return new LinkifyIt(schemas, options);\n  }\n  if (!options) {\n    if (isOptionsObj(schemas)) {\n      options = schemas;\n      schemas = {};\n    }\n  }\n  this.__opts__ = assign({}, defaultOptions$1, options);\n  this.__index__ = -1;\n  this.__last_index__ = -1;\n  this.__schema__ = \"\";\n  this.__text_cache__ = \"\";\n  this.__schemas__ = assign({}, defaultSchemas, schemas);\n  this.__compiled__ = {};\n  this.__tlds__ = tlds_default;\n  this.__tlds_replaced__ = false;\n  this.re = {};\n  compile(this);\n}\nLinkifyIt.prototype.add = function add(schema, definition) {\n  this.__schemas__[schema] = definition;\n  compile(this);\n  return this;\n};\nLinkifyIt.prototype.set = function set(options) {\n  this.__opts__ = assign(this.__opts__, options);\n  return this;\n};\nLinkifyIt.prototype.test = function test(text2) {\n  this.__text_cache__ = text2;\n  this.__index__ = -1;\n  if (!text2.length) {\n    return false;\n  }\n  let m2, ml, me, len, shift, next, re, tld_pos, at_pos;\n  if (this.re.schema_test.test(text2)) {\n    re = this.re.schema_search;\n    re.lastIndex = 0;\n    while ((m2 = re.exec(text2)) !== null) {\n      len = this.testSchemaAt(text2, m2[2], re.lastIndex);\n      if (len) {\n        this.__schema__ = m2[2];\n        this.__index__ = m2.index + m2[1].length;\n        this.__last_index__ = m2.index + m2[0].length + len;\n        break;\n      }\n    }\n  }\n  if (this.__opts__.fuzzyLink && this.__compiled__[\"http:\"]) {\n    tld_pos = text2.search(this.re.host_fuzzy_test);\n    if (tld_pos >= 0) {\n      if (this.__index__ < 0 || tld_pos < this.__index__) {\n        if ((ml = text2.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) !== null) {\n          shift = ml.index + ml[1].length;\n          if (this.__index__ < 0 || shift < this.__index__) {\n            this.__schema__ = \"\";\n            this.__index__ = shift;\n            this.__last_index__ = ml.index + ml[0].length;\n          }\n        }\n      }\n    }\n  }\n  if (this.__opts__.fuzzyEmail && this.__compiled__[\"mailto:\"]) {\n    at_pos = text2.indexOf(\"@\");\n    if (at_pos >= 0) {\n      if ((me = text2.match(this.re.email_fuzzy)) !== null) {\n        shift = me.index + me[1].length;\n        next = me.index + me[0].length;\n        if (this.__index__ < 0 || shift < this.__index__ || shift === this.__index__ && next > this.__last_index__) {\n          this.__schema__ = \"mailto:\";\n          this.__index__ = shift;\n          this.__last_index__ = next;\n        }\n      }\n    }\n  }\n  return this.__index__ >= 0;\n};\nLinkifyIt.prototype.pretest = function pretest(text2) {\n  return this.re.pretest.test(text2);\n};\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt(text2, schema, pos) {\n  if (!this.__compiled__[schema.toLowerCase()]) {\n    return 0;\n  }\n  return this.__compiled__[schema.toLowerCase()].validate(text2, pos, this);\n};\nLinkifyIt.prototype.match = function match(text2) {\n  const result = [];\n  let shift = 0;\n  if (this.__index__ >= 0 && this.__text_cache__ === text2) {\n    result.push(createMatch(this, shift));\n    shift = this.__last_index__;\n  }\n  let tail = shift ? text2.slice(shift) : text2;\n  while (this.test(tail)) {\n    result.push(createMatch(this, shift));\n    tail = tail.slice(this.__last_index__);\n    shift += this.__last_index__;\n  }\n  if (result.length) {\n    return result;\n  }\n  return null;\n};\nLinkifyIt.prototype.matchAtStart = function matchAtStart(text2) {\n  this.__text_cache__ = text2;\n  this.__index__ = -1;\n  if (!text2.length) return null;\n  const m2 = this.re.schema_at_start.exec(text2);\n  if (!m2) return null;\n  const len = this.testSchemaAt(text2, m2[2], m2[0].length);\n  if (!len) return null;\n  this.__schema__ = m2[2];\n  this.__index__ = m2.index + m2[1].length;\n  this.__last_index__ = m2.index + m2[0].length + len;\n  return createMatch(this, 0);\n};\nLinkifyIt.prototype.tlds = function tlds(list2, keepOld) {\n  list2 = Array.isArray(list2) ? list2 : [list2];\n  if (!keepOld) {\n    this.__tlds__ = list2.slice();\n    this.__tlds_replaced__ = true;\n    compile(this);\n    return this;\n  }\n  this.__tlds__ = this.__tlds__.concat(list2).sort().filter(function(el, idx, arr) {\n    return el !== arr[idx - 1];\n  }).reverse();\n  compile(this);\n  return this;\n};\nLinkifyIt.prototype.normalize = function normalize(match3) {\n  if (!match3.schema) {\n    match3.url = \"http://\" + match3.url;\n  }\n  if (match3.schema === \"mailto:\" && !/^mailto:/i.test(match3.url)) {\n    match3.url = \"mailto:\" + match3.url;\n  }\n};\nLinkifyIt.prototype.onCompile = function onCompile() {\n};\nconst maxInt = 2147483647;\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128;\nconst delimiter = \"-\";\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/;\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g;\nconst errors = {\n  \"overflow\": \"Overflow: input needs wider integers to process\",\n  \"not-basic\": \"Illegal input >= 0x80 (not a basic code point)\",\n  \"invalid-input\": \"Invalid input\"\n};\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\nfunction error(type) {\n  throw new RangeError(errors[type]);\n}\nfunction map(array, callback) {\n  const result = [];\n  let length = array.length;\n  while (length--) {\n    result[length] = callback(array[length]);\n  }\n  return result;\n}\nfunction mapDomain(domain, callback) {\n  const parts = domain.split(\"@\");\n  let result = \"\";\n  if (parts.length > 1) {\n    result = parts[0] + \"@\";\n    domain = parts[1];\n  }\n  domain = domain.replace(regexSeparators, \".\");\n  const labels = domain.split(\".\");\n  const encoded = map(labels, callback).join(\".\");\n  return result + encoded;\n}\nfunction ucs2decode(string) {\n  const output = [];\n  let counter = 0;\n  const length = string.length;\n  while (counter < length) {\n    const value = string.charCodeAt(counter++);\n    if (value >= 55296 && value <= 56319 && counter < length) {\n      const extra = string.charCodeAt(counter++);\n      if ((extra & 64512) == 56320) {\n        output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n      } else {\n        output.push(value);\n        counter--;\n      }\n    } else {\n      output.push(value);\n    }\n  }\n  return output;\n}\nconst ucs2encode = (codePoints) => String.fromCodePoint(...codePoints);\nconst basicToDigit = function(codePoint) {\n  if (codePoint >= 48 && codePoint < 58) {\n    return 26 + (codePoint - 48);\n  }\n  if (codePoint >= 65 && codePoint < 91) {\n    return codePoint - 65;\n  }\n  if (codePoint >= 97 && codePoint < 123) {\n    return codePoint - 97;\n  }\n  return base;\n};\nconst digitToBasic = function(digit, flag) {\n  return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\nconst adapt = function(delta, numPoints, firstTime) {\n  let k2 = 0;\n  delta = firstTime ? floor(delta / damp) : delta >> 1;\n  delta += floor(delta / numPoints);\n  for (; delta > baseMinusTMin * tMax >> 1; k2 += base) {\n    delta = floor(delta / baseMinusTMin);\n  }\n  return floor(k2 + (baseMinusTMin + 1) * delta / (delta + skew));\n};\nconst decode = function(input) {\n  const output = [];\n  const inputLength = input.length;\n  let i3 = 0;\n  let n3 = initialN;\n  let bias = initialBias;\n  let basic = input.lastIndexOf(delimiter);\n  if (basic < 0) {\n    basic = 0;\n  }\n  for (let j2 = 0; j2 < basic; ++j2) {\n    if (input.charCodeAt(j2) >= 128) {\n      error(\"not-basic\");\n    }\n    output.push(input.charCodeAt(j2));\n  }\n  for (let index2 = basic > 0 ? basic + 1 : 0; index2 < inputLength; ) {\n    const oldi = i3;\n    for (let w = 1, k2 = base; ; k2 += base) {\n      if (index2 >= inputLength) {\n        error(\"invalid-input\");\n      }\n      const digit = basicToDigit(input.charCodeAt(index2++));\n      if (digit >= base) {\n        error(\"invalid-input\");\n      }\n      if (digit > floor((maxInt - i3) / w)) {\n        error(\"overflow\");\n      }\n      i3 += digit * w;\n      const t2 = k2 <= bias ? tMin : k2 >= bias + tMax ? tMax : k2 - bias;\n      if (digit < t2) {\n        break;\n      }\n      const baseMinusT = base - t2;\n      if (w > floor(maxInt / baseMinusT)) {\n        error(\"overflow\");\n      }\n      w *= baseMinusT;\n    }\n    const out = output.length + 1;\n    bias = adapt(i3 - oldi, out, oldi == 0);\n    if (floor(i3 / out) > maxInt - n3) {\n      error(\"overflow\");\n    }\n    n3 += floor(i3 / out);\n    i3 %= out;\n    output.splice(i3++, 0, n3);\n  }\n  return String.fromCodePoint(...output);\n};\nconst encode = function(input) {\n  const output = [];\n  input = ucs2decode(input);\n  const inputLength = input.length;\n  let n3 = initialN;\n  let delta = 0;\n  let bias = initialBias;\n  for (const currentValue of input) {\n    if (currentValue < 128) {\n      output.push(stringFromCharCode(currentValue));\n    }\n  }\n  const basicLength = output.length;\n  let handledCPCount = basicLength;\n  if (basicLength) {\n    output.push(delimiter);\n  }\n  while (handledCPCount < inputLength) {\n    let m2 = maxInt;\n    for (const currentValue of input) {\n      if (currentValue >= n3 && currentValue < m2) {\n        m2 = currentValue;\n      }\n    }\n    const handledCPCountPlusOne = handledCPCount + 1;\n    if (m2 - n3 > floor((maxInt - delta) / handledCPCountPlusOne)) {\n      error(\"overflow\");\n    }\n    delta += (m2 - n3) * handledCPCountPlusOne;\n    n3 = m2;\n    for (const currentValue of input) {\n      if (currentValue < n3 && ++delta > maxInt) {\n        error(\"overflow\");\n      }\n      if (currentValue === n3) {\n        let q = delta;\n        for (let k2 = base; ; k2 += base) {\n          const t2 = k2 <= bias ? tMin : k2 >= bias + tMax ? tMax : k2 - bias;\n          if (q < t2) {\n            break;\n          }\n          const qMinusT = q - t2;\n          const baseMinusT = base - t2;\n          output.push(\n            stringFromCharCode(digitToBasic(t2 + qMinusT % baseMinusT, 0))\n          );\n          q = floor(qMinusT / baseMinusT);\n        }\n        output.push(stringFromCharCode(digitToBasic(q, 0)));\n        bias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n        delta = 0;\n        ++handledCPCount;\n      }\n    }\n    ++delta;\n    ++n3;\n  }\n  return output.join(\"\");\n};\nconst toUnicode = function(input) {\n  return mapDomain(input, function(string) {\n    return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n  });\n};\nconst toASCII = function(input) {\n  return mapDomain(input, function(string) {\n    return regexNonASCII.test(string) ? \"xn--\" + encode(string) : string;\n  });\n};\nconst punycode = {\n  /**\n   * A string representing the current Punycode.js version number.\n   * @memberOf punycode\n   * @type String\n   */\n  \"version\": \"2.3.1\",\n  /**\n   * An object of methods to convert from JavaScript's internal character\n   * representation (UCS-2) to Unicode code points, and back.\n   * @see <https://mathiasbynens.be/notes/javascript-encoding>\n   * @memberOf punycode\n   * @type Object\n   */\n  \"ucs2\": {\n    \"decode\": ucs2decode,\n    \"encode\": ucs2encode\n  },\n  \"decode\": decode,\n  \"encode\": encode,\n  \"toASCII\": toASCII,\n  \"toUnicode\": toUnicode\n};\nconst cfg_default = {\n  options: {\n    // Enable HTML tags in source\n    html: false,\n    // Use '/' to close single tags (<br />)\n    xhtmlOut: false,\n    // Convert '\\n' in paragraphs into <br>\n    breaks: false,\n    // CSS language prefix for fenced blocks\n    langPrefix: \"language-\",\n    // autoconvert URL-like texts to links\n    linkify: false,\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: \"“”‘’\",\n    /* “”‘’ */\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n    // Internal protection, recursion limit\n    maxNesting: 100\n  },\n  components: {\n    core: {},\n    block: {},\n    inline: {}\n  }\n};\nconst cfg_zero = {\n  options: {\n    // Enable HTML tags in source\n    html: false,\n    // Use '/' to close single tags (<br />)\n    xhtmlOut: false,\n    // Convert '\\n' in paragraphs into <br>\n    breaks: false,\n    // CSS language prefix for fenced blocks\n    langPrefix: \"language-\",\n    // autoconvert URL-like texts to links\n    linkify: false,\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: \"“”‘’\",\n    /* “”‘’ */\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n    // Internal protection, recursion limit\n    maxNesting: 20\n  },\n  components: {\n    core: {\n      rules: [\n        \"normalize\",\n        \"block\",\n        \"inline\",\n        \"text_join\"\n      ]\n    },\n    block: {\n      rules: [\n        \"paragraph\"\n      ]\n    },\n    inline: {\n      rules: [\n        \"text\"\n      ],\n      rules2: [\n        \"balance_pairs\",\n        \"fragments_join\"\n      ]\n    }\n  }\n};\nconst cfg_commonmark = {\n  options: {\n    // Enable HTML tags in source\n    html: true,\n    // Use '/' to close single tags (<br />)\n    xhtmlOut: true,\n    // Convert '\\n' in paragraphs into <br>\n    breaks: false,\n    // CSS language prefix for fenced blocks\n    langPrefix: \"language-\",\n    // autoconvert URL-like texts to links\n    linkify: false,\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: \"“”‘’\",\n    /* “”‘’ */\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n    // Internal protection, recursion limit\n    maxNesting: 20\n  },\n  components: {\n    core: {\n      rules: [\n        \"normalize\",\n        \"block\",\n        \"inline\",\n        \"text_join\"\n      ]\n    },\n    block: {\n      rules: [\n        \"blockquote\",\n        \"code\",\n        \"fence\",\n        \"heading\",\n        \"hr\",\n        \"html_block\",\n        \"lheading\",\n        \"list\",\n        \"reference\",\n        \"paragraph\"\n      ]\n    },\n    inline: {\n      rules: [\n        \"autolink\",\n        \"backticks\",\n        \"emphasis\",\n        \"entity\",\n        \"escape\",\n        \"html_inline\",\n        \"image\",\n        \"link\",\n        \"newline\",\n        \"text\"\n      ],\n      rules2: [\n        \"balance_pairs\",\n        \"emphasis\",\n        \"fragments_join\"\n      ]\n    }\n  }\n};\nconst config$3 = {\n  default: cfg_default,\n  zero: cfg_zero,\n  commonmark: cfg_commonmark\n};\nconst BAD_PROTO_RE = /^(vbscript|javascript|file|data):/;\nconst GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/;\nfunction validateLink(url2) {\n  const str = url2.trim().toLowerCase();\n  return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true;\n}\nconst RECODE_HOSTNAME_FOR = [\"http:\", \"https:\", \"mailto:\"];\nfunction normalizeLink(url2) {\n  const parsed = urlParse(url2, true);\n  if (parsed.hostname) {\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toASCII(parsed.hostname);\n      } catch (er) {\n      }\n    }\n  }\n  return encode$1(format(parsed));\n}\nfunction normalizeLinkText(url2) {\n  const parsed = urlParse(url2, true);\n  if (parsed.hostname) {\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toUnicode(parsed.hostname);\n      } catch (er) {\n      }\n    }\n  }\n  return decode$1(format(parsed), decode$1.defaultChars + \"%\");\n}\nfunction MarkdownIt(presetName, options) {\n  if (!(this instanceof MarkdownIt)) {\n    return new MarkdownIt(presetName, options);\n  }\n  if (!options) {\n    if (!isString$3(presetName)) {\n      options = presetName || {};\n      presetName = \"default\";\n    }\n  }\n  this.inline = new ParserInline();\n  this.block = new ParserBlock();\n  this.core = new Core();\n  this.renderer = new Renderer();\n  this.linkify = new LinkifyIt();\n  this.validateLink = validateLink;\n  this.normalizeLink = normalizeLink;\n  this.normalizeLinkText = normalizeLinkText;\n  this.utils = utils;\n  this.helpers = assign$1({}, helpers);\n  this.options = {};\n  this.configure(presetName);\n  if (options) {\n    this.set(options);\n  }\n}\nMarkdownIt.prototype.set = function(options) {\n  assign$1(this.options, options);\n  return this;\n};\nMarkdownIt.prototype.configure = function(presets) {\n  const self2 = this;\n  if (isString$3(presets)) {\n    const presetName = presets;\n    presets = config$3[presetName];\n    if (!presets) {\n      throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name');\n    }\n  }\n  if (!presets) {\n    throw new Error(\"Wrong `markdown-it` preset, can't be empty\");\n  }\n  if (presets.options) {\n    self2.set(presets.options);\n  }\n  if (presets.components) {\n    Object.keys(presets.components).forEach(function(name) {\n      if (presets.components[name].rules) {\n        self2[name].ruler.enableOnly(presets.components[name].rules);\n      }\n      if (presets.components[name].rules2) {\n        self2[name].ruler2.enableOnly(presets.components[name].rules2);\n      }\n    });\n  }\n  return this;\n};\nMarkdownIt.prototype.enable = function(list2, ignoreInvalid) {\n  let result = [];\n  if (!Array.isArray(list2)) {\n    list2 = [list2];\n  }\n  [\"core\", \"block\", \"inline\"].forEach(function(chain) {\n    result = result.concat(this[chain].ruler.enable(list2, true));\n  }, this);\n  result = result.concat(this.inline.ruler2.enable(list2, true));\n  const missed = list2.filter(function(name) {\n    return result.indexOf(name) < 0;\n  });\n  if (missed.length && !ignoreInvalid) {\n    throw new Error(\"MarkdownIt. Failed to enable unknown rule(s): \" + missed);\n  }\n  return this;\n};\nMarkdownIt.prototype.disable = function(list2, ignoreInvalid) {\n  let result = [];\n  if (!Array.isArray(list2)) {\n    list2 = [list2];\n  }\n  [\"core\", \"block\", \"inline\"].forEach(function(chain) {\n    result = result.concat(this[chain].ruler.disable(list2, true));\n  }, this);\n  result = result.concat(this.inline.ruler2.disable(list2, true));\n  const missed = list2.filter(function(name) {\n    return result.indexOf(name) < 0;\n  });\n  if (missed.length && !ignoreInvalid) {\n    throw new Error(\"MarkdownIt. Failed to disable unknown rule(s): \" + missed);\n  }\n  return this;\n};\nMarkdownIt.prototype.use = function(plugin) {\n  const args = [this].concat(Array.prototype.slice.call(arguments, 1));\n  plugin.apply(plugin, args);\n  return this;\n};\nMarkdownIt.prototype.parse = function(src, env) {\n  if (typeof src !== \"string\") {\n    throw new Error(\"Input data should be a String\");\n  }\n  const state = new this.core.State(src, this, env);\n  this.core.process(state);\n  return state.tokens;\n};\nMarkdownIt.prototype.render = function(src, env) {\n  env = env || {};\n  return this.renderer.render(this.parse(src, env), this.options, env);\n};\nMarkdownIt.prototype.parseInline = function(src, env) {\n  const state = new this.core.State(src, this, env);\n  state.inlineMode = true;\n  this.core.process(state);\n  return state.tokens;\n};\nMarkdownIt.prototype.renderInline = function(src, env) {\n  env = env || {};\n  return this.renderer.render(this.parseInline(src, env), this.options, env);\n};\nvar freeGlobal$2 = typeof global == \"object\" && global && global.Object === Object && global;\nvar freeSelf$1 = typeof self == \"object\" && self && self.Object === Object && self;\nvar root$3 = freeGlobal$2 || freeSelf$1 || Function(\"return this\")();\nvar Symbol$5 = root$3.Symbol;\nvar objectProto$i = Object.prototype;\nvar hasOwnProperty$e = objectProto$i.hasOwnProperty;\nvar nativeObjectToString$3 = objectProto$i.toString;\nvar symToStringTag$3 = Symbol$5 ? Symbol$5.toStringTag : void 0;\nfunction getRawTag$2(value) {\n  var isOwn = hasOwnProperty$e.call(value, symToStringTag$3), tag = value[symToStringTag$3];\n  try {\n    value[symToStringTag$3] = void 0;\n    var unmasked = true;\n  } catch (e2) {\n  }\n  var result = nativeObjectToString$3.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag$3] = tag;\n    } else {\n      delete value[symToStringTag$3];\n    }\n  }\n  return result;\n}\nvar objectProto$h = Object.prototype;\nvar nativeObjectToString$2 = objectProto$h.toString;\nfunction objectToString$2(value) {\n  return nativeObjectToString$2.call(value);\n}\nvar nullTag$1 = \"[object Null]\", undefinedTag$1 = \"[object Undefined]\";\nvar symToStringTag$2 = Symbol$5 ? Symbol$5.toStringTag : void 0;\nfunction baseGetTag$4(value) {\n  if (value == null) {\n    return value === void 0 ? undefinedTag$1 : nullTag$1;\n  }\n  return symToStringTag$2 && symToStringTag$2 in Object(value) ? getRawTag$2(value) : objectToString$2(value);\n}\nfunction isObjectLike$3(value) {\n  return value != null && typeof value == \"object\";\n}\nvar isArray$4 = Array.isArray;\nfunction isObject$3(value) {\n  var type = typeof value;\n  return value != null && (type == \"object\" || type == \"function\");\n}\nfunction identity$3(value) {\n  return value;\n}\nvar asyncTag$1 = \"[object AsyncFunction]\", funcTag$3 = \"[object Function]\", genTag$2 = \"[object GeneratorFunction]\", proxyTag$1 = \"[object Proxy]\";\nfunction isFunction$2(value) {\n  if (!isObject$3(value)) {\n    return false;\n  }\n  var tag = baseGetTag$4(value);\n  return tag == funcTag$3 || tag == genTag$2 || tag == asyncTag$1 || tag == proxyTag$1;\n}\nvar coreJsData$2 = root$3[\"__core-js_shared__\"];\nvar maskSrcKey$1 = function() {\n  var uid = /[^.]+$/.exec(coreJsData$2 && coreJsData$2.keys && coreJsData$2.keys.IE_PROTO || \"\");\n  return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked$2(func) {\n  return !!maskSrcKey$1 && maskSrcKey$1 in func;\n}\nvar funcProto$4 = Function.prototype;\nvar funcToString$4 = funcProto$4.toString;\nfunction toSource$2(func) {\n  if (func != null) {\n    try {\n      return funcToString$4.call(func);\n    } catch (e2) {\n    }\n    try {\n      return func + \"\";\n    } catch (e2) {\n    }\n  }\n  return \"\";\n}\nvar reRegExpChar$1 = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor$1 = /^\\[object .+?Constructor\\]$/;\nvar funcProto$3 = Function.prototype, objectProto$g = Object.prototype;\nvar funcToString$3 = funcProto$3.toString;\nvar hasOwnProperty$d = objectProto$g.hasOwnProperty;\nvar reIsNative$1 = RegExp(\n  \"^\" + funcToString$3.call(hasOwnProperty$d).replace(reRegExpChar$1, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n);\nfunction baseIsNative$2(value) {\n  if (!isObject$3(value) || isMasked$2(value)) {\n    return false;\n  }\n  var pattern = isFunction$2(value) ? reIsNative$1 : reIsHostCtor$1;\n  return pattern.test(toSource$2(value));\n}\nfunction getValue$2(object, key) {\n  return object == null ? void 0 : object[key];\n}\nfunction getNative$2(object, key) {\n  var value = getValue$2(object, key);\n  return baseIsNative$2(value) ? value : void 0;\n}\nvar WeakMap$1 = getNative$2(root$3, \"WeakMap\");\nvar objectCreate = Object.create;\nvar baseCreate = /* @__PURE__ */ function() {\n  function object() {\n  }\n  return function(proto) {\n    if (!isObject$3(proto)) {\n      return {};\n    }\n    if (objectCreate) {\n      return objectCreate(proto);\n    }\n    object.prototype = proto;\n    var result = new object();\n    object.prototype = void 0;\n    return result;\n  };\n}();\nfunction apply$2(func, thisArg, args) {\n  switch (args.length) {\n    case 0:\n      return func.call(thisArg);\n    case 1:\n      return func.call(thisArg, args[0]);\n    case 2:\n      return func.call(thisArg, args[0], args[1]);\n    case 3:\n      return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\nfunction copyArray$2(source, array) {\n  var index2 = -1, length = source.length;\n  array || (array = Array(length));\n  while (++index2 < length) {\n    array[index2] = source[index2];\n  }\n  return array;\n}\nvar HOT_COUNT$1 = 800, HOT_SPAN$1 = 16;\nvar nativeNow$1 = Date.now;\nfunction shortOut$2(func) {\n  var count = 0, lastCalled = 0;\n  return function() {\n    var stamp = nativeNow$1(), remaining = HOT_SPAN$1 - (stamp - lastCalled);\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT$1) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(void 0, arguments);\n  };\n}\nfunction constant$2(value) {\n  return function() {\n    return value;\n  };\n}\nvar defineProperty$2 = function() {\n  try {\n    var func = getNative$2(Object, \"defineProperty\");\n    func({}, \"\", {});\n    return func;\n  } catch (e2) {\n  }\n}();\nvar baseSetToString$2 = !defineProperty$2 ? identity$3 : function(func, string) {\n  return defineProperty$2(func, \"toString\", {\n    \"configurable\": true,\n    \"enumerable\": false,\n    \"value\": constant$2(string),\n    \"writable\": true\n  });\n};\nvar setToString$2 = shortOut$2(baseSetToString$2);\nfunction arrayEach(array, iteratee) {\n  var index2 = -1, length = array == null ? 0 : array.length;\n  while (++index2 < length) {\n    if (iteratee(array[index2], index2, array) === false) {\n      break;\n    }\n  }\n  return array;\n}\nvar MAX_SAFE_INTEGER$1 = 9007199254740991;\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\nfunction isIndex(value, length) {\n  var type = typeof value;\n  length = length == null ? MAX_SAFE_INTEGER$1 : length;\n  return !!length && (type == \"number\" || type != \"symbol\" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n}\nfunction baseAssignValue(object, key, value) {\n  if (key == \"__proto__\" && defineProperty$2) {\n    defineProperty$2(object, key, {\n      \"configurable\": true,\n      \"enumerable\": true,\n      \"value\": value,\n      \"writable\": true\n    });\n  } else {\n    object[key] = value;\n  }\n}\nfunction eq(value, other) {\n  return value === other || value !== value && other !== other;\n}\nvar objectProto$f = Object.prototype;\nvar hasOwnProperty$c = objectProto$f.hasOwnProperty;\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty$c.call(object, key) && eq(objValue, value)) || value === void 0 && !(key in object)) {\n    baseAssignValue(object, key, value);\n  }\n}\nfunction copyObject(source, props, object, customizer) {\n  var isNew = !object;\n  object || (object = {});\n  var index2 = -1, length = props.length;\n  while (++index2 < length) {\n    var key = props[index2];\n    var newValue = void 0;\n    if (newValue === void 0) {\n      newValue = source[key];\n    }\n    if (isNew) {\n      baseAssignValue(object, key, newValue);\n    } else {\n      assignValue(object, key, newValue);\n    }\n  }\n  return object;\n}\nvar nativeMax$1 = Math.max;\nfunction overRest$2(func, start, transform) {\n  start = nativeMax$1(start === void 0 ? func.length - 1 : start, 0);\n  return function() {\n    var args = arguments, index2 = -1, length = nativeMax$1(args.length - start, 0), array = Array(length);\n    while (++index2 < length) {\n      array[index2] = args[start + index2];\n    }\n    index2 = -1;\n    var otherArgs = Array(start + 1);\n    while (++index2 < start) {\n      otherArgs[index2] = args[index2];\n    }\n    otherArgs[start] = transform(array);\n    return apply$2(func, this, otherArgs);\n  };\n}\nfunction baseRest$2(func, start) {\n  return setToString$2(overRest$2(func, start, identity$3), func + \"\");\n}\nvar MAX_SAFE_INTEGER = 9007199254740991;\nfunction isLength(value) {\n  return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction$2(value);\n}\nfunction isIterateeCall(value, index2, object) {\n  if (!isObject$3(object)) {\n    return false;\n  }\n  var type = typeof index2;\n  if (type == \"number\" ? isArrayLike(object) && isIndex(index2, object.length) : type == \"string\" && index2 in object) {\n    return eq(object[index2], value);\n  }\n  return false;\n}\nfunction createAssigner(assigner) {\n  return baseRest$2(function(object, sources) {\n    var index2 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;\n    customizer = assigner.length > 3 && typeof customizer == \"function\" ? (length--, customizer) : void 0;\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? void 0 : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index2 < length) {\n      var source = sources[index2];\n      if (source) {\n        assigner(object, source, index2, customizer);\n      }\n    }\n    return object;\n  });\n}\nvar objectProto$e = Object.prototype;\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto$e;\n  return value === proto;\n}\nfunction baseTimes(n3, iteratee) {\n  var index2 = -1, result = Array(n3);\n  while (++index2 < n3) {\n    result[index2] = iteratee(index2);\n  }\n  return result;\n}\nvar argsTag$3 = \"[object Arguments]\";\nfunction baseIsArguments(value) {\n  return isObjectLike$3(value) && baseGetTag$4(value) == argsTag$3;\n}\nvar objectProto$d = Object.prototype;\nvar hasOwnProperty$b = objectProto$d.hasOwnProperty;\nvar propertyIsEnumerable$1 = objectProto$d.propertyIsEnumerable;\nvar isArguments = baseIsArguments(/* @__PURE__ */ function() {\n  return arguments;\n}()) ? baseIsArguments : function(value) {\n  return isObjectLike$3(value) && hasOwnProperty$b.call(value, \"callee\") && !propertyIsEnumerable$1.call(value, \"callee\");\n};\nfunction stubFalse() {\n  return false;\n}\nvar freeExports$2 = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule$2 = freeExports$2 && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports$2 = freeModule$2 && freeModule$2.exports === freeExports$2;\nvar Buffer$1 = moduleExports$2 ? root$3.Buffer : void 0;\nvar nativeIsBuffer = Buffer$1 ? Buffer$1.isBuffer : void 0;\nvar isBuffer = nativeIsBuffer || stubFalse;\nvar argsTag$2 = \"[object Arguments]\", arrayTag$2 = \"[object Array]\", boolTag$3 = \"[object Boolean]\", dateTag$3 = \"[object Date]\", errorTag$2 = \"[object Error]\", funcTag$2 = \"[object Function]\", mapTag$5 = \"[object Map]\", numberTag$3 = \"[object Number]\", objectTag$4 = \"[object Object]\", regexpTag$3 = \"[object RegExp]\", setTag$5 = \"[object Set]\", stringTag$4 = \"[object String]\", weakMapTag$2 = \"[object WeakMap]\";\nvar arrayBufferTag$3 = \"[object ArrayBuffer]\", dataViewTag$4 = \"[object DataView]\", float32Tag$2 = \"[object Float32Array]\", float64Tag$2 = \"[object Float64Array]\", int8Tag$2 = \"[object Int8Array]\", int16Tag$2 = \"[object Int16Array]\", int32Tag$2 = \"[object Int32Array]\", uint8Tag$2 = \"[object Uint8Array]\", uint8ClampedTag$2 = \"[object Uint8ClampedArray]\", uint16Tag$2 = \"[object Uint16Array]\", uint32Tag$2 = \"[object Uint32Array]\";\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag$2] = typedArrayTags[float64Tag$2] = typedArrayTags[int8Tag$2] = typedArrayTags[int16Tag$2] = typedArrayTags[int32Tag$2] = typedArrayTags[uint8Tag$2] = typedArrayTags[uint8ClampedTag$2] = typedArrayTags[uint16Tag$2] = typedArrayTags[uint32Tag$2] = true;\ntypedArrayTags[argsTag$2] = typedArrayTags[arrayTag$2] = typedArrayTags[arrayBufferTag$3] = typedArrayTags[boolTag$3] = typedArrayTags[dataViewTag$4] = typedArrayTags[dateTag$3] = typedArrayTags[errorTag$2] = typedArrayTags[funcTag$2] = typedArrayTags[mapTag$5] = typedArrayTags[numberTag$3] = typedArrayTags[objectTag$4] = typedArrayTags[regexpTag$3] = typedArrayTags[setTag$5] = typedArrayTags[stringTag$4] = typedArrayTags[weakMapTag$2] = false;\nfunction baseIsTypedArray(value) {\n  return isObjectLike$3(value) && isLength(value.length) && !!typedArrayTags[baseGetTag$4(value)];\n}\nfunction baseUnary$2(func) {\n  return function(value) {\n    return func(value);\n  };\n}\nvar freeExports$1 = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule$1 = freeExports$1 && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports$1 = freeModule$1 && freeModule$1.exports === freeExports$1;\nvar freeProcess = moduleExports$1 && freeGlobal$2.process;\nvar nodeUtil = function() {\n  try {\n    var types2 = freeModule$1 && freeModule$1.require && freeModule$1.require(\"util\").types;\n    if (types2) {\n      return types2;\n    }\n    return freeProcess && freeProcess.binding && freeProcess.binding(\"util\");\n  } catch (e2) {\n  }\n}();\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\nvar isTypedArray = nodeIsTypedArray ? baseUnary$2(nodeIsTypedArray) : baseIsTypedArray;\nvar objectProto$c = Object.prototype;\nvar hasOwnProperty$a = objectProto$c.hasOwnProperty;\nfunction arrayLikeKeys(value, inherited) {\n  var isArr = isArray$4(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;\n  for (var key in value) {\n    if ((inherited || hasOwnProperty$a.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n    (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n    isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n    isType && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n    isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\nvar nativeKeys = overArg(Object.keys, Object);\nvar objectProto$b = Object.prototype;\nvar hasOwnProperty$9 = objectProto$b.hasOwnProperty;\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty$9.call(object, key) && key != \"constructor\") {\n      result.push(key);\n    }\n  }\n  return result;\n}\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\nvar objectProto$a = Object.prototype;\nvar hasOwnProperty$8 = objectProto$a.hasOwnProperty;\nfunction baseKeysIn(object) {\n  if (!isObject$3(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object), result = [];\n  for (var key in object) {\n    if (!(key == \"constructor\" && (isProto || !hasOwnProperty$8.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\nvar nativeCreate = getNative$2(Object, \"create\");\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n  this.size = 0;\n}\nfunction hashDelete(key) {\n  var result = this.has(key) && delete this.__data__[key];\n  this.size -= result ? 1 : 0;\n  return result;\n}\nvar HASH_UNDEFINED$2 = \"__lodash_hash_undefined__\";\nvar objectProto$9 = Object.prototype;\nvar hasOwnProperty$7 = objectProto$9.hasOwnProperty;\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED$2 ? void 0 : result;\n  }\n  return hasOwnProperty$7.call(data, key) ? data[key] : void 0;\n}\nvar objectProto$8 = Object.prototype;\nvar hasOwnProperty$6 = objectProto$8.hasOwnProperty;\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== void 0 : hasOwnProperty$6.call(data, key);\n}\nvar HASH_UNDEFINED$1 = \"__lodash_hash_undefined__\";\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  this.size += this.has(key) ? 0 : 1;\n  data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED$1 : value;\n  return this;\n}\nfunction Hash(entries) {\n  var index2 = -1, length = entries == null ? 0 : entries.length;\n  this.clear();\n  while (++index2 < length) {\n    var entry = entries[index2];\n    this.set(entry[0], entry[1]);\n  }\n}\nHash.prototype.clear = hashClear;\nHash.prototype[\"delete\"] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\nfunction listCacheClear() {\n  this.__data__ = [];\n  this.size = 0;\n}\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\nvar arrayProto$1 = Array.prototype;\nvar splice$1 = arrayProto$1.splice;\nfunction listCacheDelete(key) {\n  var data = this.__data__, index2 = assocIndexOf(data, key);\n  if (index2 < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index2 == lastIndex) {\n    data.pop();\n  } else {\n    splice$1.call(data, index2, 1);\n  }\n  --this.size;\n  return true;\n}\nfunction listCacheGet(key) {\n  var data = this.__data__, index2 = assocIndexOf(data, key);\n  return index2 < 0 ? void 0 : data[index2][1];\n}\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\nfunction listCacheSet(key, value) {\n  var data = this.__data__, index2 = assocIndexOf(data, key);\n  if (index2 < 0) {\n    ++this.size;\n    data.push([key, value]);\n  } else {\n    data[index2][1] = value;\n  }\n  return this;\n}\nfunction ListCache(entries) {\n  var index2 = -1, length = entries == null ? 0 : entries.length;\n  this.clear();\n  while (++index2 < length) {\n    var entry = entries[index2];\n    this.set(entry[0], entry[1]);\n  }\n}\nListCache.prototype.clear = listCacheClear;\nListCache.prototype[\"delete\"] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\nvar Map$1 = getNative$2(root$3, \"Map\");\nfunction mapCacheClear() {\n  this.size = 0;\n  this.__data__ = {\n    \"hash\": new Hash(),\n    \"map\": new (Map$1 || ListCache)(),\n    \"string\": new Hash()\n  };\n}\nfunction isKeyable(value) {\n  var type = typeof value;\n  return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n}\nfunction getMapData(map2, key) {\n  var data = map2.__data__;\n  return isKeyable(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n}\nfunction mapCacheDelete(key) {\n  var result = getMapData(this, key)[\"delete\"](key);\n  this.size -= result ? 1 : 0;\n  return result;\n}\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\nfunction mapCacheSet(key, value) {\n  var data = getMapData(this, key), size = data.size;\n  data.set(key, value);\n  this.size += data.size == size ? 0 : 1;\n  return this;\n}\nfunction MapCache(entries) {\n  var index2 = -1, length = entries == null ? 0 : entries.length;\n  this.clear();\n  while (++index2 < length) {\n    var entry = entries[index2];\n    this.set(entry[0], entry[1]);\n  }\n}\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype[\"delete\"] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\nfunction arrayPush(array, values) {\n  var index2 = -1, length = values.length, offset = array.length;\n  while (++index2 < length) {\n    array[offset + index2] = values[index2];\n  }\n  return array;\n}\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\nvar objectTag$3 = \"[object Object]\";\nvar funcProto$2 = Function.prototype, objectProto$7 = Object.prototype;\nvar funcToString$2 = funcProto$2.toString;\nvar hasOwnProperty$5 = objectProto$7.hasOwnProperty;\nvar objectCtorString = funcToString$2.call(Object);\nfunction isPlainObject(value) {\n  if (!isObjectLike$3(value) || baseGetTag$4(value) != objectTag$3) {\n    return false;\n  }\n  var proto = getPrototype(value);\n  if (proto === null) {\n    return true;\n  }\n  var Ctor = hasOwnProperty$5.call(proto, \"constructor\") && proto.constructor;\n  return typeof Ctor == \"function\" && Ctor instanceof Ctor && funcToString$2.call(Ctor) == objectCtorString;\n}\nfunction stackClear() {\n  this.__data__ = new ListCache();\n  this.size = 0;\n}\nfunction stackDelete(key) {\n  var data = this.__data__, result = data[\"delete\"](key);\n  this.size = data.size;\n  return result;\n}\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\nvar LARGE_ARRAY_SIZE = 200;\nfunction stackSet(key, value) {\n  var data = this.__data__;\n  if (data instanceof ListCache) {\n    var pairs = data.__data__;\n    if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {\n      pairs.push([key, value]);\n      this.size = ++data.size;\n      return this;\n    }\n    data = this.__data__ = new MapCache(pairs);\n  }\n  data.set(key, value);\n  this.size = data.size;\n  return this;\n}\nfunction Stack(entries) {\n  var data = this.__data__ = new ListCache(entries);\n  this.size = data.size;\n}\nStack.prototype.clear = stackClear;\nStack.prototype[\"delete\"] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\nvar freeExports = typeof exports == \"object\" && exports && !exports.nodeType && exports;\nvar freeModule = freeExports && typeof module == \"object\" && module && !module.nodeType && module;\nvar moduleExports = freeModule && freeModule.exports === freeExports;\nvar Buffer2 = moduleExports ? root$3.Buffer : void 0, allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;\nfunction cloneBuffer(buffer, isDeep) {\n  if (isDeep) {\n    return buffer.slice();\n  }\n  var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n  buffer.copy(result);\n  return result;\n}\nfunction arrayFilter(array, predicate) {\n  var index2 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n  while (++index2 < length) {\n    var value = array[index2];\n    if (predicate(value, index2, array)) {\n      result[resIndex++] = value;\n    }\n  }\n  return result;\n}\nfunction stubArray() {\n  return [];\n}\nvar objectProto$6 = Object.prototype;\nvar propertyIsEnumerable = objectProto$6.propertyIsEnumerable;\nvar nativeGetSymbols$1 = Object.getOwnPropertySymbols;\nvar getSymbols = !nativeGetSymbols$1 ? stubArray : function(object) {\n  if (object == null) {\n    return [];\n  }\n  object = Object(object);\n  return arrayFilter(nativeGetSymbols$1(object), function(symbol) {\n    return propertyIsEnumerable.call(object, symbol);\n  });\n};\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray$4(object) ? result : arrayPush(result, symbolsFunc(object));\n}\nfunction getAllKeys(object) {\n  return baseGetAllKeys(object, keys, getSymbols);\n}\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\nvar DataView$1 = getNative$2(root$3, \"DataView\");\nvar Promise$1 = getNative$2(root$3, \"Promise\");\nvar Set$1 = getNative$2(root$3, \"Set\");\nvar mapTag$4 = \"[object Map]\", objectTag$2 = \"[object Object]\", promiseTag = \"[object Promise]\", setTag$4 = \"[object Set]\", weakMapTag$1 = \"[object WeakMap]\";\nvar dataViewTag$3 = \"[object DataView]\";\nvar dataViewCtorString = toSource$2(DataView$1), mapCtorString = toSource$2(Map$1), promiseCtorString = toSource$2(Promise$1), setCtorString = toSource$2(Set$1), weakMapCtorString = toSource$2(WeakMap$1);\nvar getTag = baseGetTag$4;\nif (DataView$1 && getTag(new DataView$1(new ArrayBuffer(1))) != dataViewTag$3 || Map$1 && getTag(new Map$1()) != mapTag$4 || Promise$1 && getTag(Promise$1.resolve()) != promiseTag || Set$1 && getTag(new Set$1()) != setTag$4 || WeakMap$1 && getTag(new WeakMap$1()) != weakMapTag$1) {\n  getTag = function(value) {\n    var result = baseGetTag$4(value), Ctor = result == objectTag$2 ? value.constructor : void 0, ctorString = Ctor ? toSource$2(Ctor) : \"\";\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString:\n          return dataViewTag$3;\n        case mapCtorString:\n          return mapTag$4;\n        case promiseCtorString:\n          return promiseTag;\n        case setCtorString:\n          return setTag$4;\n        case weakMapCtorString:\n          return weakMapTag$1;\n      }\n    }\n    return result;\n  };\n}\nvar objectProto$5 = Object.prototype;\nvar hasOwnProperty$4 = objectProto$5.hasOwnProperty;\nfunction initCloneArray(array) {\n  var length = array.length, result = new array.constructor(length);\n  if (length && typeof array[0] == \"string\" && hasOwnProperty$4.call(array, \"index\")) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\nvar Uint8Array$1 = root$3.Uint8Array;\nfunction cloneArrayBuffer(arrayBuffer) {\n  var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n  new Uint8Array$1(result).set(new Uint8Array$1(arrayBuffer));\n  return result;\n}\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\nvar reFlags = /\\w*$/;\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\nvar symbolProto$2 = Symbol$5 ? Symbol$5.prototype : void 0, symbolValueOf$1 = symbolProto$2 ? symbolProto$2.valueOf : void 0;\nfunction cloneSymbol(symbol) {\n  return symbolValueOf$1 ? Object(symbolValueOf$1.call(symbol)) : {};\n}\nfunction cloneTypedArray(typedArray, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n  return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\nvar boolTag$2 = \"[object Boolean]\", dateTag$2 = \"[object Date]\", mapTag$3 = \"[object Map]\", numberTag$2 = \"[object Number]\", regexpTag$2 = \"[object RegExp]\", setTag$3 = \"[object Set]\", stringTag$3 = \"[object String]\", symbolTag$3 = \"[object Symbol]\";\nvar arrayBufferTag$2 = \"[object ArrayBuffer]\", dataViewTag$2 = \"[object DataView]\", float32Tag$1 = \"[object Float32Array]\", float64Tag$1 = \"[object Float64Array]\", int8Tag$1 = \"[object Int8Array]\", int16Tag$1 = \"[object Int16Array]\", int32Tag$1 = \"[object Int32Array]\", uint8Tag$1 = \"[object Uint8Array]\", uint8ClampedTag$1 = \"[object Uint8ClampedArray]\", uint16Tag$1 = \"[object Uint16Array]\", uint32Tag$1 = \"[object Uint32Array]\";\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag$2:\n      return cloneArrayBuffer(object);\n    case boolTag$2:\n    case dateTag$2:\n      return new Ctor(+object);\n    case dataViewTag$2:\n      return cloneDataView(object, isDeep);\n    case float32Tag$1:\n    case float64Tag$1:\n    case int8Tag$1:\n    case int16Tag$1:\n    case int32Tag$1:\n    case uint8Tag$1:\n    case uint8ClampedTag$1:\n    case uint16Tag$1:\n    case uint32Tag$1:\n      return cloneTypedArray(object, isDeep);\n    case mapTag$3:\n      return new Ctor();\n    case numberTag$2:\n    case stringTag$3:\n      return new Ctor(object);\n    case regexpTag$2:\n      return cloneRegExp(object);\n    case setTag$3:\n      return new Ctor();\n    case symbolTag$3:\n      return cloneSymbol(object);\n  }\n}\nfunction initCloneObject(object) {\n  return typeof object.constructor == \"function\" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};\n}\nvar mapTag$2 = \"[object Map]\";\nfunction baseIsMap(value) {\n  return isObjectLike$3(value) && getTag(value) == mapTag$2;\n}\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\nvar isMap = nodeIsMap ? baseUnary$2(nodeIsMap) : baseIsMap;\nvar setTag$2 = \"[object Set]\";\nfunction baseIsSet(value) {\n  return isObjectLike$3(value) && getTag(value) == setTag$2;\n}\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\nvar isSet = nodeIsSet ? baseUnary$2(nodeIsSet) : baseIsSet;\nvar CLONE_DEEP_FLAG$1 = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG$1 = 4;\nvar argsTag$1 = \"[object Arguments]\", arrayTag$1 = \"[object Array]\", boolTag$1 = \"[object Boolean]\", dateTag$1 = \"[object Date]\", errorTag$1 = \"[object Error]\", funcTag$1 = \"[object Function]\", genTag$1 = \"[object GeneratorFunction]\", mapTag$1 = \"[object Map]\", numberTag$1 = \"[object Number]\", objectTag$1 = \"[object Object]\", regexpTag$1 = \"[object RegExp]\", setTag$1 = \"[object Set]\", stringTag$2 = \"[object String]\", symbolTag$2 = \"[object Symbol]\", weakMapTag = \"[object WeakMap]\";\nvar arrayBufferTag$1 = \"[object ArrayBuffer]\", dataViewTag$1 = \"[object DataView]\", float32Tag = \"[object Float32Array]\", float64Tag = \"[object Float64Array]\", int8Tag = \"[object Int8Array]\", int16Tag = \"[object Int16Array]\", int32Tag = \"[object Int32Array]\", uint8Tag = \"[object Uint8Array]\", uint8ClampedTag = \"[object Uint8ClampedArray]\", uint16Tag = \"[object Uint16Array]\", uint32Tag = \"[object Uint32Array]\";\nvar cloneableTags = {};\ncloneableTags[argsTag$1] = cloneableTags[arrayTag$1] = cloneableTags[arrayBufferTag$1] = cloneableTags[dataViewTag$1] = cloneableTags[boolTag$1] = cloneableTags[dateTag$1] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag$1] = cloneableTags[numberTag$1] = cloneableTags[objectTag$1] = cloneableTags[regexpTag$1] = cloneableTags[setTag$1] = cloneableTags[stringTag$2] = cloneableTags[symbolTag$2] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag$1] = cloneableTags[funcTag$1] = cloneableTags[weakMapTag] = false;\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result, isDeep = bitmask & CLONE_DEEP_FLAG$1, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG$1;\n  if (result !== void 0) {\n    return result;\n  }\n  if (!isObject$3(value)) {\n    return value;\n  }\n  var isArr = isArray$4(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray$2(value, result);\n    }\n  } else {\n    var tag = getTag(value), isFunc = tag == funcTag$1 || tag == genTag$1;\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag$1 || tag == argsTag$1 || isFunc && !object) {\n      result = isFlat || isFunc ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat ? copySymbolsIn(value, baseAssignIn(result, value)) : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  stack || (stack = new Stack());\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key2) {\n      result.set(key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n    });\n  }\n  var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;\n  var props = isArr ? void 0 : keysFunc(value);\n  arrayEach(props || value, function(subValue, key2) {\n    if (props) {\n      key2 = subValue;\n      subValue = value[key2];\n    }\n    assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value, stack));\n  });\n  return result;\n}\nvar CLONE_DEEP_FLAG = 1, CLONE_SYMBOLS_FLAG = 4;\nfunction cloneDeep$1(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\nvar HASH_UNDEFINED = \"__lodash_hash_undefined__\";\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\nfunction SetCache(values) {\n  var index2 = -1, length = values == null ? 0 : values.length;\n  this.__data__ = new MapCache();\n  while (++index2 < length) {\n    this.add(values[index2]);\n  }\n}\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\nfunction arraySome(array, predicate) {\n  var index2 = -1, length = array == null ? 0 : array.length;\n  while (++index2 < length) {\n    if (predicate(array[index2], index2, array)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\nvar COMPARE_PARTIAL_FLAG$3 = 1, COMPARE_UNORDERED_FLAG$1 = 2;\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG$3, arrLength = array.length, othLength = other.length;\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  var arrStacked = stack.get(array);\n  var othStacked = stack.get(other);\n  if (arrStacked && othStacked) {\n    return arrStacked == other && othStacked == array;\n  }\n  var index2 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG$1 ? new SetCache() : void 0;\n  stack.set(array, other);\n  stack.set(other, array);\n  while (++index2 < arrLength) {\n    var arrValue = array[index2], othValue = other[index2];\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack);\n    }\n    if (compared !== void 0) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    if (seen) {\n      if (!arraySome(other, function(othValue2, othIndex) {\n        if (!cacheHas(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n          return seen.push(othIndex);\n        }\n      })) {\n        result = false;\n        break;\n      }\n    } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n      result = false;\n      break;\n    }\n  }\n  stack[\"delete\"](array);\n  stack[\"delete\"](other);\n  return result;\n}\nfunction mapToArray(map2) {\n  var index2 = -1, result = Array(map2.size);\n  map2.forEach(function(value, key) {\n    result[++index2] = [key, value];\n  });\n  return result;\n}\nfunction setToArray(set2) {\n  var index2 = -1, result = Array(set2.size);\n  set2.forEach(function(value) {\n    result[++index2] = value;\n  });\n  return result;\n}\nvar COMPARE_PARTIAL_FLAG$2 = 1, COMPARE_UNORDERED_FLAG = 2;\nvar boolTag = \"[object Boolean]\", dateTag = \"[object Date]\", errorTag = \"[object Error]\", mapTag = \"[object Map]\", numberTag = \"[object Number]\", regexpTag = \"[object RegExp]\", setTag = \"[object Set]\", stringTag$1 = \"[object String]\", symbolTag$1 = \"[object Symbol]\";\nvar arrayBufferTag = \"[object ArrayBuffer]\", dataViewTag = \"[object DataView]\";\nvar symbolProto$1 = Symbol$5 ? Symbol$5.prototype : void 0, symbolValueOf = symbolProto$1 ? symbolProto$1.valueOf : void 0;\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n    case arrayBufferTag:\n      if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array$1(object), new Uint8Array$1(other))) {\n        return false;\n      }\n      return true;\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      return eq(+object, +other);\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n    case regexpTag:\n    case stringTag$1:\n      return object == other + \"\";\n    case mapTag:\n      var convert = mapToArray;\n    case setTag:\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG$2;\n      convert || (convert = setToArray);\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= COMPARE_UNORDERED_FLAG;\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n      stack[\"delete\"](object);\n      return result;\n    case symbolTag$1:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\nvar COMPARE_PARTIAL_FLAG$1 = 1;\nvar objectProto$4 = Object.prototype;\nvar hasOwnProperty$3 = objectProto$4.hasOwnProperty;\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n  var isPartial = bitmask & COMPARE_PARTIAL_FLAG$1, objProps = getAllKeys(object), objLength = objProps.length, othProps = getAllKeys(other), othLength = othProps.length;\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index2 = objLength;\n  while (index2--) {\n    var key = objProps[index2];\n    if (!(isPartial ? key in other : hasOwnProperty$3.call(other, key))) {\n      return false;\n    }\n  }\n  var objStacked = stack.get(object);\n  var othStacked = stack.get(other);\n  if (objStacked && othStacked) {\n    return objStacked == other && othStacked == object;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n  var skipCtor = isPartial;\n  while (++index2 < objLength) {\n    key = objProps[index2];\n    var objValue = object[key], othValue = other[key];\n    if (customizer) {\n      var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n    }\n    if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == \"constructor\");\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor, othCtor = other.constructor;\n    if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack[\"delete\"](object);\n  stack[\"delete\"](other);\n  return result;\n}\nvar COMPARE_PARTIAL_FLAG = 1;\nvar argsTag = \"[object Arguments]\", arrayTag = \"[object Array]\", objectTag = \"[object Object]\";\nvar objectProto$3 = Object.prototype;\nvar hasOwnProperty$2 = objectProto$3.hasOwnProperty;\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n  var objIsArr = isArray$4(object), othIsArr = isArray$4(other), objTag = objIsArr ? arrayTag : getTag(object), othTag = othIsArr ? arrayTag : getTag(other);\n  objTag = objTag == argsTag ? objectTag : objTag;\n  othTag = othTag == argsTag ? objectTag : othTag;\n  var objIsObj = objTag == objectTag, othIsObj = othTag == objectTag, isSameTag = objTag == othTag;\n  if (isSameTag && isBuffer(object)) {\n    if (!isBuffer(other)) {\n      return false;\n    }\n    objIsArr = true;\n    objIsObj = false;\n  }\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack());\n    return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n  }\n  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty$2.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty$2.call(other, \"__wrapped__\");\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n      stack || (stack = new Stack());\n      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack());\n  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || !isObjectLike$3(value) && !isObjectLike$3(other)) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index2 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;\n    while (length--) {\n      var key = props[++index2];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\nvar baseFor = createBaseFor();\nfunction assignMergeValue(object, key, value) {\n  if (value !== void 0 && !eq(object[key], value) || value === void 0 && !(key in object)) {\n    baseAssignValue(object, key, value);\n  }\n}\nfunction isArrayLikeObject(value) {\n  return isObjectLike$3(value) && isArrayLike(value);\n}\nfunction safeGet(object, key) {\n  if (key === \"constructor\" && typeof object[key] === \"function\") {\n    return;\n  }\n  if (key == \"__proto__\") {\n    return;\n  }\n  return object[key];\n}\nfunction toPlainObject(value) {\n  return copyObject(value, keysIn(value));\n}\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n  var objValue = safeGet(object, key), srcValue = safeGet(source, key), stacked = stack.get(srcValue);\n  if (stacked) {\n    assignMergeValue(object, key, stacked);\n    return;\n  }\n  var newValue = customizer ? customizer(objValue, srcValue, key + \"\", object, source, stack) : void 0;\n  var isCommon = newValue === void 0;\n  if (isCommon) {\n    var isArr = isArray$4(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n    newValue = srcValue;\n    if (isArr || isBuff || isTyped) {\n      if (isArray$4(objValue)) {\n        newValue = objValue;\n      } else if (isArrayLikeObject(objValue)) {\n        newValue = copyArray$2(objValue);\n      } else if (isBuff) {\n        isCommon = false;\n        newValue = cloneBuffer(srcValue, true);\n      } else if (isTyped) {\n        isCommon = false;\n        newValue = cloneTypedArray(srcValue, true);\n      } else {\n        newValue = [];\n      }\n    } else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n      newValue = objValue;\n      if (isArguments(objValue)) {\n        newValue = toPlainObject(objValue);\n      } else if (!isObject$3(objValue) || isFunction$2(objValue)) {\n        newValue = initCloneObject(srcValue);\n      }\n    } else {\n      isCommon = false;\n    }\n  }\n  if (isCommon) {\n    stack.set(srcValue, newValue);\n    mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n    stack[\"delete\"](srcValue);\n  }\n  assignMergeValue(object, key, newValue);\n}\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n  if (object === source) {\n    return;\n  }\n  baseFor(source, function(srcValue, key) {\n    stack || (stack = new Stack());\n    if (isObject$3(srcValue)) {\n      baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n    } else {\n      var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + \"\", object, source, stack) : void 0;\n      if (newValue === void 0) {\n        newValue = srcValue;\n      }\n      assignMergeValue(object, key, newValue);\n    }\n  }, keysIn);\n}\nfunction isEqual$2(value, other) {\n  return baseIsEqual(value, other);\n}\nvar merge = createAssigner(function(object, source, srcIndex) {\n  baseMerge(object, source, srcIndex);\n});\nvar Scope = /* @__PURE__ */ ((Scope2) => (Scope2[Scope2.TYPE = 3] = \"TYPE\", Scope2[Scope2.LEVEL = 12] = \"LEVEL\", Scope2[Scope2.ATTRIBUTE = 13] = \"ATTRIBUTE\", Scope2[Scope2.BLOT = 14] = \"BLOT\", Scope2[Scope2.INLINE = 7] = \"INLINE\", Scope2[Scope2.BLOCK = 11] = \"BLOCK\", Scope2[Scope2.BLOCK_BLOT = 10] = \"BLOCK_BLOT\", Scope2[Scope2.INLINE_BLOT = 6] = \"INLINE_BLOT\", Scope2[Scope2.BLOCK_ATTRIBUTE = 9] = \"BLOCK_ATTRIBUTE\", Scope2[Scope2.INLINE_ATTRIBUTE = 5] = \"INLINE_ATTRIBUTE\", Scope2[Scope2.ANY = 15] = \"ANY\", Scope2))(Scope || {});\nclass Attributor {\n  constructor(attrName, keyName, options = {}) {\n    this.attrName = attrName, this.keyName = keyName;\n    const attributeBit = Scope.TYPE & Scope.ATTRIBUTE;\n    this.scope = options.scope != null ? (\n      // Ignore type bits, force attribute bit\n      options.scope & Scope.LEVEL | attributeBit\n    ) : Scope.ATTRIBUTE, options.whitelist != null && (this.whitelist = options.whitelist);\n  }\n  static keys(node) {\n    return Array.from(node.attributes).map((item) => item.name);\n  }\n  add(node, value) {\n    return this.canAdd(node, value) ? (node.setAttribute(this.keyName, value), true) : false;\n  }\n  canAdd(_node, value) {\n    return this.whitelist == null ? true : typeof value == \"string\" ? this.whitelist.indexOf(value.replace(/[\"']/g, \"\")) > -1 : this.whitelist.indexOf(value) > -1;\n  }\n  remove(node) {\n    node.removeAttribute(this.keyName);\n  }\n  value(node) {\n    const value = node.getAttribute(this.keyName);\n    return this.canAdd(node, value) && value ? value : \"\";\n  }\n}\nclass ParchmentError extends Error {\n  constructor(message) {\n    message = \"[Parchment] \" + message, super(message), this.message = message, this.name = this.constructor.name;\n  }\n}\nconst _Registry = class _Registry2 {\n  constructor() {\n    this.attributes = {}, this.classes = {}, this.tags = {}, this.types = {};\n  }\n  static find(node, bubble = false) {\n    if (node == null)\n      return null;\n    if (this.blots.has(node))\n      return this.blots.get(node) || null;\n    if (bubble) {\n      let parentNode = null;\n      try {\n        parentNode = node.parentNode;\n      } catch {\n        return null;\n      }\n      return this.find(parentNode, bubble);\n    }\n    return null;\n  }\n  create(scroll, input, value) {\n    const match22 = this.query(input);\n    if (match22 == null)\n      throw new ParchmentError(`Unable to create ${input} blot`);\n    const blotClass = match22, node = (\n      // @ts-expect-error Fix me later\n      input instanceof Node || input.nodeType === Node.TEXT_NODE ? input : blotClass.create(value)\n    ), blot = new blotClass(scroll, node, value);\n    return _Registry2.blots.set(blot.domNode, blot), blot;\n  }\n  find(node, bubble = false) {\n    return _Registry2.find(node, bubble);\n  }\n  query(query, scope = Scope.ANY) {\n    let match22;\n    return typeof query == \"string\" ? match22 = this.types[query] || this.attributes[query] : query instanceof Text || query.nodeType === Node.TEXT_NODE ? match22 = this.types.text : typeof query == \"number\" ? query & Scope.LEVEL & Scope.BLOCK ? match22 = this.types.block : query & Scope.LEVEL & Scope.INLINE && (match22 = this.types.inline) : query instanceof Element && ((query.getAttribute(\"class\") || \"\").split(/\\s+/).some((name) => (match22 = this.classes[name], !!match22)), match22 = match22 || this.tags[query.tagName]), match22 == null ? null : \"scope\" in match22 && scope & Scope.LEVEL & match22.scope && scope & Scope.TYPE & match22.scope ? match22 : null;\n  }\n  register(...definitions) {\n    return definitions.map((definition) => {\n      const isBlot = \"blotName\" in definition, isAttr = \"attrName\" in definition;\n      if (!isBlot && !isAttr)\n        throw new ParchmentError(\"Invalid definition\");\n      if (isBlot && definition.blotName === \"abstract\")\n        throw new ParchmentError(\"Cannot register abstract class\");\n      const key = isBlot ? definition.blotName : isAttr ? definition.attrName : void 0;\n      return this.types[key] = definition, isAttr ? typeof definition.keyName == \"string\" && (this.attributes[definition.keyName] = definition) : isBlot && (definition.className && (this.classes[definition.className] = definition), definition.tagName && (Array.isArray(definition.tagName) ? definition.tagName = definition.tagName.map((tagName) => tagName.toUpperCase()) : definition.tagName = definition.tagName.toUpperCase(), (Array.isArray(definition.tagName) ? definition.tagName : [definition.tagName]).forEach((tag) => {\n        (this.tags[tag] == null || definition.className == null) && (this.tags[tag] = definition);\n      }))), definition;\n    });\n  }\n};\n_Registry.blots = /* @__PURE__ */ new WeakMap();\nlet Registry = _Registry;\nfunction match2(node, prefix) {\n  return (node.getAttribute(\"class\") || \"\").split(/\\s+/).filter((name) => name.indexOf(`${prefix}-`) === 0);\n}\nclass ClassAttributor extends Attributor {\n  static keys(node) {\n    return (node.getAttribute(\"class\") || \"\").split(/\\s+/).map((name) => name.split(\"-\").slice(0, -1).join(\"-\"));\n  }\n  add(node, value) {\n    return this.canAdd(node, value) ? (this.remove(node), node.classList.add(`${this.keyName}-${value}`), true) : false;\n  }\n  remove(node) {\n    match2(node, this.keyName).forEach((name) => {\n      node.classList.remove(name);\n    }), node.classList.length === 0 && node.removeAttribute(\"class\");\n  }\n  value(node) {\n    const value = (match2(node, this.keyName)[0] || \"\").slice(this.keyName.length + 1);\n    return this.canAdd(node, value) ? value : \"\";\n  }\n}\nconst ClassAttributor$1 = ClassAttributor;\nfunction camelize(name) {\n  const parts = name.split(\"-\"), rest = parts.slice(1).map((part) => part[0].toUpperCase() + part.slice(1)).join(\"\");\n  return parts[0] + rest;\n}\nclass StyleAttributor extends Attributor {\n  static keys(node) {\n    return (node.getAttribute(\"style\") || \"\").split(\";\").map((value) => value.split(\":\")[0].trim());\n  }\n  add(node, value) {\n    return this.canAdd(node, value) ? (node.style[camelize(this.keyName)] = value, true) : false;\n  }\n  remove(node) {\n    node.style[camelize(this.keyName)] = \"\", node.getAttribute(\"style\") || node.removeAttribute(\"style\");\n  }\n  value(node) {\n    const value = node.style[camelize(this.keyName)];\n    return this.canAdd(node, value) ? value : \"\";\n  }\n}\nconst StyleAttributor$1 = StyleAttributor;\nclass AttributorStore {\n  constructor(domNode) {\n    this.attributes = {}, this.domNode = domNode, this.build();\n  }\n  attribute(attribute2, value) {\n    value ? attribute2.add(this.domNode, value) && (attribute2.value(this.domNode) != null ? this.attributes[attribute2.attrName] = attribute2 : delete this.attributes[attribute2.attrName]) : (attribute2.remove(this.domNode), delete this.attributes[attribute2.attrName]);\n  }\n  build() {\n    this.attributes = {};\n    const blot = Registry.find(this.domNode);\n    if (blot == null)\n      return;\n    const attributes = Attributor.keys(this.domNode), classes = ClassAttributor$1.keys(this.domNode), styles = StyleAttributor$1.keys(this.domNode);\n    attributes.concat(classes).concat(styles).forEach((name) => {\n      const attr = blot.scroll.query(name, Scope.ATTRIBUTE);\n      attr instanceof Attributor && (this.attributes[attr.attrName] = attr);\n    });\n  }\n  copy(target) {\n    Object.keys(this.attributes).forEach((key) => {\n      const value = this.attributes[key].value(this.domNode);\n      target.format(key, value);\n    });\n  }\n  move(target) {\n    this.copy(target), Object.keys(this.attributes).forEach((key) => {\n      this.attributes[key].remove(this.domNode);\n    }), this.attributes = {};\n  }\n  values() {\n    return Object.keys(this.attributes).reduce(\n      (attributes, name) => (attributes[name] = this.attributes[name].value(this.domNode), attributes),\n      {}\n    );\n  }\n}\nconst AttributorStore$1 = AttributorStore, _ShadowBlot = class _ShadowBlot2 {\n  constructor(scroll, domNode) {\n    this.scroll = scroll, this.domNode = domNode, Registry.blots.set(domNode, this), this.prev = null, this.next = null;\n  }\n  static create(rawValue) {\n    if (this.tagName == null)\n      throw new ParchmentError(\"Blot definition missing tagName\");\n    let node, value;\n    return Array.isArray(this.tagName) ? (typeof rawValue == \"string\" ? (value = rawValue.toUpperCase(), parseInt(value, 10).toString() === value && (value = parseInt(value, 10))) : typeof rawValue == \"number\" && (value = rawValue), typeof value == \"number\" ? node = document.createElement(this.tagName[value - 1]) : value && this.tagName.indexOf(value) > -1 ? node = document.createElement(value) : node = document.createElement(this.tagName[0])) : node = document.createElement(this.tagName), this.className && node.classList.add(this.className), node;\n  }\n  // Hack for accessing inherited static methods\n  get statics() {\n    return this.constructor;\n  }\n  attach() {\n  }\n  clone() {\n    const domNode = this.domNode.cloneNode(false);\n    return this.scroll.create(domNode);\n  }\n  detach() {\n    this.parent != null && this.parent.removeChild(this), Registry.blots.delete(this.domNode);\n  }\n  deleteAt(index2, length) {\n    this.isolate(index2, length).remove();\n  }\n  formatAt(index2, length, name, value) {\n    const blot = this.isolate(index2, length);\n    if (this.scroll.query(name, Scope.BLOT) != null && value)\n      blot.wrap(name, value);\n    else if (this.scroll.query(name, Scope.ATTRIBUTE) != null) {\n      const parent = this.scroll.create(this.statics.scope);\n      blot.wrap(parent), parent.format(name, value);\n    }\n  }\n  insertAt(index2, value, def) {\n    const blot = def == null ? this.scroll.create(\"text\", value) : this.scroll.create(value, def), ref = this.split(index2);\n    this.parent.insertBefore(blot, ref || void 0);\n  }\n  isolate(index2, length) {\n    const target = this.split(index2);\n    if (target == null)\n      throw new Error(\"Attempt to isolate at end\");\n    return target.split(length), target;\n  }\n  length() {\n    return 1;\n  }\n  offset(root2 = this.parent) {\n    return this.parent == null || this === root2 ? 0 : this.parent.children.offset(this) + this.parent.offset(root2);\n  }\n  optimize(_context) {\n    this.statics.requiredContainer && !(this.parent instanceof this.statics.requiredContainer) && this.wrap(this.statics.requiredContainer.blotName);\n  }\n  remove() {\n    this.domNode.parentNode != null && this.domNode.parentNode.removeChild(this.domNode), this.detach();\n  }\n  replaceWith(name, value) {\n    const replacement = typeof name == \"string\" ? this.scroll.create(name, value) : name;\n    return this.parent != null && (this.parent.insertBefore(replacement, this.next || void 0), this.remove()), replacement;\n  }\n  split(index2, _force) {\n    return index2 === 0 ? this : this.next;\n  }\n  update(_mutations, _context) {\n  }\n  wrap(name, value) {\n    const wrapper2 = typeof name == \"string\" ? this.scroll.create(name, value) : name;\n    if (this.parent != null && this.parent.insertBefore(wrapper2, this.next || void 0), typeof wrapper2.appendChild != \"function\")\n      throw new ParchmentError(`Cannot wrap ${name}`);\n    return wrapper2.appendChild(this), wrapper2;\n  }\n};\n_ShadowBlot.blotName = \"abstract\";\nlet ShadowBlot = _ShadowBlot;\nconst _LeafBlot = class _LeafBlot2 extends ShadowBlot {\n  /**\n   * Returns the value represented by domNode if it is this Blot's type\n   * No checking that domNode can represent this Blot type is required so\n   * applications needing it should check externally before calling.\n   */\n  static value(_domNode) {\n    return true;\n  }\n  /**\n   * Given location represented by node and offset from DOM Selection Range,\n   * return index to that location.\n   */\n  index(node, offset) {\n    return this.domNode === node || this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY ? Math.min(offset, 1) : -1;\n  }\n  /**\n   * Given index to location within blot, return node and offset representing\n   * that location, consumable by DOM Selection Range\n   */\n  position(index2, _inclusive) {\n    let offset = Array.from(this.parent.domNode.childNodes).indexOf(this.domNode);\n    return index2 > 0 && (offset += 1), [this.parent.domNode, offset];\n  }\n  /**\n   * Return value represented by this blot\n   * Should not change without interaction from API or\n   * user change detectable by update()\n   */\n  value() {\n    return {\n      [this.statics.blotName]: this.statics.value(this.domNode) || true\n    };\n  }\n};\n_LeafBlot.scope = Scope.INLINE_BLOT;\nlet LeafBlot = _LeafBlot;\nconst LeafBlot$1 = LeafBlot;\nclass LinkedList {\n  constructor() {\n    this.head = null, this.tail = null, this.length = 0;\n  }\n  append(...nodes) {\n    if (this.insertBefore(nodes[0], null), nodes.length > 1) {\n      const rest = nodes.slice(1);\n      this.append(...rest);\n    }\n  }\n  at(index2) {\n    const next = this.iterator();\n    let cur = next();\n    for (; cur && index2 > 0; )\n      index2 -= 1, cur = next();\n    return cur;\n  }\n  contains(node) {\n    const next = this.iterator();\n    let cur = next();\n    for (; cur; ) {\n      if (cur === node)\n        return true;\n      cur = next();\n    }\n    return false;\n  }\n  indexOf(node) {\n    const next = this.iterator();\n    let cur = next(), index2 = 0;\n    for (; cur; ) {\n      if (cur === node)\n        return index2;\n      index2 += 1, cur = next();\n    }\n    return -1;\n  }\n  insertBefore(node, refNode) {\n    node != null && (this.remove(node), node.next = refNode, refNode != null ? (node.prev = refNode.prev, refNode.prev != null && (refNode.prev.next = node), refNode.prev = node, refNode === this.head && (this.head = node)) : this.tail != null ? (this.tail.next = node, node.prev = this.tail, this.tail = node) : (node.prev = null, this.head = this.tail = node), this.length += 1);\n  }\n  offset(target) {\n    let index2 = 0, cur = this.head;\n    for (; cur != null; ) {\n      if (cur === target)\n        return index2;\n      index2 += cur.length(), cur = cur.next;\n    }\n    return -1;\n  }\n  remove(node) {\n    this.contains(node) && (node.prev != null && (node.prev.next = node.next), node.next != null && (node.next.prev = node.prev), node === this.head && (this.head = node.next), node === this.tail && (this.tail = node.prev), this.length -= 1);\n  }\n  iterator(curNode = this.head) {\n    return () => {\n      const ret = curNode;\n      return curNode != null && (curNode = curNode.next), ret;\n    };\n  }\n  find(index2, inclusive = false) {\n    const next = this.iterator();\n    let cur = next();\n    for (; cur; ) {\n      const length = cur.length();\n      if (index2 < length || inclusive && index2 === length && (cur.next == null || cur.next.length() !== 0))\n        return [cur, index2];\n      index2 -= length, cur = next();\n    }\n    return [null, 0];\n  }\n  forEach(callback) {\n    const next = this.iterator();\n    let cur = next();\n    for (; cur; )\n      callback(cur), cur = next();\n  }\n  forEachAt(index2, length, callback) {\n    if (length <= 0)\n      return;\n    const [startNode, offset] = this.find(index2);\n    let curIndex = index2 - offset;\n    const next = this.iterator(startNode);\n    let cur = next();\n    for (; cur && curIndex < index2 + length; ) {\n      const curLength = cur.length();\n      index2 > curIndex ? callback(\n        cur,\n        index2 - curIndex,\n        Math.min(length, curIndex + curLength - index2)\n      ) : callback(cur, 0, Math.min(curLength, index2 + length - curIndex)), curIndex += curLength, cur = next();\n    }\n  }\n  map(callback) {\n    return this.reduce((memo, cur) => (memo.push(callback(cur)), memo), []);\n  }\n  reduce(callback, memo) {\n    const next = this.iterator();\n    let cur = next();\n    for (; cur; )\n      memo = callback(memo, cur), cur = next();\n    return memo;\n  }\n}\nfunction makeAttachedBlot(node, scroll) {\n  const found = scroll.find(node);\n  if (found)\n    return found;\n  try {\n    return scroll.create(node);\n  } catch {\n    const blot = scroll.create(Scope.INLINE);\n    return Array.from(node.childNodes).forEach((child) => {\n      blot.domNode.appendChild(child);\n    }), node.parentNode && node.parentNode.replaceChild(blot.domNode, node), blot.attach(), blot;\n  }\n}\nconst _ParentBlot = class _ParentBlot2 extends ShadowBlot {\n  constructor(scroll, domNode) {\n    super(scroll, domNode), this.uiNode = null, this.build();\n  }\n  appendChild(other) {\n    this.insertBefore(other);\n  }\n  attach() {\n    super.attach(), this.children.forEach((child) => {\n      child.attach();\n    });\n  }\n  attachUI(node) {\n    this.uiNode != null && this.uiNode.remove(), this.uiNode = node, _ParentBlot2.uiClass && this.uiNode.classList.add(_ParentBlot2.uiClass), this.uiNode.setAttribute(\"contenteditable\", \"false\"), this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n  }\n  /**\n   * Called during construction, should fill its own children LinkedList.\n   */\n  build() {\n    this.children = new LinkedList(), Array.from(this.domNode.childNodes).filter((node) => node !== this.uiNode).reverse().forEach((node) => {\n      try {\n        const child = makeAttachedBlot(node, this.scroll);\n        this.insertBefore(child, this.children.head || void 0);\n      } catch (err) {\n        if (err instanceof ParchmentError)\n          return;\n        throw err;\n      }\n    });\n  }\n  deleteAt(index2, length) {\n    if (index2 === 0 && length === this.length())\n      return this.remove();\n    this.children.forEachAt(index2, length, (child, offset, childLength) => {\n      child.deleteAt(offset, childLength);\n    });\n  }\n  descendant(criteria, index2 = 0) {\n    const [child, offset] = this.children.find(index2);\n    return criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria ? [child, offset] : child instanceof _ParentBlot2 ? child.descendant(criteria, offset) : [null, -1];\n  }\n  descendants(criteria, index2 = 0, length = Number.MAX_VALUE) {\n    let descendants = [], lengthLeft = length;\n    return this.children.forEachAt(\n      index2,\n      length,\n      (child, childIndex, childLength) => {\n        (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) && descendants.push(child), child instanceof _ParentBlot2 && (descendants = descendants.concat(\n          child.descendants(criteria, childIndex, lengthLeft)\n        )), lengthLeft -= childLength;\n      }\n    ), descendants;\n  }\n  detach() {\n    this.children.forEach((child) => {\n      child.detach();\n    }), super.detach();\n  }\n  enforceAllowedChildren() {\n    let done = false;\n    this.children.forEach((child) => {\n      done || this.statics.allowedChildren.some(\n        (def) => child instanceof def\n      ) || (child.statics.scope === Scope.BLOCK_BLOT ? (child.next != null && this.splitAfter(child), child.prev != null && this.splitAfter(child.prev), child.parent.unwrap(), done = true) : child instanceof _ParentBlot2 ? child.unwrap() : child.remove());\n    });\n  }\n  formatAt(index2, length, name, value) {\n    this.children.forEachAt(index2, length, (child, offset, childLength) => {\n      child.formatAt(offset, childLength, name, value);\n    });\n  }\n  insertAt(index2, value, def) {\n    const [child, offset] = this.children.find(index2);\n    if (child)\n      child.insertAt(offset, value, def);\n    else {\n      const blot = def == null ? this.scroll.create(\"text\", value) : this.scroll.create(value, def);\n      this.appendChild(blot);\n    }\n  }\n  insertBefore(childBlot, refBlot) {\n    childBlot.parent != null && childBlot.parent.children.remove(childBlot);\n    let refDomNode = null;\n    this.children.insertBefore(childBlot, refBlot || null), childBlot.parent = this, refBlot != null && (refDomNode = refBlot.domNode), (this.domNode.parentNode !== childBlot.domNode || this.domNode.nextSibling !== refDomNode) && this.domNode.insertBefore(childBlot.domNode, refDomNode), childBlot.attach();\n  }\n  length() {\n    return this.children.reduce((memo, child) => memo + child.length(), 0);\n  }\n  moveChildren(targetParent, refNode) {\n    this.children.forEach((child) => {\n      targetParent.insertBefore(child, refNode);\n    });\n  }\n  optimize(context2) {\n    if (super.optimize(context2), this.enforceAllowedChildren(), this.uiNode != null && this.uiNode !== this.domNode.firstChild && this.domNode.insertBefore(this.uiNode, this.domNode.firstChild), this.children.length === 0)\n      if (this.statics.defaultChild != null) {\n        const child = this.scroll.create(this.statics.defaultChild.blotName);\n        this.appendChild(child);\n      } else\n        this.remove();\n  }\n  path(index2, inclusive = false) {\n    const [child, offset] = this.children.find(index2, inclusive), position = [[this, index2]];\n    return child instanceof _ParentBlot2 ? position.concat(child.path(offset, inclusive)) : (child != null && position.push([child, offset]), position);\n  }\n  removeChild(child) {\n    this.children.remove(child);\n  }\n  replaceWith(name, value) {\n    const replacement = typeof name == \"string\" ? this.scroll.create(name, value) : name;\n    return replacement instanceof _ParentBlot2 && this.moveChildren(replacement), super.replaceWith(replacement);\n  }\n  split(index2, force = false) {\n    if (!force) {\n      if (index2 === 0)\n        return this;\n      if (index2 === this.length())\n        return this.next;\n    }\n    const after = this.clone();\n    return this.parent && this.parent.insertBefore(after, this.next || void 0), this.children.forEachAt(index2, this.length(), (child, offset, _length) => {\n      const split = child.split(offset, force);\n      split != null && after.appendChild(split);\n    }), after;\n  }\n  splitAfter(child) {\n    const after = this.clone();\n    for (; child.next != null; )\n      after.appendChild(child.next);\n    return this.parent && this.parent.insertBefore(after, this.next || void 0), after;\n  }\n  unwrap() {\n    this.parent && this.moveChildren(this.parent, this.next || void 0), this.remove();\n  }\n  update(mutations, _context) {\n    const addedNodes = [], removedNodes = [];\n    mutations.forEach((mutation) => {\n      mutation.target === this.domNode && mutation.type === \"childList\" && (addedNodes.push(...mutation.addedNodes), removedNodes.push(...mutation.removedNodes));\n    }), removedNodes.forEach((node) => {\n      if (node.parentNode != null && // @ts-expect-error Fix me later\n      node.tagName !== \"IFRAME\" && document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)\n        return;\n      const blot = this.scroll.find(node);\n      blot != null && (blot.domNode.parentNode == null || blot.domNode.parentNode === this.domNode) && blot.detach();\n    }), addedNodes.filter((node) => node.parentNode === this.domNode && node !== this.uiNode).sort((a2, b2) => a2 === b2 ? 0 : a2.compareDocumentPosition(b2) & Node.DOCUMENT_POSITION_FOLLOWING ? 1 : -1).forEach((node) => {\n      let refBlot = null;\n      node.nextSibling != null && (refBlot = this.scroll.find(node.nextSibling));\n      const blot = makeAttachedBlot(node, this.scroll);\n      (blot.next !== refBlot || blot.next == null) && (blot.parent != null && blot.parent.removeChild(this), this.insertBefore(blot, refBlot || void 0));\n    }), this.enforceAllowedChildren();\n  }\n};\n_ParentBlot.uiClass = \"\";\nlet ParentBlot = _ParentBlot;\nconst ParentBlot$1 = ParentBlot;\nfunction isEqual$1(obj1, obj2) {\n  if (Object.keys(obj1).length !== Object.keys(obj2).length)\n    return false;\n  for (const prop in obj1)\n    if (obj1[prop] !== obj2[prop])\n      return false;\n  return true;\n}\nconst _InlineBlot = class _InlineBlot2 extends ParentBlot$1 {\n  static create(value) {\n    return super.create(value);\n  }\n  static formats(domNode, scroll) {\n    const match22 = scroll.query(_InlineBlot2.blotName);\n    if (!(match22 != null && domNode.tagName === match22.tagName)) {\n      if (typeof this.tagName == \"string\")\n        return true;\n      if (Array.isArray(this.tagName))\n        return domNode.tagName.toLowerCase();\n    }\n  }\n  constructor(scroll, domNode) {\n    super(scroll, domNode), this.attributes = new AttributorStore$1(this.domNode);\n  }\n  format(name, value) {\n    if (name === this.statics.blotName && !value)\n      this.children.forEach((child) => {\n        child instanceof _InlineBlot2 || (child = child.wrap(_InlineBlot2.blotName, true)), this.attributes.copy(child);\n      }), this.unwrap();\n    else {\n      const format2 = this.scroll.query(name, Scope.INLINE);\n      if (format2 == null)\n        return;\n      format2 instanceof Attributor ? this.attributes.attribute(format2, value) : value && (name !== this.statics.blotName || this.formats()[name] !== value) && this.replaceWith(name, value);\n    }\n  }\n  formats() {\n    const formats = this.attributes.values(), format2 = this.statics.formats(this.domNode, this.scroll);\n    return format2 != null && (formats[this.statics.blotName] = format2), formats;\n  }\n  formatAt(index2, length, name, value) {\n    this.formats()[name] != null || this.scroll.query(name, Scope.ATTRIBUTE) ? this.isolate(index2, length).format(name, value) : super.formatAt(index2, length, name, value);\n  }\n  optimize(context2) {\n    super.optimize(context2);\n    const formats = this.formats();\n    if (Object.keys(formats).length === 0)\n      return this.unwrap();\n    const next = this.next;\n    next instanceof _InlineBlot2 && next.prev === this && isEqual$1(formats, next.formats()) && (next.moveChildren(this), next.remove());\n  }\n  replaceWith(name, value) {\n    const replacement = super.replaceWith(name, value);\n    return this.attributes.copy(replacement), replacement;\n  }\n  update(mutations, context2) {\n    super.update(mutations, context2), mutations.some(\n      (mutation) => mutation.target === this.domNode && mutation.type === \"attributes\"\n    ) && this.attributes.build();\n  }\n  wrap(name, value) {\n    const wrapper2 = super.wrap(name, value);\n    return wrapper2 instanceof _InlineBlot2 && this.attributes.move(wrapper2), wrapper2;\n  }\n};\n_InlineBlot.allowedChildren = [_InlineBlot, LeafBlot$1], _InlineBlot.blotName = \"inline\", _InlineBlot.scope = Scope.INLINE_BLOT, _InlineBlot.tagName = \"SPAN\";\nlet InlineBlot = _InlineBlot;\nconst InlineBlot$1 = InlineBlot, _BlockBlot = class _BlockBlot2 extends ParentBlot$1 {\n  static create(value) {\n    return super.create(value);\n  }\n  static formats(domNode, scroll) {\n    const match22 = scroll.query(_BlockBlot2.blotName);\n    if (!(match22 != null && domNode.tagName === match22.tagName)) {\n      if (typeof this.tagName == \"string\")\n        return true;\n      if (Array.isArray(this.tagName))\n        return domNode.tagName.toLowerCase();\n    }\n  }\n  constructor(scroll, domNode) {\n    super(scroll, domNode), this.attributes = new AttributorStore$1(this.domNode);\n  }\n  format(name, value) {\n    const format2 = this.scroll.query(name, Scope.BLOCK);\n    format2 != null && (format2 instanceof Attributor ? this.attributes.attribute(format2, value) : name === this.statics.blotName && !value ? this.replaceWith(_BlockBlot2.blotName) : value && (name !== this.statics.blotName || this.formats()[name] !== value) && this.replaceWith(name, value));\n  }\n  formats() {\n    const formats = this.attributes.values(), format2 = this.statics.formats(this.domNode, this.scroll);\n    return format2 != null && (formats[this.statics.blotName] = format2), formats;\n  }\n  formatAt(index2, length, name, value) {\n    this.scroll.query(name, Scope.BLOCK) != null ? this.format(name, value) : super.formatAt(index2, length, name, value);\n  }\n  insertAt(index2, value, def) {\n    if (def == null || this.scroll.query(value, Scope.INLINE) != null)\n      super.insertAt(index2, value, def);\n    else {\n      const after = this.split(index2);\n      if (after != null) {\n        const blot = this.scroll.create(value, def);\n        after.parent.insertBefore(blot, after);\n      } else\n        throw new Error(\"Attempt to insertAt after block boundaries\");\n    }\n  }\n  replaceWith(name, value) {\n    const replacement = super.replaceWith(name, value);\n    return this.attributes.copy(replacement), replacement;\n  }\n  update(mutations, context2) {\n    super.update(mutations, context2), mutations.some(\n      (mutation) => mutation.target === this.domNode && mutation.type === \"attributes\"\n    ) && this.attributes.build();\n  }\n};\n_BlockBlot.blotName = \"block\", _BlockBlot.scope = Scope.BLOCK_BLOT, _BlockBlot.tagName = \"P\", _BlockBlot.allowedChildren = [\n  InlineBlot$1,\n  _BlockBlot,\n  LeafBlot$1\n];\nlet BlockBlot = _BlockBlot;\nconst BlockBlot$1 = BlockBlot, _ContainerBlot = class _ContainerBlot2 extends ParentBlot$1 {\n  checkMerge() {\n    return this.next !== null && this.next.statics.blotName === this.statics.blotName;\n  }\n  deleteAt(index2, length) {\n    super.deleteAt(index2, length), this.enforceAllowedChildren();\n  }\n  formatAt(index2, length, name, value) {\n    super.formatAt(index2, length, name, value), this.enforceAllowedChildren();\n  }\n  insertAt(index2, value, def) {\n    super.insertAt(index2, value, def), this.enforceAllowedChildren();\n  }\n  optimize(context2) {\n    super.optimize(context2), this.children.length > 0 && this.next != null && this.checkMerge() && (this.next.moveChildren(this), this.next.remove());\n  }\n};\n_ContainerBlot.blotName = \"container\", _ContainerBlot.scope = Scope.BLOCK_BLOT;\nlet ContainerBlot = _ContainerBlot;\nconst ContainerBlot$1 = ContainerBlot;\nclass EmbedBlot extends LeafBlot$1 {\n  static formats(_domNode, _scroll) {\n  }\n  format(name, value) {\n    super.formatAt(0, this.length(), name, value);\n  }\n  formatAt(index2, length, name, value) {\n    index2 === 0 && length === this.length() ? this.format(name, value) : super.formatAt(index2, length, name, value);\n  }\n  formats() {\n    return this.statics.formats(this.domNode, this.scroll);\n  }\n}\nconst EmbedBlot$1 = EmbedBlot, OBSERVER_CONFIG = {\n  attributes: true,\n  characterData: true,\n  characterDataOldValue: true,\n  childList: true,\n  subtree: true\n}, MAX_OPTIMIZE_ITERATIONS = 100, _ScrollBlot = class _ScrollBlot2 extends ParentBlot$1 {\n  constructor(registry, node) {\n    super(null, node), this.registry = registry, this.scroll = this, this.build(), this.observer = new MutationObserver((mutations) => {\n      this.update(mutations);\n    }), this.observer.observe(this.domNode, OBSERVER_CONFIG), this.attach();\n  }\n  create(input, value) {\n    return this.registry.create(this, input, value);\n  }\n  find(node, bubble = false) {\n    const blot = this.registry.find(node, bubble);\n    return blot ? blot.scroll === this ? blot : bubble ? this.find(blot.scroll.domNode.parentNode, true) : null : null;\n  }\n  query(query, scope = Scope.ANY) {\n    return this.registry.query(query, scope);\n  }\n  register(...definitions) {\n    return this.registry.register(...definitions);\n  }\n  build() {\n    this.scroll != null && super.build();\n  }\n  detach() {\n    super.detach(), this.observer.disconnect();\n  }\n  deleteAt(index2, length) {\n    this.update(), index2 === 0 && length === this.length() ? this.children.forEach((child) => {\n      child.remove();\n    }) : super.deleteAt(index2, length);\n  }\n  formatAt(index2, length, name, value) {\n    this.update(), super.formatAt(index2, length, name, value);\n  }\n  insertAt(index2, value, def) {\n    this.update(), super.insertAt(index2, value, def);\n  }\n  optimize(mutations = [], context2 = {}) {\n    super.optimize(context2);\n    const mutationsMap = context2.mutationsMap || /* @__PURE__ */ new WeakMap();\n    let records = Array.from(this.observer.takeRecords());\n    for (; records.length > 0; )\n      mutations.push(records.pop());\n    const mark = (blot, markParent = true) => {\n      blot == null || blot === this || blot.domNode.parentNode != null && (mutationsMap.has(blot.domNode) || mutationsMap.set(blot.domNode, []), markParent && mark(blot.parent));\n    }, optimize = (blot) => {\n      mutationsMap.has(blot.domNode) && (blot instanceof ParentBlot$1 && blot.children.forEach(optimize), mutationsMap.delete(blot.domNode), blot.optimize(context2));\n    };\n    let remaining = mutations;\n    for (let i3 = 0; remaining.length > 0; i3 += 1) {\n      if (i3 >= MAX_OPTIMIZE_ITERATIONS)\n        throw new Error(\"[Parchment] Maximum optimize iterations reached\");\n      for (remaining.forEach((mutation) => {\n        const blot = this.find(mutation.target, true);\n        blot != null && (blot.domNode === mutation.target && (mutation.type === \"childList\" ? (mark(this.find(mutation.previousSibling, false)), Array.from(mutation.addedNodes).forEach((node) => {\n          const child = this.find(node, false);\n          mark(child, false), child instanceof ParentBlot$1 && child.children.forEach((grandChild) => {\n            mark(grandChild, false);\n          });\n        })) : mutation.type === \"attributes\" && mark(blot.prev)), mark(blot));\n      }), this.children.forEach(optimize), remaining = Array.from(this.observer.takeRecords()), records = remaining.slice(); records.length > 0; )\n        mutations.push(records.pop());\n    }\n  }\n  update(mutations, context2 = {}) {\n    mutations = mutations || this.observer.takeRecords();\n    const mutationsMap = /* @__PURE__ */ new WeakMap();\n    mutations.map((mutation) => {\n      const blot = this.find(mutation.target, true);\n      return blot == null ? null : mutationsMap.has(blot.domNode) ? (mutationsMap.get(blot.domNode).push(mutation), null) : (mutationsMap.set(blot.domNode, [mutation]), blot);\n    }).forEach((blot) => {\n      blot != null && blot !== this && mutationsMap.has(blot.domNode) && blot.update(mutationsMap.get(blot.domNode) || [], context2);\n    }), context2.mutationsMap = mutationsMap, mutationsMap.has(this.domNode) && super.update(mutationsMap.get(this.domNode), context2), this.optimize(mutations, context2);\n  }\n};\n_ScrollBlot.blotName = \"scroll\", _ScrollBlot.defaultChild = BlockBlot$1, _ScrollBlot.allowedChildren = [BlockBlot$1, ContainerBlot$1], _ScrollBlot.scope = Scope.BLOCK_BLOT, _ScrollBlot.tagName = \"DIV\";\nlet ScrollBlot = _ScrollBlot;\nconst ScrollBlot$1 = ScrollBlot, _TextBlot = class _TextBlot2 extends LeafBlot$1 {\n  static create(value) {\n    return document.createTextNode(value);\n  }\n  static value(domNode) {\n    return domNode.data;\n  }\n  constructor(scroll, node) {\n    super(scroll, node), this.text = this.statics.value(this.domNode);\n  }\n  deleteAt(index2, length) {\n    this.domNode.data = this.text = this.text.slice(0, index2) + this.text.slice(index2 + length);\n  }\n  index(node, offset) {\n    return this.domNode === node ? offset : -1;\n  }\n  insertAt(index2, value, def) {\n    def == null ? (this.text = this.text.slice(0, index2) + value + this.text.slice(index2), this.domNode.data = this.text) : super.insertAt(index2, value, def);\n  }\n  length() {\n    return this.text.length;\n  }\n  optimize(context2) {\n    super.optimize(context2), this.text = this.statics.value(this.domNode), this.text.length === 0 ? this.remove() : this.next instanceof _TextBlot2 && this.next.prev === this && (this.insertAt(this.length(), this.next.value()), this.next.remove());\n  }\n  position(index2, _inclusive = false) {\n    return [this.domNode, index2];\n  }\n  split(index2, force = false) {\n    if (!force) {\n      if (index2 === 0)\n        return this;\n      if (index2 === this.length())\n        return this.next;\n    }\n    const after = this.scroll.create(this.domNode.splitText(index2));\n    return this.parent.insertBefore(after, this.next || void 0), this.text = this.statics.value(this.domNode), after;\n  }\n  update(mutations, _context) {\n    mutations.some((mutation) => mutation.type === \"characterData\" && mutation.target === this.domNode) && (this.text = this.statics.value(this.domNode));\n  }\n  value() {\n    return this.text;\n  }\n};\n_TextBlot.blotName = \"text\", _TextBlot.scope = Scope.INLINE_BLOT;\nlet TextBlot = _TextBlot;\nconst TextBlot$1 = TextBlot;\nconst Parchment = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Attributor,\n  AttributorStore: AttributorStore$1,\n  BlockBlot: BlockBlot$1,\n  ClassAttributor: ClassAttributor$1,\n  ContainerBlot: ContainerBlot$1,\n  EmbedBlot: EmbedBlot$1,\n  InlineBlot: InlineBlot$1,\n  LeafBlot: LeafBlot$1,\n  ParentBlot: ParentBlot$1,\n  Registry,\n  Scope,\n  ScrollBlot: ScrollBlot$1,\n  StyleAttributor: StyleAttributor$1,\n  TextBlot: TextBlot$1\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar Delta$1 = { exports: {} };\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\nfunction diff_main(text1, text2, cursor_pos, cleanup, _fix_unicode) {\n  if (text1 === text2) {\n    if (text1) {\n      return [[DIFF_EQUAL, text1]];\n    }\n    return [];\n  }\n  if (cursor_pos != null) {\n    var editdiff = find_cursor_edit_diff(text1, text2, cursor_pos);\n    if (editdiff) {\n      return editdiff;\n    }\n  }\n  var commonlength = diff_commonPrefix(text1, text2);\n  var commonprefix = text1.substring(0, commonlength);\n  text1 = text1.substring(commonlength);\n  text2 = text2.substring(commonlength);\n  commonlength = diff_commonSuffix(text1, text2);\n  var commonsuffix = text1.substring(text1.length - commonlength);\n  text1 = text1.substring(0, text1.length - commonlength);\n  text2 = text2.substring(0, text2.length - commonlength);\n  var diffs = diff_compute_(text1, text2);\n  if (commonprefix) {\n    diffs.unshift([DIFF_EQUAL, commonprefix]);\n  }\n  if (commonsuffix) {\n    diffs.push([DIFF_EQUAL, commonsuffix]);\n  }\n  diff_cleanupMerge(diffs, _fix_unicode);\n  if (cleanup) {\n    diff_cleanupSemantic(diffs);\n  }\n  return diffs;\n}\nfunction diff_compute_(text1, text2) {\n  var diffs;\n  if (!text1) {\n    return [[DIFF_INSERT, text2]];\n  }\n  if (!text2) {\n    return [[DIFF_DELETE, text1]];\n  }\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  var i3 = longtext.indexOf(shorttext);\n  if (i3 !== -1) {\n    diffs = [\n      [DIFF_INSERT, longtext.substring(0, i3)],\n      [DIFF_EQUAL, shorttext],\n      [DIFF_INSERT, longtext.substring(i3 + shorttext.length)]\n    ];\n    if (text1.length > text2.length) {\n      diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n    }\n    return diffs;\n  }\n  if (shorttext.length === 1) {\n    return [\n      [DIFF_DELETE, text1],\n      [DIFF_INSERT, text2]\n    ];\n  }\n  var hm = diff_halfMatch_(text1, text2);\n  if (hm) {\n    var text1_a = hm[0];\n    var text1_b = hm[1];\n    var text2_a = hm[2];\n    var text2_b = hm[3];\n    var mid_common = hm[4];\n    var diffs_a = diff_main(text1_a, text2_a);\n    var diffs_b = diff_main(text1_b, text2_b);\n    return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n  }\n  return diff_bisect_(text1, text2);\n}\nfunction diff_bisect_(text1, text2) {\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  var max_d = Math.ceil((text1_length + text2_length) / 2);\n  var v_offset = max_d;\n  var v_length = 2 * max_d;\n  var v1 = new Array(v_length);\n  var v2 = new Array(v_length);\n  for (var x2 = 0; x2 < v_length; x2++) {\n    v1[x2] = -1;\n    v2[x2] = -1;\n  }\n  v1[v_offset + 1] = 0;\n  v2[v_offset + 1] = 0;\n  var delta = text1_length - text2_length;\n  var front = delta % 2 !== 0;\n  var k1start = 0;\n  var k1end = 0;\n  var k2start = 0;\n  var k2end = 0;\n  for (var d2 = 0; d2 < max_d; d2++) {\n    for (var k1 = -d2 + k1start; k1 <= d2 - k1end; k1 += 2) {\n      var k1_offset = v_offset + k1;\n      var x1;\n      if (k1 === -d2 || k1 !== d2 && v1[k1_offset - 1] < v1[k1_offset + 1]) {\n        x1 = v1[k1_offset + 1];\n      } else {\n        x1 = v1[k1_offset - 1] + 1;\n      }\n      var y1 = x1 - k1;\n      while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) === text2.charAt(y1)) {\n        x1++;\n        y1++;\n      }\n      v1[k1_offset] = x1;\n      if (x1 > text1_length) {\n        k1end += 2;\n      } else if (y1 > text2_length) {\n        k1start += 2;\n      } else if (front) {\n        var k2_offset = v_offset + delta - k1;\n        if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] !== -1) {\n          var x22 = text1_length - v2[k2_offset];\n          if (x1 >= x22) {\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n    for (var k2 = -d2 + k2start; k2 <= d2 - k2end; k2 += 2) {\n      var k2_offset = v_offset + k2;\n      var x22;\n      if (k2 === -d2 || k2 !== d2 && v2[k2_offset - 1] < v2[k2_offset + 1]) {\n        x22 = v2[k2_offset + 1];\n      } else {\n        x22 = v2[k2_offset - 1] + 1;\n      }\n      var y2 = x22 - k2;\n      while (x22 < text1_length && y2 < text2_length && text1.charAt(text1_length - x22 - 1) === text2.charAt(text2_length - y2 - 1)) {\n        x22++;\n        y2++;\n      }\n      v2[k2_offset] = x22;\n      if (x22 > text1_length) {\n        k2end += 2;\n      } else if (y2 > text2_length) {\n        k2start += 2;\n      } else if (!front) {\n        var k1_offset = v_offset + delta - k2;\n        if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] !== -1) {\n          var x1 = v1[k1_offset];\n          var y1 = v_offset + x1 - k1_offset;\n          x22 = text1_length - x22;\n          if (x1 >= x22) {\n            return diff_bisectSplit_(text1, text2, x1, y1);\n          }\n        }\n      }\n    }\n  }\n  return [\n    [DIFF_DELETE, text1],\n    [DIFF_INSERT, text2]\n  ];\n}\nfunction diff_bisectSplit_(text1, text2, x2, y2) {\n  var text1a = text1.substring(0, x2);\n  var text2a = text2.substring(0, y2);\n  var text1b = text1.substring(x2);\n  var text2b = text2.substring(y2);\n  var diffs = diff_main(text1a, text2a);\n  var diffsb = diff_main(text1b, text2b);\n  return diffs.concat(diffsb);\n}\nfunction diff_commonPrefix(text1, text2) {\n  if (!text1 || !text2 || text1.charAt(0) !== text2.charAt(0)) {\n    return 0;\n  }\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  if (is_surrogate_pair_start(text1.charCodeAt(pointermid - 1))) {\n    pointermid--;\n  }\n  return pointermid;\n}\nfunction diff_commonOverlap_(text1, text2) {\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  if (text1 == text2) {\n    return text_length;\n  }\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (found == 0 || text1.substring(text_length - length) == text2.substring(0, length)) {\n      best = length;\n      length++;\n    }\n  }\n}\nfunction diff_commonSuffix(text1, text2) {\n  if (!text1 || !text2 || text1.slice(-1) !== text2.slice(-1)) {\n    return 0;\n  }\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  if (is_surrogate_pair_end(text1.charCodeAt(text1.length - pointermid))) {\n    pointermid--;\n  }\n  return pointermid;\n}\nfunction diff_halfMatch_(text1, text2) {\n  var longtext = text1.length > text2.length ? text1 : text2;\n  var shorttext = text1.length > text2.length ? text2 : text1;\n  if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n    return null;\n  }\n  function diff_halfMatchI_(longtext2, shorttext2, i3) {\n    var seed = longtext2.substring(i3, i3 + Math.floor(longtext2.length / 4));\n    var j2 = -1;\n    var best_common = \"\";\n    var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n    while ((j2 = shorttext2.indexOf(seed, j2 + 1)) !== -1) {\n      var prefixLength = diff_commonPrefix(\n        longtext2.substring(i3),\n        shorttext2.substring(j2)\n      );\n      var suffixLength = diff_commonSuffix(\n        longtext2.substring(0, i3),\n        shorttext2.substring(0, j2)\n      );\n      if (best_common.length < suffixLength + prefixLength) {\n        best_common = shorttext2.substring(j2 - suffixLength, j2) + shorttext2.substring(j2, j2 + prefixLength);\n        best_longtext_a = longtext2.substring(0, i3 - suffixLength);\n        best_longtext_b = longtext2.substring(i3 + prefixLength);\n        best_shorttext_a = shorttext2.substring(0, j2 - suffixLength);\n        best_shorttext_b = shorttext2.substring(j2 + prefixLength);\n      }\n    }\n    if (best_common.length * 2 >= longtext2.length) {\n      return [\n        best_longtext_a,\n        best_longtext_b,\n        best_shorttext_a,\n        best_shorttext_b,\n        best_common\n      ];\n    } else {\n      return null;\n    }\n  }\n  var hm1 = diff_halfMatchI_(\n    longtext,\n    shorttext,\n    Math.ceil(longtext.length / 4)\n  );\n  var hm2 = diff_halfMatchI_(\n    longtext,\n    shorttext,\n    Math.ceil(longtext.length / 2)\n  );\n  var hm;\n  if (!hm1 && !hm2) {\n    return null;\n  } else if (!hm2) {\n    hm = hm1;\n  } else if (!hm1) {\n    hm = hm2;\n  } else {\n    hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n  }\n  var text1_a, text1_b, text2_a, text2_b;\n  if (text1.length > text2.length) {\n    text1_a = hm[0];\n    text1_b = hm[1];\n    text2_a = hm[2];\n    text2_b = hm[3];\n  } else {\n    text2_a = hm[0];\n    text2_b = hm[1];\n    text1_a = hm[2];\n    text1_b = hm[3];\n  }\n  var mid_common = hm[4];\n  return [text1_a, text1_b, text2_a, text2_b, mid_common];\n}\nfunction diff_cleanupSemantic(diffs) {\n  var changes = false;\n  var equalities = [];\n  var equalitiesLength = 0;\n  var lastequality = null;\n  var pointer = 0;\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastequality = diffs[pointer][1];\n    } else {\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      if (lastequality && lastequality.length <= Math.max(length_insertions1, length_deletions1) && lastequality.length <= Math.max(length_insertions2, length_deletions2)) {\n        diffs.splice(equalities[equalitiesLength - 1], 0, [\n          DIFF_DELETE,\n          lastequality\n        ]);\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        equalitiesLength--;\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0;\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastequality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n  diff_cleanupSemanticLossless(diffs);\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (diffs[pointer - 1][0] == DIFF_DELETE && diffs[pointer][0] == DIFF_INSERT) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (overlap_length1 >= deletion.length / 2 || overlap_length1 >= insertion.length / 2) {\n          diffs.splice(pointer, 0, [\n            DIFF_EQUAL,\n            insertion.substring(0, overlap_length1)\n          ]);\n          diffs[pointer - 1][1] = deletion.substring(\n            0,\n            deletion.length - overlap_length1\n          );\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (overlap_length2 >= deletion.length / 2 || overlap_length2 >= insertion.length / 2) {\n          diffs.splice(pointer, 0, [\n            DIFF_EQUAL,\n            deletion.substring(0, overlap_length2)\n          ]);\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] = insertion.substring(\n            0,\n            insertion.length - overlap_length2\n          );\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n}\nvar nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\nvar whitespaceRegex_ = /\\s/;\nvar linebreakRegex_ = /[\\r\\n]/;\nvar blanklineEndRegex_ = /\\n\\r?\\n$/;\nvar blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\nfunction diff_cleanupSemanticLossless(diffs) {\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      return 6;\n    }\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_);\n    var lineBreak1 = whitespace1 && char1.match(linebreakRegex_);\n    var lineBreak2 = whitespace2 && char2.match(linebreakRegex_);\n    var blankLine1 = lineBreak1 && one.match(blanklineEndRegex_);\n    var blankLine2 = lineBreak2 && two.match(blanklineStartRegex_);\n    if (blankLine1 || blankLine2) {\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      return 1;\n    }\n    return 0;\n  }\n  var pointer = 1;\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n      var commonOffset = diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score = diff_cleanupSemanticScore_(equality1, edit) + diff_cleanupSemanticScore_(edit, equality2);\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n}\nfunction diff_cleanupMerge(diffs, fix_unicode) {\n  diffs.push([DIFF_EQUAL, \"\"]);\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = \"\";\n  var text_insert = \"\";\n  var commonlength;\n  while (pointer < diffs.length) {\n    if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n      diffs.splice(pointer, 1);\n      continue;\n    }\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        var previous_equality = pointer - count_insert - count_delete - 1;\n        if (fix_unicode) {\n          if (previous_equality >= 0 && ends_with_pair_start(diffs[previous_equality][1])) {\n            var stray = diffs[previous_equality][1].slice(-1);\n            diffs[previous_equality][1] = diffs[previous_equality][1].slice(\n              0,\n              -1\n            );\n            text_delete = stray + text_delete;\n            text_insert = stray + text_insert;\n            if (!diffs[previous_equality][1]) {\n              diffs.splice(previous_equality, 1);\n              pointer--;\n              var k2 = previous_equality - 1;\n              if (diffs[k2] && diffs[k2][0] === DIFF_INSERT) {\n                count_insert++;\n                text_insert = diffs[k2][1] + text_insert;\n                k2--;\n              }\n              if (diffs[k2] && diffs[k2][0] === DIFF_DELETE) {\n                count_delete++;\n                text_delete = diffs[k2][1] + text_delete;\n                k2--;\n              }\n              previous_equality = k2;\n            }\n          }\n          if (starts_with_pair_end(diffs[pointer][1])) {\n            var stray = diffs[pointer][1].charAt(0);\n            diffs[pointer][1] = diffs[pointer][1].slice(1);\n            text_delete += stray;\n            text_insert += stray;\n          }\n        }\n        if (pointer < diffs.length - 1 && !diffs[pointer][1]) {\n          diffs.splice(pointer, 1);\n          break;\n        }\n        if (text_delete.length > 0 || text_insert.length > 0) {\n          if (text_delete.length > 0 && text_insert.length > 0) {\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if (previous_equality >= 0) {\n                diffs[previous_equality][1] += text_insert.substring(\n                  0,\n                  commonlength\n                );\n              } else {\n                diffs.splice(0, 0, [\n                  DIFF_EQUAL,\n                  text_insert.substring(0, commonlength)\n                ]);\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n              text_insert = text_insert.substring(\n                0,\n                text_insert.length - commonlength\n              );\n              text_delete = text_delete.substring(\n                0,\n                text_delete.length - commonlength\n              );\n            }\n          }\n          var n3 = count_insert + count_delete;\n          if (text_delete.length === 0 && text_insert.length === 0) {\n            diffs.splice(pointer - n3, n3);\n            pointer = pointer - n3;\n          } else if (text_delete.length === 0) {\n            diffs.splice(pointer - n3, n3, [DIFF_INSERT, text_insert]);\n            pointer = pointer - n3 + 1;\n          } else if (text_insert.length === 0) {\n            diffs.splice(pointer - n3, n3, [DIFF_DELETE, text_delete]);\n            pointer = pointer - n3 + 1;\n          } else {\n            diffs.splice(\n              pointer - n3,\n              n3,\n              [DIFF_DELETE, text_delete],\n              [DIFF_INSERT, text_insert]\n            );\n            pointer = pointer - n3 + 2;\n          }\n        }\n        if (pointer !== 0 && diffs[pointer - 1][0] === DIFF_EQUAL) {\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = \"\";\n        text_insert = \"\";\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === \"\") {\n    diffs.pop();\n  }\n  var changes = false;\n  pointer = 1;\n  while (pointer < diffs.length - 1) {\n    if (diffs[pointer - 1][0] === DIFF_EQUAL && diffs[pointer + 1][0] === DIFF_EQUAL) {\n      if (diffs[pointer][1].substring(\n        diffs[pointer][1].length - diffs[pointer - 1][1].length\n      ) === diffs[pointer - 1][1]) {\n        diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(\n          0,\n          diffs[pointer][1].length - diffs[pointer - 1][1].length\n        );\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  if (changes) {\n    diff_cleanupMerge(diffs, fix_unicode);\n  }\n}\nfunction is_surrogate_pair_start(charCode) {\n  return charCode >= 55296 && charCode <= 56319;\n}\nfunction is_surrogate_pair_end(charCode) {\n  return charCode >= 56320 && charCode <= 57343;\n}\nfunction starts_with_pair_end(str) {\n  return is_surrogate_pair_end(str.charCodeAt(0));\n}\nfunction ends_with_pair_start(str) {\n  return is_surrogate_pair_start(str.charCodeAt(str.length - 1));\n}\nfunction remove_empty_tuples(tuples) {\n  var ret = [];\n  for (var i3 = 0; i3 < tuples.length; i3++) {\n    if (tuples[i3][1].length > 0) {\n      ret.push(tuples[i3]);\n    }\n  }\n  return ret;\n}\nfunction make_edit_splice(before, oldMiddle, newMiddle, after) {\n  if (ends_with_pair_start(before) || starts_with_pair_end(after)) {\n    return null;\n  }\n  return remove_empty_tuples([\n    [DIFF_EQUAL, before],\n    [DIFF_DELETE, oldMiddle],\n    [DIFF_INSERT, newMiddle],\n    [DIFF_EQUAL, after]\n  ]);\n}\nfunction find_cursor_edit_diff(oldText, newText, cursor_pos) {\n  var oldRange = typeof cursor_pos === \"number\" ? { index: cursor_pos, length: 0 } : cursor_pos.oldRange;\n  var newRange = typeof cursor_pos === \"number\" ? null : cursor_pos.newRange;\n  var oldLength = oldText.length;\n  var newLength = newText.length;\n  if (oldRange.length === 0 && (newRange === null || newRange.length === 0)) {\n    var oldCursor = oldRange.index;\n    var oldBefore = oldText.slice(0, oldCursor);\n    var oldAfter = oldText.slice(oldCursor);\n    var maybeNewCursor = newRange ? newRange.index : null;\n    editBefore: {\n      var newCursor = oldCursor + newLength - oldLength;\n      if (maybeNewCursor !== null && maybeNewCursor !== newCursor) {\n        break editBefore;\n      }\n      if (newCursor < 0 || newCursor > newLength) {\n        break editBefore;\n      }\n      var newBefore = newText.slice(0, newCursor);\n      var newAfter = newText.slice(newCursor);\n      if (newAfter !== oldAfter) {\n        break editBefore;\n      }\n      var prefixLength = Math.min(oldCursor, newCursor);\n      var oldPrefix = oldBefore.slice(0, prefixLength);\n      var newPrefix = newBefore.slice(0, prefixLength);\n      if (oldPrefix !== newPrefix) {\n        break editBefore;\n      }\n      var oldMiddle = oldBefore.slice(prefixLength);\n      var newMiddle = newBefore.slice(prefixLength);\n      return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldAfter);\n    }\n    editAfter: {\n      if (maybeNewCursor !== null && maybeNewCursor !== oldCursor) {\n        break editAfter;\n      }\n      var cursor = oldCursor;\n      var newBefore = newText.slice(0, cursor);\n      var newAfter = newText.slice(cursor);\n      if (newBefore !== oldBefore) {\n        break editAfter;\n      }\n      var suffixLength = Math.min(oldLength - cursor, newLength - cursor);\n      var oldSuffix = oldAfter.slice(oldAfter.length - suffixLength);\n      var newSuffix = newAfter.slice(newAfter.length - suffixLength);\n      if (oldSuffix !== newSuffix) {\n        break editAfter;\n      }\n      var oldMiddle = oldAfter.slice(0, oldAfter.length - suffixLength);\n      var newMiddle = newAfter.slice(0, newAfter.length - suffixLength);\n      return make_edit_splice(oldBefore, oldMiddle, newMiddle, oldSuffix);\n    }\n  }\n  if (oldRange.length > 0 && newRange && newRange.length === 0) {\n    replaceRange: {\n      var oldPrefix = oldText.slice(0, oldRange.index);\n      var oldSuffix = oldText.slice(oldRange.index + oldRange.length);\n      var prefixLength = oldPrefix.length;\n      var suffixLength = oldSuffix.length;\n      if (newLength < prefixLength + suffixLength) {\n        break replaceRange;\n      }\n      var newPrefix = newText.slice(0, prefixLength);\n      var newSuffix = newText.slice(newLength - suffixLength);\n      if (oldPrefix !== newPrefix || oldSuffix !== newSuffix) {\n        break replaceRange;\n      }\n      var oldMiddle = oldText.slice(prefixLength, oldLength - suffixLength);\n      var newMiddle = newText.slice(prefixLength, newLength - suffixLength);\n      return make_edit_splice(oldPrefix, oldMiddle, newMiddle, oldSuffix);\n    }\n  }\n  return null;\n}\nfunction diff(text1, text2, cursor_pos, cleanup) {\n  return diff_main(text1, text2, cursor_pos, cleanup, true);\n}\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\nvar diff_1 = diff;\nvar lodash_clonedeep = { exports: {} };\nlodash_clonedeep.exports;\n(function(module2, exports2) {\n  var LARGE_ARRAY_SIZE2 = 200;\n  var HASH_UNDEFINED2 = \"__lodash_hash_undefined__\";\n  var MAX_SAFE_INTEGER2 = 9007199254740991;\n  var argsTag2 = \"[object Arguments]\", arrayTag2 = \"[object Array]\", boolTag2 = \"[object Boolean]\", dateTag2 = \"[object Date]\", errorTag2 = \"[object Error]\", funcTag2 = \"[object Function]\", genTag2 = \"[object GeneratorFunction]\", mapTag2 = \"[object Map]\", numberTag2 = \"[object Number]\", objectTag2 = \"[object Object]\", promiseTag2 = \"[object Promise]\", regexpTag2 = \"[object RegExp]\", setTag2 = \"[object Set]\", stringTag2 = \"[object String]\", symbolTag2 = \"[object Symbol]\", weakMapTag2 = \"[object WeakMap]\";\n  var arrayBufferTag2 = \"[object ArrayBuffer]\", dataViewTag2 = \"[object DataView]\", float32Tag2 = \"[object Float32Array]\", float64Tag2 = \"[object Float64Array]\", int8Tag2 = \"[object Int8Array]\", int16Tag2 = \"[object Int16Array]\", int32Tag2 = \"[object Int32Array]\", uint8Tag2 = \"[object Uint8Array]\", uint8ClampedTag2 = \"[object Uint8ClampedArray]\", uint16Tag2 = \"[object Uint16Array]\", uint32Tag2 = \"[object Uint32Array]\";\n  var reRegExpChar2 = /[\\\\^$.*+?()[\\]{}|]/g;\n  var reFlags2 = /\\w*$/;\n  var reIsHostCtor2 = /^\\[object .+?Constructor\\]$/;\n  var reIsUint2 = /^(?:0|[1-9]\\d*)$/;\n  var cloneableTags2 = {};\n  cloneableTags2[argsTag2] = cloneableTags2[arrayTag2] = cloneableTags2[arrayBufferTag2] = cloneableTags2[dataViewTag2] = cloneableTags2[boolTag2] = cloneableTags2[dateTag2] = cloneableTags2[float32Tag2] = cloneableTags2[float64Tag2] = cloneableTags2[int8Tag2] = cloneableTags2[int16Tag2] = cloneableTags2[int32Tag2] = cloneableTags2[mapTag2] = cloneableTags2[numberTag2] = cloneableTags2[objectTag2] = cloneableTags2[regexpTag2] = cloneableTags2[setTag2] = cloneableTags2[stringTag2] = cloneableTags2[symbolTag2] = cloneableTags2[uint8Tag2] = cloneableTags2[uint8ClampedTag2] = cloneableTags2[uint16Tag2] = cloneableTags2[uint32Tag2] = true;\n  cloneableTags2[errorTag2] = cloneableTags2[funcTag2] = cloneableTags2[weakMapTag2] = false;\n  var freeGlobal2 = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n  var freeSelf2 = typeof self == \"object\" && self && self.Object === Object && self;\n  var root2 = freeGlobal2 || freeSelf2 || Function(\"return this\")();\n  var freeExports2 = exports2 && !exports2.nodeType && exports2;\n  var freeModule2 = freeExports2 && true && module2 && !module2.nodeType && module2;\n  var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2;\n  function addMapEntry(map2, pair) {\n    map2.set(pair[0], pair[1]);\n    return map2;\n  }\n  function addSetEntry(set2, value) {\n    set2.add(value);\n    return set2;\n  }\n  function arrayEach2(array, iteratee) {\n    var index2 = -1, length = array ? array.length : 0;\n    while (++index2 < length) {\n      if (iteratee(array[index2], index2, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n  function arrayPush2(array, values) {\n    var index2 = -1, length = values.length, offset = array.length;\n    while (++index2 < length) {\n      array[offset + index2] = values[index2];\n    }\n    return array;\n  }\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index2 = -1, length = array ? array.length : 0;\n    while (++index2 < length) {\n      accumulator = iteratee(accumulator, array[index2], index2, array);\n    }\n    return accumulator;\n  }\n  function baseTimes2(n3, iteratee) {\n    var index2 = -1, result = Array(n3);\n    while (++index2 < n3) {\n      result[index2] = iteratee(index2);\n    }\n    return result;\n  }\n  function getValue2(object, key) {\n    return object == null ? void 0 : object[key];\n  }\n  function isHostObject(value) {\n    var result = false;\n    if (value != null && typeof value.toString != \"function\") {\n      try {\n        result = !!(value + \"\");\n      } catch (e2) {\n      }\n    }\n    return result;\n  }\n  function mapToArray2(map2) {\n    var index2 = -1, result = Array(map2.size);\n    map2.forEach(function(value, key) {\n      result[++index2] = [key, value];\n    });\n    return result;\n  }\n  function overArg2(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n  function setToArray2(set2) {\n    var index2 = -1, result = Array(set2.size);\n    set2.forEach(function(value) {\n      result[++index2] = value;\n    });\n    return result;\n  }\n  var arrayProto2 = Array.prototype, funcProto2 = Function.prototype, objectProto2 = Object.prototype;\n  var coreJsData2 = root2[\"__core-js_shared__\"];\n  var maskSrcKey2 = function() {\n    var uid = /[^.]+$/.exec(coreJsData2 && coreJsData2.keys && coreJsData2.keys.IE_PROTO || \"\");\n    return uid ? \"Symbol(src)_1.\" + uid : \"\";\n  }();\n  var funcToString2 = funcProto2.toString;\n  var hasOwnProperty2 = objectProto2.hasOwnProperty;\n  var objectToString2 = objectProto2.toString;\n  var reIsNative2 = RegExp(\n    \"^\" + funcToString2.call(hasOwnProperty2).replace(reRegExpChar2, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n  );\n  var Buffer3 = moduleExports2 ? root2.Buffer : void 0, Symbol2 = root2.Symbol, Uint8Array2 = root2.Uint8Array, getPrototype2 = overArg2(Object.getPrototypeOf, Object), objectCreate2 = Object.create, propertyIsEnumerable2 = objectProto2.propertyIsEnumerable, splice2 = arrayProto2.splice;\n  var nativeGetSymbols2 = Object.getOwnPropertySymbols, nativeIsBuffer2 = Buffer3 ? Buffer3.isBuffer : void 0, nativeKeys2 = overArg2(Object.keys, Object);\n  var DataView2 = getNative2(root2, \"DataView\"), Map2 = getNative2(root2, \"Map\"), Promise2 = getNative2(root2, \"Promise\"), Set2 = getNative2(root2, \"Set\"), WeakMap2 = getNative2(root2, \"WeakMap\"), nativeCreate2 = getNative2(Object, \"create\");\n  var dataViewCtorString2 = toSource2(DataView2), mapCtorString2 = toSource2(Map2), promiseCtorString2 = toSource2(Promise2), setCtorString2 = toSource2(Set2), weakMapCtorString2 = toSource2(WeakMap2);\n  var symbolProto2 = Symbol2 ? Symbol2.prototype : void 0, symbolValueOf2 = symbolProto2 ? symbolProto2.valueOf : void 0;\n  function Hash2(entries) {\n    var index2 = -1, length = entries ? entries.length : 0;\n    this.clear();\n    while (++index2 < length) {\n      var entry = entries[index2];\n      this.set(entry[0], entry[1]);\n    }\n  }\n  function hashClear2() {\n    this.__data__ = nativeCreate2 ? nativeCreate2(null) : {};\n  }\n  function hashDelete2(key) {\n    return this.has(key) && delete this.__data__[key];\n  }\n  function hashGet2(key) {\n    var data = this.__data__;\n    if (nativeCreate2) {\n      var result = data[key];\n      return result === HASH_UNDEFINED2 ? void 0 : result;\n    }\n    return hasOwnProperty2.call(data, key) ? data[key] : void 0;\n  }\n  function hashHas2(key) {\n    var data = this.__data__;\n    return nativeCreate2 ? data[key] !== void 0 : hasOwnProperty2.call(data, key);\n  }\n  function hashSet2(key, value) {\n    var data = this.__data__;\n    data[key] = nativeCreate2 && value === void 0 ? HASH_UNDEFINED2 : value;\n    return this;\n  }\n  Hash2.prototype.clear = hashClear2;\n  Hash2.prototype[\"delete\"] = hashDelete2;\n  Hash2.prototype.get = hashGet2;\n  Hash2.prototype.has = hashHas2;\n  Hash2.prototype.set = hashSet2;\n  function ListCache2(entries) {\n    var index2 = -1, length = entries ? entries.length : 0;\n    this.clear();\n    while (++index2 < length) {\n      var entry = entries[index2];\n      this.set(entry[0], entry[1]);\n    }\n  }\n  function listCacheClear2() {\n    this.__data__ = [];\n  }\n  function listCacheDelete2(key) {\n    var data = this.__data__, index2 = assocIndexOf2(data, key);\n    if (index2 < 0) {\n      return false;\n    }\n    var lastIndex = data.length - 1;\n    if (index2 == lastIndex) {\n      data.pop();\n    } else {\n      splice2.call(data, index2, 1);\n    }\n    return true;\n  }\n  function listCacheGet2(key) {\n    var data = this.__data__, index2 = assocIndexOf2(data, key);\n    return index2 < 0 ? void 0 : data[index2][1];\n  }\n  function listCacheHas2(key) {\n    return assocIndexOf2(this.__data__, key) > -1;\n  }\n  function listCacheSet2(key, value) {\n    var data = this.__data__, index2 = assocIndexOf2(data, key);\n    if (index2 < 0) {\n      data.push([key, value]);\n    } else {\n      data[index2][1] = value;\n    }\n    return this;\n  }\n  ListCache2.prototype.clear = listCacheClear2;\n  ListCache2.prototype[\"delete\"] = listCacheDelete2;\n  ListCache2.prototype.get = listCacheGet2;\n  ListCache2.prototype.has = listCacheHas2;\n  ListCache2.prototype.set = listCacheSet2;\n  function MapCache2(entries) {\n    var index2 = -1, length = entries ? entries.length : 0;\n    this.clear();\n    while (++index2 < length) {\n      var entry = entries[index2];\n      this.set(entry[0], entry[1]);\n    }\n  }\n  function mapCacheClear2() {\n    this.__data__ = {\n      \"hash\": new Hash2(),\n      \"map\": new (Map2 || ListCache2)(),\n      \"string\": new Hash2()\n    };\n  }\n  function mapCacheDelete2(key) {\n    return getMapData2(this, key)[\"delete\"](key);\n  }\n  function mapCacheGet2(key) {\n    return getMapData2(this, key).get(key);\n  }\n  function mapCacheHas2(key) {\n    return getMapData2(this, key).has(key);\n  }\n  function mapCacheSet2(key, value) {\n    getMapData2(this, key).set(key, value);\n    return this;\n  }\n  MapCache2.prototype.clear = mapCacheClear2;\n  MapCache2.prototype[\"delete\"] = mapCacheDelete2;\n  MapCache2.prototype.get = mapCacheGet2;\n  MapCache2.prototype.has = mapCacheHas2;\n  MapCache2.prototype.set = mapCacheSet2;\n  function Stack2(entries) {\n    this.__data__ = new ListCache2(entries);\n  }\n  function stackClear2() {\n    this.__data__ = new ListCache2();\n  }\n  function stackDelete2(key) {\n    return this.__data__[\"delete\"](key);\n  }\n  function stackGet2(key) {\n    return this.__data__.get(key);\n  }\n  function stackHas2(key) {\n    return this.__data__.has(key);\n  }\n  function stackSet2(key, value) {\n    var cache = this.__data__;\n    if (cache instanceof ListCache2) {\n      var pairs = cache.__data__;\n      if (!Map2 || pairs.length < LARGE_ARRAY_SIZE2 - 1) {\n        pairs.push([key, value]);\n        return this;\n      }\n      cache = this.__data__ = new MapCache2(pairs);\n    }\n    cache.set(key, value);\n    return this;\n  }\n  Stack2.prototype.clear = stackClear2;\n  Stack2.prototype[\"delete\"] = stackDelete2;\n  Stack2.prototype.get = stackGet2;\n  Stack2.prototype.has = stackHas2;\n  Stack2.prototype.set = stackSet2;\n  function arrayLikeKeys2(value, inherited) {\n    var result = isArray2(value) || isArguments2(value) ? baseTimes2(value.length, String) : [];\n    var length = result.length, skipIndexes = !!length;\n    for (var key in value) {\n      if (hasOwnProperty2.call(value, key) && !(skipIndexes && (key == \"length\" || isIndex2(key, length)))) {\n        result.push(key);\n      }\n    }\n    return result;\n  }\n  function assignValue2(object, key, value) {\n    var objValue = object[key];\n    if (!(hasOwnProperty2.call(object, key) && eq2(objValue, value)) || value === void 0 && !(key in object)) {\n      object[key] = value;\n    }\n  }\n  function assocIndexOf2(array, key) {\n    var length = array.length;\n    while (length--) {\n      if (eq2(array[length][0], key)) {\n        return length;\n      }\n    }\n    return -1;\n  }\n  function baseAssign2(object, source) {\n    return object && copyObject2(source, keys2(source), object);\n  }\n  function baseClone2(value, isDeep, isFull, customizer, key, object, stack) {\n    var result;\n    if (customizer) {\n      result = object ? customizer(value, key, object, stack) : customizer(value);\n    }\n    if (result !== void 0) {\n      return result;\n    }\n    if (!isObject2(value)) {\n      return value;\n    }\n    var isArr = isArray2(value);\n    if (isArr) {\n      result = initCloneArray2(value);\n      if (!isDeep) {\n        return copyArray2(value, result);\n      }\n    } else {\n      var tag = getTag2(value), isFunc = tag == funcTag2 || tag == genTag2;\n      if (isBuffer2(value)) {\n        return cloneBuffer2(value, isDeep);\n      }\n      if (tag == objectTag2 || tag == argsTag2 || isFunc && !object) {\n        if (isHostObject(value)) {\n          return object ? value : {};\n        }\n        result = initCloneObject2(isFunc ? {} : value);\n        if (!isDeep) {\n          return copySymbols2(value, baseAssign2(result, value));\n        }\n      } else {\n        if (!cloneableTags2[tag]) {\n          return object ? value : {};\n        }\n        result = initCloneByTag2(value, tag, baseClone2, isDeep);\n      }\n    }\n    stack || (stack = new Stack2());\n    var stacked = stack.get(value);\n    if (stacked) {\n      return stacked;\n    }\n    stack.set(value, result);\n    if (!isArr) {\n      var props = isFull ? getAllKeys2(value) : keys2(value);\n    }\n    arrayEach2(props || value, function(subValue, key2) {\n      if (props) {\n        key2 = subValue;\n        subValue = value[key2];\n      }\n      assignValue2(result, key2, baseClone2(subValue, isDeep, isFull, customizer, key2, value, stack));\n    });\n    return result;\n  }\n  function baseCreate2(proto) {\n    return isObject2(proto) ? objectCreate2(proto) : {};\n  }\n  function baseGetAllKeys2(object, keysFunc, symbolsFunc) {\n    var result = keysFunc(object);\n    return isArray2(object) ? result : arrayPush2(result, symbolsFunc(object));\n  }\n  function baseGetTag2(value) {\n    return objectToString2.call(value);\n  }\n  function baseIsNative2(value) {\n    if (!isObject2(value) || isMasked2(value)) {\n      return false;\n    }\n    var pattern = isFunction2(value) || isHostObject(value) ? reIsNative2 : reIsHostCtor2;\n    return pattern.test(toSource2(value));\n  }\n  function baseKeys2(object) {\n    if (!isPrototype2(object)) {\n      return nativeKeys2(object);\n    }\n    var result = [];\n    for (var key in Object(object)) {\n      if (hasOwnProperty2.call(object, key) && key != \"constructor\") {\n        result.push(key);\n      }\n    }\n    return result;\n  }\n  function cloneBuffer2(buffer, isDeep) {\n    if (isDeep) {\n      return buffer.slice();\n    }\n    var result = new buffer.constructor(buffer.length);\n    buffer.copy(result);\n    return result;\n  }\n  function cloneArrayBuffer2(arrayBuffer) {\n    var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n    new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));\n    return result;\n  }\n  function cloneDataView2(dataView, isDeep) {\n    var buffer = isDeep ? cloneArrayBuffer2(dataView.buffer) : dataView.buffer;\n    return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n  }\n  function cloneMap(map2, isDeep, cloneFunc) {\n    var array = isDeep ? cloneFunc(mapToArray2(map2), true) : mapToArray2(map2);\n    return arrayReduce(array, addMapEntry, new map2.constructor());\n  }\n  function cloneRegExp2(regexp) {\n    var result = new regexp.constructor(regexp.source, reFlags2.exec(regexp));\n    result.lastIndex = regexp.lastIndex;\n    return result;\n  }\n  function cloneSet(set2, isDeep, cloneFunc) {\n    var array = isDeep ? cloneFunc(setToArray2(set2), true) : setToArray2(set2);\n    return arrayReduce(array, addSetEntry, new set2.constructor());\n  }\n  function cloneSymbol2(symbol) {\n    return symbolValueOf2 ? Object(symbolValueOf2.call(symbol)) : {};\n  }\n  function cloneTypedArray2(typedArray, isDeep) {\n    var buffer = isDeep ? cloneArrayBuffer2(typedArray.buffer) : typedArray.buffer;\n    return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n  }\n  function copyArray2(source, array) {\n    var index2 = -1, length = source.length;\n    array || (array = Array(length));\n    while (++index2 < length) {\n      array[index2] = source[index2];\n    }\n    return array;\n  }\n  function copyObject2(source, props, object, customizer) {\n    object || (object = {});\n    var index2 = -1, length = props.length;\n    while (++index2 < length) {\n      var key = props[index2];\n      var newValue = void 0;\n      assignValue2(object, key, newValue === void 0 ? source[key] : newValue);\n    }\n    return object;\n  }\n  function copySymbols2(source, object) {\n    return copyObject2(source, getSymbols2(source), object);\n  }\n  function getAllKeys2(object) {\n    return baseGetAllKeys2(object, keys2, getSymbols2);\n  }\n  function getMapData2(map2, key) {\n    var data = map2.__data__;\n    return isKeyable2(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n  }\n  function getNative2(object, key) {\n    var value = getValue2(object, key);\n    return baseIsNative2(value) ? value : void 0;\n  }\n  var getSymbols2 = nativeGetSymbols2 ? overArg2(nativeGetSymbols2, Object) : stubArray2;\n  var getTag2 = baseGetTag2;\n  if (DataView2 && getTag2(new DataView2(new ArrayBuffer(1))) != dataViewTag2 || Map2 && getTag2(new Map2()) != mapTag2 || Promise2 && getTag2(Promise2.resolve()) != promiseTag2 || Set2 && getTag2(new Set2()) != setTag2 || WeakMap2 && getTag2(new WeakMap2()) != weakMapTag2) {\n    getTag2 = function(value) {\n      var result = objectToString2.call(value), Ctor = result == objectTag2 ? value.constructor : void 0, ctorString = Ctor ? toSource2(Ctor) : void 0;\n      if (ctorString) {\n        switch (ctorString) {\n          case dataViewCtorString2:\n            return dataViewTag2;\n          case mapCtorString2:\n            return mapTag2;\n          case promiseCtorString2:\n            return promiseTag2;\n          case setCtorString2:\n            return setTag2;\n          case weakMapCtorString2:\n            return weakMapTag2;\n        }\n      }\n      return result;\n    };\n  }\n  function initCloneArray2(array) {\n    var length = array.length, result = array.constructor(length);\n    if (length && typeof array[0] == \"string\" && hasOwnProperty2.call(array, \"index\")) {\n      result.index = array.index;\n      result.input = array.input;\n    }\n    return result;\n  }\n  function initCloneObject2(object) {\n    return typeof object.constructor == \"function\" && !isPrototype2(object) ? baseCreate2(getPrototype2(object)) : {};\n  }\n  function initCloneByTag2(object, tag, cloneFunc, isDeep) {\n    var Ctor = object.constructor;\n    switch (tag) {\n      case arrayBufferTag2:\n        return cloneArrayBuffer2(object);\n      case boolTag2:\n      case dateTag2:\n        return new Ctor(+object);\n      case dataViewTag2:\n        return cloneDataView2(object, isDeep);\n      case float32Tag2:\n      case float64Tag2:\n      case int8Tag2:\n      case int16Tag2:\n      case int32Tag2:\n      case uint8Tag2:\n      case uint8ClampedTag2:\n      case uint16Tag2:\n      case uint32Tag2:\n        return cloneTypedArray2(object, isDeep);\n      case mapTag2:\n        return cloneMap(object, isDeep, cloneFunc);\n      case numberTag2:\n      case stringTag2:\n        return new Ctor(object);\n      case regexpTag2:\n        return cloneRegExp2(object);\n      case setTag2:\n        return cloneSet(object, isDeep, cloneFunc);\n      case symbolTag2:\n        return cloneSymbol2(object);\n    }\n  }\n  function isIndex2(value, length) {\n    length = length == null ? MAX_SAFE_INTEGER2 : length;\n    return !!length && (typeof value == \"number\" || reIsUint2.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n  }\n  function isKeyable2(value) {\n    var type = typeof value;\n    return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n  }\n  function isMasked2(func) {\n    return !!maskSrcKey2 && maskSrcKey2 in func;\n  }\n  function isPrototype2(value) {\n    var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto2;\n    return value === proto;\n  }\n  function toSource2(func) {\n    if (func != null) {\n      try {\n        return funcToString2.call(func);\n      } catch (e2) {\n      }\n      try {\n        return func + \"\";\n      } catch (e2) {\n      }\n    }\n    return \"\";\n  }\n  function cloneDeep2(value) {\n    return baseClone2(value, true, true);\n  }\n  function eq2(value, other) {\n    return value === other || value !== value && other !== other;\n  }\n  function isArguments2(value) {\n    return isArrayLikeObject2(value) && hasOwnProperty2.call(value, \"callee\") && (!propertyIsEnumerable2.call(value, \"callee\") || objectToString2.call(value) == argsTag2);\n  }\n  var isArray2 = Array.isArray;\n  function isArrayLike2(value) {\n    return value != null && isLength2(value.length) && !isFunction2(value);\n  }\n  function isArrayLikeObject2(value) {\n    return isObjectLike2(value) && isArrayLike2(value);\n  }\n  var isBuffer2 = nativeIsBuffer2 || stubFalse2;\n  function isFunction2(value) {\n    var tag = isObject2(value) ? objectToString2.call(value) : \"\";\n    return tag == funcTag2 || tag == genTag2;\n  }\n  function isLength2(value) {\n    return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;\n  }\n  function isObject2(value) {\n    var type = typeof value;\n    return !!value && (type == \"object\" || type == \"function\");\n  }\n  function isObjectLike2(value) {\n    return !!value && typeof value == \"object\";\n  }\n  function keys2(object) {\n    return isArrayLike2(object) ? arrayLikeKeys2(object) : baseKeys2(object);\n  }\n  function stubArray2() {\n    return [];\n  }\n  function stubFalse2() {\n    return false;\n  }\n  module2.exports = cloneDeep2;\n})(lodash_clonedeep, lodash_clonedeep.exports);\nvar lodash_clonedeepExports = lodash_clonedeep.exports;\nvar lodash_isequal = { exports: {} };\nlodash_isequal.exports;\n(function(module2, exports2) {\n  var LARGE_ARRAY_SIZE2 = 200;\n  var HASH_UNDEFINED2 = \"__lodash_hash_undefined__\";\n  var COMPARE_PARTIAL_FLAG2 = 1, COMPARE_UNORDERED_FLAG2 = 2;\n  var MAX_SAFE_INTEGER2 = 9007199254740991;\n  var argsTag2 = \"[object Arguments]\", arrayTag2 = \"[object Array]\", asyncTag2 = \"[object AsyncFunction]\", boolTag2 = \"[object Boolean]\", dateTag2 = \"[object Date]\", errorTag2 = \"[object Error]\", funcTag2 = \"[object Function]\", genTag2 = \"[object GeneratorFunction]\", mapTag2 = \"[object Map]\", numberTag2 = \"[object Number]\", nullTag2 = \"[object Null]\", objectTag2 = \"[object Object]\", promiseTag2 = \"[object Promise]\", proxyTag2 = \"[object Proxy]\", regexpTag2 = \"[object RegExp]\", setTag2 = \"[object Set]\", stringTag2 = \"[object String]\", symbolTag2 = \"[object Symbol]\", undefinedTag2 = \"[object Undefined]\", weakMapTag2 = \"[object WeakMap]\";\n  var arrayBufferTag2 = \"[object ArrayBuffer]\", dataViewTag2 = \"[object DataView]\", float32Tag2 = \"[object Float32Array]\", float64Tag2 = \"[object Float64Array]\", int8Tag2 = \"[object Int8Array]\", int16Tag2 = \"[object Int16Array]\", int32Tag2 = \"[object Int32Array]\", uint8Tag2 = \"[object Uint8Array]\", uint8ClampedTag2 = \"[object Uint8ClampedArray]\", uint16Tag2 = \"[object Uint16Array]\", uint32Tag2 = \"[object Uint32Array]\";\n  var reRegExpChar2 = /[\\\\^$.*+?()[\\]{}|]/g;\n  var reIsHostCtor2 = /^\\[object .+?Constructor\\]$/;\n  var reIsUint2 = /^(?:0|[1-9]\\d*)$/;\n  var typedArrayTags2 = {};\n  typedArrayTags2[float32Tag2] = typedArrayTags2[float64Tag2] = typedArrayTags2[int8Tag2] = typedArrayTags2[int16Tag2] = typedArrayTags2[int32Tag2] = typedArrayTags2[uint8Tag2] = typedArrayTags2[uint8ClampedTag2] = typedArrayTags2[uint16Tag2] = typedArrayTags2[uint32Tag2] = true;\n  typedArrayTags2[argsTag2] = typedArrayTags2[arrayTag2] = typedArrayTags2[arrayBufferTag2] = typedArrayTags2[boolTag2] = typedArrayTags2[dataViewTag2] = typedArrayTags2[dateTag2] = typedArrayTags2[errorTag2] = typedArrayTags2[funcTag2] = typedArrayTags2[mapTag2] = typedArrayTags2[numberTag2] = typedArrayTags2[objectTag2] = typedArrayTags2[regexpTag2] = typedArrayTags2[setTag2] = typedArrayTags2[stringTag2] = typedArrayTags2[weakMapTag2] = false;\n  var freeGlobal2 = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n  var freeSelf2 = typeof self == \"object\" && self && self.Object === Object && self;\n  var root2 = freeGlobal2 || freeSelf2 || Function(\"return this\")();\n  var freeExports2 = exports2 && !exports2.nodeType && exports2;\n  var freeModule2 = freeExports2 && true && module2 && !module2.nodeType && module2;\n  var moduleExports2 = freeModule2 && freeModule2.exports === freeExports2;\n  var freeProcess2 = moduleExports2 && freeGlobal2.process;\n  var nodeUtil2 = function() {\n    try {\n      return freeProcess2 && freeProcess2.binding && freeProcess2.binding(\"util\");\n    } catch (e2) {\n    }\n  }();\n  var nodeIsTypedArray2 = nodeUtil2 && nodeUtil2.isTypedArray;\n  function arrayFilter2(array, predicate) {\n    var index2 = -1, length = array == null ? 0 : array.length, resIndex = 0, result = [];\n    while (++index2 < length) {\n      var value = array[index2];\n      if (predicate(value, index2, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n  function arrayPush2(array, values) {\n    var index2 = -1, length = values.length, offset = array.length;\n    while (++index2 < length) {\n      array[offset + index2] = values[index2];\n    }\n    return array;\n  }\n  function arraySome2(array, predicate) {\n    var index2 = -1, length = array == null ? 0 : array.length;\n    while (++index2 < length) {\n      if (predicate(array[index2], index2, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n  function baseTimes2(n3, iteratee) {\n    var index2 = -1, result = Array(n3);\n    while (++index2 < n3) {\n      result[index2] = iteratee(index2);\n    }\n    return result;\n  }\n  function baseUnary2(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n  function cacheHas2(cache, key) {\n    return cache.has(key);\n  }\n  function getValue2(object, key) {\n    return object == null ? void 0 : object[key];\n  }\n  function mapToArray2(map2) {\n    var index2 = -1, result = Array(map2.size);\n    map2.forEach(function(value, key) {\n      result[++index2] = [key, value];\n    });\n    return result;\n  }\n  function overArg2(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n  function setToArray2(set2) {\n    var index2 = -1, result = Array(set2.size);\n    set2.forEach(function(value) {\n      result[++index2] = value;\n    });\n    return result;\n  }\n  var arrayProto2 = Array.prototype, funcProto2 = Function.prototype, objectProto2 = Object.prototype;\n  var coreJsData2 = root2[\"__core-js_shared__\"];\n  var funcToString2 = funcProto2.toString;\n  var hasOwnProperty2 = objectProto2.hasOwnProperty;\n  var maskSrcKey2 = function() {\n    var uid = /[^.]+$/.exec(coreJsData2 && coreJsData2.keys && coreJsData2.keys.IE_PROTO || \"\");\n    return uid ? \"Symbol(src)_1.\" + uid : \"\";\n  }();\n  var nativeObjectToString2 = objectProto2.toString;\n  var reIsNative2 = RegExp(\n    \"^\" + funcToString2.call(hasOwnProperty2).replace(reRegExpChar2, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n  );\n  var Buffer3 = moduleExports2 ? root2.Buffer : void 0, Symbol2 = root2.Symbol, Uint8Array2 = root2.Uint8Array, propertyIsEnumerable2 = objectProto2.propertyIsEnumerable, splice2 = arrayProto2.splice, symToStringTag2 = Symbol2 ? Symbol2.toStringTag : void 0;\n  var nativeGetSymbols2 = Object.getOwnPropertySymbols, nativeIsBuffer2 = Buffer3 ? Buffer3.isBuffer : void 0, nativeKeys2 = overArg2(Object.keys, Object);\n  var DataView2 = getNative2(root2, \"DataView\"), Map2 = getNative2(root2, \"Map\"), Promise2 = getNative2(root2, \"Promise\"), Set2 = getNative2(root2, \"Set\"), WeakMap2 = getNative2(root2, \"WeakMap\"), nativeCreate2 = getNative2(Object, \"create\");\n  var dataViewCtorString2 = toSource2(DataView2), mapCtorString2 = toSource2(Map2), promiseCtorString2 = toSource2(Promise2), setCtorString2 = toSource2(Set2), weakMapCtorString2 = toSource2(WeakMap2);\n  var symbolProto2 = Symbol2 ? Symbol2.prototype : void 0, symbolValueOf2 = symbolProto2 ? symbolProto2.valueOf : void 0;\n  function Hash2(entries) {\n    var index2 = -1, length = entries == null ? 0 : entries.length;\n    this.clear();\n    while (++index2 < length) {\n      var entry = entries[index2];\n      this.set(entry[0], entry[1]);\n    }\n  }\n  function hashClear2() {\n    this.__data__ = nativeCreate2 ? nativeCreate2(null) : {};\n    this.size = 0;\n  }\n  function hashDelete2(key) {\n    var result = this.has(key) && delete this.__data__[key];\n    this.size -= result ? 1 : 0;\n    return result;\n  }\n  function hashGet2(key) {\n    var data = this.__data__;\n    if (nativeCreate2) {\n      var result = data[key];\n      return result === HASH_UNDEFINED2 ? void 0 : result;\n    }\n    return hasOwnProperty2.call(data, key) ? data[key] : void 0;\n  }\n  function hashHas2(key) {\n    var data = this.__data__;\n    return nativeCreate2 ? data[key] !== void 0 : hasOwnProperty2.call(data, key);\n  }\n  function hashSet2(key, value) {\n    var data = this.__data__;\n    this.size += this.has(key) ? 0 : 1;\n    data[key] = nativeCreate2 && value === void 0 ? HASH_UNDEFINED2 : value;\n    return this;\n  }\n  Hash2.prototype.clear = hashClear2;\n  Hash2.prototype[\"delete\"] = hashDelete2;\n  Hash2.prototype.get = hashGet2;\n  Hash2.prototype.has = hashHas2;\n  Hash2.prototype.set = hashSet2;\n  function ListCache2(entries) {\n    var index2 = -1, length = entries == null ? 0 : entries.length;\n    this.clear();\n    while (++index2 < length) {\n      var entry = entries[index2];\n      this.set(entry[0], entry[1]);\n    }\n  }\n  function listCacheClear2() {\n    this.__data__ = [];\n    this.size = 0;\n  }\n  function listCacheDelete2(key) {\n    var data = this.__data__, index2 = assocIndexOf2(data, key);\n    if (index2 < 0) {\n      return false;\n    }\n    var lastIndex = data.length - 1;\n    if (index2 == lastIndex) {\n      data.pop();\n    } else {\n      splice2.call(data, index2, 1);\n    }\n    --this.size;\n    return true;\n  }\n  function listCacheGet2(key) {\n    var data = this.__data__, index2 = assocIndexOf2(data, key);\n    return index2 < 0 ? void 0 : data[index2][1];\n  }\n  function listCacheHas2(key) {\n    return assocIndexOf2(this.__data__, key) > -1;\n  }\n  function listCacheSet2(key, value) {\n    var data = this.__data__, index2 = assocIndexOf2(data, key);\n    if (index2 < 0) {\n      ++this.size;\n      data.push([key, value]);\n    } else {\n      data[index2][1] = value;\n    }\n    return this;\n  }\n  ListCache2.prototype.clear = listCacheClear2;\n  ListCache2.prototype[\"delete\"] = listCacheDelete2;\n  ListCache2.prototype.get = listCacheGet2;\n  ListCache2.prototype.has = listCacheHas2;\n  ListCache2.prototype.set = listCacheSet2;\n  function MapCache2(entries) {\n    var index2 = -1, length = entries == null ? 0 : entries.length;\n    this.clear();\n    while (++index2 < length) {\n      var entry = entries[index2];\n      this.set(entry[0], entry[1]);\n    }\n  }\n  function mapCacheClear2() {\n    this.size = 0;\n    this.__data__ = {\n      \"hash\": new Hash2(),\n      \"map\": new (Map2 || ListCache2)(),\n      \"string\": new Hash2()\n    };\n  }\n  function mapCacheDelete2(key) {\n    var result = getMapData2(this, key)[\"delete\"](key);\n    this.size -= result ? 1 : 0;\n    return result;\n  }\n  function mapCacheGet2(key) {\n    return getMapData2(this, key).get(key);\n  }\n  function mapCacheHas2(key) {\n    return getMapData2(this, key).has(key);\n  }\n  function mapCacheSet2(key, value) {\n    var data = getMapData2(this, key), size = data.size;\n    data.set(key, value);\n    this.size += data.size == size ? 0 : 1;\n    return this;\n  }\n  MapCache2.prototype.clear = mapCacheClear2;\n  MapCache2.prototype[\"delete\"] = mapCacheDelete2;\n  MapCache2.prototype.get = mapCacheGet2;\n  MapCache2.prototype.has = mapCacheHas2;\n  MapCache2.prototype.set = mapCacheSet2;\n  function SetCache2(values) {\n    var index2 = -1, length = values == null ? 0 : values.length;\n    this.__data__ = new MapCache2();\n    while (++index2 < length) {\n      this.add(values[index2]);\n    }\n  }\n  function setCacheAdd2(value) {\n    this.__data__.set(value, HASH_UNDEFINED2);\n    return this;\n  }\n  function setCacheHas2(value) {\n    return this.__data__.has(value);\n  }\n  SetCache2.prototype.add = SetCache2.prototype.push = setCacheAdd2;\n  SetCache2.prototype.has = setCacheHas2;\n  function Stack2(entries) {\n    var data = this.__data__ = new ListCache2(entries);\n    this.size = data.size;\n  }\n  function stackClear2() {\n    this.__data__ = new ListCache2();\n    this.size = 0;\n  }\n  function stackDelete2(key) {\n    var data = this.__data__, result = data[\"delete\"](key);\n    this.size = data.size;\n    return result;\n  }\n  function stackGet2(key) {\n    return this.__data__.get(key);\n  }\n  function stackHas2(key) {\n    return this.__data__.has(key);\n  }\n  function stackSet2(key, value) {\n    var data = this.__data__;\n    if (data instanceof ListCache2) {\n      var pairs = data.__data__;\n      if (!Map2 || pairs.length < LARGE_ARRAY_SIZE2 - 1) {\n        pairs.push([key, value]);\n        this.size = ++data.size;\n        return this;\n      }\n      data = this.__data__ = new MapCache2(pairs);\n    }\n    data.set(key, value);\n    this.size = data.size;\n    return this;\n  }\n  Stack2.prototype.clear = stackClear2;\n  Stack2.prototype[\"delete\"] = stackDelete2;\n  Stack2.prototype.get = stackGet2;\n  Stack2.prototype.has = stackHas2;\n  Stack2.prototype.set = stackSet2;\n  function arrayLikeKeys2(value, inherited) {\n    var isArr = isArray2(value), isArg = !isArr && isArguments2(value), isBuff = !isArr && !isArg && isBuffer2(value), isType = !isArr && !isArg && !isBuff && isTypedArray2(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes2(value.length, String) : [], length = result.length;\n    for (var key in value) {\n      if (hasOwnProperty2.call(value, key) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.\n      (key == \"length\" || // Node.js 0.10 has enumerable non-index properties on buffers.\n      isBuff && (key == \"offset\" || key == \"parent\") || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n      isType && (key == \"buffer\" || key == \"byteLength\" || key == \"byteOffset\") || // Skip index properties.\n      isIndex2(key, length)))) {\n        result.push(key);\n      }\n    }\n    return result;\n  }\n  function assocIndexOf2(array, key) {\n    var length = array.length;\n    while (length--) {\n      if (eq2(array[length][0], key)) {\n        return length;\n      }\n    }\n    return -1;\n  }\n  function baseGetAllKeys2(object, keysFunc, symbolsFunc) {\n    var result = keysFunc(object);\n    return isArray2(object) ? result : arrayPush2(result, symbolsFunc(object));\n  }\n  function baseGetTag2(value) {\n    if (value == null) {\n      return value === void 0 ? undefinedTag2 : nullTag2;\n    }\n    return symToStringTag2 && symToStringTag2 in Object(value) ? getRawTag2(value) : objectToString2(value);\n  }\n  function baseIsArguments2(value) {\n    return isObjectLike2(value) && baseGetTag2(value) == argsTag2;\n  }\n  function baseIsEqual2(value, other, bitmask, customizer, stack) {\n    if (value === other) {\n      return true;\n    }\n    if (value == null || other == null || !isObjectLike2(value) && !isObjectLike2(other)) {\n      return value !== value && other !== other;\n    }\n    return baseIsEqualDeep2(value, other, bitmask, customizer, baseIsEqual2, stack);\n  }\n  function baseIsEqualDeep2(object, other, bitmask, customizer, equalFunc, stack) {\n    var objIsArr = isArray2(object), othIsArr = isArray2(other), objTag = objIsArr ? arrayTag2 : getTag2(object), othTag = othIsArr ? arrayTag2 : getTag2(other);\n    objTag = objTag == argsTag2 ? objectTag2 : objTag;\n    othTag = othTag == argsTag2 ? objectTag2 : othTag;\n    var objIsObj = objTag == objectTag2, othIsObj = othTag == objectTag2, isSameTag = objTag == othTag;\n    if (isSameTag && isBuffer2(object)) {\n      if (!isBuffer2(other)) {\n        return false;\n      }\n      objIsArr = true;\n      objIsObj = false;\n    }\n    if (isSameTag && !objIsObj) {\n      stack || (stack = new Stack2());\n      return objIsArr || isTypedArray2(object) ? equalArrays2(object, other, bitmask, customizer, equalFunc, stack) : equalByTag2(object, other, objTag, bitmask, customizer, equalFunc, stack);\n    }\n    if (!(bitmask & COMPARE_PARTIAL_FLAG2)) {\n      var objIsWrapped = objIsObj && hasOwnProperty2.call(object, \"__wrapped__\"), othIsWrapped = othIsObj && hasOwnProperty2.call(other, \"__wrapped__\");\n      if (objIsWrapped || othIsWrapped) {\n        var objUnwrapped = objIsWrapped ? object.value() : object, othUnwrapped = othIsWrapped ? other.value() : other;\n        stack || (stack = new Stack2());\n        return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n      }\n    }\n    if (!isSameTag) {\n      return false;\n    }\n    stack || (stack = new Stack2());\n    return equalObjects2(object, other, bitmask, customizer, equalFunc, stack);\n  }\n  function baseIsNative2(value) {\n    if (!isObject2(value) || isMasked2(value)) {\n      return false;\n    }\n    var pattern = isFunction2(value) ? reIsNative2 : reIsHostCtor2;\n    return pattern.test(toSource2(value));\n  }\n  function baseIsTypedArray2(value) {\n    return isObjectLike2(value) && isLength2(value.length) && !!typedArrayTags2[baseGetTag2(value)];\n  }\n  function baseKeys2(object) {\n    if (!isPrototype2(object)) {\n      return nativeKeys2(object);\n    }\n    var result = [];\n    for (var key in Object(object)) {\n      if (hasOwnProperty2.call(object, key) && key != \"constructor\") {\n        result.push(key);\n      }\n    }\n    return result;\n  }\n  function equalArrays2(array, other, bitmask, customizer, equalFunc, stack) {\n    var isPartial = bitmask & COMPARE_PARTIAL_FLAG2, arrLength = array.length, othLength = other.length;\n    if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n      return false;\n    }\n    var stacked = stack.get(array);\n    if (stacked && stack.get(other)) {\n      return stacked == other;\n    }\n    var index2 = -1, result = true, seen = bitmask & COMPARE_UNORDERED_FLAG2 ? new SetCache2() : void 0;\n    stack.set(array, other);\n    stack.set(other, array);\n    while (++index2 < arrLength) {\n      var arrValue = array[index2], othValue = other[index2];\n      if (customizer) {\n        var compared = isPartial ? customizer(othValue, arrValue, index2, other, array, stack) : customizer(arrValue, othValue, index2, array, other, stack);\n      }\n      if (compared !== void 0) {\n        if (compared) {\n          continue;\n        }\n        result = false;\n        break;\n      }\n      if (seen) {\n        if (!arraySome2(other, function(othValue2, othIndex) {\n          if (!cacheHas2(seen, othIndex) && (arrValue === othValue2 || equalFunc(arrValue, othValue2, bitmask, customizer, stack))) {\n            return seen.push(othIndex);\n          }\n        })) {\n          result = false;\n          break;\n        }\n      } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n        result = false;\n        break;\n      }\n    }\n    stack[\"delete\"](array);\n    stack[\"delete\"](other);\n    return result;\n  }\n  function equalByTag2(object, other, tag, bitmask, customizer, equalFunc, stack) {\n    switch (tag) {\n      case dataViewTag2:\n        if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n          return false;\n        }\n        object = object.buffer;\n        other = other.buffer;\n      case arrayBufferTag2:\n        if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array2(object), new Uint8Array2(other))) {\n          return false;\n        }\n        return true;\n      case boolTag2:\n      case dateTag2:\n      case numberTag2:\n        return eq2(+object, +other);\n      case errorTag2:\n        return object.name == other.name && object.message == other.message;\n      case regexpTag2:\n      case stringTag2:\n        return object == other + \"\";\n      case mapTag2:\n        var convert = mapToArray2;\n      case setTag2:\n        var isPartial = bitmask & COMPARE_PARTIAL_FLAG2;\n        convert || (convert = setToArray2);\n        if (object.size != other.size && !isPartial) {\n          return false;\n        }\n        var stacked = stack.get(object);\n        if (stacked) {\n          return stacked == other;\n        }\n        bitmask |= COMPARE_UNORDERED_FLAG2;\n        stack.set(object, other);\n        var result = equalArrays2(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n        stack[\"delete\"](object);\n        return result;\n      case symbolTag2:\n        if (symbolValueOf2) {\n          return symbolValueOf2.call(object) == symbolValueOf2.call(other);\n        }\n    }\n    return false;\n  }\n  function equalObjects2(object, other, bitmask, customizer, equalFunc, stack) {\n    var isPartial = bitmask & COMPARE_PARTIAL_FLAG2, objProps = getAllKeys2(object), objLength = objProps.length, othProps = getAllKeys2(other), othLength = othProps.length;\n    if (objLength != othLength && !isPartial) {\n      return false;\n    }\n    var index2 = objLength;\n    while (index2--) {\n      var key = objProps[index2];\n      if (!(isPartial ? key in other : hasOwnProperty2.call(other, key))) {\n        return false;\n      }\n    }\n    var stacked = stack.get(object);\n    if (stacked && stack.get(other)) {\n      return stacked == other;\n    }\n    var result = true;\n    stack.set(object, other);\n    stack.set(other, object);\n    var skipCtor = isPartial;\n    while (++index2 < objLength) {\n      key = objProps[index2];\n      var objValue = object[key], othValue = other[key];\n      if (customizer) {\n        var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n      }\n      if (!(compared === void 0 ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n        result = false;\n        break;\n      }\n      skipCtor || (skipCtor = key == \"constructor\");\n    }\n    if (result && !skipCtor) {\n      var objCtor = object.constructor, othCtor = other.constructor;\n      if (objCtor != othCtor && (\"constructor\" in object && \"constructor\" in other) && !(typeof objCtor == \"function\" && objCtor instanceof objCtor && typeof othCtor == \"function\" && othCtor instanceof othCtor)) {\n        result = false;\n      }\n    }\n    stack[\"delete\"](object);\n    stack[\"delete\"](other);\n    return result;\n  }\n  function getAllKeys2(object) {\n    return baseGetAllKeys2(object, keys2, getSymbols2);\n  }\n  function getMapData2(map2, key) {\n    var data = map2.__data__;\n    return isKeyable2(key) ? data[typeof key == \"string\" ? \"string\" : \"hash\"] : data.map;\n  }\n  function getNative2(object, key) {\n    var value = getValue2(object, key);\n    return baseIsNative2(value) ? value : void 0;\n  }\n  function getRawTag2(value) {\n    var isOwn = hasOwnProperty2.call(value, symToStringTag2), tag = value[symToStringTag2];\n    try {\n      value[symToStringTag2] = void 0;\n      var unmasked = true;\n    } catch (e2) {\n    }\n    var result = nativeObjectToString2.call(value);\n    if (unmasked) {\n      if (isOwn) {\n        value[symToStringTag2] = tag;\n      } else {\n        delete value[symToStringTag2];\n      }\n    }\n    return result;\n  }\n  var getSymbols2 = !nativeGetSymbols2 ? stubArray2 : function(object) {\n    if (object == null) {\n      return [];\n    }\n    object = Object(object);\n    return arrayFilter2(nativeGetSymbols2(object), function(symbol) {\n      return propertyIsEnumerable2.call(object, symbol);\n    });\n  };\n  var getTag2 = baseGetTag2;\n  if (DataView2 && getTag2(new DataView2(new ArrayBuffer(1))) != dataViewTag2 || Map2 && getTag2(new Map2()) != mapTag2 || Promise2 && getTag2(Promise2.resolve()) != promiseTag2 || Set2 && getTag2(new Set2()) != setTag2 || WeakMap2 && getTag2(new WeakMap2()) != weakMapTag2) {\n    getTag2 = function(value) {\n      var result = baseGetTag2(value), Ctor = result == objectTag2 ? value.constructor : void 0, ctorString = Ctor ? toSource2(Ctor) : \"\";\n      if (ctorString) {\n        switch (ctorString) {\n          case dataViewCtorString2:\n            return dataViewTag2;\n          case mapCtorString2:\n            return mapTag2;\n          case promiseCtorString2:\n            return promiseTag2;\n          case setCtorString2:\n            return setTag2;\n          case weakMapCtorString2:\n            return weakMapTag2;\n        }\n      }\n      return result;\n    };\n  }\n  function isIndex2(value, length) {\n    length = length == null ? MAX_SAFE_INTEGER2 : length;\n    return !!length && (typeof value == \"number\" || reIsUint2.test(value)) && (value > -1 && value % 1 == 0 && value < length);\n  }\n  function isKeyable2(value) {\n    var type = typeof value;\n    return type == \"string\" || type == \"number\" || type == \"symbol\" || type == \"boolean\" ? value !== \"__proto__\" : value === null;\n  }\n  function isMasked2(func) {\n    return !!maskSrcKey2 && maskSrcKey2 in func;\n  }\n  function isPrototype2(value) {\n    var Ctor = value && value.constructor, proto = typeof Ctor == \"function\" && Ctor.prototype || objectProto2;\n    return value === proto;\n  }\n  function objectToString2(value) {\n    return nativeObjectToString2.call(value);\n  }\n  function toSource2(func) {\n    if (func != null) {\n      try {\n        return funcToString2.call(func);\n      } catch (e2) {\n      }\n      try {\n        return func + \"\";\n      } catch (e2) {\n      }\n    }\n    return \"\";\n  }\n  function eq2(value, other) {\n    return value === other || value !== value && other !== other;\n  }\n  var isArguments2 = baseIsArguments2(/* @__PURE__ */ function() {\n    return arguments;\n  }()) ? baseIsArguments2 : function(value) {\n    return isObjectLike2(value) && hasOwnProperty2.call(value, \"callee\") && !propertyIsEnumerable2.call(value, \"callee\");\n  };\n  var isArray2 = Array.isArray;\n  function isArrayLike2(value) {\n    return value != null && isLength2(value.length) && !isFunction2(value);\n  }\n  var isBuffer2 = nativeIsBuffer2 || stubFalse2;\n  function isEqual2(value, other) {\n    return baseIsEqual2(value, other);\n  }\n  function isFunction2(value) {\n    if (!isObject2(value)) {\n      return false;\n    }\n    var tag = baseGetTag2(value);\n    return tag == funcTag2 || tag == genTag2 || tag == asyncTag2 || tag == proxyTag2;\n  }\n  function isLength2(value) {\n    return typeof value == \"number\" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER2;\n  }\n  function isObject2(value) {\n    var type = typeof value;\n    return value != null && (type == \"object\" || type == \"function\");\n  }\n  function isObjectLike2(value) {\n    return value != null && typeof value == \"object\";\n  }\n  var isTypedArray2 = nodeIsTypedArray2 ? baseUnary2(nodeIsTypedArray2) : baseIsTypedArray2;\n  function keys2(object) {\n    return isArrayLike2(object) ? arrayLikeKeys2(object) : baseKeys2(object);\n  }\n  function stubArray2() {\n    return [];\n  }\n  function stubFalse2() {\n    return false;\n  }\n  module2.exports = isEqual2;\n})(lodash_isequal, lodash_isequal.exports);\nvar lodash_isequalExports = lodash_isequal.exports;\nvar AttributeMap$1 = {};\nObject.defineProperty(AttributeMap$1, \"__esModule\", { value: true });\nconst cloneDeep = lodash_clonedeepExports;\nconst isEqual = lodash_isequalExports;\nvar AttributeMap;\n(function(AttributeMap2) {\n  function compose(a2 = {}, b2 = {}, keepNull = false) {\n    if (typeof a2 !== \"object\") {\n      a2 = {};\n    }\n    if (typeof b2 !== \"object\") {\n      b2 = {};\n    }\n    let attributes = cloneDeep(b2);\n    if (!keepNull) {\n      attributes = Object.keys(attributes).reduce((copy, key) => {\n        if (attributes[key] != null) {\n          copy[key] = attributes[key];\n        }\n        return copy;\n      }, {});\n    }\n    for (const key in a2) {\n      if (a2[key] !== void 0 && b2[key] === void 0) {\n        attributes[key] = a2[key];\n      }\n    }\n    return Object.keys(attributes).length > 0 ? attributes : void 0;\n  }\n  AttributeMap2.compose = compose;\n  function diff2(a2 = {}, b2 = {}) {\n    if (typeof a2 !== \"object\") {\n      a2 = {};\n    }\n    if (typeof b2 !== \"object\") {\n      b2 = {};\n    }\n    const attributes = Object.keys(a2).concat(Object.keys(b2)).reduce((attrs, key) => {\n      if (!isEqual(a2[key], b2[key])) {\n        attrs[key] = b2[key] === void 0 ? null : b2[key];\n      }\n      return attrs;\n    }, {});\n    return Object.keys(attributes).length > 0 ? attributes : void 0;\n  }\n  AttributeMap2.diff = diff2;\n  function invert(attr = {}, base2 = {}) {\n    attr = attr || {};\n    const baseInverted = Object.keys(base2).reduce((memo, key) => {\n      if (base2[key] !== attr[key] && attr[key] !== void 0) {\n        memo[key] = base2[key];\n      }\n      return memo;\n    }, {});\n    return Object.keys(attr).reduce((memo, key) => {\n      if (attr[key] !== base2[key] && base2[key] === void 0) {\n        memo[key] = null;\n      }\n      return memo;\n    }, baseInverted);\n  }\n  AttributeMap2.invert = invert;\n  function transform(a2, b2, priority = false) {\n    if (typeof a2 !== \"object\") {\n      return b2;\n    }\n    if (typeof b2 !== \"object\") {\n      return void 0;\n    }\n    if (!priority) {\n      return b2;\n    }\n    const attributes = Object.keys(b2).reduce((attrs, key) => {\n      if (a2[key] === void 0) {\n        attrs[key] = b2[key];\n      }\n      return attrs;\n    }, {});\n    return Object.keys(attributes).length > 0 ? attributes : void 0;\n  }\n  AttributeMap2.transform = transform;\n})(AttributeMap || (AttributeMap = {}));\nAttributeMap$1.default = AttributeMap;\nvar Op$1 = {};\nObject.defineProperty(Op$1, \"__esModule\", { value: true });\nvar Op;\n(function(Op2) {\n  function length(op) {\n    if (typeof op.delete === \"number\") {\n      return op.delete;\n    } else if (typeof op.retain === \"number\") {\n      return op.retain;\n    } else if (typeof op.retain === \"object\" && op.retain !== null) {\n      return 1;\n    } else {\n      return typeof op.insert === \"string\" ? op.insert.length : 1;\n    }\n  }\n  Op2.length = length;\n})(Op || (Op = {}));\nOp$1.default = Op;\nvar OpIterator = {};\nObject.defineProperty(OpIterator, \"__esModule\", { value: true });\nconst Op_1 = Op$1;\nclass Iterator {\n  constructor(ops) {\n    this.ops = ops;\n    this.index = 0;\n    this.offset = 0;\n  }\n  hasNext() {\n    return this.peekLength() < Infinity;\n  }\n  next(length) {\n    if (!length) {\n      length = Infinity;\n    }\n    const nextOp = this.ops[this.index];\n    if (nextOp) {\n      const offset = this.offset;\n      const opLength = Op_1.default.length(nextOp);\n      if (length >= opLength - offset) {\n        length = opLength - offset;\n        this.index += 1;\n        this.offset = 0;\n      } else {\n        this.offset += length;\n      }\n      if (typeof nextOp.delete === \"number\") {\n        return { delete: length };\n      } else {\n        const retOp = {};\n        if (nextOp.attributes) {\n          retOp.attributes = nextOp.attributes;\n        }\n        if (typeof nextOp.retain === \"number\") {\n          retOp.retain = length;\n        } else if (typeof nextOp.retain === \"object\" && nextOp.retain !== null) {\n          retOp.retain = nextOp.retain;\n        } else if (typeof nextOp.insert === \"string\") {\n          retOp.insert = nextOp.insert.substr(offset, length);\n        } else {\n          retOp.insert = nextOp.insert;\n        }\n        return retOp;\n      }\n    } else {\n      return { retain: Infinity };\n    }\n  }\n  peek() {\n    return this.ops[this.index];\n  }\n  peekLength() {\n    if (this.ops[this.index]) {\n      return Op_1.default.length(this.ops[this.index]) - this.offset;\n    } else {\n      return Infinity;\n    }\n  }\n  peekType() {\n    const op = this.ops[this.index];\n    if (op) {\n      if (typeof op.delete === \"number\") {\n        return \"delete\";\n      } else if (typeof op.retain === \"number\" || typeof op.retain === \"object\" && op.retain !== null) {\n        return \"retain\";\n      } else {\n        return \"insert\";\n      }\n    }\n    return \"retain\";\n  }\n  rest() {\n    if (!this.hasNext()) {\n      return [];\n    } else if (this.offset === 0) {\n      return this.ops.slice(this.index);\n    } else {\n      const offset = this.offset;\n      const index2 = this.index;\n      const next = this.next();\n      const rest = this.ops.slice(this.index);\n      this.offset = offset;\n      this.index = index2;\n      return [next].concat(rest);\n    }\n  }\n}\nOpIterator.default = Iterator;\n(function(module2, exports2) {\n  Object.defineProperty(exports2, \"__esModule\", { value: true });\n  exports2.AttributeMap = exports2.OpIterator = exports2.Op = void 0;\n  const diff2 = diff_1;\n  const cloneDeep2 = lodash_clonedeepExports;\n  const isEqual2 = lodash_isequalExports;\n  const AttributeMap_1 = AttributeMap$1;\n  exports2.AttributeMap = AttributeMap_1.default;\n  const Op_12 = Op$1;\n  exports2.Op = Op_12.default;\n  const OpIterator_1 = OpIterator;\n  exports2.OpIterator = OpIterator_1.default;\n  const NULL_CHARACTER = String.fromCharCode(0);\n  const getEmbedTypeAndData = (a2, b2) => {\n    if (typeof a2 !== \"object\" || a2 === null) {\n      throw new Error(`cannot retain a ${typeof a2}`);\n    }\n    if (typeof b2 !== \"object\" || b2 === null) {\n      throw new Error(`cannot retain a ${typeof b2}`);\n    }\n    const embedType = Object.keys(a2)[0];\n    if (!embedType || embedType !== Object.keys(b2)[0]) {\n      throw new Error(`embed types not matched: ${embedType} != ${Object.keys(b2)[0]}`);\n    }\n    return [embedType, a2[embedType], b2[embedType]];\n  };\n  class Delta2 {\n    constructor(ops) {\n      if (Array.isArray(ops)) {\n        this.ops = ops;\n      } else if (ops != null && Array.isArray(ops.ops)) {\n        this.ops = ops.ops;\n      } else {\n        this.ops = [];\n      }\n    }\n    static registerEmbed(embedType, handler) {\n      this.handlers[embedType] = handler;\n    }\n    static unregisterEmbed(embedType) {\n      delete this.handlers[embedType];\n    }\n    static getHandler(embedType) {\n      const handler = this.handlers[embedType];\n      if (!handler) {\n        throw new Error(`no handlers for embed type \"${embedType}\"`);\n      }\n      return handler;\n    }\n    insert(arg, attributes) {\n      const newOp = {};\n      if (typeof arg === \"string\" && arg.length === 0) {\n        return this;\n      }\n      newOp.insert = arg;\n      if (attributes != null && typeof attributes === \"object\" && Object.keys(attributes).length > 0) {\n        newOp.attributes = attributes;\n      }\n      return this.push(newOp);\n    }\n    delete(length) {\n      if (length <= 0) {\n        return this;\n      }\n      return this.push({ delete: length });\n    }\n    retain(length, attributes) {\n      if (typeof length === \"number\" && length <= 0) {\n        return this;\n      }\n      const newOp = { retain: length };\n      if (attributes != null && typeof attributes === \"object\" && Object.keys(attributes).length > 0) {\n        newOp.attributes = attributes;\n      }\n      return this.push(newOp);\n    }\n    push(newOp) {\n      let index2 = this.ops.length;\n      let lastOp = this.ops[index2 - 1];\n      newOp = cloneDeep2(newOp);\n      if (typeof lastOp === \"object\") {\n        if (typeof newOp.delete === \"number\" && typeof lastOp.delete === \"number\") {\n          this.ops[index2 - 1] = { delete: lastOp.delete + newOp.delete };\n          return this;\n        }\n        if (typeof lastOp.delete === \"number\" && newOp.insert != null) {\n          index2 -= 1;\n          lastOp = this.ops[index2 - 1];\n          if (typeof lastOp !== \"object\") {\n            this.ops.unshift(newOp);\n            return this;\n          }\n        }\n        if (isEqual2(newOp.attributes, lastOp.attributes)) {\n          if (typeof newOp.insert === \"string\" && typeof lastOp.insert === \"string\") {\n            this.ops[index2 - 1] = { insert: lastOp.insert + newOp.insert };\n            if (typeof newOp.attributes === \"object\") {\n              this.ops[index2 - 1].attributes = newOp.attributes;\n            }\n            return this;\n          } else if (typeof newOp.retain === \"number\" && typeof lastOp.retain === \"number\") {\n            this.ops[index2 - 1] = { retain: lastOp.retain + newOp.retain };\n            if (typeof newOp.attributes === \"object\") {\n              this.ops[index2 - 1].attributes = newOp.attributes;\n            }\n            return this;\n          }\n        }\n      }\n      if (index2 === this.ops.length) {\n        this.ops.push(newOp);\n      } else {\n        this.ops.splice(index2, 0, newOp);\n      }\n      return this;\n    }\n    chop() {\n      const lastOp = this.ops[this.ops.length - 1];\n      if (lastOp && typeof lastOp.retain === \"number\" && !lastOp.attributes) {\n        this.ops.pop();\n      }\n      return this;\n    }\n    filter(predicate) {\n      return this.ops.filter(predicate);\n    }\n    forEach(predicate) {\n      this.ops.forEach(predicate);\n    }\n    map(predicate) {\n      return this.ops.map(predicate);\n    }\n    partition(predicate) {\n      const passed = [];\n      const failed = [];\n      this.forEach((op) => {\n        const target = predicate(op) ? passed : failed;\n        target.push(op);\n      });\n      return [passed, failed];\n    }\n    reduce(predicate, initialValue) {\n      return this.ops.reduce(predicate, initialValue);\n    }\n    changeLength() {\n      return this.reduce((length, elem) => {\n        if (elem.insert) {\n          return length + Op_12.default.length(elem);\n        } else if (elem.delete) {\n          return length - elem.delete;\n        }\n        return length;\n      }, 0);\n    }\n    length() {\n      return this.reduce((length, elem) => {\n        return length + Op_12.default.length(elem);\n      }, 0);\n    }\n    slice(start = 0, end = Infinity) {\n      const ops = [];\n      const iter = new OpIterator_1.default(this.ops);\n      let index2 = 0;\n      while (index2 < end && iter.hasNext()) {\n        let nextOp;\n        if (index2 < start) {\n          nextOp = iter.next(start - index2);\n        } else {\n          nextOp = iter.next(end - index2);\n          ops.push(nextOp);\n        }\n        index2 += Op_12.default.length(nextOp);\n      }\n      return new Delta2(ops);\n    }\n    compose(other) {\n      const thisIter = new OpIterator_1.default(this.ops);\n      const otherIter = new OpIterator_1.default(other.ops);\n      const ops = [];\n      const firstOther = otherIter.peek();\n      if (firstOther != null && typeof firstOther.retain === \"number\" && firstOther.attributes == null) {\n        let firstLeft = firstOther.retain;\n        while (thisIter.peekType() === \"insert\" && thisIter.peekLength() <= firstLeft) {\n          firstLeft -= thisIter.peekLength();\n          ops.push(thisIter.next());\n        }\n        if (firstOther.retain - firstLeft > 0) {\n          otherIter.next(firstOther.retain - firstLeft);\n        }\n      }\n      const delta = new Delta2(ops);\n      while (thisIter.hasNext() || otherIter.hasNext()) {\n        if (otherIter.peekType() === \"insert\") {\n          delta.push(otherIter.next());\n        } else if (thisIter.peekType() === \"delete\") {\n          delta.push(thisIter.next());\n        } else {\n          const length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n          const thisOp = thisIter.next(length);\n          const otherOp = otherIter.next(length);\n          if (otherOp.retain) {\n            const newOp = {};\n            if (typeof thisOp.retain === \"number\") {\n              newOp.retain = typeof otherOp.retain === \"number\" ? length : otherOp.retain;\n            } else {\n              if (typeof otherOp.retain === \"number\") {\n                if (thisOp.retain == null) {\n                  newOp.insert = thisOp.insert;\n                } else {\n                  newOp.retain = thisOp.retain;\n                }\n              } else {\n                const action = thisOp.retain == null ? \"insert\" : \"retain\";\n                const [embedType, thisData, otherData] = getEmbedTypeAndData(thisOp[action], otherOp.retain);\n                const handler = Delta2.getHandler(embedType);\n                newOp[action] = {\n                  [embedType]: handler.compose(thisData, otherData, action === \"retain\")\n                };\n              }\n            }\n            const attributes = AttributeMap_1.default.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === \"number\");\n            if (attributes) {\n              newOp.attributes = attributes;\n            }\n            delta.push(newOp);\n            if (!otherIter.hasNext() && isEqual2(delta.ops[delta.ops.length - 1], newOp)) {\n              const rest = new Delta2(thisIter.rest());\n              return delta.concat(rest).chop();\n            }\n          } else if (typeof otherOp.delete === \"number\" && (typeof thisOp.retain === \"number\" || typeof thisOp.retain === \"object\" && thisOp.retain !== null)) {\n            delta.push(otherOp);\n          }\n        }\n      }\n      return delta.chop();\n    }\n    concat(other) {\n      const delta = new Delta2(this.ops.slice());\n      if (other.ops.length > 0) {\n        delta.push(other.ops[0]);\n        delta.ops = delta.ops.concat(other.ops.slice(1));\n      }\n      return delta;\n    }\n    diff(other, cursor) {\n      if (this.ops === other.ops) {\n        return new Delta2();\n      }\n      const strings = [this, other].map((delta) => {\n        return delta.map((op) => {\n          if (op.insert != null) {\n            return typeof op.insert === \"string\" ? op.insert : NULL_CHARACTER;\n          }\n          const prep = delta === other ? \"on\" : \"with\";\n          throw new Error(\"diff() called \" + prep + \" non-document\");\n        }).join(\"\");\n      });\n      const retDelta = new Delta2();\n      const diffResult = diff2(strings[0], strings[1], cursor, true);\n      const thisIter = new OpIterator_1.default(this.ops);\n      const otherIter = new OpIterator_1.default(other.ops);\n      diffResult.forEach((component) => {\n        let length = component[1].length;\n        while (length > 0) {\n          let opLength = 0;\n          switch (component[0]) {\n            case diff2.INSERT:\n              opLength = Math.min(otherIter.peekLength(), length);\n              retDelta.push(otherIter.next(opLength));\n              break;\n            case diff2.DELETE:\n              opLength = Math.min(length, thisIter.peekLength());\n              thisIter.next(opLength);\n              retDelta.delete(opLength);\n              break;\n            case diff2.EQUAL:\n              opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n              const thisOp = thisIter.next(opLength);\n              const otherOp = otherIter.next(opLength);\n              if (isEqual2(thisOp.insert, otherOp.insert)) {\n                retDelta.retain(opLength, AttributeMap_1.default.diff(thisOp.attributes, otherOp.attributes));\n              } else {\n                retDelta.push(otherOp).delete(opLength);\n              }\n              break;\n          }\n          length -= opLength;\n        }\n      });\n      return retDelta.chop();\n    }\n    eachLine(predicate, newline2 = \"\\n\") {\n      const iter = new OpIterator_1.default(this.ops);\n      let line = new Delta2();\n      let i3 = 0;\n      while (iter.hasNext()) {\n        if (iter.peekType() !== \"insert\") {\n          return;\n        }\n        const thisOp = iter.peek();\n        const start = Op_12.default.length(thisOp) - iter.peekLength();\n        const index2 = typeof thisOp.insert === \"string\" ? thisOp.insert.indexOf(newline2, start) - start : -1;\n        if (index2 < 0) {\n          line.push(iter.next());\n        } else if (index2 > 0) {\n          line.push(iter.next(index2));\n        } else {\n          if (predicate(line, iter.next(1).attributes || {}, i3) === false) {\n            return;\n          }\n          i3 += 1;\n          line = new Delta2();\n        }\n      }\n      if (line.length() > 0) {\n        predicate(line, {}, i3);\n      }\n    }\n    invert(base2) {\n      const inverted = new Delta2();\n      this.reduce((baseIndex, op) => {\n        if (op.insert) {\n          inverted.delete(Op_12.default.length(op));\n        } else if (typeof op.retain === \"number\" && op.attributes == null) {\n          inverted.retain(op.retain);\n          return baseIndex + op.retain;\n        } else if (op.delete || typeof op.retain === \"number\") {\n          const length = op.delete || op.retain;\n          const slice = base2.slice(baseIndex, baseIndex + length);\n          slice.forEach((baseOp) => {\n            if (op.delete) {\n              inverted.push(baseOp);\n            } else if (op.retain && op.attributes) {\n              inverted.retain(Op_12.default.length(baseOp), AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\n            }\n          });\n          return baseIndex + length;\n        } else if (typeof op.retain === \"object\" && op.retain !== null) {\n          const slice = base2.slice(baseIndex, baseIndex + 1);\n          const baseOp = new OpIterator_1.default(slice.ops).next();\n          const [embedType, opData, baseOpData] = getEmbedTypeAndData(op.retain, baseOp.insert);\n          const handler = Delta2.getHandler(embedType);\n          inverted.retain({ [embedType]: handler.invert(opData, baseOpData) }, AttributeMap_1.default.invert(op.attributes, baseOp.attributes));\n          return baseIndex + 1;\n        }\n        return baseIndex;\n      }, 0);\n      return inverted.chop();\n    }\n    transform(arg, priority = false) {\n      priority = !!priority;\n      if (typeof arg === \"number\") {\n        return this.transformPosition(arg, priority);\n      }\n      const other = arg;\n      const thisIter = new OpIterator_1.default(this.ops);\n      const otherIter = new OpIterator_1.default(other.ops);\n      const delta = new Delta2();\n      while (thisIter.hasNext() || otherIter.hasNext()) {\n        if (thisIter.peekType() === \"insert\" && (priority || otherIter.peekType() !== \"insert\")) {\n          delta.retain(Op_12.default.length(thisIter.next()));\n        } else if (otherIter.peekType() === \"insert\") {\n          delta.push(otherIter.next());\n        } else {\n          const length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n          const thisOp = thisIter.next(length);\n          const otherOp = otherIter.next(length);\n          if (thisOp.delete) {\n            continue;\n          } else if (otherOp.delete) {\n            delta.push(otherOp);\n          } else {\n            const thisData = thisOp.retain;\n            const otherData = otherOp.retain;\n            let transformedData = typeof otherData === \"object\" && otherData !== null ? otherData : length;\n            if (typeof thisData === \"object\" && thisData !== null && typeof otherData === \"object\" && otherData !== null) {\n              const embedType = Object.keys(thisData)[0];\n              if (embedType === Object.keys(otherData)[0]) {\n                const handler = Delta2.getHandler(embedType);\n                if (handler) {\n                  transformedData = {\n                    [embedType]: handler.transform(thisData[embedType], otherData[embedType], priority)\n                  };\n                }\n              }\n            }\n            delta.retain(transformedData, AttributeMap_1.default.transform(thisOp.attributes, otherOp.attributes, priority));\n          }\n        }\n      }\n      return delta.chop();\n    }\n    transformPosition(index2, priority = false) {\n      priority = !!priority;\n      const thisIter = new OpIterator_1.default(this.ops);\n      let offset = 0;\n      while (thisIter.hasNext() && offset <= index2) {\n        const length = thisIter.peekLength();\n        const nextType = thisIter.peekType();\n        thisIter.next();\n        if (nextType === \"delete\") {\n          index2 -= Math.min(length, index2 - offset);\n          continue;\n        } else if (nextType === \"insert\" && (offset < index2 || !priority)) {\n          index2 += length;\n        }\n        offset += length;\n      }\n      return index2;\n    }\n  }\n  Delta2.Op = Op_12.default;\n  Delta2.OpIterator = OpIterator_1.default;\n  Delta2.AttributeMap = AttributeMap_1.default;\n  Delta2.handlers = {};\n  exports2.default = Delta2;\n  {\n    module2.exports = Delta2;\n    module2.exports.default = Delta2;\n  }\n})(Delta$1, Delta$1.exports);\nvar DeltaExports = Delta$1.exports;\nconst Delta = /* @__PURE__ */ getDefaultExportFromCjs(DeltaExports);\nclass Break extends EmbedBlot$1 {\n  static value() {\n    return void 0;\n  }\n  optimize() {\n    if (this.prev || this.next) {\n      this.remove();\n    }\n  }\n  length() {\n    return 0;\n  }\n  value() {\n    return \"\";\n  }\n}\nBreak.blotName = \"break\";\nBreak.tagName = \"BR\";\nlet Text$1 = class Text2 extends TextBlot$1 {\n};\nconst entityMap = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nfunction escapeText(text2) {\n  return text2.replace(/[&<>\"']/g, (s2) => entityMap[s2]);\n}\nconst _Inline = class _Inline extends InlineBlot$1 {\n  static compare(self2, other) {\n    const selfIndex = _Inline.order.indexOf(self2);\n    const otherIndex = _Inline.order.indexOf(other);\n    if (selfIndex >= 0 || otherIndex >= 0) {\n      return selfIndex - otherIndex;\n    }\n    if (self2 === other) {\n      return 0;\n    }\n    if (self2 < other) {\n      return -1;\n    }\n    return 1;\n  }\n  formatAt(index2, length, name, value) {\n    if (_Inline.compare(this.statics.blotName, name) < 0 && this.scroll.query(name, Scope.BLOT)) {\n      const blot = this.isolate(index2, length);\n      if (value) {\n        blot.wrap(name, value);\n      }\n    } else {\n      super.formatAt(index2, length, name, value);\n    }\n  }\n  optimize(context2) {\n    super.optimize(context2);\n    if (this.parent instanceof _Inline && _Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n      const parent = this.parent.isolate(this.offset(), this.length());\n      this.moveChildren(parent);\n      parent.wrap(this);\n    }\n  }\n};\n__publicField(_Inline, \"allowedChildren\", [_Inline, Break, EmbedBlot$1, Text$1]);\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n__publicField(_Inline, \"order\", [\n  \"cursor\",\n  \"inline\",\n  // Must be lower\n  \"link\",\n  // Chrome wants <a> to be lower\n  \"underline\",\n  \"strike\",\n  \"italic\",\n  \"bold\",\n  \"script\",\n  \"code\"\n  // Must be higher\n]);\nlet Inline = _Inline;\nconst NEWLINE_LENGTH = 1;\nclass Block extends BlockBlot$1 {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"cache\", {});\n  }\n  delta() {\n    if (this.cache.delta == null) {\n      this.cache.delta = blockDelta(this);\n    }\n    return this.cache.delta;\n  }\n  deleteAt(index2, length) {\n    super.deleteAt(index2, length);\n    this.cache = {};\n  }\n  formatAt(index2, length, name, value) {\n    if (length <= 0) return;\n    if (this.scroll.query(name, Scope.BLOCK)) {\n      if (index2 + length === this.length()) {\n        this.format(name, value);\n      }\n    } else {\n      super.formatAt(index2, Math.min(length, this.length() - index2 - 1), name, value);\n    }\n    this.cache = {};\n  }\n  insertAt(index2, value, def) {\n    if (def != null) {\n      super.insertAt(index2, value, def);\n      this.cache = {};\n      return;\n    }\n    if (value.length === 0) return;\n    const lines = value.split(\"\\n\");\n    const text2 = lines.shift();\n    if (text2.length > 0) {\n      if (index2 < this.length() - 1 || this.children.tail == null) {\n        super.insertAt(Math.min(index2, this.length() - 1), text2);\n      } else {\n        this.children.tail.insertAt(this.children.tail.length(), text2);\n      }\n      this.cache = {};\n    }\n    let block2 = this;\n    lines.reduce((lineIndex, line) => {\n      block2 = block2.split(lineIndex, true);\n      block2.insertAt(0, line);\n      return line.length;\n    }, index2 + text2.length);\n  }\n  insertBefore(blot, ref) {\n    const {\n      head\n    } = this.children;\n    super.insertBefore(blot, ref);\n    if (head instanceof Break) {\n      head.remove();\n    }\n    this.cache = {};\n  }\n  length() {\n    if (this.cache.length == null) {\n      this.cache.length = super.length() + NEWLINE_LENGTH;\n    }\n    return this.cache.length;\n  }\n  moveChildren(target, ref) {\n    super.moveChildren(target, ref);\n    this.cache = {};\n  }\n  optimize(context2) {\n    super.optimize(context2);\n    this.cache = {};\n  }\n  path(index2) {\n    return super.path(index2, true);\n  }\n  removeChild(child) {\n    super.removeChild(child);\n    this.cache = {};\n  }\n  split(index2) {\n    let force = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    if (force && (index2 === 0 || index2 >= this.length() - NEWLINE_LENGTH)) {\n      const clone = this.clone();\n      if (index2 === 0) {\n        this.parent.insertBefore(clone, this);\n        return this;\n      }\n      this.parent.insertBefore(clone, this.next);\n      return clone;\n    }\n    const next = super.split(index2, force);\n    this.cache = {};\n    return next;\n  }\n}\nBlock.blotName = \"block\";\nBlock.tagName = \"P\";\nBlock.defaultChild = Break;\nBlock.allowedChildren = [Break, Inline, EmbedBlot$1, Text$1];\nclass BlockEmbed extends EmbedBlot$1 {\n  attach() {\n    super.attach();\n    this.attributes = new AttributorStore$1(this.domNode);\n  }\n  delta() {\n    return new Delta().insert(this.value(), {\n      ...this.formats(),\n      ...this.attributes.values()\n    });\n  }\n  format(name, value) {\n    const attribute2 = this.scroll.query(name, Scope.BLOCK_ATTRIBUTE);\n    if (attribute2 != null) {\n      this.attributes.attribute(attribute2, value);\n    }\n  }\n  formatAt(index2, length, name, value) {\n    this.format(name, value);\n  }\n  insertAt(index2, value, def) {\n    if (def != null) {\n      super.insertAt(index2, value, def);\n      return;\n    }\n    const lines = value.split(\"\\n\");\n    const text2 = lines.pop();\n    const blocks = lines.map((line) => {\n      const block2 = this.scroll.create(Block.blotName);\n      block2.insertAt(0, line);\n      return block2;\n    });\n    const ref = this.split(index2);\n    blocks.forEach((block2) => {\n      this.parent.insertBefore(block2, ref);\n    });\n    if (text2) {\n      this.parent.insertBefore(this.scroll.create(\"text\", text2), ref);\n    }\n  }\n}\nBlockEmbed.scope = Scope.BLOCK_BLOT;\nfunction blockDelta(blot) {\n  let filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;\n  return blot.descendants(LeafBlot$1).reduce((delta, leaf) => {\n    if (leaf.length() === 0) {\n      return delta;\n    }\n    return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\n  }, new Delta()).insert(\"\\n\", bubbleFormats(blot));\n}\nfunction bubbleFormats(blot) {\n  let formats = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n  let filter = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : true;\n  if (blot == null) return formats;\n  if (\"formats\" in blot && typeof blot.formats === \"function\") {\n    formats = {\n      ...formats,\n      ...blot.formats()\n    };\n    if (filter) {\n      delete formats[\"code-token\"];\n    }\n  }\n  if (blot.parent == null || blot.parent.statics.blotName === \"scroll\" || blot.parent.statics.scope !== blot.statics.scope) {\n    return formats;\n  }\n  return bubbleFormats(blot.parent, formats, filter);\n}\nconst _Cursor = class _Cursor extends EmbedBlot$1 {\n  // Zero width no break space\n  static value() {\n    return void 0;\n  }\n  constructor(scroll, domNode, selection) {\n    super(scroll, domNode);\n    this.selection = selection;\n    this.textNode = document.createTextNode(_Cursor.CONTENTS);\n    this.domNode.appendChild(this.textNode);\n    this.savedLength = 0;\n  }\n  detach() {\n    if (this.parent != null) this.parent.removeChild(this);\n  }\n  format(name, value) {\n    if (this.savedLength !== 0) {\n      super.format(name, value);\n      return;\n    }\n    let target = this;\n    let index2 = 0;\n    while (target != null && target.statics.scope !== Scope.BLOCK_BLOT) {\n      index2 += target.offset(target.parent);\n      target = target.parent;\n    }\n    if (target != null) {\n      this.savedLength = _Cursor.CONTENTS.length;\n      target.optimize();\n      target.formatAt(index2, _Cursor.CONTENTS.length, name, value);\n      this.savedLength = 0;\n    }\n  }\n  index(node, offset) {\n    if (node === this.textNode) return 0;\n    return super.index(node, offset);\n  }\n  length() {\n    return this.savedLength;\n  }\n  position() {\n    return [this.textNode, this.textNode.data.length];\n  }\n  remove() {\n    super.remove();\n    this.parent = null;\n  }\n  restore() {\n    if (this.selection.composing || this.parent == null) return null;\n    const range = this.selection.getNativeRange();\n    while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n      this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n    }\n    const prevTextBlot = this.prev instanceof Text$1 ? this.prev : null;\n    const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\n    const nextTextBlot = this.next instanceof Text$1 ? this.next : null;\n    const nextText = nextTextBlot ? nextTextBlot.text : \"\";\n    const {\n      textNode\n    } = this;\n    const newText = textNode.data.split(_Cursor.CONTENTS).join(\"\");\n    textNode.data = _Cursor.CONTENTS;\n    let mergedTextBlot;\n    if (prevTextBlot) {\n      mergedTextBlot = prevTextBlot;\n      if (newText || nextTextBlot) {\n        prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\n        if (nextTextBlot) {\n          nextTextBlot.remove();\n        }\n      }\n    } else if (nextTextBlot) {\n      mergedTextBlot = nextTextBlot;\n      nextTextBlot.insertAt(0, newText);\n    } else {\n      const newTextNode = document.createTextNode(newText);\n      mergedTextBlot = this.scroll.create(newTextNode);\n      this.parent.insertBefore(mergedTextBlot, this);\n    }\n    this.remove();\n    if (range) {\n      const remapOffset = (node, offset) => {\n        if (prevTextBlot && node === prevTextBlot.domNode) {\n          return offset;\n        }\n        if (node === textNode) {\n          return prevTextLength + offset - 1;\n        }\n        if (nextTextBlot && node === nextTextBlot.domNode) {\n          return prevTextLength + newText.length + offset;\n        }\n        return null;\n      };\n      const start = remapOffset(range.start.node, range.start.offset);\n      const end = remapOffset(range.end.node, range.end.offset);\n      if (start !== null && end !== null) {\n        return {\n          startNode: mergedTextBlot.domNode,\n          startOffset: start,\n          endNode: mergedTextBlot.domNode,\n          endOffset: end\n        };\n      }\n    }\n    return null;\n  }\n  update(mutations, context2) {\n    if (mutations.some((mutation) => {\n      return mutation.type === \"characterData\" && mutation.target === this.textNode;\n    })) {\n      const range = this.restore();\n      if (range) context2.range = range;\n    }\n  }\n  // Avoid .ql-cursor being a descendant of `<a/>`.\n  // The reason is Safari pushes down `<a/>` on text insertion.\n  // That will cause DOM nodes not sync with the model.\n  //\n  // For example ({I} is the caret), given the markup:\n  //    <a><span class=\"ql-cursor\">\\uFEFF{I}</span></a>\n  // When typing a char \"x\", `<a/>` will be pushed down inside the `<span>` first:\n  //    <span class=\"ql-cursor\"><a>\\uFEFF{I}</a></span>\n  // And then \"x\" will be inserted after `<a/>`:\n  //    <span class=\"ql-cursor\"><a>\\uFEFF</a>d{I}</span>\n  optimize(context2) {\n    super.optimize(context2);\n    let {\n      parent\n    } = this;\n    while (parent) {\n      if (parent.domNode.tagName === \"A\") {\n        this.savedLength = _Cursor.CONTENTS.length;\n        parent.isolate(this.offset(parent), this.length()).unwrap();\n        this.savedLength = 0;\n        break;\n      }\n      parent = parent.parent;\n    }\n  }\n  value() {\n    return \"\";\n  }\n};\n__publicField(_Cursor, \"blotName\", \"cursor\");\n__publicField(_Cursor, \"className\", \"ql-cursor\");\n__publicField(_Cursor, \"tagName\", \"span\");\n__publicField(_Cursor, \"CONTENTS\", \"\\uFEFF\");\nlet Cursor = _Cursor;\nvar eventemitter3 = { exports: {} };\n(function(module2) {\n  var has2 = Object.prototype.hasOwnProperty, prefix = \"~\";\n  function Events() {\n  }\n  if (Object.create) {\n    Events.prototype = /* @__PURE__ */ Object.create(null);\n    if (!new Events().__proto__) prefix = false;\n  }\n  function EE(fn, context2, once) {\n    this.fn = fn;\n    this.context = context2;\n    this.once = once || false;\n  }\n  function addListener(emitter, event, fn, context2, once) {\n    if (typeof fn !== \"function\") {\n      throw new TypeError(\"The listener must be a function\");\n    }\n    var listener = new EE(fn, context2 || emitter, once), evt = prefix ? prefix + event : event;\n    if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n    else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n    else emitter._events[evt] = [emitter._events[evt], listener];\n    return emitter;\n  }\n  function clearEvent(emitter, evt) {\n    if (--emitter._eventsCount === 0) emitter._events = new Events();\n    else delete emitter._events[evt];\n  }\n  function EventEmitter2() {\n    this._events = new Events();\n    this._eventsCount = 0;\n  }\n  EventEmitter2.prototype.eventNames = function eventNames() {\n    var names = [], events2, name;\n    if (this._eventsCount === 0) return names;\n    for (name in events2 = this._events) {\n      if (has2.call(events2, name)) names.push(prefix ? name.slice(1) : name);\n    }\n    if (Object.getOwnPropertySymbols) {\n      return names.concat(Object.getOwnPropertySymbols(events2));\n    }\n    return names;\n  };\n  EventEmitter2.prototype.listeners = function listeners(event) {\n    var evt = prefix ? prefix + event : event, handlers = this._events[evt];\n    if (!handlers) return [];\n    if (handlers.fn) return [handlers.fn];\n    for (var i3 = 0, l2 = handlers.length, ee = new Array(l2); i3 < l2; i3++) {\n      ee[i3] = handlers[i3].fn;\n    }\n    return ee;\n  };\n  EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n    var evt = prefix ? prefix + event : event, listeners = this._events[evt];\n    if (!listeners) return 0;\n    if (listeners.fn) return 1;\n    return listeners.length;\n  };\n  EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt]) return false;\n    var listeners = this._events[evt], len = arguments.length, args, i3;\n    if (listeners.fn) {\n      if (listeners.once) this.removeListener(event, listeners.fn, void 0, true);\n      switch (len) {\n        case 1:\n          return listeners.fn.call(listeners.context), true;\n        case 2:\n          return listeners.fn.call(listeners.context, a1), true;\n        case 3:\n          return listeners.fn.call(listeners.context, a1, a2), true;\n        case 4:\n          return listeners.fn.call(listeners.context, a1, a2, a3), true;\n        case 5:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n        case 6:\n          return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n      }\n      for (i3 = 1, args = new Array(len - 1); i3 < len; i3++) {\n        args[i3 - 1] = arguments[i3];\n      }\n      listeners.fn.apply(listeners.context, args);\n    } else {\n      var length = listeners.length, j2;\n      for (i3 = 0; i3 < length; i3++) {\n        if (listeners[i3].once) this.removeListener(event, listeners[i3].fn, void 0, true);\n        switch (len) {\n          case 1:\n            listeners[i3].fn.call(listeners[i3].context);\n            break;\n          case 2:\n            listeners[i3].fn.call(listeners[i3].context, a1);\n            break;\n          case 3:\n            listeners[i3].fn.call(listeners[i3].context, a1, a2);\n            break;\n          case 4:\n            listeners[i3].fn.call(listeners[i3].context, a1, a2, a3);\n            break;\n          default:\n            if (!args) for (j2 = 1, args = new Array(len - 1); j2 < len; j2++) {\n              args[j2 - 1] = arguments[j2];\n            }\n            listeners[i3].fn.apply(listeners[i3].context, args);\n        }\n      }\n    }\n    return true;\n  };\n  EventEmitter2.prototype.on = function on(event, fn, context2) {\n    return addListener(this, event, fn, context2, false);\n  };\n  EventEmitter2.prototype.once = function once(event, fn, context2) {\n    return addListener(this, event, fn, context2, true);\n  };\n  EventEmitter2.prototype.removeListener = function removeListener(event, fn, context2, once) {\n    var evt = prefix ? prefix + event : event;\n    if (!this._events[evt]) return this;\n    if (!fn) {\n      clearEvent(this, evt);\n      return this;\n    }\n    var listeners = this._events[evt];\n    if (listeners.fn) {\n      if (listeners.fn === fn && (!once || listeners.once) && (!context2 || listeners.context === context2)) {\n        clearEvent(this, evt);\n      }\n    } else {\n      for (var i3 = 0, events2 = [], length = listeners.length; i3 < length; i3++) {\n        if (listeners[i3].fn !== fn || once && !listeners[i3].once || context2 && listeners[i3].context !== context2) {\n          events2.push(listeners[i3]);\n        }\n      }\n      if (events2.length) this._events[evt] = events2.length === 1 ? events2[0] : events2;\n      else clearEvent(this, evt);\n    }\n    return this;\n  };\n  EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n    var evt;\n    if (event) {\n      evt = prefix ? prefix + event : event;\n      if (this._events[evt]) clearEvent(this, evt);\n    } else {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    return this;\n  };\n  EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n  EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n  EventEmitter2.prefixed = prefix;\n  EventEmitter2.EventEmitter = EventEmitter2;\n  {\n    module2.exports = EventEmitter2;\n  }\n})(eventemitter3);\nvar eventemitter3Exports = eventemitter3.exports;\nconst EventEmitter = /* @__PURE__ */ getDefaultExportFromCjs(eventemitter3Exports);\nconst instances = /* @__PURE__ */ new WeakMap();\nconst levels = [\"error\", \"warn\", \"log\", \"info\"];\nlet level = \"warn\";\nfunction debug$6(method) {\n  if (level) {\n    if (levels.indexOf(method) <= levels.indexOf(level)) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n      console[method](...args);\n    }\n  }\n}\nfunction namespace(ns) {\n  return levels.reduce((logger, method) => {\n    logger[method] = debug$6.bind(console, method, ns);\n    return logger;\n  }, {});\n}\nnamespace.level = (newLevel) => {\n  level = newLevel;\n};\ndebug$6.level = namespace.level;\nconst debug$5 = namespace(\"quill:events\");\nconst EVENTS = [\"selectionchange\", \"mousedown\", \"mouseup\", \"click\"];\nEVENTS.forEach((eventName) => {\n  document.addEventListener(eventName, function() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    Array.from(document.querySelectorAll(\".ql-container\")).forEach((node) => {\n      const quill = instances.get(node);\n      if (quill && quill.emitter) {\n        quill.emitter.handleDOM(...args);\n      }\n    });\n  });\n});\nclass Emitter extends EventEmitter {\n  constructor() {\n    super();\n    this.domListeners = {};\n    this.on(\"error\", debug$5.error);\n  }\n  emit() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    debug$5.log.call(debug$5, ...args);\n    return super.emit(...args);\n  }\n  handleDOM(event) {\n    for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n      args[_key3 - 1] = arguments[_key3];\n    }\n    (this.domListeners[event.type] || []).forEach((_ref) => {\n      let {\n        node,\n        handler\n      } = _ref;\n      if (event.target === node || node.contains(event.target)) {\n        handler(event, ...args);\n      }\n    });\n  }\n  listenDOM(eventName, node, handler) {\n    if (!this.domListeners[eventName]) {\n      this.domListeners[eventName] = [];\n    }\n    this.domListeners[eventName].push({\n      node,\n      handler\n    });\n  }\n}\n__publicField(Emitter, \"events\", {\n  EDITOR_CHANGE: \"editor-change\",\n  SCROLL_BEFORE_UPDATE: \"scroll-before-update\",\n  SCROLL_BLOT_MOUNT: \"scroll-blot-mount\",\n  SCROLL_BLOT_UNMOUNT: \"scroll-blot-unmount\",\n  SCROLL_OPTIMIZE: \"scroll-optimize\",\n  SCROLL_UPDATE: \"scroll-update\",\n  SCROLL_EMBED_UPDATE: \"scroll-embed-update\",\n  SELECTION_CHANGE: \"selection-change\",\n  TEXT_CHANGE: \"text-change\",\n  COMPOSITION_BEFORE_START: \"composition-before-start\",\n  COMPOSITION_START: \"composition-start\",\n  COMPOSITION_BEFORE_END: \"composition-before-end\",\n  COMPOSITION_END: \"composition-end\"\n});\n__publicField(Emitter, \"sources\", {\n  API: \"api\",\n  SILENT: \"silent\",\n  USER: \"user\"\n});\nconst debug$4 = namespace(\"quill:selection\");\nclass Range {\n  constructor(index2) {\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n    this.index = index2;\n    this.length = length;\n  }\n}\nclass Selection {\n  constructor(scroll, emitter) {\n    this.emitter = emitter;\n    this.scroll = scroll;\n    this.composing = false;\n    this.mouseDown = false;\n    this.root = this.scroll.domNode;\n    this.cursor = this.scroll.create(\"cursor\", this);\n    this.savedRange = new Range(0, 0);\n    this.lastRange = this.savedRange;\n    this.lastNative = null;\n    this.handleComposition();\n    this.handleDragging();\n    this.emitter.listenDOM(\"selectionchange\", document, () => {\n      if (!this.mouseDown && !this.composing) {\n        setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n      }\n    });\n    this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n      if (!this.hasFocus()) return;\n      const native = this.getNativeRange();\n      if (native == null) return;\n      if (native.start.node === this.cursor.textNode) return;\n      this.emitter.once(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n        try {\n          if (this.root.contains(native.start.node) && this.root.contains(native.end.node)) {\n            this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n          }\n          const triggeredByTyping = mutations.some((mutation) => mutation.type === \"characterData\" || mutation.type === \"childList\" || mutation.type === \"attributes\" && mutation.target === this.root);\n          this.update(triggeredByTyping ? Emitter.sources.SILENT : source);\n        } catch (ignored) {\n        }\n      });\n    });\n    this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context2) => {\n      if (context2.range) {\n        const {\n          startNode,\n          startOffset,\n          endNode,\n          endOffset\n        } = context2.range;\n        this.setNativeRange(startNode, startOffset, endNode, endOffset);\n        this.update(Emitter.sources.SILENT);\n      }\n    });\n    this.update(Emitter.sources.SILENT);\n  }\n  handleComposition() {\n    this.emitter.on(Emitter.events.COMPOSITION_BEFORE_START, () => {\n      this.composing = true;\n    });\n    this.emitter.on(Emitter.events.COMPOSITION_END, () => {\n      this.composing = false;\n      if (this.cursor.parent) {\n        const range = this.cursor.restore();\n        if (!range) return;\n        setTimeout(() => {\n          this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n        }, 1);\n      }\n    });\n  }\n  handleDragging() {\n    this.emitter.listenDOM(\"mousedown\", document.body, () => {\n      this.mouseDown = true;\n    });\n    this.emitter.listenDOM(\"mouseup\", document.body, () => {\n      this.mouseDown = false;\n      this.update(Emitter.sources.USER);\n    });\n  }\n  focus() {\n    if (this.hasFocus()) return;\n    this.root.focus({\n      preventScroll: true\n    });\n    this.setRange(this.savedRange);\n  }\n  format(format2, value) {\n    this.scroll.update();\n    const nativeRange = this.getNativeRange();\n    if (nativeRange == null || !nativeRange.native.collapsed || this.scroll.query(format2, Scope.BLOCK)) return;\n    if (nativeRange.start.node !== this.cursor.textNode) {\n      const blot = this.scroll.find(nativeRange.start.node, false);\n      if (blot == null) return;\n      if (blot instanceof LeafBlot$1) {\n        const after = blot.split(nativeRange.start.offset);\n        blot.parent.insertBefore(this.cursor, after);\n      } else {\n        blot.insertBefore(this.cursor, nativeRange.start.node);\n      }\n      this.cursor.attach();\n    }\n    this.cursor.format(format2, value);\n    this.scroll.optimize();\n    this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n    this.update();\n  }\n  getBounds(index2) {\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n    const scrollLength = this.scroll.length();\n    index2 = Math.min(index2, scrollLength - 1);\n    length = Math.min(index2 + length, scrollLength - 1) - index2;\n    let node;\n    let [leaf, offset] = this.scroll.leaf(index2);\n    if (leaf == null) return null;\n    if (length > 0 && offset === leaf.length()) {\n      const [next] = this.scroll.leaf(index2 + 1);\n      if (next) {\n        const [line] = this.scroll.line(index2);\n        const [nextLine] = this.scroll.line(index2 + 1);\n        if (line === nextLine) {\n          leaf = next;\n          offset = 0;\n        }\n      }\n    }\n    [node, offset] = leaf.position(offset, true);\n    const range = document.createRange();\n    if (length > 0) {\n      range.setStart(node, offset);\n      [leaf, offset] = this.scroll.leaf(index2 + length);\n      if (leaf == null) return null;\n      [node, offset] = leaf.position(offset, true);\n      range.setEnd(node, offset);\n      return range.getBoundingClientRect();\n    }\n    let side = \"left\";\n    let rect;\n    if (node instanceof Text) {\n      if (!node.data.length) {\n        return null;\n      }\n      if (offset < node.data.length) {\n        range.setStart(node, offset);\n        range.setEnd(node, offset + 1);\n      } else {\n        range.setStart(node, offset - 1);\n        range.setEnd(node, offset);\n        side = \"right\";\n      }\n      rect = range.getBoundingClientRect();\n    } else {\n      if (!(leaf.domNode instanceof Element)) return null;\n      rect = leaf.domNode.getBoundingClientRect();\n      if (offset > 0) side = \"right\";\n    }\n    return {\n      bottom: rect.top + rect.height,\n      height: rect.height,\n      left: rect[side],\n      right: rect[side],\n      top: rect.top,\n      width: 0\n    };\n  }\n  getNativeRange() {\n    const selection = document.getSelection();\n    if (selection == null || selection.rangeCount <= 0) return null;\n    const nativeRange = selection.getRangeAt(0);\n    if (nativeRange == null) return null;\n    const range = this.normalizeNative(nativeRange);\n    debug$4.info(\"getNativeRange\", range);\n    return range;\n  }\n  getRange() {\n    const root2 = this.scroll.domNode;\n    if (\"isConnected\" in root2 && !root2.isConnected) {\n      return [null, null];\n    }\n    const normalized = this.getNativeRange();\n    if (normalized == null) return [null, null];\n    const range = this.normalizedToRange(normalized);\n    return [range, normalized];\n  }\n  hasFocus() {\n    return document.activeElement === this.root || document.activeElement != null && contains(this.root, document.activeElement);\n  }\n  normalizedToRange(range) {\n    const positions = [[range.start.node, range.start.offset]];\n    if (!range.native.collapsed) {\n      positions.push([range.end.node, range.end.offset]);\n    }\n    const indexes = positions.map((position) => {\n      const [node, offset] = position;\n      const blot = this.scroll.find(node, true);\n      const index2 = blot.offset(this.scroll);\n      if (offset === 0) {\n        return index2;\n      }\n      if (blot instanceof LeafBlot$1) {\n        return index2 + blot.index(node, offset);\n      }\n      return index2 + blot.length();\n    });\n    const end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n    const start = Math.min(end, ...indexes);\n    return new Range(start, end - start);\n  }\n  normalizeNative(nativeRange) {\n    if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n      return null;\n    }\n    const range = {\n      start: {\n        node: nativeRange.startContainer,\n        offset: nativeRange.startOffset\n      },\n      end: {\n        node: nativeRange.endContainer,\n        offset: nativeRange.endOffset\n      },\n      native: nativeRange\n    };\n    [range.start, range.end].forEach((position) => {\n      let {\n        node,\n        offset\n      } = position;\n      while (!(node instanceof Text) && node.childNodes.length > 0) {\n        if (node.childNodes.length > offset) {\n          node = node.childNodes[offset];\n          offset = 0;\n        } else if (node.childNodes.length === offset) {\n          node = node.lastChild;\n          if (node instanceof Text) {\n            offset = node.data.length;\n          } else if (node.childNodes.length > 0) {\n            offset = node.childNodes.length;\n          } else {\n            offset = node.childNodes.length + 1;\n          }\n        } else {\n          break;\n        }\n      }\n      position.node = node;\n      position.offset = offset;\n    });\n    return range;\n  }\n  rangeToNative(range) {\n    const scrollLength = this.scroll.length();\n    const getPosition = (index2, inclusive) => {\n      index2 = Math.min(scrollLength - 1, index2);\n      const [leaf, leafOffset] = this.scroll.leaf(index2);\n      return leaf ? leaf.position(leafOffset, inclusive) : [null, -1];\n    };\n    return [...getPosition(range.index, false), ...getPosition(range.index + range.length, true)];\n  }\n  setNativeRange(startNode, startOffset) {\n    let endNode = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : startNode;\n    let endOffset = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : startOffset;\n    let force = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;\n    debug$4.info(\"setNativeRange\", startNode, startOffset, endNode, endOffset);\n    if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || // @ts-expect-error Fix me later\n    endNode.parentNode == null)) {\n      return;\n    }\n    const selection = document.getSelection();\n    if (selection == null) return;\n    if (startNode != null) {\n      if (!this.hasFocus()) this.root.focus({\n        preventScroll: true\n      });\n      const {\n        native\n      } = this.getNativeRange() || {};\n      if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n        if (startNode instanceof Element && startNode.tagName === \"BR\") {\n          startOffset = Array.from(startNode.parentNode.childNodes).indexOf(startNode);\n          startNode = startNode.parentNode;\n        }\n        if (endNode instanceof Element && endNode.tagName === \"BR\") {\n          endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\n          endNode = endNode.parentNode;\n        }\n        const range = document.createRange();\n        range.setStart(startNode, startOffset);\n        range.setEnd(endNode, endOffset);\n        selection.removeAllRanges();\n        selection.addRange(range);\n      }\n    } else {\n      selection.removeAllRanges();\n      this.root.blur();\n    }\n  }\n  setRange(range) {\n    let force = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    let source = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Emitter.sources.API;\n    if (typeof force === \"string\") {\n      source = force;\n      force = false;\n    }\n    debug$4.info(\"setRange\", range);\n    if (range != null) {\n      const args = this.rangeToNative(range);\n      this.setNativeRange(...args, force);\n    } else {\n      this.setNativeRange(null);\n    }\n    this.update(source);\n  }\n  update() {\n    let source = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Emitter.sources.USER;\n    const oldRange = this.lastRange;\n    const [lastRange, nativeRange] = this.getRange();\n    this.lastRange = lastRange;\n    this.lastNative = nativeRange;\n    if (this.lastRange != null) {\n      this.savedRange = this.lastRange;\n    }\n    if (!isEqual$2(oldRange, this.lastRange)) {\n      if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n        const range = this.cursor.restore();\n        if (range) {\n          this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n        }\n      }\n      const args = [Emitter.events.SELECTION_CHANGE, cloneDeep$1(this.lastRange), cloneDeep$1(oldRange), source];\n      this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n      if (source !== Emitter.sources.SILENT) {\n        this.emitter.emit(...args);\n      }\n    }\n  }\n}\nfunction contains(parent, descendant) {\n  try {\n    descendant.parentNode;\n  } catch (e2) {\n    return false;\n  }\n  return parent.contains(descendant);\n}\nconst ASCII = /^[ -~]*$/;\nclass Editor {\n  constructor(scroll) {\n    this.scroll = scroll;\n    this.delta = this.getDelta();\n  }\n  applyDelta(delta) {\n    this.scroll.update();\n    let scrollLength = this.scroll.length();\n    this.scroll.batchStart();\n    const normalizedDelta = normalizeDelta(delta);\n    const deleteDelta = new Delta();\n    const normalizedOps = splitOpLines(normalizedDelta.ops.slice());\n    normalizedOps.reduce((index2, op) => {\n      const length = DeltaExports.Op.length(op);\n      let attributes = op.attributes || {};\n      let isImplicitNewlinePrepended = false;\n      let isImplicitNewlineAppended = false;\n      if (op.insert != null) {\n        deleteDelta.retain(length);\n        if (typeof op.insert === \"string\") {\n          const text2 = op.insert;\n          isImplicitNewlineAppended = !text2.endsWith(\"\\n\") && (scrollLength <= index2 || !!this.scroll.descendant(BlockEmbed, index2)[0]);\n          this.scroll.insertAt(index2, text2);\n          const [line, offset] = this.scroll.line(index2);\n          let formats = merge({}, bubbleFormats(line));\n          if (line instanceof Block) {\n            const [leaf] = line.descendant(LeafBlot$1, offset);\n            if (leaf) {\n              formats = merge(formats, bubbleFormats(leaf));\n            }\n          }\n          attributes = DeltaExports.AttributeMap.diff(formats, attributes) || {};\n        } else if (typeof op.insert === \"object\") {\n          const key = Object.keys(op.insert)[0];\n          if (key == null) return index2;\n          const isInlineEmbed = this.scroll.query(key, Scope.INLINE) != null;\n          if (isInlineEmbed) {\n            if (scrollLength <= index2 || !!this.scroll.descendant(BlockEmbed, index2)[0]) {\n              isImplicitNewlineAppended = true;\n            }\n          } else if (index2 > 0) {\n            const [leaf, offset] = this.scroll.descendant(LeafBlot$1, index2 - 1);\n            if (leaf instanceof Text$1) {\n              const text2 = leaf.value();\n              if (text2[offset] !== \"\\n\") {\n                isImplicitNewlinePrepended = true;\n              }\n            } else if (leaf instanceof EmbedBlot$1 && leaf.statics.scope === Scope.INLINE_BLOT) {\n              isImplicitNewlinePrepended = true;\n            }\n          }\n          this.scroll.insertAt(index2, key, op.insert[key]);\n          if (isInlineEmbed) {\n            const [leaf] = this.scroll.descendant(LeafBlot$1, index2);\n            if (leaf) {\n              const formats = merge({}, bubbleFormats(leaf));\n              attributes = DeltaExports.AttributeMap.diff(formats, attributes) || {};\n            }\n          }\n        }\n        scrollLength += length;\n      } else {\n        deleteDelta.push(op);\n        if (op.retain !== null && typeof op.retain === \"object\") {\n          const key = Object.keys(op.retain)[0];\n          if (key == null) return index2;\n          this.scroll.updateEmbedAt(index2, key, op.retain[key]);\n        }\n      }\n      Object.keys(attributes).forEach((name) => {\n        this.scroll.formatAt(index2, length, name, attributes[name]);\n      });\n      const prependedLength = isImplicitNewlinePrepended ? 1 : 0;\n      const addedLength = isImplicitNewlineAppended ? 1 : 0;\n      scrollLength += prependedLength + addedLength;\n      deleteDelta.retain(prependedLength);\n      deleteDelta.delete(addedLength);\n      return index2 + length + prependedLength + addedLength;\n    }, 0);\n    deleteDelta.reduce((index2, op) => {\n      if (typeof op.delete === \"number\") {\n        this.scroll.deleteAt(index2, op.delete);\n        return index2;\n      }\n      return index2 + DeltaExports.Op.length(op);\n    }, 0);\n    this.scroll.batchEnd();\n    this.scroll.optimize();\n    return this.update(normalizedDelta);\n  }\n  deleteText(index2, length) {\n    this.scroll.deleteAt(index2, length);\n    return this.update(new Delta().retain(index2).delete(length));\n  }\n  formatLine(index2, length) {\n    let formats = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    this.scroll.update();\n    Object.keys(formats).forEach((format2) => {\n      this.scroll.lines(index2, Math.max(length, 1)).forEach((line) => {\n        line.format(format2, formats[format2]);\n      });\n    });\n    this.scroll.optimize();\n    const delta = new Delta().retain(index2).retain(length, cloneDeep$1(formats));\n    return this.update(delta);\n  }\n  formatText(index2, length) {\n    let formats = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    Object.keys(formats).forEach((format2) => {\n      this.scroll.formatAt(index2, length, format2, formats[format2]);\n    });\n    const delta = new Delta().retain(index2).retain(length, cloneDeep$1(formats));\n    return this.update(delta);\n  }\n  getContents(index2, length) {\n    return this.delta.slice(index2, index2 + length);\n  }\n  getDelta() {\n    return this.scroll.lines().reduce((delta, line) => {\n      return delta.concat(line.delta());\n    }, new Delta());\n  }\n  getFormat(index2) {\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n    let lines = [];\n    let leaves = [];\n    if (length === 0) {\n      this.scroll.path(index2).forEach((path) => {\n        const [blot] = path;\n        if (blot instanceof Block) {\n          lines.push(blot);\n        } else if (blot instanceof LeafBlot$1) {\n          leaves.push(blot);\n        }\n      });\n    } else {\n      lines = this.scroll.lines(index2, length);\n      leaves = this.scroll.descendants(LeafBlot$1, index2, length);\n    }\n    const [lineFormats, leafFormats] = [lines, leaves].map((blots) => {\n      const blot = blots.shift();\n      if (blot == null) return {};\n      let formats = bubbleFormats(blot);\n      while (Object.keys(formats).length > 0) {\n        const blot2 = blots.shift();\n        if (blot2 == null) return formats;\n        formats = combineFormats(bubbleFormats(blot2), formats);\n      }\n      return formats;\n    });\n    return {\n      ...lineFormats,\n      ...leafFormats\n    };\n  }\n  getHTML(index2, length) {\n    const [line, lineOffset] = this.scroll.line(index2);\n    if (line) {\n      const lineLength = line.length();\n      const isWithinLine = line.length() >= lineOffset + length;\n      if (isWithinLine && !(lineOffset === 0 && length === lineLength)) {\n        return convertHTML(line, lineOffset, length, true);\n      }\n      return convertHTML(this.scroll, index2, length, true);\n    }\n    return \"\";\n  }\n  getText(index2, length) {\n    return this.getContents(index2, length).filter((op) => typeof op.insert === \"string\").map((op) => op.insert).join(\"\");\n  }\n  insertContents(index2, contents) {\n    const normalizedDelta = normalizeDelta(contents);\n    const change = new Delta().retain(index2).concat(normalizedDelta);\n    this.scroll.insertContents(index2, normalizedDelta);\n    return this.update(change);\n  }\n  insertEmbed(index2, embed, value) {\n    this.scroll.insertAt(index2, embed, value);\n    return this.update(new Delta().retain(index2).insert({\n      [embed]: value\n    }));\n  }\n  insertText(index2, text2) {\n    let formats = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    text2 = text2.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n    this.scroll.insertAt(index2, text2);\n    Object.keys(formats).forEach((format2) => {\n      this.scroll.formatAt(index2, text2.length, format2, formats[format2]);\n    });\n    return this.update(new Delta().retain(index2).insert(text2, cloneDeep$1(formats)));\n  }\n  isBlank() {\n    if (this.scroll.children.length === 0) return true;\n    if (this.scroll.children.length > 1) return false;\n    const blot = this.scroll.children.head;\n    if ((blot == null ? void 0 : blot.statics.blotName) !== Block.blotName) return false;\n    const block2 = blot;\n    if (block2.children.length > 1) return false;\n    return block2.children.head instanceof Break;\n  }\n  removeFormat(index2, length) {\n    const text2 = this.getText(index2, length);\n    const [line, offset] = this.scroll.line(index2 + length);\n    let suffixLength = 0;\n    let suffix = new Delta();\n    if (line != null) {\n      suffixLength = line.length() - offset;\n      suffix = line.delta().slice(offset, offset + suffixLength - 1).insert(\"\\n\");\n    }\n    const contents = this.getContents(index2, length + suffixLength);\n    const diff2 = contents.diff(new Delta().insert(text2).concat(suffix));\n    const delta = new Delta().retain(index2).concat(diff2);\n    return this.applyDelta(delta);\n  }\n  update(change) {\n    let mutations = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];\n    let selectionInfo = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : void 0;\n    const oldDelta = this.delta;\n    if (mutations.length === 1 && mutations[0].type === \"characterData\" && // @ts-expect-error Fix me later\n    mutations[0].target.data.match(ASCII) && this.scroll.find(mutations[0].target)) {\n      const textBlot = this.scroll.find(mutations[0].target);\n      const formats = bubbleFormats(textBlot);\n      const index2 = textBlot.offset(this.scroll);\n      const oldValue = mutations[0].oldValue.replace(Cursor.CONTENTS, \"\");\n      const oldText = new Delta().insert(oldValue);\n      const newText = new Delta().insert(textBlot.value());\n      const relativeSelectionInfo = selectionInfo && {\n        oldRange: shiftRange$1(selectionInfo.oldRange, -index2),\n        newRange: shiftRange$1(selectionInfo.newRange, -index2)\n      };\n      const diffDelta = new Delta().retain(index2).concat(oldText.diff(newText, relativeSelectionInfo));\n      change = diffDelta.reduce((delta, op) => {\n        if (op.insert) {\n          return delta.insert(op.insert, formats);\n        }\n        return delta.push(op);\n      }, new Delta());\n      this.delta = oldDelta.compose(change);\n    } else {\n      this.delta = this.getDelta();\n      if (!change || !isEqual$2(oldDelta.compose(change), this.delta)) {\n        change = oldDelta.diff(this.delta, selectionInfo);\n      }\n    }\n    return change;\n  }\n}\nfunction convertListHTML(items, lastIndent, types2) {\n  if (items.length === 0) {\n    const [endTag2] = getListType(types2.pop());\n    if (lastIndent <= 0) {\n      return `</li></${endTag2}>`;\n    }\n    return `</li></${endTag2}>${convertListHTML([], lastIndent - 1, types2)}`;\n  }\n  const [{\n    child,\n    offset,\n    length,\n    indent,\n    type\n  }, ...rest] = items;\n  const [tag, attribute2] = getListType(type);\n  if (indent > lastIndent) {\n    types2.push(type);\n    if (indent === lastIndent + 1) {\n      return `<${tag}><li${attribute2}>${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types2)}`;\n    }\n    return `<${tag}><li>${convertListHTML(items, lastIndent + 1, types2)}`;\n  }\n  const previousType = types2[types2.length - 1];\n  if (indent === lastIndent && type === previousType) {\n    return `</li><li${attribute2}>${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types2)}`;\n  }\n  const [endTag] = getListType(types2.pop());\n  return `</li></${endTag}>${convertListHTML(items, lastIndent - 1, types2)}`;\n}\nfunction convertHTML(blot, index2, length) {\n  let isRoot = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;\n  if (\"html\" in blot && typeof blot.html === \"function\") {\n    return blot.html(index2, length);\n  }\n  if (blot instanceof Text$1) {\n    const escapedText = escapeText(blot.value().slice(index2, index2 + length));\n    return escapedText.replaceAll(\" \", \"&nbsp;\");\n  }\n  if (blot instanceof ParentBlot$1) {\n    if (blot.statics.blotName === \"list-container\") {\n      const items = [];\n      blot.children.forEachAt(index2, length, (child, offset, childLength) => {\n        const formats = \"formats\" in child && typeof child.formats === \"function\" ? child.formats() : {};\n        items.push({\n          child,\n          offset,\n          length: childLength,\n          indent: formats.indent || 0,\n          type: formats.list\n        });\n      });\n      return convertListHTML(items, -1, []);\n    }\n    const parts = [];\n    blot.children.forEachAt(index2, length, (child, offset, childLength) => {\n      parts.push(convertHTML(child, offset, childLength));\n    });\n    if (isRoot || blot.statics.blotName === \"list\") {\n      return parts.join(\"\");\n    }\n    const {\n      outerHTML,\n      innerHTML\n    } = blot.domNode;\n    const [start, end] = outerHTML.split(`>${innerHTML}<`);\n    if (start === \"<table\") {\n      return `<table style=\"border: 1px solid #000;\">${parts.join(\"\")}<${end}`;\n    }\n    return `${start}>${parts.join(\"\")}<${end}`;\n  }\n  return blot.domNode instanceof Element ? blot.domNode.outerHTML : \"\";\n}\nfunction combineFormats(formats, combined) {\n  return Object.keys(combined).reduce((merged, name) => {\n    if (formats[name] == null) return merged;\n    const combinedValue = combined[name];\n    if (combinedValue === formats[name]) {\n      merged[name] = combinedValue;\n    } else if (Array.isArray(combinedValue)) {\n      if (combinedValue.indexOf(formats[name]) < 0) {\n        merged[name] = combinedValue.concat([formats[name]]);\n      } else {\n        merged[name] = combinedValue;\n      }\n    } else {\n      merged[name] = [combinedValue, formats[name]];\n    }\n    return merged;\n  }, {});\n}\nfunction getListType(type) {\n  const tag = type === \"ordered\" ? \"ol\" : \"ul\";\n  switch (type) {\n    case \"checked\":\n      return [tag, ' data-list=\"checked\"'];\n    case \"unchecked\":\n      return [tag, ' data-list=\"unchecked\"'];\n    default:\n      return [tag, \"\"];\n  }\n}\nfunction normalizeDelta(delta) {\n  return delta.reduce((normalizedDelta, op) => {\n    if (typeof op.insert === \"string\") {\n      const text2 = op.insert.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n      return normalizedDelta.insert(text2, op.attributes);\n    }\n    return normalizedDelta.push(op);\n  }, new Delta());\n}\nfunction shiftRange$1(_ref, amount) {\n  let {\n    index: index2,\n    length\n  } = _ref;\n  return new Range(index2 + amount, length);\n}\nfunction splitOpLines(ops) {\n  const split = [];\n  ops.forEach((op) => {\n    if (typeof op.insert === \"string\") {\n      const lines = op.insert.split(\"\\n\");\n      lines.forEach((line, index2) => {\n        if (index2) split.push({\n          insert: \"\\n\",\n          attributes: op.attributes\n        });\n        if (line) split.push({\n          insert: line,\n          attributes: op.attributes\n        });\n      });\n    } else {\n      split.push(op);\n    }\n  });\n  return split;\n}\nclass Module {\n  constructor(quill) {\n    let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n    this.quill = quill;\n    this.options = options;\n  }\n}\n__publicField(Module, \"DEFAULTS\", {});\nconst GUARD_TEXT = \"\\uFEFF\";\nclass Embed extends EmbedBlot$1 {\n  constructor(scroll, node) {\n    super(scroll, node);\n    this.contentNode = document.createElement(\"span\");\n    this.contentNode.setAttribute(\"contenteditable\", \"false\");\n    Array.from(this.domNode.childNodes).forEach((childNode) => {\n      this.contentNode.appendChild(childNode);\n    });\n    this.leftGuard = document.createTextNode(GUARD_TEXT);\n    this.rightGuard = document.createTextNode(GUARD_TEXT);\n    this.domNode.appendChild(this.leftGuard);\n    this.domNode.appendChild(this.contentNode);\n    this.domNode.appendChild(this.rightGuard);\n  }\n  index(node, offset) {\n    if (node === this.leftGuard) return 0;\n    if (node === this.rightGuard) return 1;\n    return super.index(node, offset);\n  }\n  restore(node) {\n    let range = null;\n    let textNode;\n    const text2 = node.data.split(GUARD_TEXT).join(\"\");\n    if (node === this.leftGuard) {\n      if (this.prev instanceof Text$1) {\n        const prevLength = this.prev.length();\n        this.prev.insertAt(prevLength, text2);\n        range = {\n          startNode: this.prev.domNode,\n          startOffset: prevLength + text2.length\n        };\n      } else {\n        textNode = document.createTextNode(text2);\n        this.parent.insertBefore(this.scroll.create(textNode), this);\n        range = {\n          startNode: textNode,\n          startOffset: text2.length\n        };\n      }\n    } else if (node === this.rightGuard) {\n      if (this.next instanceof Text$1) {\n        this.next.insertAt(0, text2);\n        range = {\n          startNode: this.next.domNode,\n          startOffset: text2.length\n        };\n      } else {\n        textNode = document.createTextNode(text2);\n        this.parent.insertBefore(this.scroll.create(textNode), this.next);\n        range = {\n          startNode: textNode,\n          startOffset: text2.length\n        };\n      }\n    }\n    node.data = GUARD_TEXT;\n    return range;\n  }\n  update(mutations, context2) {\n    mutations.forEach((mutation) => {\n      if (mutation.type === \"characterData\" && (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n        const range = this.restore(mutation.target);\n        if (range) context2.range = range;\n      }\n    });\n  }\n}\nclass Composition {\n  constructor(scroll, emitter) {\n    __publicField(this, \"isComposing\", false);\n    this.scroll = scroll;\n    this.emitter = emitter;\n    this.setupListeners();\n  }\n  setupListeners() {\n    this.scroll.domNode.addEventListener(\"compositionstart\", (event) => {\n      if (!this.isComposing) {\n        this.handleCompositionStart(event);\n      }\n    });\n    this.scroll.domNode.addEventListener(\"compositionend\", (event) => {\n      if (this.isComposing) {\n        queueMicrotask(() => {\n          this.handleCompositionEnd(event);\n        });\n      }\n    });\n  }\n  handleCompositionStart(event) {\n    const blot = event.target instanceof Node ? this.scroll.find(event.target, true) : null;\n    if (blot && !(blot instanceof Embed)) {\n      this.emitter.emit(Emitter.events.COMPOSITION_BEFORE_START, event);\n      this.scroll.batchStart();\n      this.emitter.emit(Emitter.events.COMPOSITION_START, event);\n      this.isComposing = true;\n    }\n  }\n  handleCompositionEnd(event) {\n    this.emitter.emit(Emitter.events.COMPOSITION_BEFORE_END, event);\n    this.scroll.batchEnd();\n    this.emitter.emit(Emitter.events.COMPOSITION_END, event);\n    this.isComposing = false;\n  }\n}\nconst _Theme = class _Theme {\n  constructor(quill, options) {\n    __publicField(this, \"modules\", {});\n    this.quill = quill;\n    this.options = options;\n  }\n  init() {\n    Object.keys(this.options.modules).forEach((name) => {\n      if (this.modules[name] == null) {\n        this.addModule(name);\n      }\n    });\n  }\n  addModule(name) {\n    const ModuleClass = this.quill.constructor.import(`modules/${name}`);\n    this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\n    return this.modules[name];\n  }\n};\n__publicField(_Theme, \"DEFAULTS\", {\n  modules: {}\n});\n__publicField(_Theme, \"themes\", {\n  default: _Theme\n});\nlet Theme = _Theme;\nconst getParentElement = (element) => element.parentElement || element.getRootNode().host || null;\nconst getElementRect = (element) => {\n  const rect = element.getBoundingClientRect();\n  const scaleX = \"offsetWidth\" in element && Math.abs(rect.width) / element.offsetWidth || 1;\n  const scaleY = \"offsetHeight\" in element && Math.abs(rect.height) / element.offsetHeight || 1;\n  return {\n    top: rect.top,\n    right: rect.left + element.clientWidth * scaleX,\n    bottom: rect.top + element.clientHeight * scaleY,\n    left: rect.left\n  };\n};\nconst paddingValueToInt = (value) => {\n  const number = parseInt(value, 10);\n  return Number.isNaN(number) ? 0 : number;\n};\nconst getScrollDistance = (targetStart, targetEnd, scrollStart, scrollEnd, scrollPaddingStart, scrollPaddingEnd) => {\n  if (targetStart < scrollStart && targetEnd > scrollEnd) {\n    return 0;\n  }\n  if (targetStart < scrollStart) {\n    return -(scrollStart - targetStart + scrollPaddingStart);\n  }\n  if (targetEnd > scrollEnd) {\n    return targetEnd - targetStart > scrollEnd - scrollStart ? targetStart + scrollPaddingStart - scrollStart : targetEnd - scrollEnd + scrollPaddingEnd;\n  }\n  return 0;\n};\nconst scrollRectIntoView = (root2, targetRect) => {\n  var _a3, _b, _c;\n  const document2 = root2.ownerDocument;\n  let rect = targetRect;\n  let current = root2;\n  while (current) {\n    const isDocumentBody = current === document2.body;\n    const bounding = isDocumentBody ? {\n      top: 0,\n      right: ((_a3 = window.visualViewport) == null ? void 0 : _a3.width) ?? document2.documentElement.clientWidth,\n      bottom: ((_b = window.visualViewport) == null ? void 0 : _b.height) ?? document2.documentElement.clientHeight,\n      left: 0\n    } : getElementRect(current);\n    const style = getComputedStyle(current);\n    const scrollDistanceX = getScrollDistance(rect.left, rect.right, bounding.left, bounding.right, paddingValueToInt(style.scrollPaddingLeft), paddingValueToInt(style.scrollPaddingRight));\n    const scrollDistanceY = getScrollDistance(rect.top, rect.bottom, bounding.top, bounding.bottom, paddingValueToInt(style.scrollPaddingTop), paddingValueToInt(style.scrollPaddingBottom));\n    if (scrollDistanceX || scrollDistanceY) {\n      if (isDocumentBody) {\n        (_c = document2.defaultView) == null ? void 0 : _c.scrollBy(scrollDistanceX, scrollDistanceY);\n      } else {\n        const {\n          scrollLeft,\n          scrollTop\n        } = current;\n        if (scrollDistanceY) {\n          current.scrollTop += scrollDistanceY;\n        }\n        if (scrollDistanceX) {\n          current.scrollLeft += scrollDistanceX;\n        }\n        const scrolledLeft = current.scrollLeft - scrollLeft;\n        const scrolledTop = current.scrollTop - scrollTop;\n        rect = {\n          left: rect.left - scrolledLeft,\n          top: rect.top - scrolledTop,\n          right: rect.right - scrolledLeft,\n          bottom: rect.bottom - scrolledTop\n        };\n      }\n    }\n    current = isDocumentBody || style.position === \"fixed\" ? null : getParentElement(current);\n  }\n};\nconst MAX_REGISTER_ITERATIONS = 100;\nconst CORE_FORMATS = [\"block\", \"break\", \"cursor\", \"inline\", \"scroll\", \"text\"];\nconst createRegistryWithFormats = (formats, sourceRegistry, debug2) => {\n  const registry = new Registry();\n  CORE_FORMATS.forEach((name) => {\n    const coreBlot = sourceRegistry.query(name);\n    if (coreBlot) registry.register(coreBlot);\n  });\n  formats.forEach((name) => {\n    let format2 = sourceRegistry.query(name);\n    if (!format2) {\n      debug2.error(`Cannot register \"${name}\" specified in \"formats\" config. Are you sure it was registered?`);\n    }\n    let iterations = 0;\n    while (format2) {\n      registry.register(format2);\n      format2 = \"blotName\" in format2 ? format2.requiredContainer ?? null : null;\n      iterations += 1;\n      if (iterations > MAX_REGISTER_ITERATIONS) {\n        debug2.error(`Cycle detected in registering blot requiredContainer: \"${name}\"`);\n        break;\n      }\n    }\n  });\n  return registry;\n};\nconst debug$3 = namespace(\"quill\");\nconst globalRegistry = new Registry();\nParentBlot$1.uiClass = \"ql-ui\";\nconst _Quill = class _Quill {\n  static debug(limit) {\n    if (limit === true) {\n      limit = \"log\";\n    }\n    namespace.level(limit);\n  }\n  static find(node) {\n    let bubble = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    return instances.get(node) || globalRegistry.find(node, bubble);\n  }\n  static import(name) {\n    if (this.imports[name] == null) {\n      debug$3.error(`Cannot import ${name}. Are you sure it was registered?`);\n    }\n    return this.imports[name];\n  }\n  static register() {\n    if (typeof (arguments.length <= 0 ? void 0 : arguments[0]) !== \"string\") {\n      const target = arguments.length <= 0 ? void 0 : arguments[0];\n      const overwrite = !!(arguments.length <= 1 ? void 0 : arguments[1]);\n      const name = \"attrName\" in target ? target.attrName : target.blotName;\n      if (typeof name === \"string\") {\n        this.register(`formats/${name}`, target, overwrite);\n      } else {\n        Object.keys(target).forEach((key) => {\n          this.register(key, target[key], overwrite);\n        });\n      }\n    } else {\n      const path = arguments.length <= 0 ? void 0 : arguments[0];\n      const target = arguments.length <= 1 ? void 0 : arguments[1];\n      const overwrite = !!(arguments.length <= 2 ? void 0 : arguments[2]);\n      if (this.imports[path] != null && !overwrite) {\n        debug$3.warn(`Overwriting ${path} with`, target);\n      }\n      this.imports[path] = target;\n      if ((path.startsWith(\"blots/\") || path.startsWith(\"formats/\")) && target && typeof target !== \"boolean\" && target.blotName !== \"abstract\") {\n        globalRegistry.register(target);\n      }\n      if (typeof target.register === \"function\") {\n        target.register(globalRegistry);\n      }\n    }\n  }\n  constructor(container) {\n    let options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n    this.options = expandConfig(container, options);\n    this.container = this.options.container;\n    if (this.container == null) {\n      debug$3.error(\"Invalid Quill container\", container);\n      return;\n    }\n    if (this.options.debug) {\n      _Quill.debug(this.options.debug);\n    }\n    const html = this.container.innerHTML.trim();\n    this.container.classList.add(\"ql-container\");\n    this.container.innerHTML = \"\";\n    instances.set(this.container, this);\n    this.root = this.addContainer(\"ql-editor\");\n    this.root.classList.add(\"ql-blank\");\n    this.emitter = new Emitter();\n    const scrollBlotName = ScrollBlot$1.blotName;\n    const ScrollBlot2 = this.options.registry.query(scrollBlotName);\n    if (!ScrollBlot2 || !(\"blotName\" in ScrollBlot2)) {\n      throw new Error(`Cannot initialize Quill without \"${scrollBlotName}\" blot`);\n    }\n    this.scroll = new ScrollBlot2(this.options.registry, this.root, {\n      emitter: this.emitter\n    });\n    this.editor = new Editor(this.scroll);\n    this.selection = new Selection(this.scroll, this.emitter);\n    this.composition = new Composition(this.scroll, this.emitter);\n    this.theme = new this.options.theme(this, this.options);\n    this.keyboard = this.theme.addModule(\"keyboard\");\n    this.clipboard = this.theme.addModule(\"clipboard\");\n    this.history = this.theme.addModule(\"history\");\n    this.uploader = this.theme.addModule(\"uploader\");\n    this.theme.addModule(\"input\");\n    this.theme.addModule(\"uiNode\");\n    this.theme.init();\n    this.emitter.on(Emitter.events.EDITOR_CHANGE, (type) => {\n      if (type === Emitter.events.TEXT_CHANGE) {\n        this.root.classList.toggle(\"ql-blank\", this.editor.isBlank());\n      }\n    });\n    this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n      const oldRange = this.selection.lastRange;\n      const [newRange] = this.selection.getRange();\n      const selectionInfo = oldRange && newRange ? {\n        oldRange,\n        newRange\n      } : void 0;\n      modify.call(this, () => this.editor.update(null, mutations, selectionInfo), source);\n    });\n    this.emitter.on(Emitter.events.SCROLL_EMBED_UPDATE, (blot, delta) => {\n      const oldRange = this.selection.lastRange;\n      const [newRange] = this.selection.getRange();\n      const selectionInfo = oldRange && newRange ? {\n        oldRange,\n        newRange\n      } : void 0;\n      modify.call(this, () => {\n        const change = new Delta().retain(blot.offset(this)).retain({\n          [blot.statics.blotName]: delta\n        });\n        return this.editor.update(change, [], selectionInfo);\n      }, _Quill.sources.USER);\n    });\n    if (html) {\n      const contents = this.clipboard.convert({\n        html: `${html}<p><br></p>`,\n        text: \"\\n\"\n      });\n      this.setContents(contents);\n    }\n    this.history.clear();\n    if (this.options.placeholder) {\n      this.root.setAttribute(\"data-placeholder\", this.options.placeholder);\n    }\n    if (this.options.readOnly) {\n      this.disable();\n    }\n    this.allowReadOnlyEdits = false;\n  }\n  addContainer(container) {\n    let refNode = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n    if (typeof container === \"string\") {\n      const className = container;\n      container = document.createElement(\"div\");\n      container.classList.add(className);\n    }\n    this.container.insertBefore(container, refNode);\n    return container;\n  }\n  blur() {\n    this.selection.setRange(null);\n  }\n  deleteText(index2, length, source) {\n    [index2, length, , source] = overload(index2, length, source);\n    return modify.call(this, () => {\n      return this.editor.deleteText(index2, length);\n    }, source, index2, -1 * length);\n  }\n  disable() {\n    this.enable(false);\n  }\n  editReadOnly(modifier) {\n    this.allowReadOnlyEdits = true;\n    const value = modifier();\n    this.allowReadOnlyEdits = false;\n    return value;\n  }\n  enable() {\n    let enabled = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n    this.scroll.enable(enabled);\n    this.container.classList.toggle(\"ql-disabled\", !enabled);\n  }\n  focus() {\n    let options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n    this.selection.focus();\n    if (!options.preventScroll) {\n      this.scrollSelectionIntoView();\n    }\n  }\n  format(name, value) {\n    let source = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Emitter.sources.API;\n    return modify.call(this, () => {\n      const range = this.getSelection(true);\n      let change = new Delta();\n      if (range == null) return change;\n      if (this.scroll.query(name, Scope.BLOCK)) {\n        change = this.editor.formatLine(range.index, range.length, {\n          [name]: value\n        });\n      } else if (range.length === 0) {\n        this.selection.format(name, value);\n        return change;\n      } else {\n        change = this.editor.formatText(range.index, range.length, {\n          [name]: value\n        });\n      }\n      this.setSelection(range, Emitter.sources.SILENT);\n      return change;\n    }, source);\n  }\n  formatLine(index2, length, name, value, source) {\n    let formats;\n    [index2, length, formats, source] = overload(\n      index2,\n      length,\n      // @ts-expect-error\n      name,\n      value,\n      source\n    );\n    return modify.call(this, () => {\n      return this.editor.formatLine(index2, length, formats);\n    }, source, index2, 0);\n  }\n  formatText(index2, length, name, value, source) {\n    let formats;\n    [index2, length, formats, source] = overload(\n      // @ts-expect-error\n      index2,\n      length,\n      name,\n      value,\n      source\n    );\n    return modify.call(this, () => {\n      return this.editor.formatText(index2, length, formats);\n    }, source, index2, 0);\n  }\n  getBounds(index2) {\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n    let bounds = null;\n    if (typeof index2 === \"number\") {\n      bounds = this.selection.getBounds(index2, length);\n    } else {\n      bounds = this.selection.getBounds(index2.index, index2.length);\n    }\n    if (!bounds) return null;\n    const containerBounds = this.container.getBoundingClientRect();\n    return {\n      bottom: bounds.bottom - containerBounds.top,\n      height: bounds.height,\n      left: bounds.left - containerBounds.left,\n      right: bounds.right - containerBounds.left,\n      top: bounds.top - containerBounds.top,\n      width: bounds.width\n    };\n  }\n  getContents() {\n    let index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.getLength() - index2;\n    [index2, length] = overload(index2, length);\n    return this.editor.getContents(index2, length);\n  }\n  getFormat() {\n    let index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.getSelection(true);\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;\n    if (typeof index2 === \"number\") {\n      return this.editor.getFormat(index2, length);\n    }\n    return this.editor.getFormat(index2.index, index2.length);\n  }\n  getIndex(blot) {\n    return blot.offset(this.scroll);\n  }\n  getLength() {\n    return this.scroll.length();\n  }\n  getLeaf(index2) {\n    return this.scroll.leaf(index2);\n  }\n  getLine(index2) {\n    return this.scroll.line(index2);\n  }\n  getLines() {\n    let index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Number.MAX_VALUE;\n    if (typeof index2 !== \"number\") {\n      return this.scroll.lines(index2.index, index2.length);\n    }\n    return this.scroll.lines(index2, length);\n  }\n  getModule(name) {\n    return this.theme.modules[name];\n  }\n  getSelection() {\n    let focus = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;\n    if (focus) this.focus();\n    this.update();\n    return this.selection.getRange()[0];\n  }\n  getSemanticHTML() {\n    let index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n    let length = arguments.length > 1 ? arguments[1] : void 0;\n    if (typeof index2 === \"number\") {\n      length = length ?? this.getLength() - index2;\n    }\n    [index2, length] = overload(index2, length);\n    return this.editor.getHTML(index2, length);\n  }\n  getText() {\n    let index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n    let length = arguments.length > 1 ? arguments[1] : void 0;\n    if (typeof index2 === \"number\") {\n      length = length ?? this.getLength() - index2;\n    }\n    [index2, length] = overload(index2, length);\n    return this.editor.getText(index2, length);\n  }\n  hasFocus() {\n    return this.selection.hasFocus();\n  }\n  insertEmbed(index2, embed, value) {\n    let source = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : _Quill.sources.API;\n    return modify.call(this, () => {\n      return this.editor.insertEmbed(index2, embed, value);\n    }, source, index2);\n  }\n  insertText(index2, text2, name, value, source) {\n    let formats;\n    [index2, , formats, source] = overload(index2, 0, name, value, source);\n    return modify.call(this, () => {\n      return this.editor.insertText(index2, text2, formats);\n    }, source, index2, text2.length);\n  }\n  isEnabled() {\n    return this.scroll.isEnabled();\n  }\n  off() {\n    return this.emitter.off(...arguments);\n  }\n  on() {\n    return this.emitter.on(...arguments);\n  }\n  once() {\n    return this.emitter.once(...arguments);\n  }\n  removeFormat(index2, length, source) {\n    [index2, length, , source] = overload(index2, length, source);\n    return modify.call(this, () => {\n      return this.editor.removeFormat(index2, length);\n    }, source, index2);\n  }\n  scrollRectIntoView(rect) {\n    scrollRectIntoView(this.root, rect);\n  }\n  /**\n   * @deprecated Use Quill#scrollSelectionIntoView() instead.\n   */\n  scrollIntoView() {\n    console.warn(\"Quill#scrollIntoView() has been deprecated and will be removed in the near future. Please use Quill#scrollSelectionIntoView() instead.\");\n    this.scrollSelectionIntoView();\n  }\n  /**\n   * Scroll the current selection into the visible area.\n   * If the selection is already visible, no scrolling will occur.\n   */\n  scrollSelectionIntoView() {\n    const range = this.selection.lastRange;\n    const bounds = range && this.selection.getBounds(range.index, range.length);\n    if (bounds) {\n      this.scrollRectIntoView(bounds);\n    }\n  }\n  setContents(delta) {\n    let source = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Emitter.sources.API;\n    return modify.call(this, () => {\n      delta = new Delta(delta);\n      const length = this.getLength();\n      const delete1 = this.editor.deleteText(0, length);\n      const applied = this.editor.insertContents(0, delta);\n      const delete2 = this.editor.deleteText(this.getLength() - 1, 1);\n      return delete1.compose(applied).compose(delete2);\n    }, source);\n  }\n  setSelection(index2, length, source) {\n    if (index2 == null) {\n      this.selection.setRange(null, length || _Quill.sources.API);\n    } else {\n      [index2, length, , source] = overload(index2, length, source);\n      this.selection.setRange(new Range(Math.max(0, index2), length), source);\n      if (source !== Emitter.sources.SILENT) {\n        this.scrollSelectionIntoView();\n      }\n    }\n  }\n  setText(text2) {\n    let source = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Emitter.sources.API;\n    const delta = new Delta().insert(text2);\n    return this.setContents(delta, source);\n  }\n  update() {\n    let source = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : Emitter.sources.USER;\n    const change = this.scroll.update(source);\n    this.selection.update(source);\n    return change;\n  }\n  updateContents(delta) {\n    let source = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Emitter.sources.API;\n    return modify.call(this, () => {\n      delta = new Delta(delta);\n      return this.editor.applyDelta(delta);\n    }, source, true);\n  }\n};\n__publicField(_Quill, \"DEFAULTS\", {\n  bounds: null,\n  modules: {\n    clipboard: true,\n    keyboard: true,\n    history: true,\n    uploader: true\n  },\n  placeholder: \"\",\n  readOnly: false,\n  registry: globalRegistry,\n  theme: \"default\"\n});\n__publicField(_Quill, \"events\", Emitter.events);\n__publicField(_Quill, \"sources\", Emitter.sources);\n__publicField(_Quill, \"version\", \"2.0.3\");\n__publicField(_Quill, \"imports\", {\n  delta: Delta,\n  parchment: Parchment,\n  \"core/module\": Module,\n  \"core/theme\": Theme\n});\nlet Quill = _Quill;\nfunction resolveSelector(selector) {\n  return typeof selector === \"string\" ? document.querySelector(selector) : selector;\n}\nfunction expandModuleConfig(config2) {\n  return Object.entries(config2 ?? {}).reduce((expanded, _ref) => {\n    let [key, value] = _ref;\n    return {\n      ...expanded,\n      [key]: value === true ? {} : value\n    };\n  }, {});\n}\nfunction omitUndefinedValuesFromOptions(obj) {\n  return Object.fromEntries(Object.entries(obj).filter((entry) => entry[1] !== void 0));\n}\nfunction expandConfig(containerOrSelector, options) {\n  const container = resolveSelector(containerOrSelector);\n  if (!container) {\n    throw new Error(\"Invalid Quill container\");\n  }\n  const shouldUseDefaultTheme = !options.theme || options.theme === Quill.DEFAULTS.theme;\n  const theme = shouldUseDefaultTheme ? Theme : Quill.import(`themes/${options.theme}`);\n  if (!theme) {\n    throw new Error(`Invalid theme ${options.theme}. Did you register it?`);\n  }\n  const {\n    modules: quillModuleDefaults,\n    ...quillDefaults\n  } = Quill.DEFAULTS;\n  const {\n    modules: themeModuleDefaults,\n    ...themeDefaults\n  } = theme.DEFAULTS;\n  let userModuleOptions = expandModuleConfig(options.modules);\n  if (userModuleOptions != null && userModuleOptions.toolbar && userModuleOptions.toolbar.constructor !== Object) {\n    userModuleOptions = {\n      ...userModuleOptions,\n      toolbar: {\n        container: userModuleOptions.toolbar\n      }\n    };\n  }\n  const modules = merge({}, expandModuleConfig(quillModuleDefaults), expandModuleConfig(themeModuleDefaults), userModuleOptions);\n  const config2 = {\n    ...quillDefaults,\n    ...omitUndefinedValuesFromOptions(themeDefaults),\n    ...omitUndefinedValuesFromOptions(options)\n  };\n  let registry = options.registry;\n  if (registry) {\n    if (options.formats) {\n      debug$3.warn('Ignoring \"formats\" option because \"registry\" is specified');\n    }\n  } else {\n    registry = options.formats ? createRegistryWithFormats(options.formats, config2.registry, debug$3) : config2.registry;\n  }\n  return {\n    ...config2,\n    registry,\n    container,\n    theme,\n    modules: Object.entries(modules).reduce((modulesWithDefaults, _ref2) => {\n      let [name, value] = _ref2;\n      if (!value) return modulesWithDefaults;\n      const moduleClass = Quill.import(`modules/${name}`);\n      if (moduleClass == null) {\n        debug$3.error(`Cannot load ${name} module. Are you sure you registered it?`);\n        return modulesWithDefaults;\n      }\n      return {\n        ...modulesWithDefaults,\n        // @ts-expect-error\n        [name]: merge({}, moduleClass.DEFAULTS || {}, value)\n      };\n    }, {}),\n    bounds: resolveSelector(config2.bounds)\n  };\n}\nfunction modify(modifier, source, index2, shift) {\n  if (!this.isEnabled() && source === Emitter.sources.USER && !this.allowReadOnlyEdits) {\n    return new Delta();\n  }\n  let range = index2 == null ? null : this.getSelection();\n  const oldDelta = this.editor.delta;\n  const change = modifier();\n  if (range != null) {\n    if (index2 === true) {\n      index2 = range.index;\n    }\n    if (shift == null) {\n      range = shiftRange(range, change, source);\n    } else if (shift !== 0) {\n      range = shiftRange(range, index2, shift, source);\n    }\n    this.setSelection(range, Emitter.sources.SILENT);\n  }\n  if (change.length() > 0) {\n    const args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n    this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n    if (source !== Emitter.sources.SILENT) {\n      this.emitter.emit(...args);\n    }\n  }\n  return change;\n}\nfunction overload(index2, length, name, value, source) {\n  let formats = {};\n  if (typeof index2.index === \"number\" && typeof index2.length === \"number\") {\n    if (typeof length !== \"number\") {\n      source = value;\n      value = name;\n      name = length;\n      length = index2.length;\n      index2 = index2.index;\n    } else {\n      length = index2.length;\n      index2 = index2.index;\n    }\n  } else if (typeof length !== \"number\") {\n    source = value;\n    value = name;\n    name = length;\n    length = 0;\n  }\n  if (typeof name === \"object\") {\n    formats = name;\n    source = value;\n  } else if (typeof name === \"string\") {\n    if (value != null) {\n      formats[name] = value;\n    } else {\n      source = name;\n    }\n  }\n  source = source || Emitter.sources.API;\n  return [index2, length, formats, source];\n}\nfunction shiftRange(range, index2, lengthOrSource, source) {\n  const length = typeof lengthOrSource === \"number\" ? lengthOrSource : 0;\n  if (range == null) return null;\n  let start;\n  let end;\n  if (index2 && typeof index2.transformPosition === \"function\") {\n    [start, end] = [range.index, range.index + range.length].map((pos) => (\n      // @ts-expect-error -- TODO: add a better type guard around `index`\n      index2.transformPosition(pos, source !== Emitter.sources.USER)\n    ));\n  } else {\n    [start, end] = [range.index, range.index + range.length].map((pos) => {\n      if (pos < index2 || pos === index2 && source === Emitter.sources.USER) return pos;\n      if (length >= 0) {\n        return pos + length;\n      }\n      return Math.max(index2, pos + length);\n    });\n  }\n  return new Range(start, end - start);\n}\nclass Container extends ContainerBlot$1 {\n}\nfunction isLine$1(blot) {\n  return blot instanceof Block || blot instanceof BlockEmbed;\n}\nfunction isUpdatable(blot) {\n  return typeof blot.updateContent === \"function\";\n}\nclass Scroll extends ScrollBlot$1 {\n  constructor(registry, domNode, _ref) {\n    let {\n      emitter\n    } = _ref;\n    super(registry, domNode);\n    this.emitter = emitter;\n    this.batch = false;\n    this.optimize();\n    this.enable();\n    this.domNode.addEventListener(\"dragstart\", (e2) => this.handleDragStart(e2));\n  }\n  batchStart() {\n    if (!Array.isArray(this.batch)) {\n      this.batch = [];\n    }\n  }\n  batchEnd() {\n    if (!this.batch) return;\n    const mutations = this.batch;\n    this.batch = false;\n    this.update(mutations);\n  }\n  emitMount(blot) {\n    this.emitter.emit(Emitter.events.SCROLL_BLOT_MOUNT, blot);\n  }\n  emitUnmount(blot) {\n    this.emitter.emit(Emitter.events.SCROLL_BLOT_UNMOUNT, blot);\n  }\n  emitEmbedUpdate(blot, change) {\n    this.emitter.emit(Emitter.events.SCROLL_EMBED_UPDATE, blot, change);\n  }\n  deleteAt(index2, length) {\n    const [first, offset] = this.line(index2);\n    const [last] = this.line(index2 + length);\n    super.deleteAt(index2, length);\n    if (last != null && first !== last && offset > 0) {\n      if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n        this.optimize();\n        return;\n      }\n      const ref = last.children.head instanceof Break ? null : last.children.head;\n      first.moveChildren(last, ref);\n      first.remove();\n    }\n    this.optimize();\n  }\n  enable() {\n    let enabled = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;\n    this.domNode.setAttribute(\"contenteditable\", enabled ? \"true\" : \"false\");\n  }\n  formatAt(index2, length, format2, value) {\n    super.formatAt(index2, length, format2, value);\n    this.optimize();\n  }\n  insertAt(index2, value, def) {\n    if (index2 >= this.length()) {\n      if (def == null || this.scroll.query(value, Scope.BLOCK) == null) {\n        const blot = this.scroll.create(this.statics.defaultChild.blotName);\n        this.appendChild(blot);\n        if (def == null && value.endsWith(\"\\n\")) {\n          blot.insertAt(0, value.slice(0, -1), def);\n        } else {\n          blot.insertAt(0, value, def);\n        }\n      } else {\n        const embed = this.scroll.create(value, def);\n        this.appendChild(embed);\n      }\n    } else {\n      super.insertAt(index2, value, def);\n    }\n    this.optimize();\n  }\n  insertBefore(blot, ref) {\n    if (blot.statics.scope === Scope.INLINE_BLOT) {\n      const wrapper2 = this.scroll.create(this.statics.defaultChild.blotName);\n      wrapper2.appendChild(blot);\n      super.insertBefore(wrapper2, ref);\n    } else {\n      super.insertBefore(blot, ref);\n    }\n  }\n  insertContents(index2, delta) {\n    const renderBlocks = this.deltaToRenderBlocks(delta.concat(new Delta().insert(\"\\n\")));\n    const last = renderBlocks.pop();\n    if (last == null) return;\n    this.batchStart();\n    const first = renderBlocks.shift();\n    if (first) {\n      const shouldInsertNewlineChar = first.type === \"block\" && (first.delta.length() === 0 || !this.descendant(BlockEmbed, index2)[0] && index2 < this.length());\n      const delta2 = first.type === \"block\" ? first.delta : new Delta().insert({\n        [first.key]: first.value\n      });\n      insertInlineContents(this, index2, delta2);\n      const newlineCharLength = first.type === \"block\" ? 1 : 0;\n      const lineEndIndex = index2 + delta2.length() + newlineCharLength;\n      if (shouldInsertNewlineChar) {\n        this.insertAt(lineEndIndex - 1, \"\\n\");\n      }\n      const formats = bubbleFormats(this.line(index2)[0]);\n      const attributes = DeltaExports.AttributeMap.diff(formats, first.attributes) || {};\n      Object.keys(attributes).forEach((name) => {\n        this.formatAt(lineEndIndex - 1, 1, name, attributes[name]);\n      });\n      index2 = lineEndIndex;\n    }\n    let [refBlot, refBlotOffset] = this.children.find(index2);\n    if (renderBlocks.length) {\n      if (refBlot) {\n        refBlot = refBlot.split(refBlotOffset);\n        refBlotOffset = 0;\n      }\n      renderBlocks.forEach((renderBlock) => {\n        if (renderBlock.type === \"block\") {\n          const block2 = this.createBlock(renderBlock.attributes, refBlot || void 0);\n          insertInlineContents(block2, 0, renderBlock.delta);\n        } else {\n          const blockEmbed = this.create(renderBlock.key, renderBlock.value);\n          this.insertBefore(blockEmbed, refBlot || void 0);\n          Object.keys(renderBlock.attributes).forEach((name) => {\n            blockEmbed.format(name, renderBlock.attributes[name]);\n          });\n        }\n      });\n    }\n    if (last.type === \"block\" && last.delta.length()) {\n      const offset = refBlot ? refBlot.offset(refBlot.scroll) + refBlotOffset : this.length();\n      insertInlineContents(this, offset, last.delta);\n    }\n    this.batchEnd();\n    this.optimize();\n  }\n  isEnabled() {\n    return this.domNode.getAttribute(\"contenteditable\") === \"true\";\n  }\n  leaf(index2) {\n    const last = this.path(index2).pop();\n    if (!last) {\n      return [null, -1];\n    }\n    const [blot, offset] = last;\n    return blot instanceof LeafBlot$1 ? [blot, offset] : [null, -1];\n  }\n  line(index2) {\n    if (index2 === this.length()) {\n      return this.line(index2 - 1);\n    }\n    return this.descendant(isLine$1, index2);\n  }\n  lines() {\n    let index2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;\n    let length = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : Number.MAX_VALUE;\n    const getLines2 = (blot, blotIndex, blotLength) => {\n      let lines = [];\n      let lengthLeft = blotLength;\n      blot.children.forEachAt(blotIndex, blotLength, (child, childIndex, childLength) => {\n        if (isLine$1(child)) {\n          lines.push(child);\n        } else if (child instanceof ContainerBlot$1) {\n          lines = lines.concat(getLines2(child, childIndex, lengthLeft));\n        }\n        lengthLeft -= childLength;\n      });\n      return lines;\n    };\n    return getLines2(this, index2, length);\n  }\n  optimize() {\n    let mutations = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [];\n    let context2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n    if (this.batch) return;\n    super.optimize(mutations, context2);\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context2);\n    }\n  }\n  path(index2) {\n    return super.path(index2).slice(1);\n  }\n  remove() {\n  }\n  update(mutations) {\n    if (this.batch) {\n      if (Array.isArray(mutations)) {\n        this.batch = this.batch.concat(mutations);\n      }\n      return;\n    }\n    let source = Emitter.sources.USER;\n    if (typeof mutations === \"string\") {\n      source = mutations;\n    }\n    if (!Array.isArray(mutations)) {\n      mutations = this.observer.takeRecords();\n    }\n    mutations = mutations.filter((_ref2) => {\n      let {\n        target\n      } = _ref2;\n      const blot = this.find(target, true);\n      return blot && !isUpdatable(blot);\n    });\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n    }\n    super.update(mutations.concat([]));\n    if (mutations.length > 0) {\n      this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n    }\n  }\n  updateEmbedAt(index2, key, change) {\n    const [blot] = this.descendant((b2) => b2 instanceof BlockEmbed, index2);\n    if (blot && blot.statics.blotName === key && isUpdatable(blot)) {\n      blot.updateContent(change);\n    }\n  }\n  handleDragStart(event) {\n    event.preventDefault();\n  }\n  deltaToRenderBlocks(delta) {\n    const renderBlocks = [];\n    let currentBlockDelta = new Delta();\n    delta.forEach((op) => {\n      const insert2 = op == null ? void 0 : op.insert;\n      if (!insert2) return;\n      if (typeof insert2 === \"string\") {\n        const splitted = insert2.split(\"\\n\");\n        splitted.slice(0, -1).forEach((text2) => {\n          currentBlockDelta.insert(text2, op.attributes);\n          renderBlocks.push({\n            type: \"block\",\n            delta: currentBlockDelta,\n            attributes: op.attributes ?? {}\n          });\n          currentBlockDelta = new Delta();\n        });\n        const last = splitted[splitted.length - 1];\n        if (last) {\n          currentBlockDelta.insert(last, op.attributes);\n        }\n      } else {\n        const key = Object.keys(insert2)[0];\n        if (!key) return;\n        if (this.query(key, Scope.INLINE)) {\n          currentBlockDelta.push(op);\n        } else {\n          if (currentBlockDelta.length()) {\n            renderBlocks.push({\n              type: \"block\",\n              delta: currentBlockDelta,\n              attributes: {}\n            });\n          }\n          currentBlockDelta = new Delta();\n          renderBlocks.push({\n            type: \"blockEmbed\",\n            key,\n            value: insert2[key],\n            attributes: op.attributes ?? {}\n          });\n        }\n      }\n    });\n    if (currentBlockDelta.length()) {\n      renderBlocks.push({\n        type: \"block\",\n        delta: currentBlockDelta,\n        attributes: {}\n      });\n    }\n    return renderBlocks;\n  }\n  createBlock(attributes, refBlot) {\n    let blotName;\n    const formats = {};\n    Object.entries(attributes).forEach((_ref3) => {\n      let [key, value] = _ref3;\n      const isBlockBlot = this.query(key, Scope.BLOCK & Scope.BLOT) != null;\n      if (isBlockBlot) {\n        blotName = key;\n      } else {\n        formats[key] = value;\n      }\n    });\n    const block2 = this.create(blotName || this.statics.defaultChild.blotName, blotName ? attributes[blotName] : void 0);\n    this.insertBefore(block2, refBlot || void 0);\n    const length = block2.length();\n    Object.entries(formats).forEach((_ref4) => {\n      let [key, value] = _ref4;\n      block2.formatAt(0, length, key, value);\n    });\n    return block2;\n  }\n}\n__publicField(Scroll, \"blotName\", \"scroll\");\n__publicField(Scroll, \"className\", \"ql-editor\");\n__publicField(Scroll, \"tagName\", \"DIV\");\n__publicField(Scroll, \"defaultChild\", Block);\n__publicField(Scroll, \"allowedChildren\", [Block, BlockEmbed, Container]);\nfunction insertInlineContents(parent, index2, inlineContents) {\n  inlineContents.reduce((index3, op) => {\n    const length = DeltaExports.Op.length(op);\n    let attributes = op.attributes || {};\n    if (op.insert != null) {\n      if (typeof op.insert === \"string\") {\n        const text2 = op.insert;\n        parent.insertAt(index3, text2);\n        const [leaf] = parent.descendant(LeafBlot$1, index3);\n        const formats = bubbleFormats(leaf);\n        attributes = DeltaExports.AttributeMap.diff(formats, attributes) || {};\n      } else if (typeof op.insert === \"object\") {\n        const key = Object.keys(op.insert)[0];\n        if (key == null) return index3;\n        parent.insertAt(index3, key, op.insert[key]);\n        const isInlineEmbed = parent.scroll.query(key, Scope.INLINE) != null;\n        if (isInlineEmbed) {\n          const [leaf] = parent.descendant(LeafBlot$1, index3);\n          const formats = bubbleFormats(leaf);\n          attributes = DeltaExports.AttributeMap.diff(formats, attributes) || {};\n        }\n      }\n    }\n    Object.keys(attributes).forEach((key) => {\n      parent.formatAt(index3, length, key, attributes[key]);\n    });\n    return index3 + length;\n  }, index2);\n}\nconst config$2 = {\n  scope: Scope.BLOCK,\n  whitelist: [\"right\", \"center\", \"justify\"]\n};\nconst AlignAttribute = new Attributor(\"align\", \"align\", config$2);\nconst AlignClass = new ClassAttributor$1(\"align\", \"ql-align\", config$2);\nconst AlignStyle = new StyleAttributor$1(\"align\", \"text-align\", config$2);\nclass ColorAttributor extends StyleAttributor$1 {\n  value(domNode) {\n    let value = super.value(domNode);\n    if (!value.startsWith(\"rgb(\")) return value;\n    value = value.replace(/^[^\\d]+/, \"\").replace(/[^\\d]+$/, \"\");\n    const hex = value.split(\",\").map((component) => `00${parseInt(component, 10).toString(16)}`.slice(-2)).join(\"\");\n    return `#${hex}`;\n  }\n}\nconst ColorClass = new ClassAttributor$1(\"color\", \"ql-color\", {\n  scope: Scope.INLINE\n});\nconst ColorStyle = new ColorAttributor(\"color\", \"color\", {\n  scope: Scope.INLINE\n});\nconst BackgroundClass = new ClassAttributor$1(\"background\", \"ql-bg\", {\n  scope: Scope.INLINE\n});\nconst BackgroundStyle = new ColorAttributor(\"background\", \"background-color\", {\n  scope: Scope.INLINE\n});\nclass CodeBlockContainer extends Container {\n  static create(value) {\n    const domNode = super.create(value);\n    domNode.setAttribute(\"spellcheck\", \"false\");\n    return domNode;\n  }\n  code(index2, length) {\n    return this.children.map((child) => child.length() <= 1 ? \"\" : child.domNode.innerText).join(\"\\n\").slice(index2, index2 + length);\n  }\n  html(index2, length) {\n    return `<pre>\n${escapeText(this.code(index2, length))}\n</pre>`;\n  }\n}\nclass CodeBlock extends Block {\n  static register() {\n    Quill.register(CodeBlockContainer);\n  }\n}\n__publicField(CodeBlock, \"TAB\", \"  \");\nclass Code extends Inline {\n}\nCode.blotName = \"code\";\nCode.tagName = \"CODE\";\nCodeBlock.blotName = \"code-block\";\nCodeBlock.className = \"ql-code-block\";\nCodeBlock.tagName = \"DIV\";\nCodeBlockContainer.blotName = \"code-block-container\";\nCodeBlockContainer.className = \"ql-code-block-container\";\nCodeBlockContainer.tagName = \"DIV\";\nCodeBlockContainer.allowedChildren = [CodeBlock];\nCodeBlock.allowedChildren = [Text$1, Break, Cursor];\nCodeBlock.requiredContainer = CodeBlockContainer;\nconst config$1 = {\n  scope: Scope.BLOCK,\n  whitelist: [\"rtl\"]\n};\nconst DirectionAttribute = new Attributor(\"direction\", \"dir\", config$1);\nconst DirectionClass = new ClassAttributor$1(\"direction\", \"ql-direction\", config$1);\nconst DirectionStyle = new StyleAttributor$1(\"direction\", \"direction\", config$1);\nconst config = {\n  scope: Scope.INLINE,\n  whitelist: [\"serif\", \"monospace\"]\n};\nconst FontClass = new ClassAttributor$1(\"font\", \"ql-font\", config);\nclass FontStyleAttributor extends StyleAttributor$1 {\n  value(node) {\n    return super.value(node).replace(/[\"']/g, \"\");\n  }\n}\nconst FontStyle = new FontStyleAttributor(\"font\", \"font-family\", config);\nconst SizeClass = new ClassAttributor$1(\"size\", \"ql-size\", {\n  scope: Scope.INLINE,\n  whitelist: [\"small\", \"large\", \"huge\"]\n});\nconst SizeStyle = new StyleAttributor$1(\"size\", \"font-size\", {\n  scope: Scope.INLINE,\n  whitelist: [\"10px\", \"18px\", \"32px\"]\n});\nconst debug$2 = namespace(\"quill:keyboard\");\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? \"metaKey\" : \"ctrlKey\";\nclass Keyboard extends Module {\n  static match(evt, binding) {\n    if ([\"altKey\", \"ctrlKey\", \"metaKey\", \"shiftKey\"].some((key) => {\n      return !!binding[key] !== evt[key] && binding[key] !== null;\n    })) {\n      return false;\n    }\n    return binding.key === evt.key || binding.key === evt.which;\n  }\n  constructor(quill, options) {\n    super(quill, options);\n    this.bindings = {};\n    Object.keys(this.options.bindings).forEach((name) => {\n      if (this.options.bindings[name]) {\n        this.addBinding(this.options.bindings[name]);\n      }\n    });\n    this.addBinding({\n      key: \"Enter\",\n      shiftKey: null\n    }, this.handleEnter);\n    this.addBinding({\n      key: \"Enter\",\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null\n    }, () => {\n    });\n    if (/Firefox/i.test(navigator.userAgent)) {\n      this.addBinding({\n        key: \"Backspace\"\n      }, {\n        collapsed: true\n      }, this.handleBackspace);\n      this.addBinding({\n        key: \"Delete\"\n      }, {\n        collapsed: true\n      }, this.handleDelete);\n    } else {\n      this.addBinding({\n        key: \"Backspace\"\n      }, {\n        collapsed: true,\n        prefix: /^.?$/\n      }, this.handleBackspace);\n      this.addBinding({\n        key: \"Delete\"\n      }, {\n        collapsed: true,\n        suffix: /^.?$/\n      }, this.handleDelete);\n    }\n    this.addBinding({\n      key: \"Backspace\"\n    }, {\n      collapsed: false\n    }, this.handleDeleteRange);\n    this.addBinding({\n      key: \"Delete\"\n    }, {\n      collapsed: false\n    }, this.handleDeleteRange);\n    this.addBinding({\n      key: \"Backspace\",\n      altKey: null,\n      ctrlKey: null,\n      metaKey: null,\n      shiftKey: null\n    }, {\n      collapsed: true,\n      offset: 0\n    }, this.handleBackspace);\n    this.listen();\n  }\n  addBinding(keyBinding) {\n    let context2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n    let handler = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n    const binding = normalize$2(keyBinding);\n    if (binding == null) {\n      debug$2.warn(\"Attempted to add invalid keyboard binding\", binding);\n      return;\n    }\n    if (typeof context2 === \"function\") {\n      context2 = {\n        handler: context2\n      };\n    }\n    if (typeof handler === \"function\") {\n      handler = {\n        handler\n      };\n    }\n    const keys2 = Array.isArray(binding.key) ? binding.key : [binding.key];\n    keys2.forEach((key) => {\n      const singleBinding = {\n        ...binding,\n        key,\n        ...context2,\n        ...handler\n      };\n      this.bindings[singleBinding.key] = this.bindings[singleBinding.key] || [];\n      this.bindings[singleBinding.key].push(singleBinding);\n    });\n  }\n  listen() {\n    this.quill.root.addEventListener(\"keydown\", (evt) => {\n      if (evt.defaultPrevented || evt.isComposing) return;\n      const isComposing = evt.keyCode === 229 && (evt.key === \"Enter\" || evt.key === \"Backspace\");\n      if (isComposing) return;\n      const bindings = (this.bindings[evt.key] || []).concat(this.bindings[evt.which] || []);\n      const matches = bindings.filter((binding) => Keyboard.match(evt, binding));\n      if (matches.length === 0) return;\n      const blot = Quill.find(evt.target, true);\n      if (blot && blot.scroll !== this.quill.scroll) return;\n      const range = this.quill.getSelection();\n      if (range == null || !this.quill.hasFocus()) return;\n      const [line, offset] = this.quill.getLine(range.index);\n      const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n      const [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n      const prefixText = leafStart instanceof TextBlot$1 ? leafStart.value().slice(0, offsetStart) : \"\";\n      const suffixText = leafEnd instanceof TextBlot$1 ? leafEnd.value().slice(offsetEnd) : \"\";\n      const curContext = {\n        collapsed: range.length === 0,\n        // @ts-expect-error Fix me later\n        empty: range.length === 0 && line.length() <= 1,\n        format: this.quill.getFormat(range),\n        line,\n        offset,\n        prefix: prefixText,\n        suffix: suffixText,\n        event: evt\n      };\n      const prevented = matches.some((binding) => {\n        if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) {\n          return false;\n        }\n        if (binding.empty != null && binding.empty !== curContext.empty) {\n          return false;\n        }\n        if (binding.offset != null && binding.offset !== curContext.offset) {\n          return false;\n        }\n        if (Array.isArray(binding.format)) {\n          if (binding.format.every((name) => curContext.format[name] == null)) {\n            return false;\n          }\n        } else if (typeof binding.format === \"object\") {\n          if (!Object.keys(binding.format).every((name) => {\n            if (binding.format[name] === true) return curContext.format[name] != null;\n            if (binding.format[name] === false) return curContext.format[name] == null;\n            return isEqual$2(binding.format[name], curContext.format[name]);\n          })) {\n            return false;\n          }\n        }\n        if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\n          return false;\n        }\n        if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\n          return false;\n        }\n        return binding.handler.call(this, range, curContext, binding) !== true;\n      });\n      if (prevented) {\n        evt.preventDefault();\n      }\n    });\n  }\n  handleBackspace(range, context2) {\n    const length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context2.prefix) ? 2 : 1;\n    if (range.index === 0 || this.quill.getLength() <= 1) return;\n    let formats = {};\n    const [line] = this.quill.getLine(range.index);\n    let delta = new Delta().retain(range.index - length).delete(length);\n    if (context2.offset === 0) {\n      const [prev] = this.quill.getLine(range.index - 1);\n      if (prev) {\n        const isPrevLineEmpty = prev.statics.blotName === \"block\" && prev.length() <= 1;\n        if (!isPrevLineEmpty) {\n          const curFormats = line.formats();\n          const prevFormats = this.quill.getFormat(range.index - 1, 1);\n          formats = DeltaExports.AttributeMap.diff(curFormats, prevFormats) || {};\n          if (Object.keys(formats).length > 0) {\n            const formatDelta = new Delta().retain(range.index + line.length() - 2).retain(1, formats);\n            delta = delta.compose(formatDelta);\n          }\n        }\n      }\n    }\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.focus();\n  }\n  handleDelete(range, context2) {\n    const length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context2.suffix) ? 2 : 1;\n    if (range.index >= this.quill.getLength() - length) return;\n    let formats = {};\n    const [line] = this.quill.getLine(range.index);\n    let delta = new Delta().retain(range.index).delete(length);\n    if (context2.offset >= line.length() - 1) {\n      const [next] = this.quill.getLine(range.index + 1);\n      if (next) {\n        const curFormats = line.formats();\n        const nextFormats = this.quill.getFormat(range.index, 1);\n        formats = DeltaExports.AttributeMap.diff(curFormats, nextFormats) || {};\n        if (Object.keys(formats).length > 0) {\n          delta = delta.retain(next.length() - 1).retain(1, formats);\n        }\n      }\n    }\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.focus();\n  }\n  handleDeleteRange(range) {\n    deleteRange({\n      range,\n      quill: this.quill\n    });\n    this.quill.focus();\n  }\n  handleEnter(range, context2) {\n    const lineFormats = Object.keys(context2.format).reduce((formats, format2) => {\n      if (this.quill.scroll.query(format2, Scope.BLOCK) && !Array.isArray(context2.format[format2])) {\n        formats[format2] = context2.format[format2];\n      }\n      return formats;\n    }, {});\n    const delta = new Delta().retain(range.index).delete(range.length).insert(\"\\n\", lineFormats);\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n    this.quill.focus();\n  }\n}\nconst defaultOptions = {\n  bindings: {\n    bold: makeFormatHandler(\"bold\"),\n    italic: makeFormatHandler(\"italic\"),\n    underline: makeFormatHandler(\"underline\"),\n    indent: {\n      // highlight tab or tab at beginning of list, indent or blockquote\n      key: \"Tab\",\n      format: [\"blockquote\", \"indent\", \"list\"],\n      handler(range, context2) {\n        if (context2.collapsed && context2.offset !== 0) return true;\n        this.quill.format(\"indent\", \"+1\", Quill.sources.USER);\n        return false;\n      }\n    },\n    outdent: {\n      key: \"Tab\",\n      shiftKey: true,\n      format: [\"blockquote\", \"indent\", \"list\"],\n      // highlight tab or tab at beginning of list, indent or blockquote\n      handler(range, context2) {\n        if (context2.collapsed && context2.offset !== 0) return true;\n        this.quill.format(\"indent\", \"-1\", Quill.sources.USER);\n        return false;\n      }\n    },\n    \"outdent backspace\": {\n      key: \"Backspace\",\n      collapsed: true,\n      shiftKey: null,\n      metaKey: null,\n      ctrlKey: null,\n      altKey: null,\n      format: [\"indent\", \"list\"],\n      offset: 0,\n      handler(range, context2) {\n        if (context2.format.indent != null) {\n          this.quill.format(\"indent\", \"-1\", Quill.sources.USER);\n        } else if (context2.format.list != null) {\n          this.quill.format(\"list\", false, Quill.sources.USER);\n        }\n      }\n    },\n    \"indent code-block\": makeCodeBlockHandler(true),\n    \"outdent code-block\": makeCodeBlockHandler(false),\n    \"remove tab\": {\n      key: \"Tab\",\n      shiftKey: true,\n      collapsed: true,\n      prefix: /\\t$/,\n      handler(range) {\n        this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n      }\n    },\n    tab: {\n      key: \"Tab\",\n      handler(range, context2) {\n        if (context2.format.table) return true;\n        this.quill.history.cutoff();\n        const delta = new Delta().retain(range.index).delete(range.length).insert(\"\t\");\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        return false;\n      }\n    },\n    \"blockquote empty enter\": {\n      key: \"Enter\",\n      collapsed: true,\n      format: [\"blockquote\"],\n      empty: true,\n      handler() {\n        this.quill.format(\"blockquote\", false, Quill.sources.USER);\n      }\n    },\n    \"list empty enter\": {\n      key: \"Enter\",\n      collapsed: true,\n      format: [\"list\"],\n      empty: true,\n      handler(range, context2) {\n        const formats = {\n          list: false\n        };\n        if (context2.format.indent) {\n          formats.indent = false;\n        }\n        this.quill.formatLine(range.index, range.length, formats, Quill.sources.USER);\n      }\n    },\n    \"checklist enter\": {\n      key: \"Enter\",\n      collapsed: true,\n      format: {\n        list: \"checked\"\n      },\n      handler(range) {\n        const [line, offset] = this.quill.getLine(range.index);\n        const formats = {\n          // @ts-expect-error Fix me later\n          ...line.formats(),\n          list: \"checked\"\n        };\n        const delta = new Delta().retain(range.index).insert(\"\\n\", formats).retain(line.length() - offset - 1).retain(1, {\n          list: \"unchecked\"\n        });\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        this.quill.scrollSelectionIntoView();\n      }\n    },\n    \"header enter\": {\n      key: \"Enter\",\n      collapsed: true,\n      format: [\"header\"],\n      suffix: /^$/,\n      handler(range, context2) {\n        const [line, offset] = this.quill.getLine(range.index);\n        const delta = new Delta().retain(range.index).insert(\"\\n\", context2.format).retain(line.length() - offset - 1).retain(1, {\n          header: null\n        });\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n        this.quill.scrollSelectionIntoView();\n      }\n    },\n    \"table backspace\": {\n      key: \"Backspace\",\n      format: [\"table\"],\n      collapsed: true,\n      offset: 0,\n      handler() {\n      }\n    },\n    \"table delete\": {\n      key: \"Delete\",\n      format: [\"table\"],\n      collapsed: true,\n      suffix: /^$/,\n      handler() {\n      }\n    },\n    \"table enter\": {\n      key: \"Enter\",\n      shiftKey: null,\n      format: [\"table\"],\n      handler(range) {\n        const module2 = this.quill.getModule(\"table\");\n        if (module2) {\n          const [table2, row, cell, offset] = module2.getTable(range);\n          const shift = tableSide(table2, row, cell, offset);\n          if (shift == null) return;\n          let index2 = table2.offset();\n          if (shift < 0) {\n            const delta = new Delta().retain(index2).insert(\"\\n\");\n            this.quill.updateContents(delta, Quill.sources.USER);\n            this.quill.setSelection(range.index + 1, range.length, Quill.sources.SILENT);\n          } else if (shift > 0) {\n            index2 += table2.length();\n            const delta = new Delta().retain(index2).insert(\"\\n\");\n            this.quill.updateContents(delta, Quill.sources.USER);\n            this.quill.setSelection(index2, Quill.sources.USER);\n          }\n        }\n      }\n    },\n    \"table tab\": {\n      key: \"Tab\",\n      shiftKey: null,\n      format: [\"table\"],\n      handler(range, context2) {\n        const {\n          event,\n          line: cell\n        } = context2;\n        const offset = cell.offset(this.quill.scroll);\n        if (event.shiftKey) {\n          this.quill.setSelection(offset - 1, Quill.sources.USER);\n        } else {\n          this.quill.setSelection(offset + cell.length(), Quill.sources.USER);\n        }\n      }\n    },\n    \"list autofill\": {\n      key: \" \",\n      shiftKey: null,\n      collapsed: true,\n      format: {\n        \"code-block\": false,\n        blockquote: false,\n        table: false\n      },\n      prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n      handler(range, context2) {\n        if (this.quill.scroll.query(\"list\") == null) return true;\n        const {\n          length\n        } = context2.prefix;\n        const [line, offset] = this.quill.getLine(range.index);\n        if (offset > length) return true;\n        let value;\n        switch (context2.prefix.trim()) {\n          case \"[]\":\n          case \"[ ]\":\n            value = \"unchecked\";\n            break;\n          case \"[x]\":\n            value = \"checked\";\n            break;\n          case \"-\":\n          case \"*\":\n            value = \"bullet\";\n            break;\n          default:\n            value = \"ordered\";\n        }\n        this.quill.insertText(range.index, \" \", Quill.sources.USER);\n        this.quill.history.cutoff();\n        const delta = new Delta().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, {\n          list: value\n        });\n        this.quill.updateContents(delta, Quill.sources.USER);\n        this.quill.history.cutoff();\n        this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n        return false;\n      }\n    },\n    \"code exit\": {\n      key: \"Enter\",\n      collapsed: true,\n      format: [\"code-block\"],\n      prefix: /^$/,\n      suffix: /^\\s*$/,\n      handler(range) {\n        const [line, offset] = this.quill.getLine(range.index);\n        let numLines = 2;\n        let cur = line;\n        while (cur != null && cur.length() <= 1 && cur.formats()[\"code-block\"]) {\n          cur = cur.prev;\n          numLines -= 1;\n          if (numLines <= 0) {\n            const delta = new Delta().retain(range.index + line.length() - offset - 2).retain(1, {\n              \"code-block\": null\n            }).delete(1);\n            this.quill.updateContents(delta, Quill.sources.USER);\n            this.quill.setSelection(range.index - 1, Quill.sources.SILENT);\n            return false;\n          }\n        }\n        return true;\n      }\n    },\n    \"embed left\": makeEmbedArrowHandler(\"ArrowLeft\", false),\n    \"embed left shift\": makeEmbedArrowHandler(\"ArrowLeft\", true),\n    \"embed right\": makeEmbedArrowHandler(\"ArrowRight\", false),\n    \"embed right shift\": makeEmbedArrowHandler(\"ArrowRight\", true),\n    \"table down\": makeTableArrowHandler(false),\n    \"table up\": makeTableArrowHandler(true)\n  }\n};\nKeyboard.DEFAULTS = defaultOptions;\nfunction makeCodeBlockHandler(indent) {\n  return {\n    key: \"Tab\",\n    shiftKey: !indent,\n    format: {\n      \"code-block\": true\n    },\n    handler(range, _ref) {\n      let {\n        event\n      } = _ref;\n      const CodeBlock2 = this.quill.scroll.query(\"code-block\");\n      const {\n        TAB\n      } = CodeBlock2;\n      if (range.length === 0 && !event.shiftKey) {\n        this.quill.insertText(range.index, TAB, Quill.sources.USER);\n        this.quill.setSelection(range.index + TAB.length, Quill.sources.SILENT);\n        return;\n      }\n      const lines = range.length === 0 ? this.quill.getLines(range.index, 1) : this.quill.getLines(range);\n      let {\n        index: index2,\n        length\n      } = range;\n      lines.forEach((line, i3) => {\n        if (indent) {\n          line.insertAt(0, TAB);\n          if (i3 === 0) {\n            index2 += TAB.length;\n          } else {\n            length += TAB.length;\n          }\n        } else if (line.domNode.textContent.startsWith(TAB)) {\n          line.deleteAt(0, TAB.length);\n          if (i3 === 0) {\n            index2 -= TAB.length;\n          } else {\n            length -= TAB.length;\n          }\n        }\n      });\n      this.quill.update(Quill.sources.USER);\n      this.quill.setSelection(index2, length, Quill.sources.SILENT);\n    }\n  };\n}\nfunction makeEmbedArrowHandler(key, shiftKey) {\n  const where = key === \"ArrowLeft\" ? \"prefix\" : \"suffix\";\n  return {\n    key,\n    shiftKey,\n    altKey: null,\n    [where]: /^$/,\n    handler(range) {\n      let {\n        index: index2\n      } = range;\n      if (key === \"ArrowRight\") {\n        index2 += range.length + 1;\n      }\n      const [leaf] = this.quill.getLeaf(index2);\n      if (!(leaf instanceof EmbedBlot$1)) return true;\n      if (key === \"ArrowLeft\") {\n        if (shiftKey) {\n          this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n        } else {\n          this.quill.setSelection(range.index - 1, Quill.sources.USER);\n        }\n      } else if (shiftKey) {\n        this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n      } else {\n        this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n      }\n      return false;\n    }\n  };\n}\nfunction makeFormatHandler(format2) {\n  return {\n    key: format2[0],\n    shortKey: true,\n    handler(range, context2) {\n      this.quill.format(format2, !context2.format[format2], Quill.sources.USER);\n    }\n  };\n}\nfunction makeTableArrowHandler(up) {\n  return {\n    key: up ? \"ArrowUp\" : \"ArrowDown\",\n    collapsed: true,\n    format: [\"table\"],\n    handler(range, context2) {\n      const key = up ? \"prev\" : \"next\";\n      const cell = context2.line;\n      const targetRow = cell.parent[key];\n      if (targetRow != null) {\n        if (targetRow.statics.blotName === \"table-row\") {\n          let targetCell = targetRow.children.head;\n          let cur = cell;\n          while (cur.prev != null) {\n            cur = cur.prev;\n            targetCell = targetCell.next;\n          }\n          const index2 = targetCell.offset(this.quill.scroll) + Math.min(context2.offset, targetCell.length() - 1);\n          this.quill.setSelection(index2, 0, Quill.sources.USER);\n        }\n      } else {\n        const targetLine = cell.table()[key];\n        if (targetLine != null) {\n          if (up) {\n            this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, Quill.sources.USER);\n          } else {\n            this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, Quill.sources.USER);\n          }\n        }\n      }\n      return false;\n    }\n  };\n}\nfunction normalize$2(binding) {\n  if (typeof binding === \"string\" || typeof binding === \"number\") {\n    binding = {\n      key: binding\n    };\n  } else if (typeof binding === \"object\") {\n    binding = cloneDeep$1(binding);\n  } else {\n    return null;\n  }\n  if (binding.shortKey) {\n    binding[SHORTKEY] = binding.shortKey;\n    delete binding.shortKey;\n  }\n  return binding;\n}\nfunction deleteRange(_ref2) {\n  let {\n    quill,\n    range\n  } = _ref2;\n  const lines = quill.getLines(range);\n  let formats = {};\n  if (lines.length > 1) {\n    const firstFormats = lines[0].formats();\n    const lastFormats = lines[lines.length - 1].formats();\n    formats = DeltaExports.AttributeMap.diff(lastFormats, firstFormats) || {};\n  }\n  quill.deleteText(range, Quill.sources.USER);\n  if (Object.keys(formats).length > 0) {\n    quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n  }\n  quill.setSelection(range.index, Quill.sources.SILENT);\n}\nfunction tableSide(_table, row, cell, offset) {\n  if (row.prev == null && row.next == null) {\n    if (cell.prev == null && cell.next == null) {\n      return offset === 0 ? -1 : 1;\n    }\n    return cell.prev == null ? -1 : 1;\n  }\n  if (row.prev == null) {\n    return -1;\n  }\n  if (row.next == null) {\n    return 1;\n  }\n  return null;\n}\nconst normalWeightRegexp = /font-weight:\\s*normal/;\nconst blockTagNames = [\"P\", \"OL\", \"UL\"];\nconst isBlockElement = (element) => {\n  return element && blockTagNames.includes(element.tagName);\n};\nconst normalizeEmptyLines = (doc) => {\n  Array.from(doc.querySelectorAll(\"br\")).filter((br) => isBlockElement(br.previousElementSibling) && isBlockElement(br.nextElementSibling)).forEach((br) => {\n    var _a3;\n    (_a3 = br.parentNode) == null ? void 0 : _a3.removeChild(br);\n  });\n};\nconst normalizeFontWeight = (doc) => {\n  Array.from(doc.querySelectorAll('b[style*=\"font-weight\"]')).filter((node) => {\n    var _a3;\n    return (_a3 = node.getAttribute(\"style\")) == null ? void 0 : _a3.match(normalWeightRegexp);\n  }).forEach((node) => {\n    var _a3;\n    const fragment = doc.createDocumentFragment();\n    fragment.append(...node.childNodes);\n    (_a3 = node.parentNode) == null ? void 0 : _a3.replaceChild(fragment, node);\n  });\n};\nfunction normalize$1(doc) {\n  if (doc.querySelector('[id^=\"docs-internal-guid-\"]')) {\n    normalizeFontWeight(doc);\n    normalizeEmptyLines(doc);\n  }\n}\nconst ignoreRegexp = /\\bmso-list:[^;]*ignore/i;\nconst idRegexp = /\\bmso-list:[^;]*\\bl(\\d+)/i;\nconst indentRegexp = /\\bmso-list:[^;]*\\blevel(\\d+)/i;\nconst parseListItem = (element, html) => {\n  const style = element.getAttribute(\"style\");\n  const idMatch = style == null ? void 0 : style.match(idRegexp);\n  if (!idMatch) {\n    return null;\n  }\n  const id2 = Number(idMatch[1]);\n  const indentMatch = style == null ? void 0 : style.match(indentRegexp);\n  const indent = indentMatch ? Number(indentMatch[1]) : 1;\n  const typeRegexp = new RegExp(`@list l${id2}:level${indent}\\\\s*\\\\{[^\\\\}]*mso-level-number-format:\\\\s*([\\\\w-]+)`, \"i\");\n  const typeMatch = html.match(typeRegexp);\n  const type = typeMatch && typeMatch[1] === \"bullet\" ? \"bullet\" : \"ordered\";\n  return {\n    id: id2,\n    indent,\n    type,\n    element\n  };\n};\nconst normalizeListItem = (doc) => {\n  var _a3, _b;\n  const msoList = Array.from(doc.querySelectorAll(\"[style*=mso-list]\"));\n  const ignored = [];\n  const others = [];\n  msoList.forEach((node) => {\n    const shouldIgnore = (node.getAttribute(\"style\") || \"\").match(ignoreRegexp);\n    if (shouldIgnore) {\n      ignored.push(node);\n    } else {\n      others.push(node);\n    }\n  });\n  ignored.forEach((node) => {\n    var _a4;\n    return (_a4 = node.parentNode) == null ? void 0 : _a4.removeChild(node);\n  });\n  const html = doc.documentElement.innerHTML;\n  const listItems = others.map((element) => parseListItem(element, html)).filter((parsed) => parsed);\n  while (listItems.length) {\n    const childListItems = [];\n    let current = listItems.shift();\n    while (current) {\n      childListItems.push(current);\n      current = listItems.length && ((_a3 = listItems[0]) == null ? void 0 : _a3.element) === current.element.nextElementSibling && // Different id means the next item doesn't belong to this group.\n      listItems[0].id === current.id ? listItems.shift() : null;\n    }\n    const ul = document.createElement(\"ul\");\n    childListItems.forEach((listItem) => {\n      const li = document.createElement(\"li\");\n      li.setAttribute(\"data-list\", listItem.type);\n      if (listItem.indent > 1) {\n        li.setAttribute(\"class\", `ql-indent-${listItem.indent - 1}`);\n      }\n      li.innerHTML = listItem.element.innerHTML;\n      ul.appendChild(li);\n    });\n    const element = (_b = childListItems[0]) == null ? void 0 : _b.element;\n    const {\n      parentNode\n    } = element ?? {};\n    if (element) {\n      parentNode == null ? void 0 : parentNode.replaceChild(ul, element);\n    }\n    childListItems.slice(1).forEach((_ref) => {\n      let {\n        element: e2\n      } = _ref;\n      parentNode == null ? void 0 : parentNode.removeChild(e2);\n    });\n  }\n};\nfunction normalize2(doc) {\n  if (doc.documentElement.getAttribute(\"xmlns:w\") === \"urn:schemas-microsoft-com:office:word\") {\n    normalizeListItem(doc);\n  }\n}\nconst NORMALIZERS = [normalize2, normalize$1];\nconst normalizeExternalHTML = (doc) => {\n  if (doc.documentElement) {\n    NORMALIZERS.forEach((normalize3) => {\n      normalize3(doc);\n    });\n  }\n};\nconst debug$1 = namespace(\"quill:clipboard\");\nconst CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], [\"br\", matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], [\"li\", matchIndent], [\"ol, ul\", matchList], [\"pre\", matchCodeBlock], [\"tr\", matchTable], [\"b\", createMatchAlias(\"bold\")], [\"i\", createMatchAlias(\"italic\")], [\"strike\", createMatchAlias(\"strike\")], [\"style\", matchIgnore]];\nconst ATTRIBUTE_ATTRIBUTORS = [AlignAttribute, DirectionAttribute].reduce((memo, attr) => {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\nconst STYLE_ATTRIBUTORS = [AlignStyle, BackgroundStyle, ColorStyle, DirectionStyle, FontStyle, SizeStyle].reduce((memo, attr) => {\n  memo[attr.keyName] = attr;\n  return memo;\n}, {});\nclass Clipboard extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    this.quill.root.addEventListener(\"copy\", (e2) => this.onCaptureCopy(e2, false));\n    this.quill.root.addEventListener(\"cut\", (e2) => this.onCaptureCopy(e2, true));\n    this.quill.root.addEventListener(\"paste\", this.onCapturePaste.bind(this));\n    this.matchers = [];\n    CLIPBOARD_CONFIG.concat(this.options.matchers ?? []).forEach((_ref) => {\n      let [selector, matcher] = _ref;\n      this.addMatcher(selector, matcher);\n    });\n  }\n  addMatcher(selector, matcher) {\n    this.matchers.push([selector, matcher]);\n  }\n  convert(_ref2) {\n    let {\n      html,\n      text: text2\n    } = _ref2;\n    let formats = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n    if (formats[CodeBlock.blotName]) {\n      return new Delta().insert(text2 || \"\", {\n        [CodeBlock.blotName]: formats[CodeBlock.blotName]\n      });\n    }\n    if (!html) {\n      return new Delta().insert(text2 || \"\", formats);\n    }\n    const delta = this.convertHTML(html);\n    if (deltaEndsWith(delta, \"\\n\") && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\n      return delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n    }\n    return delta;\n  }\n  normalizeHTML(doc) {\n    normalizeExternalHTML(doc);\n  }\n  convertHTML(html) {\n    const doc = new DOMParser().parseFromString(html, \"text/html\");\n    this.normalizeHTML(doc);\n    const container = doc.body;\n    const nodeMatches = /* @__PURE__ */ new WeakMap();\n    const [elementMatchers, textMatchers] = this.prepareMatching(container, nodeMatches);\n    return traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches);\n  }\n  dangerouslyPasteHTML(index2, html) {\n    let source = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : Quill.sources.API;\n    if (typeof index2 === \"string\") {\n      const delta = this.convert({\n        html: index2,\n        text: \"\"\n      });\n      this.quill.setContents(delta, html);\n      this.quill.setSelection(0, Quill.sources.SILENT);\n    } else {\n      const paste = this.convert({\n        html,\n        text: \"\"\n      });\n      this.quill.updateContents(new Delta().retain(index2).concat(paste), source);\n      this.quill.setSelection(index2 + paste.length(), Quill.sources.SILENT);\n    }\n  }\n  onCaptureCopy(e2) {\n    var _a3, _b;\n    let isCut = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    if (e2.defaultPrevented) return;\n    e2.preventDefault();\n    const [range] = this.quill.selection.getRange();\n    if (range == null) return;\n    const {\n      html,\n      text: text2\n    } = this.onCopy(range, isCut);\n    (_a3 = e2.clipboardData) == null ? void 0 : _a3.setData(\"text/plain\", text2);\n    (_b = e2.clipboardData) == null ? void 0 : _b.setData(\"text/html\", html);\n    if (isCut) {\n      deleteRange({\n        range,\n        quill: this.quill\n      });\n    }\n  }\n  /*\n   * https://www.iana.org/assignments/media-types/text/uri-list\n   */\n  normalizeURIList(urlList) {\n    return urlList.split(/\\r?\\n/).filter((url2) => url2[0] !== \"#\").join(\"\\n\");\n  }\n  onCapturePaste(e2) {\n    var _a3, _b, _c, _d, _e;\n    if (e2.defaultPrevented || !this.quill.isEnabled()) return;\n    e2.preventDefault();\n    const range = this.quill.getSelection(true);\n    if (range == null) return;\n    const html = (_a3 = e2.clipboardData) == null ? void 0 : _a3.getData(\"text/html\");\n    let text2 = (_b = e2.clipboardData) == null ? void 0 : _b.getData(\"text/plain\");\n    if (!html && !text2) {\n      const urlList = (_c = e2.clipboardData) == null ? void 0 : _c.getData(\"text/uri-list\");\n      if (urlList) {\n        text2 = this.normalizeURIList(urlList);\n      }\n    }\n    const files = Array.from(((_d = e2.clipboardData) == null ? void 0 : _d.files) || []);\n    if (!html && files.length > 0) {\n      this.quill.uploader.upload(range, files);\n      return;\n    }\n    if (html && files.length > 0) {\n      const doc = new DOMParser().parseFromString(html, \"text/html\");\n      if (doc.body.childElementCount === 1 && ((_e = doc.body.firstElementChild) == null ? void 0 : _e.tagName) === \"IMG\") {\n        this.quill.uploader.upload(range, files);\n        return;\n      }\n    }\n    this.onPaste(range, {\n      html,\n      text: text2\n    });\n  }\n  onCopy(range) {\n    const text2 = this.quill.getText(range);\n    const html = this.quill.getSemanticHTML(range);\n    return {\n      html,\n      text: text2\n    };\n  }\n  onPaste(range, _ref3) {\n    let {\n      text: text2,\n      html\n    } = _ref3;\n    const formats = this.quill.getFormat(range.index);\n    const pastedDelta = this.convert({\n      text: text2,\n      html\n    }, formats);\n    debug$1.log(\"onPaste\", pastedDelta, {\n      text: text2,\n      html\n    });\n    const delta = new Delta().retain(range.index).delete(range.length).concat(pastedDelta);\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n    this.quill.scrollSelectionIntoView();\n  }\n  prepareMatching(container, nodeMatches) {\n    const elementMatchers = [];\n    const textMatchers = [];\n    this.matchers.forEach((pair) => {\n      const [selector, matcher] = pair;\n      switch (selector) {\n        case Node.TEXT_NODE:\n          textMatchers.push(matcher);\n          break;\n        case Node.ELEMENT_NODE:\n          elementMatchers.push(matcher);\n          break;\n        default:\n          Array.from(container.querySelectorAll(selector)).forEach((node) => {\n            if (nodeMatches.has(node)) {\n              const matches = nodeMatches.get(node);\n              matches == null ? void 0 : matches.push(matcher);\n            } else {\n              nodeMatches.set(node, [matcher]);\n            }\n          });\n          break;\n      }\n    });\n    return [elementMatchers, textMatchers];\n  }\n}\n__publicField(Clipboard, \"DEFAULTS\", {\n  matchers: []\n});\nfunction applyFormat(delta, format2, value, scroll) {\n  if (!scroll.query(format2)) {\n    return delta;\n  }\n  return delta.reduce((newDelta, op) => {\n    if (!op.insert) return newDelta;\n    if (op.attributes && op.attributes[format2]) {\n      return newDelta.push(op);\n    }\n    const formats = value ? {\n      [format2]: value\n    } : {};\n    return newDelta.insert(op.insert, {\n      ...formats,\n      ...op.attributes\n    });\n  }, new Delta());\n}\nfunction deltaEndsWith(delta, text2) {\n  let endText = \"\";\n  for (let i3 = delta.ops.length - 1; i3 >= 0 && endText.length < text2.length; --i3) {\n    const op = delta.ops[i3];\n    if (typeof op.insert !== \"string\") break;\n    endText = op.insert + endText;\n  }\n  return endText.slice(-1 * text2.length) === text2;\n}\nfunction isLine(node, scroll) {\n  if (!(node instanceof Element)) return false;\n  const match3 = scroll.query(node);\n  if (match3 && match3.prototype instanceof EmbedBlot$1) return false;\n  return [\"address\", \"article\", \"blockquote\", \"canvas\", \"dd\", \"div\", \"dl\", \"dt\", \"fieldset\", \"figcaption\", \"figure\", \"footer\", \"form\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\", \"header\", \"iframe\", \"li\", \"main\", \"nav\", \"ol\", \"output\", \"p\", \"pre\", \"section\", \"table\", \"td\", \"tr\", \"ul\", \"video\"].includes(node.tagName.toLowerCase());\n}\nfunction isBetweenInlineElements(node, scroll) {\n  return node.previousElementSibling && node.nextElementSibling && !isLine(node.previousElementSibling, scroll) && !isLine(node.nextElementSibling, scroll);\n}\nconst preNodes = /* @__PURE__ */ new WeakMap();\nfunction isPre(node) {\n  if (node == null) return false;\n  if (!preNodes.has(node)) {\n    if (node.tagName === \"PRE\") {\n      preNodes.set(node, true);\n    } else {\n      preNodes.set(node, isPre(node.parentNode));\n    }\n  }\n  return preNodes.get(node);\n}\nfunction traverse(scroll, node, elementMatchers, textMatchers, nodeMatches) {\n  if (node.nodeType === node.TEXT_NODE) {\n    return textMatchers.reduce((delta, matcher) => {\n      return matcher(node, delta, scroll);\n    }, new Delta());\n  }\n  if (node.nodeType === node.ELEMENT_NODE) {\n    return Array.from(node.childNodes || []).reduce((delta, childNode) => {\n      let childrenDelta = traverse(scroll, childNode, elementMatchers, textMatchers, nodeMatches);\n      if (childNode.nodeType === node.ELEMENT_NODE) {\n        childrenDelta = elementMatchers.reduce((reducedDelta, matcher) => {\n          return matcher(childNode, reducedDelta, scroll);\n        }, childrenDelta);\n        childrenDelta = (nodeMatches.get(childNode) || []).reduce((reducedDelta, matcher) => {\n          return matcher(childNode, reducedDelta, scroll);\n        }, childrenDelta);\n      }\n      return delta.concat(childrenDelta);\n    }, new Delta());\n  }\n  return new Delta();\n}\nfunction createMatchAlias(format2) {\n  return (_node, delta, scroll) => {\n    return applyFormat(delta, format2, true, scroll);\n  };\n}\nfunction matchAttributor(node, delta, scroll) {\n  const attributes = Attributor.keys(node);\n  const classes = ClassAttributor$1.keys(node);\n  const styles = StyleAttributor$1.keys(node);\n  const formats = {};\n  attributes.concat(classes).concat(styles).forEach((name) => {\n    let attr = scroll.query(name, Scope.ATTRIBUTE);\n    if (attr != null) {\n      formats[attr.attrName] = attr.value(node);\n      if (formats[attr.attrName]) return;\n    }\n    attr = ATTRIBUTE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      formats[attr.attrName] = attr.value(node) || void 0;\n    }\n    attr = STYLE_ATTRIBUTORS[name];\n    if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n      attr = STYLE_ATTRIBUTORS[name];\n      formats[attr.attrName] = attr.value(node) || void 0;\n    }\n  });\n  return Object.entries(formats).reduce((newDelta, _ref4) => {\n    let [name, value] = _ref4;\n    return applyFormat(newDelta, name, value, scroll);\n  }, delta);\n}\nfunction matchBlot(node, delta, scroll) {\n  const match3 = scroll.query(node);\n  if (match3 == null) return delta;\n  if (match3.prototype instanceof EmbedBlot$1) {\n    const embed = {};\n    const value = match3.value(node);\n    if (value != null) {\n      embed[match3.blotName] = value;\n      return new Delta().insert(embed, match3.formats(node, scroll));\n    }\n  } else {\n    if (match3.prototype instanceof BlockBlot$1 && !deltaEndsWith(delta, \"\\n\")) {\n      delta.insert(\"\\n\");\n    }\n    if (\"blotName\" in match3 && \"formats\" in match3 && typeof match3.formats === \"function\") {\n      return applyFormat(delta, match3.blotName, match3.formats(node, scroll), scroll);\n    }\n  }\n  return delta;\n}\nfunction matchBreak(node, delta) {\n  if (!deltaEndsWith(delta, \"\\n\")) {\n    delta.insert(\"\\n\");\n  }\n  return delta;\n}\nfunction matchCodeBlock(node, delta, scroll) {\n  const match3 = scroll.query(\"code-block\");\n  const language = match3 && \"formats\" in match3 && typeof match3.formats === \"function\" ? match3.formats(node, scroll) : true;\n  return applyFormat(delta, \"code-block\", language, scroll);\n}\nfunction matchIgnore() {\n  return new Delta();\n}\nfunction matchIndent(node, delta, scroll) {\n  const match3 = scroll.query(node);\n  if (match3 == null || // @ts-expect-error\n  match3.blotName !== \"list\" || !deltaEndsWith(delta, \"\\n\")) {\n    return delta;\n  }\n  let indent = -1;\n  let parent = node.parentNode;\n  while (parent != null) {\n    if ([\"OL\", \"UL\"].includes(parent.tagName)) {\n      indent += 1;\n    }\n    parent = parent.parentNode;\n  }\n  if (indent <= 0) return delta;\n  return delta.reduce((composed, op) => {\n    if (!op.insert) return composed;\n    if (op.attributes && typeof op.attributes.indent === \"number\") {\n      return composed.push(op);\n    }\n    return composed.insert(op.insert, {\n      indent,\n      ...op.attributes || {}\n    });\n  }, new Delta());\n}\nfunction matchList(node, delta, scroll) {\n  const element = node;\n  let list2 = element.tagName === \"OL\" ? \"ordered\" : \"bullet\";\n  const checkedAttr = element.getAttribute(\"data-checked\");\n  if (checkedAttr) {\n    list2 = checkedAttr === \"true\" ? \"checked\" : \"unchecked\";\n  }\n  return applyFormat(delta, \"list\", list2, scroll);\n}\nfunction matchNewline(node, delta, scroll) {\n  if (!deltaEndsWith(delta, \"\\n\")) {\n    if (isLine(node, scroll) && (node.childNodes.length > 0 || node instanceof HTMLParagraphElement)) {\n      return delta.insert(\"\\n\");\n    }\n    if (delta.length() > 0 && node.nextSibling) {\n      let nextSibling = node.nextSibling;\n      while (nextSibling != null) {\n        if (isLine(nextSibling, scroll)) {\n          return delta.insert(\"\\n\");\n        }\n        const match3 = scroll.query(nextSibling);\n        if (match3 && match3.prototype instanceof BlockEmbed) {\n          return delta.insert(\"\\n\");\n        }\n        nextSibling = nextSibling.firstChild;\n      }\n    }\n  }\n  return delta;\n}\nfunction matchStyles(node, delta, scroll) {\n  var _a3;\n  const formats = {};\n  const style = node.style || {};\n  if (style.fontStyle === \"italic\") {\n    formats.italic = true;\n  }\n  if (style.textDecoration === \"underline\") {\n    formats.underline = true;\n  }\n  if (style.textDecoration === \"line-through\") {\n    formats.strike = true;\n  }\n  if (((_a3 = style.fontWeight) == null ? void 0 : _a3.startsWith(\"bold\")) || // @ts-expect-error Fix me later\n  parseInt(style.fontWeight, 10) >= 700) {\n    formats.bold = true;\n  }\n  delta = Object.entries(formats).reduce((newDelta, _ref5) => {\n    let [name, value] = _ref5;\n    return applyFormat(newDelta, name, value, scroll);\n  }, delta);\n  if (parseFloat(style.textIndent || 0) > 0) {\n    return new Delta().insert(\"\t\").concat(delta);\n  }\n  return delta;\n}\nfunction matchTable(node, delta, scroll) {\n  var _a3, _b;\n  const table2 = ((_a3 = node.parentElement) == null ? void 0 : _a3.tagName) === \"TABLE\" ? node.parentElement : (_b = node.parentElement) == null ? void 0 : _b.parentElement;\n  if (table2 != null) {\n    const rows = Array.from(table2.querySelectorAll(\"tr\"));\n    const row = rows.indexOf(node) + 1;\n    return applyFormat(delta, \"table\", row, scroll);\n  }\n  return delta;\n}\nfunction matchText(node, delta, scroll) {\n  var _a3;\n  let text2 = node.data;\n  if (((_a3 = node.parentElement) == null ? void 0 : _a3.tagName) === \"O:P\") {\n    return delta.insert(text2.trim());\n  }\n  if (!isPre(node)) {\n    if (text2.trim().length === 0 && text2.includes(\"\\n\") && !isBetweenInlineElements(node, scroll)) {\n      return delta;\n    }\n    text2 = text2.replace(/[^\\S\\u00a0]/g, \" \");\n    text2 = text2.replace(/ {2,}/g, \" \");\n    if (node.previousSibling == null && node.parentElement != null && isLine(node.parentElement, scroll) || node.previousSibling instanceof Element && isLine(node.previousSibling, scroll)) {\n      text2 = text2.replace(/^ /, \"\");\n    }\n    if (node.nextSibling == null && node.parentElement != null && isLine(node.parentElement, scroll) || node.nextSibling instanceof Element && isLine(node.nextSibling, scroll)) {\n      text2 = text2.replace(/ $/, \"\");\n    }\n    text2 = text2.replaceAll(\" \", \" \");\n  }\n  return delta.insert(text2);\n}\nclass History extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    __publicField(this, \"lastRecorded\", 0);\n    __publicField(this, \"ignoreChange\", false);\n    __publicField(this, \"stack\", {\n      undo: [],\n      redo: []\n    });\n    __publicField(this, \"currentRange\", null);\n    this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, value, oldValue, source) => {\n      if (eventName === Quill.events.SELECTION_CHANGE) {\n        if (value && source !== Quill.sources.SILENT) {\n          this.currentRange = value;\n        }\n      } else if (eventName === Quill.events.TEXT_CHANGE) {\n        if (!this.ignoreChange) {\n          if (!this.options.userOnly || source === Quill.sources.USER) {\n            this.record(value, oldValue);\n          } else {\n            this.transform(value);\n          }\n        }\n        this.currentRange = transformRange(this.currentRange, value);\n      }\n    });\n    this.quill.keyboard.addBinding({\n      key: \"z\",\n      shortKey: true\n    }, this.undo.bind(this));\n    this.quill.keyboard.addBinding({\n      key: [\"z\", \"Z\"],\n      shortKey: true,\n      shiftKey: true\n    }, this.redo.bind(this));\n    if (/Win/i.test(navigator.platform)) {\n      this.quill.keyboard.addBinding({\n        key: \"y\",\n        shortKey: true\n      }, this.redo.bind(this));\n    }\n    this.quill.root.addEventListener(\"beforeinput\", (event) => {\n      if (event.inputType === \"historyUndo\") {\n        this.undo();\n        event.preventDefault();\n      } else if (event.inputType === \"historyRedo\") {\n        this.redo();\n        event.preventDefault();\n      }\n    });\n  }\n  change(source, dest) {\n    if (this.stack[source].length === 0) return;\n    const item = this.stack[source].pop();\n    if (!item) return;\n    const base2 = this.quill.getContents();\n    const inverseDelta = item.delta.invert(base2);\n    this.stack[dest].push({\n      delta: inverseDelta,\n      range: transformRange(item.range, inverseDelta)\n    });\n    this.lastRecorded = 0;\n    this.ignoreChange = true;\n    this.quill.updateContents(item.delta, Quill.sources.USER);\n    this.ignoreChange = false;\n    this.restoreSelection(item);\n  }\n  clear() {\n    this.stack = {\n      undo: [],\n      redo: []\n    };\n  }\n  cutoff() {\n    this.lastRecorded = 0;\n  }\n  record(changeDelta, oldDelta) {\n    if (changeDelta.ops.length === 0) return;\n    this.stack.redo = [];\n    let undoDelta = changeDelta.invert(oldDelta);\n    let undoRange = this.currentRange;\n    const timestamp = Date.now();\n    if (\n      // @ts-expect-error Fix me later\n      this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0\n    ) {\n      const item = this.stack.undo.pop();\n      if (item) {\n        undoDelta = undoDelta.compose(item.delta);\n        undoRange = item.range;\n      }\n    } else {\n      this.lastRecorded = timestamp;\n    }\n    if (undoDelta.length() === 0) return;\n    this.stack.undo.push({\n      delta: undoDelta,\n      range: undoRange\n    });\n    if (this.stack.undo.length > this.options.maxStack) {\n      this.stack.undo.shift();\n    }\n  }\n  redo() {\n    this.change(\"redo\", \"undo\");\n  }\n  transform(delta) {\n    transformStack(this.stack.undo, delta);\n    transformStack(this.stack.redo, delta);\n  }\n  undo() {\n    this.change(\"undo\", \"redo\");\n  }\n  restoreSelection(stackItem) {\n    if (stackItem.range) {\n      this.quill.setSelection(stackItem.range, Quill.sources.USER);\n    } else {\n      const index2 = getLastChangeIndex(this.quill.scroll, stackItem.delta);\n      this.quill.setSelection(index2, Quill.sources.USER);\n    }\n  }\n}\n__publicField(History, \"DEFAULTS\", {\n  delay: 1e3,\n  maxStack: 100,\n  userOnly: false\n});\nfunction transformStack(stack, delta) {\n  let remoteDelta = delta;\n  for (let i3 = stack.length - 1; i3 >= 0; i3 -= 1) {\n    const oldItem = stack[i3];\n    stack[i3] = {\n      delta: remoteDelta.transform(oldItem.delta, true),\n      range: oldItem.range && transformRange(oldItem.range, remoteDelta)\n    };\n    remoteDelta = oldItem.delta.transform(remoteDelta);\n    if (stack[i3].delta.length() === 0) {\n      stack.splice(i3, 1);\n    }\n  }\n}\nfunction endsWithNewlineChange(scroll, delta) {\n  const lastOp = delta.ops[delta.ops.length - 1];\n  if (lastOp == null) return false;\n  if (lastOp.insert != null) {\n    return typeof lastOp.insert === \"string\" && lastOp.insert.endsWith(\"\\n\");\n  }\n  if (lastOp.attributes != null) {\n    return Object.keys(lastOp.attributes).some((attr) => {\n      return scroll.query(attr, Scope.BLOCK) != null;\n    });\n  }\n  return false;\n}\nfunction getLastChangeIndex(scroll, delta) {\n  const deleteLength = delta.reduce((length, op) => {\n    return length + (op.delete || 0);\n  }, 0);\n  let changeIndex = delta.length() - deleteLength;\n  if (endsWithNewlineChange(scroll, delta)) {\n    changeIndex -= 1;\n  }\n  return changeIndex;\n}\nfunction transformRange(range, delta) {\n  if (!range) return range;\n  const start = delta.transformPosition(range.index);\n  const end = delta.transformPosition(range.index + range.length);\n  return {\n    index: start,\n    length: end - start\n  };\n}\nclass Uploader extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    quill.root.addEventListener(\"drop\", (e2) => {\n      var _a3;\n      e2.preventDefault();\n      let native = null;\n      if (document.caretRangeFromPoint) {\n        native = document.caretRangeFromPoint(e2.clientX, e2.clientY);\n      } else if (document.caretPositionFromPoint) {\n        const position = document.caretPositionFromPoint(e2.clientX, e2.clientY);\n        native = document.createRange();\n        native.setStart(position.offsetNode, position.offset);\n        native.setEnd(position.offsetNode, position.offset);\n      }\n      const normalized = native && quill.selection.normalizeNative(native);\n      if (normalized) {\n        const range = quill.selection.normalizedToRange(normalized);\n        if ((_a3 = e2.dataTransfer) == null ? void 0 : _a3.files) {\n          this.upload(range, e2.dataTransfer.files);\n        }\n      }\n    });\n  }\n  upload(range, files) {\n    const uploads = [];\n    Array.from(files).forEach((file) => {\n      var _a3;\n      if (file && ((_a3 = this.options.mimetypes) == null ? void 0 : _a3.includes(file.type))) {\n        uploads.push(file);\n      }\n    });\n    if (uploads.length > 0) {\n      this.options.handler.call(this, range, uploads);\n    }\n  }\n}\nUploader.DEFAULTS = {\n  mimetypes: [\"image/png\", \"image/jpeg\"],\n  handler(range, files) {\n    if (!this.quill.scroll.query(\"image\")) {\n      return;\n    }\n    const promises = files.map((file) => {\n      return new Promise((resolve2) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n          resolve2(reader.result);\n        };\n        reader.readAsDataURL(file);\n      });\n    });\n    Promise.all(promises).then((images) => {\n      const update = images.reduce((delta, image2) => {\n        return delta.insert({\n          image: image2\n        });\n      }, new Delta().retain(range.index).delete(range.length));\n      this.quill.updateContents(update, Emitter.sources.USER);\n      this.quill.setSelection(range.index + images.length, Emitter.sources.SILENT);\n    });\n  }\n};\nconst INSERT_TYPES = [\"insertText\", \"insertReplacementText\"];\nclass Input extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    quill.root.addEventListener(\"beforeinput\", (event) => {\n      this.handleBeforeInput(event);\n    });\n    if (!/Android/i.test(navigator.userAgent)) {\n      quill.on(Quill.events.COMPOSITION_BEFORE_START, () => {\n        this.handleCompositionStart();\n      });\n    }\n  }\n  deleteRange(range) {\n    deleteRange({\n      range,\n      quill: this.quill\n    });\n  }\n  replaceText(range) {\n    let text2 = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"\";\n    if (range.length === 0) return false;\n    if (text2) {\n      const formats = this.quill.getFormat(range.index, 1);\n      this.deleteRange(range);\n      this.quill.updateContents(new Delta().retain(range.index).insert(text2, formats), Quill.sources.USER);\n    } else {\n      this.deleteRange(range);\n    }\n    this.quill.setSelection(range.index + text2.length, 0, Quill.sources.SILENT);\n    return true;\n  }\n  handleBeforeInput(event) {\n    if (this.quill.composition.isComposing || event.defaultPrevented || !INSERT_TYPES.includes(event.inputType)) {\n      return;\n    }\n    const staticRange = event.getTargetRanges ? event.getTargetRanges()[0] : null;\n    if (!staticRange || staticRange.collapsed === true) {\n      return;\n    }\n    const text2 = getPlainTextFromInputEvent(event);\n    if (text2 == null) {\n      return;\n    }\n    const normalized = this.quill.selection.normalizeNative(staticRange);\n    const range = normalized ? this.quill.selection.normalizedToRange(normalized) : null;\n    if (range && this.replaceText(range, text2)) {\n      event.preventDefault();\n    }\n  }\n  handleCompositionStart() {\n    const range = this.quill.getSelection();\n    if (range) {\n      this.replaceText(range);\n    }\n  }\n}\nfunction getPlainTextFromInputEvent(event) {\n  var _a3;\n  if (typeof event.data === \"string\") {\n    return event.data;\n  }\n  if ((_a3 = event.dataTransfer) == null ? void 0 : _a3.types.includes(\"text/plain\")) {\n    return event.dataTransfer.getData(\"text/plain\");\n  }\n  return null;\n}\nconst isMac = /Mac/i.test(navigator.platform);\nconst TTL_FOR_VALID_SELECTION_CHANGE = 100;\nconst canMoveCaretBeforeUINode = (event) => {\n  if (event.key === \"ArrowLeft\" || event.key === \"ArrowRight\" || // RTL scripts or moving from the end of the previous line\n  event.key === \"ArrowUp\" || event.key === \"ArrowDown\" || event.key === \"Home\") {\n    return true;\n  }\n  if (isMac && event.key === \"a\" && event.ctrlKey === true) {\n    return true;\n  }\n  return false;\n};\nclass UINode extends Module {\n  constructor(quill, options) {\n    super(quill, options);\n    __publicField(this, \"isListening\", false);\n    __publicField(this, \"selectionChangeDeadline\", 0);\n    this.handleArrowKeys();\n    this.handleNavigationShortcuts();\n  }\n  handleArrowKeys() {\n    this.quill.keyboard.addBinding({\n      key: [\"ArrowLeft\", \"ArrowRight\"],\n      offset: 0,\n      shiftKey: null,\n      handler(range, _ref) {\n        let {\n          line,\n          event\n        } = _ref;\n        if (!(line instanceof ParentBlot$1) || !line.uiNode) {\n          return true;\n        }\n        const isRTL = getComputedStyle(line.domNode)[\"direction\"] === \"rtl\";\n        if (isRTL && event.key !== \"ArrowRight\" || !isRTL && event.key !== \"ArrowLeft\") {\n          return true;\n        }\n        this.quill.setSelection(range.index - 1, range.length + (event.shiftKey ? 1 : 0), Quill.sources.USER);\n        return false;\n      }\n    });\n  }\n  handleNavigationShortcuts() {\n    this.quill.root.addEventListener(\"keydown\", (event) => {\n      if (!event.defaultPrevented && canMoveCaretBeforeUINode(event)) {\n        this.ensureListeningToSelectionChange();\n      }\n    });\n  }\n  /**\n   * We only listen to the `selectionchange` event when\n   * there is an intention of moving the caret to the beginning using shortcuts.\n   * This is primarily implemented to prevent infinite loops, as we are changing\n   * the selection within the handler of a `selectionchange` event.\n   */\n  ensureListeningToSelectionChange() {\n    this.selectionChangeDeadline = Date.now() + TTL_FOR_VALID_SELECTION_CHANGE;\n    if (this.isListening) return;\n    this.isListening = true;\n    const listener = () => {\n      this.isListening = false;\n      if (Date.now() <= this.selectionChangeDeadline) {\n        this.handleSelectionChange();\n      }\n    };\n    document.addEventListener(\"selectionchange\", listener, {\n      once: true\n    });\n  }\n  handleSelectionChange() {\n    const selection = document.getSelection();\n    if (!selection) return;\n    const range = selection.getRangeAt(0);\n    if (range.collapsed !== true || range.startOffset !== 0) return;\n    const line = this.quill.scroll.find(range.startContainer);\n    if (!(line instanceof ParentBlot$1) || !line.uiNode) return;\n    const newRange = document.createRange();\n    newRange.setStartAfter(line.uiNode);\n    newRange.setEndAfter(line.uiNode);\n    selection.removeAllRanges();\n    selection.addRange(newRange);\n  }\n}\nQuill.register({\n  \"blots/block\": Block,\n  \"blots/block/embed\": BlockEmbed,\n  \"blots/break\": Break,\n  \"blots/container\": Container,\n  \"blots/cursor\": Cursor,\n  \"blots/embed\": Embed,\n  \"blots/inline\": Inline,\n  \"blots/scroll\": Scroll,\n  \"blots/text\": Text$1,\n  \"modules/clipboard\": Clipboard,\n  \"modules/history\": History,\n  \"modules/keyboard\": Keyboard,\n  \"modules/uploader\": Uploader,\n  \"modules/input\": Input,\n  \"modules/uiNode\": UINode\n});\nclass IndentAttributor extends ClassAttributor$1 {\n  add(node, value) {\n    let normalizedValue = 0;\n    if (value === \"+1\" || value === \"-1\") {\n      const indent = this.value(node) || 0;\n      normalizedValue = value === \"+1\" ? indent + 1 : indent - 1;\n    } else if (typeof value === \"number\") {\n      normalizedValue = value;\n    }\n    if (normalizedValue === 0) {\n      this.remove(node);\n      return true;\n    }\n    return super.add(node, normalizedValue.toString());\n  }\n  canAdd(node, value) {\n    return super.canAdd(node, value) || super.canAdd(node, parseInt(value, 10));\n  }\n  value(node) {\n    return parseInt(super.value(node), 10) || void 0;\n  }\n}\nconst IndentClass = new IndentAttributor(\"indent\", \"ql-indent\", {\n  scope: Scope.BLOCK,\n  // @ts-expect-error\n  whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\nclass Blockquote extends Block {\n}\n__publicField(Blockquote, \"blotName\", \"blockquote\");\n__publicField(Blockquote, \"tagName\", \"blockquote\");\nclass Header extends Block {\n  static formats(domNode) {\n    return this.tagName.indexOf(domNode.tagName) + 1;\n  }\n}\n__publicField(Header, \"blotName\", \"header\");\n__publicField(Header, \"tagName\", [\"H1\", \"H2\", \"H3\", \"H4\", \"H5\", \"H6\"]);\nclass ListContainer extends Container {\n}\nListContainer.blotName = \"list-container\";\nListContainer.tagName = \"OL\";\nclass ListItem extends Block {\n  static create(value) {\n    const node = super.create();\n    node.setAttribute(\"data-list\", value);\n    return node;\n  }\n  static formats(domNode) {\n    return domNode.getAttribute(\"data-list\") || void 0;\n  }\n  static register() {\n    Quill.register(ListContainer);\n  }\n  constructor(scroll, domNode) {\n    super(scroll, domNode);\n    const ui = domNode.ownerDocument.createElement(\"span\");\n    const listEventHandler = (e2) => {\n      if (!scroll.isEnabled()) return;\n      const format2 = this.statics.formats(domNode, scroll);\n      if (format2 === \"checked\") {\n        this.format(\"list\", \"unchecked\");\n        e2.preventDefault();\n      } else if (format2 === \"unchecked\") {\n        this.format(\"list\", \"checked\");\n        e2.preventDefault();\n      }\n    };\n    ui.addEventListener(\"mousedown\", listEventHandler);\n    ui.addEventListener(\"touchstart\", listEventHandler);\n    this.attachUI(ui);\n  }\n  format(name, value) {\n    if (name === this.statics.blotName && value) {\n      this.domNode.setAttribute(\"data-list\", value);\n    } else {\n      super.format(name, value);\n    }\n  }\n}\nListItem.blotName = \"list\";\nListItem.tagName = \"LI\";\nListContainer.allowedChildren = [ListItem];\nListItem.requiredContainer = ListContainer;\nclass Bold extends Inline {\n  static create() {\n    return super.create();\n  }\n  static formats() {\n    return true;\n  }\n  optimize(context2) {\n    super.optimize(context2);\n    if (this.domNode.tagName !== this.statics.tagName[0]) {\n      this.replaceWith(this.statics.blotName);\n    }\n  }\n}\n__publicField(Bold, \"blotName\", \"bold\");\n__publicField(Bold, \"tagName\", [\"STRONG\", \"B\"]);\nclass Italic extends Bold {\n}\n__publicField(Italic, \"blotName\", \"italic\");\n__publicField(Italic, \"tagName\", [\"EM\", \"I\"]);\nclass Link extends Inline {\n  static create(value) {\n    const node = super.create(value);\n    node.setAttribute(\"href\", this.sanitize(value));\n    node.setAttribute(\"rel\", \"noopener noreferrer\");\n    node.setAttribute(\"target\", \"_blank\");\n    return node;\n  }\n  static formats(domNode) {\n    return domNode.getAttribute(\"href\");\n  }\n  static sanitize(url2) {\n    return sanitize(url2, this.PROTOCOL_WHITELIST) ? url2 : this.SANITIZED_URL;\n  }\n  format(name, value) {\n    if (name !== this.statics.blotName || !value) {\n      super.format(name, value);\n    } else {\n      this.domNode.setAttribute(\"href\", this.constructor.sanitize(value));\n    }\n  }\n}\n__publicField(Link, \"blotName\", \"link\");\n__publicField(Link, \"tagName\", \"A\");\n__publicField(Link, \"SANITIZED_URL\", \"about:blank\");\n__publicField(Link, \"PROTOCOL_WHITELIST\", [\"http\", \"https\", \"mailto\", \"tel\", \"sms\"]);\nfunction sanitize(url2, protocols) {\n  const anchor = document.createElement(\"a\");\n  anchor.href = url2;\n  const protocol = anchor.href.slice(0, anchor.href.indexOf(\":\"));\n  return protocols.indexOf(protocol) > -1;\n}\nclass Script extends Inline {\n  static create(value) {\n    if (value === \"super\") {\n      return document.createElement(\"sup\");\n    }\n    if (value === \"sub\") {\n      return document.createElement(\"sub\");\n    }\n    return super.create(value);\n  }\n  static formats(domNode) {\n    if (domNode.tagName === \"SUB\") return \"sub\";\n    if (domNode.tagName === \"SUP\") return \"super\";\n    return void 0;\n  }\n}\n__publicField(Script, \"blotName\", \"script\");\n__publicField(Script, \"tagName\", [\"SUB\", \"SUP\"]);\nclass Strike extends Bold {\n}\n__publicField(Strike, \"blotName\", \"strike\");\n__publicField(Strike, \"tagName\", [\"S\", \"STRIKE\"]);\nclass Underline extends Inline {\n}\n__publicField(Underline, \"blotName\", \"underline\");\n__publicField(Underline, \"tagName\", \"U\");\nclass Formula extends Embed {\n  static create(value) {\n    if (window.katex == null) {\n      throw new Error(\"Formula module requires KaTeX.\");\n    }\n    const node = super.create(value);\n    if (typeof value === \"string\") {\n      window.katex.render(value, node, {\n        throwOnError: false,\n        errorColor: \"#f00\"\n      });\n      node.setAttribute(\"data-value\", value);\n    }\n    return node;\n  }\n  static value(domNode) {\n    return domNode.getAttribute(\"data-value\");\n  }\n  html() {\n    const {\n      formula\n    } = this.value();\n    return `<span>${formula}</span>`;\n  }\n}\n__publicField(Formula, \"blotName\", \"formula\");\n__publicField(Formula, \"className\", \"ql-formula\");\n__publicField(Formula, \"tagName\", \"SPAN\");\nconst ATTRIBUTES$1 = [\"alt\", \"height\", \"width\"];\nclass Image extends EmbedBlot$1 {\n  static create(value) {\n    const node = super.create(value);\n    if (typeof value === \"string\") {\n      node.setAttribute(\"src\", this.sanitize(value));\n    }\n    return node;\n  }\n  static formats(domNode) {\n    return ATTRIBUTES$1.reduce((formats, attribute2) => {\n      if (domNode.hasAttribute(attribute2)) {\n        formats[attribute2] = domNode.getAttribute(attribute2);\n      }\n      return formats;\n    }, {});\n  }\n  static match(url2) {\n    return /\\.(jpe?g|gif|png)$/.test(url2) || /^data:image\\/.+;base64/.test(url2);\n  }\n  static sanitize(url2) {\n    return sanitize(url2, [\"http\", \"https\", \"data\"]) ? url2 : \"//:0\";\n  }\n  static value(domNode) {\n    return domNode.getAttribute(\"src\");\n  }\n  format(name, value) {\n    if (ATTRIBUTES$1.indexOf(name) > -1) {\n      if (value) {\n        this.domNode.setAttribute(name, value);\n      } else {\n        this.domNode.removeAttribute(name);\n      }\n    } else {\n      super.format(name, value);\n    }\n  }\n}\n__publicField(Image, \"blotName\", \"image\");\n__publicField(Image, \"tagName\", \"IMG\");\nconst ATTRIBUTES = [\"height\", \"width\"];\nclass Video extends BlockEmbed {\n  static create(value) {\n    const node = super.create(value);\n    node.setAttribute(\"frameborder\", \"0\");\n    node.setAttribute(\"allowfullscreen\", \"true\");\n    node.setAttribute(\"src\", this.sanitize(value));\n    return node;\n  }\n  static formats(domNode) {\n    return ATTRIBUTES.reduce((formats, attribute2) => {\n      if (domNode.hasAttribute(attribute2)) {\n        formats[attribute2] = domNode.getAttribute(attribute2);\n      }\n      return formats;\n    }, {});\n  }\n  static sanitize(url2) {\n    return Link.sanitize(url2);\n  }\n  static value(domNode) {\n    return domNode.getAttribute(\"src\");\n  }\n  format(name, value) {\n    if (ATTRIBUTES.indexOf(name) > -1) {\n      if (value) {\n        this.domNode.setAttribute(name, value);\n      } else {\n        this.domNode.removeAttribute(name);\n      }\n    } else {\n      super.format(name, value);\n    }\n  }\n  html() {\n    const {\n      video\n    } = this.value();\n    return `<a href=\"${video}\">${video}</a>`;\n  }\n}\n__publicField(Video, \"blotName\", \"video\");\n__publicField(Video, \"className\", \"ql-video\");\n__publicField(Video, \"tagName\", \"IFRAME\");\nconst TokenAttributor = new ClassAttributor$1(\"code-token\", \"hljs\", {\n  scope: Scope.INLINE\n});\nclass CodeToken extends Inline {\n  static formats(node, scroll) {\n    while (node != null && node !== scroll.domNode) {\n      if (node.classList && node.classList.contains(CodeBlock.className)) {\n        return super.formats(node, scroll);\n      }\n      node = node.parentNode;\n    }\n    return void 0;\n  }\n  constructor(scroll, domNode, value) {\n    super(scroll, domNode, value);\n    TokenAttributor.add(this.domNode, value);\n  }\n  format(format2, value) {\n    if (format2 !== CodeToken.blotName) {\n      super.format(format2, value);\n    } else if (value) {\n      TokenAttributor.add(this.domNode, value);\n    } else {\n      TokenAttributor.remove(this.domNode);\n      this.domNode.classList.remove(this.statics.className);\n    }\n  }\n  optimize() {\n    super.optimize(...arguments);\n    if (!TokenAttributor.value(this.domNode)) {\n      this.unwrap();\n    }\n  }\n}\nCodeToken.blotName = \"code-token\";\nCodeToken.className = \"ql-token\";\nclass SyntaxCodeBlock extends CodeBlock {\n  static create(value) {\n    const domNode = super.create(value);\n    if (typeof value === \"string\") {\n      domNode.setAttribute(\"data-language\", value);\n    }\n    return domNode;\n  }\n  static formats(domNode) {\n    return domNode.getAttribute(\"data-language\") || \"plain\";\n  }\n  static register() {\n  }\n  // Syntax module will register\n  format(name, value) {\n    if (name === this.statics.blotName && value) {\n      this.domNode.setAttribute(\"data-language\", value);\n    } else {\n      super.format(name, value);\n    }\n  }\n  replaceWith(name, value) {\n    this.formatAt(0, this.length(), CodeToken.blotName, false);\n    return super.replaceWith(name, value);\n  }\n}\nclass SyntaxCodeBlockContainer extends CodeBlockContainer {\n  attach() {\n    super.attach();\n    this.forceNext = false;\n    this.scroll.emitMount(this);\n  }\n  format(name, value) {\n    if (name === SyntaxCodeBlock.blotName) {\n      this.forceNext = true;\n      this.children.forEach((child) => {\n        child.format(name, value);\n      });\n    }\n  }\n  formatAt(index2, length, name, value) {\n    if (name === SyntaxCodeBlock.blotName) {\n      this.forceNext = true;\n    }\n    super.formatAt(index2, length, name, value);\n  }\n  highlight(highlight2) {\n    let forced = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    if (this.children.head == null) return;\n    const nodes = Array.from(this.domNode.childNodes).filter((node) => node !== this.uiNode);\n    const text2 = `${nodes.map((node) => node.textContent).join(\"\\n\")}\n`;\n    const language = SyntaxCodeBlock.formats(this.children.head.domNode);\n    if (forced || this.forceNext || this.cachedText !== text2) {\n      if (text2.trim().length > 0 || this.cachedText == null) {\n        const oldDelta = this.children.reduce((delta2, child) => {\n          return delta2.concat(blockDelta(child, false));\n        }, new Delta());\n        const delta = highlight2(text2, language);\n        oldDelta.diff(delta).reduce((index2, _ref) => {\n          let {\n            retain,\n            attributes\n          } = _ref;\n          if (!retain) return index2;\n          if (attributes) {\n            Object.keys(attributes).forEach((format2) => {\n              if ([SyntaxCodeBlock.blotName, CodeToken.blotName].includes(format2)) {\n                this.formatAt(index2, retain, format2, attributes[format2]);\n              }\n            });\n          }\n          return index2 + retain;\n        }, 0);\n      }\n      this.cachedText = text2;\n      this.forceNext = false;\n    }\n  }\n  html(index2, length) {\n    const [codeBlock] = this.children.find(index2);\n    const language = codeBlock ? SyntaxCodeBlock.formats(codeBlock.domNode) : \"plain\";\n    return `<pre data-language=\"${language}\">\n${escapeText(this.code(index2, length))}\n</pre>`;\n  }\n  optimize(context2) {\n    super.optimize(context2);\n    if (this.parent != null && this.children.head != null && this.uiNode != null) {\n      const language = SyntaxCodeBlock.formats(this.children.head.domNode);\n      if (language !== this.uiNode.value) {\n        this.uiNode.value = language;\n      }\n    }\n  }\n}\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\nSyntaxCodeBlock.allowedChildren = [CodeToken, Cursor, Text$1, Break];\nconst highlight = (lib2, language, text2) => {\n  if (typeof lib2.versionString === \"string\") {\n    const majorVersion = lib2.versionString.split(\".\")[0];\n    if (parseInt(majorVersion, 10) >= 11) {\n      return lib2.highlight(text2, {\n        language\n      }).value;\n    }\n  }\n  return lib2.highlight(language, text2).value;\n};\nclass Syntax extends Module {\n  static register() {\n    Quill.register(CodeToken, true);\n    Quill.register(SyntaxCodeBlock, true);\n    Quill.register(SyntaxCodeBlockContainer, true);\n  }\n  constructor(quill, options) {\n    super(quill, options);\n    if (this.options.hljs == null) {\n      throw new Error(\"Syntax module requires highlight.js. Please include the library on the page before Quill.\");\n    }\n    this.languages = this.options.languages.reduce((memo, _ref2) => {\n      let {\n        key\n      } = _ref2;\n      memo[key] = true;\n      return memo;\n    }, {});\n    this.highlightBlot = this.highlightBlot.bind(this);\n    this.initListener();\n    this.initTimer();\n  }\n  initListener() {\n    this.quill.on(Quill.events.SCROLL_BLOT_MOUNT, (blot) => {\n      if (!(blot instanceof SyntaxCodeBlockContainer)) return;\n      const select = this.quill.root.ownerDocument.createElement(\"select\");\n      this.options.languages.forEach((_ref3) => {\n        let {\n          key,\n          label\n        } = _ref3;\n        const option = select.ownerDocument.createElement(\"option\");\n        option.textContent = label;\n        option.setAttribute(\"value\", key);\n        select.appendChild(option);\n      });\n      select.addEventListener(\"change\", () => {\n        blot.format(SyntaxCodeBlock.blotName, select.value);\n        this.quill.root.focus();\n        this.highlight(blot, true);\n      });\n      if (blot.uiNode == null) {\n        blot.attachUI(select);\n        if (blot.children.head) {\n          select.value = SyntaxCodeBlock.formats(blot.children.head.domNode);\n        }\n      }\n    });\n  }\n  initTimer() {\n    let timer = null;\n    this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n      if (timer) {\n        clearTimeout(timer);\n      }\n      timer = setTimeout(() => {\n        this.highlight();\n        timer = null;\n      }, this.options.interval);\n    });\n  }\n  highlight() {\n    let blot = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;\n    let force = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    if (this.quill.selection.composing) return;\n    this.quill.update(Quill.sources.USER);\n    const range = this.quill.getSelection();\n    const blots = blot == null ? this.quill.scroll.descendants(SyntaxCodeBlockContainer) : [blot];\n    blots.forEach((container) => {\n      container.highlight(this.highlightBlot, force);\n    });\n    this.quill.update(Quill.sources.SILENT);\n    if (range != null) {\n      this.quill.setSelection(range, Quill.sources.SILENT);\n    }\n  }\n  highlightBlot(text2) {\n    let language = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"plain\";\n    language = this.languages[language] ? language : \"plain\";\n    if (language === \"plain\") {\n      return escapeText(text2).split(\"\\n\").reduce((delta, line, i3) => {\n        if (i3 !== 0) {\n          delta.insert(\"\\n\", {\n            [CodeBlock.blotName]: language\n          });\n        }\n        return delta.insert(line);\n      }, new Delta());\n    }\n    const container = this.quill.root.ownerDocument.createElement(\"div\");\n    container.classList.add(CodeBlock.className);\n    container.innerHTML = highlight(this.options.hljs, language, text2);\n    return traverse(this.quill.scroll, container, [(node, delta) => {\n      const value = TokenAttributor.value(node);\n      if (value) {\n        return delta.compose(new Delta().retain(delta.length(), {\n          [CodeToken.blotName]: value\n        }));\n      }\n      return delta;\n    }], [(node, delta) => {\n      return node.data.split(\"\\n\").reduce((memo, nodeText, i3) => {\n        if (i3 !== 0) memo.insert(\"\\n\", {\n          [CodeBlock.blotName]: language\n        });\n        return memo.insert(nodeText);\n      }, delta);\n    }], /* @__PURE__ */ new WeakMap());\n  }\n}\nSyntax.DEFAULTS = {\n  hljs: (() => {\n    return window.hljs;\n  })(),\n  interval: 1e3,\n  languages: [{\n    key: \"plain\",\n    label: \"Plain\"\n  }, {\n    key: \"bash\",\n    label: \"Bash\"\n  }, {\n    key: \"cpp\",\n    label: \"C++\"\n  }, {\n    key: \"cs\",\n    label: \"C#\"\n  }, {\n    key: \"css\",\n    label: \"CSS\"\n  }, {\n    key: \"diff\",\n    label: \"Diff\"\n  }, {\n    key: \"xml\",\n    label: \"HTML/XML\"\n  }, {\n    key: \"java\",\n    label: \"Java\"\n  }, {\n    key: \"javascript\",\n    label: \"JavaScript\"\n  }, {\n    key: \"markdown\",\n    label: \"Markdown\"\n  }, {\n    key: \"php\",\n    label: \"PHP\"\n  }, {\n    key: \"python\",\n    label: \"Python\"\n  }, {\n    key: \"ruby\",\n    label: \"Ruby\"\n  }, {\n    key: \"sql\",\n    label: \"SQL\"\n  }]\n};\nconst _TableCell = class _TableCell extends Block {\n  static create(value) {\n    const node = super.create();\n    if (value) {\n      node.setAttribute(\"data-row\", value);\n    } else {\n      node.setAttribute(\"data-row\", tableId());\n    }\n    return node;\n  }\n  static formats(domNode) {\n    if (domNode.hasAttribute(\"data-row\")) {\n      return domNode.getAttribute(\"data-row\");\n    }\n    return void 0;\n  }\n  cellOffset() {\n    if (this.parent) {\n      return this.parent.children.indexOf(this);\n    }\n    return -1;\n  }\n  format(name, value) {\n    if (name === _TableCell.blotName && value) {\n      this.domNode.setAttribute(\"data-row\", value);\n    } else {\n      super.format(name, value);\n    }\n  }\n  row() {\n    return this.parent;\n  }\n  rowOffset() {\n    if (this.row()) {\n      return this.row().rowOffset();\n    }\n    return -1;\n  }\n  table() {\n    return this.row() && this.row().table();\n  }\n};\n__publicField(_TableCell, \"blotName\", \"table\");\n__publicField(_TableCell, \"tagName\", \"TD\");\nlet TableCell = _TableCell;\nclass TableRow extends Container {\n  checkMerge() {\n    if (super.checkMerge() && this.next.children.head != null) {\n      const thisHead = this.children.head.formats();\n      const thisTail = this.children.tail.formats();\n      const nextHead = this.next.children.head.formats();\n      const nextTail = this.next.children.tail.formats();\n      return thisHead.table === thisTail.table && thisHead.table === nextHead.table && thisHead.table === nextTail.table;\n    }\n    return false;\n  }\n  optimize(context2) {\n    super.optimize(context2);\n    this.children.forEach((child) => {\n      if (child.next == null) return;\n      const childFormats = child.formats();\n      const nextFormats = child.next.formats();\n      if (childFormats.table !== nextFormats.table) {\n        const next = this.splitAfter(child);\n        if (next) {\n          next.optimize();\n        }\n        if (this.prev) {\n          this.prev.optimize();\n        }\n      }\n    });\n  }\n  rowOffset() {\n    if (this.parent) {\n      return this.parent.children.indexOf(this);\n    }\n    return -1;\n  }\n  table() {\n    return this.parent && this.parent.parent;\n  }\n}\n__publicField(TableRow, \"blotName\", \"table-row\");\n__publicField(TableRow, \"tagName\", \"TR\");\nclass TableBody extends Container {\n}\n__publicField(TableBody, \"blotName\", \"table-body\");\n__publicField(TableBody, \"tagName\", \"TBODY\");\nclass TableContainer extends Container {\n  balanceCells() {\n    const rows = this.descendants(TableRow);\n    const maxColumns = rows.reduce((max, row) => {\n      return Math.max(row.children.length, max);\n    }, 0);\n    rows.forEach((row) => {\n      new Array(maxColumns - row.children.length).fill(0).forEach(() => {\n        let value;\n        if (row.children.head != null) {\n          value = TableCell.formats(row.children.head.domNode);\n        }\n        const blot = this.scroll.create(TableCell.blotName, value);\n        row.appendChild(blot);\n        blot.optimize();\n      });\n    });\n  }\n  cells(column) {\n    return this.rows().map((row) => row.children.at(column));\n  }\n  deleteColumn(index2) {\n    const [body] = this.descendant(TableBody);\n    if (body == null || body.children.head == null) return;\n    body.children.forEach((row) => {\n      const cell = row.children.at(index2);\n      if (cell != null) {\n        cell.remove();\n      }\n    });\n  }\n  insertColumn(index2) {\n    const [body] = this.descendant(TableBody);\n    if (body == null || body.children.head == null) return;\n    body.children.forEach((row) => {\n      const ref = row.children.at(index2);\n      const value = TableCell.formats(row.children.head.domNode);\n      const cell = this.scroll.create(TableCell.blotName, value);\n      row.insertBefore(cell, ref);\n    });\n  }\n  insertRow(index2) {\n    const [body] = this.descendant(TableBody);\n    if (body == null || body.children.head == null) return;\n    const id2 = tableId();\n    const row = this.scroll.create(TableRow.blotName);\n    body.children.head.children.forEach(() => {\n      const cell = this.scroll.create(TableCell.blotName, id2);\n      row.appendChild(cell);\n    });\n    const ref = body.children.at(index2);\n    body.insertBefore(row, ref);\n  }\n  rows() {\n    const body = this.children.head;\n    if (body == null) return [];\n    return body.children.map((row) => row);\n  }\n}\n__publicField(TableContainer, \"blotName\", \"table-container\");\n__publicField(TableContainer, \"tagName\", \"TABLE\");\nTableContainer.allowedChildren = [TableBody];\nTableBody.requiredContainer = TableContainer;\nTableBody.allowedChildren = [TableRow];\nTableRow.requiredContainer = TableBody;\nTableRow.allowedChildren = [TableCell];\nTableCell.requiredContainer = TableRow;\nfunction tableId() {\n  const id2 = Math.random().toString(36).slice(2, 6);\n  return `row-${id2}`;\n}\nclass Table extends Module {\n  static register() {\n    Quill.register(TableCell);\n    Quill.register(TableRow);\n    Quill.register(TableBody);\n    Quill.register(TableContainer);\n  }\n  constructor() {\n    super(...arguments);\n    this.listenBalanceCells();\n  }\n  balanceTables() {\n    this.quill.scroll.descendants(TableContainer).forEach((table2) => {\n      table2.balanceCells();\n    });\n  }\n  deleteColumn() {\n    const [table2, , cell] = this.getTable();\n    if (cell == null) return;\n    table2.deleteColumn(cell.cellOffset());\n    this.quill.update(Quill.sources.USER);\n  }\n  deleteRow() {\n    const [, row] = this.getTable();\n    if (row == null) return;\n    row.remove();\n    this.quill.update(Quill.sources.USER);\n  }\n  deleteTable() {\n    const [table2] = this.getTable();\n    if (table2 == null) return;\n    const offset = table2.offset();\n    table2.remove();\n    this.quill.update(Quill.sources.USER);\n    this.quill.setSelection(offset, Quill.sources.SILENT);\n  }\n  getTable() {\n    let range = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.quill.getSelection();\n    if (range == null) return [null, null, null, -1];\n    const [cell, offset] = this.quill.getLine(range.index);\n    if (cell == null || cell.statics.blotName !== TableCell.blotName) {\n      return [null, null, null, -1];\n    }\n    const row = cell.parent;\n    const table2 = row.parent.parent;\n    return [table2, row, cell, offset];\n  }\n  insertColumn(offset) {\n    const range = this.quill.getSelection();\n    if (!range) return;\n    const [table2, row, cell] = this.getTable(range);\n    if (cell == null) return;\n    const column = cell.cellOffset();\n    table2.insertColumn(column + offset);\n    this.quill.update(Quill.sources.USER);\n    let shift = row.rowOffset();\n    if (offset === 0) {\n      shift += 1;\n    }\n    this.quill.setSelection(range.index + shift, range.length, Quill.sources.SILENT);\n  }\n  insertColumnLeft() {\n    this.insertColumn(0);\n  }\n  insertColumnRight() {\n    this.insertColumn(1);\n  }\n  insertRow(offset) {\n    const range = this.quill.getSelection();\n    if (!range) return;\n    const [table2, row, cell] = this.getTable(range);\n    if (cell == null) return;\n    const index2 = row.rowOffset();\n    table2.insertRow(index2 + offset);\n    this.quill.update(Quill.sources.USER);\n    if (offset > 0) {\n      this.quill.setSelection(range, Quill.sources.SILENT);\n    } else {\n      this.quill.setSelection(range.index + row.children.length, range.length, Quill.sources.SILENT);\n    }\n  }\n  insertRowAbove() {\n    this.insertRow(0);\n  }\n  insertRowBelow() {\n    this.insertRow(1);\n  }\n  insertTable(rows, columns) {\n    const range = this.quill.getSelection();\n    if (range == null) return;\n    const delta = new Array(rows).fill(0).reduce((memo) => {\n      const text2 = new Array(columns).fill(\"\\n\").join(\"\");\n      return memo.insert(text2, {\n        table: tableId()\n      });\n    }, new Delta().retain(range.index));\n    this.quill.updateContents(delta, Quill.sources.USER);\n    this.quill.setSelection(range.index, Quill.sources.SILENT);\n    this.balanceTables();\n  }\n  listenBalanceCells() {\n    this.quill.on(Quill.events.SCROLL_OPTIMIZE, (mutations) => {\n      mutations.some((mutation) => {\n        if ([\"TD\", \"TR\", \"TBODY\", \"TABLE\"].includes(mutation.target.tagName)) {\n          this.quill.once(Quill.events.TEXT_CHANGE, (delta, old, source) => {\n            if (source !== Quill.sources.USER) return;\n            this.balanceTables();\n          });\n          return true;\n        }\n        return false;\n      });\n    });\n  }\n}\nconst debug = namespace(\"quill:toolbar\");\nclass Toolbar extends Module {\n  constructor(quill, options) {\n    var _a3, _b;\n    super(quill, options);\n    if (Array.isArray(this.options.container)) {\n      const container = document.createElement(\"div\");\n      container.setAttribute(\"role\", \"toolbar\");\n      addControls(container, this.options.container);\n      (_b = (_a3 = quill.container) == null ? void 0 : _a3.parentNode) == null ? void 0 : _b.insertBefore(container, quill.container);\n      this.container = container;\n    } else if (typeof this.options.container === \"string\") {\n      this.container = document.querySelector(this.options.container);\n    } else {\n      this.container = this.options.container;\n    }\n    if (!(this.container instanceof HTMLElement)) {\n      debug.error(\"Container required for toolbar\", this.options);\n      return;\n    }\n    this.container.classList.add(\"ql-toolbar\");\n    this.controls = [];\n    this.handlers = {};\n    if (this.options.handlers) {\n      Object.keys(this.options.handlers).forEach((format2) => {\n        var _a4;\n        const handler = (_a4 = this.options.handlers) == null ? void 0 : _a4[format2];\n        if (handler) {\n          this.addHandler(format2, handler);\n        }\n      });\n    }\n    Array.from(this.container.querySelectorAll(\"button, select\")).forEach((input) => {\n      this.attach(input);\n    });\n    this.quill.on(Quill.events.EDITOR_CHANGE, () => {\n      const [range] = this.quill.selection.getRange();\n      this.update(range);\n    });\n  }\n  addHandler(format2, handler) {\n    this.handlers[format2] = handler;\n  }\n  attach(input) {\n    let format2 = Array.from(input.classList).find((className) => {\n      return className.indexOf(\"ql-\") === 0;\n    });\n    if (!format2) return;\n    format2 = format2.slice(\"ql-\".length);\n    if (input.tagName === \"BUTTON\") {\n      input.setAttribute(\"type\", \"button\");\n    }\n    if (this.handlers[format2] == null && this.quill.scroll.query(format2) == null) {\n      debug.warn(\"ignoring attaching to nonexistent format\", format2, input);\n      return;\n    }\n    const eventName = input.tagName === \"SELECT\" ? \"change\" : \"click\";\n    input.addEventListener(eventName, (e2) => {\n      let value;\n      if (input.tagName === \"SELECT\") {\n        if (input.selectedIndex < 0) return;\n        const selected = input.options[input.selectedIndex];\n        if (selected.hasAttribute(\"selected\")) {\n          value = false;\n        } else {\n          value = selected.value || false;\n        }\n      } else {\n        if (input.classList.contains(\"ql-active\")) {\n          value = false;\n        } else {\n          value = input.value || !input.hasAttribute(\"value\");\n        }\n        e2.preventDefault();\n      }\n      this.quill.focus();\n      const [range] = this.quill.selection.getRange();\n      if (this.handlers[format2] != null) {\n        this.handlers[format2].call(this, value);\n      } else if (\n        // @ts-expect-error\n        this.quill.scroll.query(format2).prototype instanceof EmbedBlot$1\n      ) {\n        value = prompt(`Enter ${format2}`);\n        if (!value) return;\n        this.quill.updateContents(new Delta().retain(range.index).delete(range.length).insert({\n          [format2]: value\n        }), Quill.sources.USER);\n      } else {\n        this.quill.format(format2, value, Quill.sources.USER);\n      }\n      this.update(range);\n    });\n    this.controls.push([format2, input]);\n  }\n  update(range) {\n    const formats = range == null ? {} : this.quill.getFormat(range);\n    this.controls.forEach((pair) => {\n      const [format2, input] = pair;\n      if (input.tagName === \"SELECT\") {\n        let option = null;\n        if (range == null) {\n          option = null;\n        } else if (formats[format2] == null) {\n          option = input.querySelector(\"option[selected]\");\n        } else if (!Array.isArray(formats[format2])) {\n          let value = formats[format2];\n          if (typeof value === \"string\") {\n            value = value.replace(/\"/g, '\\\\\"');\n          }\n          option = input.querySelector(`option[value=\"${value}\"]`);\n        }\n        if (option == null) {\n          input.value = \"\";\n          input.selectedIndex = -1;\n        } else {\n          option.selected = true;\n        }\n      } else if (range == null) {\n        input.classList.remove(\"ql-active\");\n        input.setAttribute(\"aria-pressed\", \"false\");\n      } else if (input.hasAttribute(\"value\")) {\n        const value = formats[format2];\n        const isActive = value === input.getAttribute(\"value\") || value != null && value.toString() === input.getAttribute(\"value\") || value == null && !input.getAttribute(\"value\");\n        input.classList.toggle(\"ql-active\", isActive);\n        input.setAttribute(\"aria-pressed\", isActive.toString());\n      } else {\n        const isActive = formats[format2] != null;\n        input.classList.toggle(\"ql-active\", isActive);\n        input.setAttribute(\"aria-pressed\", isActive.toString());\n      }\n    });\n  }\n}\nToolbar.DEFAULTS = {};\nfunction addButton(container, format2, value) {\n  const input = document.createElement(\"button\");\n  input.setAttribute(\"type\", \"button\");\n  input.classList.add(`ql-${format2}`);\n  input.setAttribute(\"aria-pressed\", \"false\");\n  if (value != null) {\n    input.value = value;\n    input.setAttribute(\"aria-label\", `${format2}: ${value}`);\n  } else {\n    input.setAttribute(\"aria-label\", format2);\n  }\n  container.appendChild(input);\n}\nfunction addControls(container, groups) {\n  if (!Array.isArray(groups[0])) {\n    groups = [groups];\n  }\n  groups.forEach((controls) => {\n    const group = document.createElement(\"span\");\n    group.classList.add(\"ql-formats\");\n    controls.forEach((control) => {\n      if (typeof control === \"string\") {\n        addButton(group, control);\n      } else {\n        const format2 = Object.keys(control)[0];\n        const value = control[format2];\n        if (Array.isArray(value)) {\n          addSelect(group, format2, value);\n        } else {\n          addButton(group, format2, value);\n        }\n      }\n    });\n    container.appendChild(group);\n  });\n}\nfunction addSelect(container, format2, values) {\n  const input = document.createElement(\"select\");\n  input.classList.add(`ql-${format2}`);\n  values.forEach((value) => {\n    const option = document.createElement(\"option\");\n    if (value !== false) {\n      option.setAttribute(\"value\", String(value));\n    } else {\n      option.setAttribute(\"selected\", \"selected\");\n    }\n    input.appendChild(option);\n  });\n  container.appendChild(input);\n}\nToolbar.DEFAULTS = {\n  container: null,\n  handlers: {\n    clean() {\n      const range = this.quill.getSelection();\n      if (range == null) return;\n      if (range.length === 0) {\n        const formats = this.quill.getFormat();\n        Object.keys(formats).forEach((name) => {\n          if (this.quill.scroll.query(name, Scope.INLINE) != null) {\n            this.quill.format(name, false, Quill.sources.USER);\n          }\n        });\n      } else {\n        this.quill.removeFormat(range.index, range.length, Quill.sources.USER);\n      }\n    },\n    direction(value) {\n      const {\n        align\n      } = this.quill.getFormat();\n      if (value === \"rtl\" && align == null) {\n        this.quill.format(\"align\", \"right\", Quill.sources.USER);\n      } else if (!value && align === \"right\") {\n        this.quill.format(\"align\", false, Quill.sources.USER);\n      }\n      this.quill.format(\"direction\", value, Quill.sources.USER);\n    },\n    indent(value) {\n      const range = this.quill.getSelection();\n      const formats = this.quill.getFormat(range);\n      const indent = parseInt(formats.indent || 0, 10);\n      if (value === \"+1\" || value === \"-1\") {\n        let modifier = value === \"+1\" ? 1 : -1;\n        if (formats.direction === \"rtl\") modifier *= -1;\n        this.quill.format(\"indent\", indent + modifier, Quill.sources.USER);\n      }\n    },\n    link(value) {\n      if (value === true) {\n        value = prompt(\"Enter link URL:\");\n      }\n      this.quill.format(\"link\", value, Quill.sources.USER);\n    },\n    list(value) {\n      const range = this.quill.getSelection();\n      const formats = this.quill.getFormat(range);\n      if (value === \"check\") {\n        if (formats.list === \"checked\" || formats.list === \"unchecked\") {\n          this.quill.format(\"list\", false, Quill.sources.USER);\n        } else {\n          this.quill.format(\"list\", \"unchecked\", Quill.sources.USER);\n        }\n      } else {\n        this.quill.format(\"list\", value, Quill.sources.USER);\n      }\n    }\n  }\n};\nconst alignLeftIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"13\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"9\" y1=\"4\" y2=\"4\"/></svg>';\nconst alignCenterIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"14\" x2=\"4\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"12\" x2=\"6\" y1=\"4\" y2=\"4\"/></svg>';\nconst alignRightIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"15\" x2=\"5\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"15\" x2=\"9\" y1=\"4\" y2=\"4\"/></svg>';\nconst alignJustifyIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"4\" y2=\"4\"/></svg>';\nconst backgroundIcon = '<svg viewbox=\"0 0 18 18\"><g class=\"ql-fill ql-color-label\"><polygon points=\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\"/><rect height=\"1\" width=\"1\" x=\"4\" y=\"4\"/><polygon points=\"6.817 5 6 5 6 6 6.38 6 6.817 5\"/><rect height=\"1\" width=\"1\" x=\"2\" y=\"6\"/><rect height=\"1\" width=\"1\" x=\"3\" y=\"5\"/><rect height=\"1\" width=\"1\" x=\"4\" y=\"7\"/><polygon points=\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\"/><rect height=\"1\" width=\"1\" x=\"2\" y=\"12\"/><rect height=\"1\" width=\"1\" x=\"2\" y=\"9\"/><rect height=\"1\" width=\"1\" x=\"2\" y=\"15\"/><polygon points=\"4.63 10 4 10 4 11 4.192 11 4.63 10\"/><rect height=\"1\" width=\"1\" x=\"3\" y=\"8\"/><path d=\"M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z\"/><path d=\"M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z\"/><path d=\"M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z\"/><rect height=\"1\" width=\"1\" x=\"12\" y=\"2\"/><rect height=\"1\" width=\"1\" x=\"11\" y=\"3\"/><path d=\"M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z\"/><rect height=\"1\" width=\"1\" x=\"2\" y=\"3\"/><rect height=\"1\" width=\"1\" x=\"6\" y=\"2\"/><rect height=\"1\" width=\"1\" x=\"3\" y=\"2\"/><rect height=\"1\" width=\"1\" x=\"5\" y=\"3\"/><rect height=\"1\" width=\"1\" x=\"9\" y=\"2\"/><rect height=\"1\" width=\"1\" x=\"15\" y=\"14\"/><polygon points=\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\"/><rect height=\"1\" width=\"1\" x=\"13\" y=\"7\"/><rect height=\"1\" width=\"1\" x=\"15\" y=\"5\"/><rect height=\"1\" width=\"1\" x=\"14\" y=\"6\"/><rect height=\"1\" width=\"1\" x=\"15\" y=\"8\"/><rect height=\"1\" width=\"1\" x=\"14\" y=\"9\"/><path d=\"M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z\"/><rect height=\"1\" width=\"1\" x=\"14\" y=\"3\"/><polygon points=\"12 6.868 12 6 11.62 6 12 6.868\"/><rect height=\"1\" width=\"1\" x=\"15\" y=\"2\"/><rect height=\"1\" width=\"1\" x=\"12\" y=\"5\"/><rect height=\"1\" width=\"1\" x=\"13\" y=\"4\"/><polygon points=\"12.933 9 13 9 13 8 12.495 8 12.933 9\"/><rect height=\"1\" width=\"1\" x=\"9\" y=\"14\"/><rect height=\"1\" width=\"1\" x=\"8\" y=\"15\"/><path d=\"M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z\"/><rect height=\"1\" width=\"1\" x=\"5\" y=\"15\"/><path d=\"M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z\"/><rect height=\"1\" width=\"1\" x=\"11\" y=\"15\"/><path d=\"M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z\"/><rect height=\"1\" width=\"1\" x=\"14\" y=\"15\"/><rect height=\"1\" width=\"1\" x=\"15\" y=\"11\"/></g><polyline class=\"ql-stroke\" points=\"5.5 13 9 5 12.5 13\"/><line class=\"ql-stroke\" x1=\"11.63\" x2=\"6.38\" y1=\"11\" y2=\"11\"/></svg>';\nconst blockquoteIcon = '<svg viewbox=\"0 0 18 18\"><rect class=\"ql-fill ql-stroke\" height=\"3\" width=\"3\" x=\"4\" y=\"5\"/><rect class=\"ql-fill ql-stroke\" height=\"3\" width=\"3\" x=\"11\" y=\"5\"/><path class=\"ql-even ql-fill ql-stroke\" d=\"M7,8c0,4.031-3,5-3,5\"/><path class=\"ql-even ql-fill ql-stroke\" d=\"M14,8c0,4.031-3,5-3,5\"/></svg>';\nconst boldIcon = '<svg viewbox=\"0 0 18 18\"><path class=\"ql-stroke\" d=\"M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z\"/><path class=\"ql-stroke\" d=\"M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z\"/></svg>';\nconst cleanIcon = '<svg class=\"\" viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"5\" x2=\"13\" y1=\"3\" y2=\"3\"/><line class=\"ql-stroke\" x1=\"6\" x2=\"9.35\" y1=\"12\" y2=\"3\"/><line class=\"ql-stroke\" x1=\"11\" x2=\"15\" y1=\"11\" y2=\"15\"/><line class=\"ql-stroke\" x1=\"15\" x2=\"11\" y1=\"11\" y2=\"15\"/><rect class=\"ql-fill\" height=\"1\" rx=\"0.5\" ry=\"0.5\" width=\"7\" x=\"2\" y=\"14\"/></svg>';\nconst codeIcon = '<svg viewbox=\"0 0 18 18\"><polyline class=\"ql-even ql-stroke\" points=\"5 7 3 9 5 11\"/><polyline class=\"ql-even ql-stroke\" points=\"13 7 15 9 13 11\"/><line class=\"ql-stroke\" x1=\"10\" x2=\"8\" y1=\"5\" y2=\"13\"/></svg>';\nconst colorIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-color-label ql-stroke ql-transparent\" x1=\"3\" x2=\"15\" y1=\"15\" y2=\"15\"/><polyline class=\"ql-stroke\" points=\"5.5 11 9 3 12.5 11\"/><line class=\"ql-stroke\" x1=\"11.63\" x2=\"6.38\" y1=\"9\" y2=\"9\"/></svg>';\nconst directionLeftToRightIcon = '<svg viewbox=\"0 0 18 18\"><polygon class=\"ql-stroke ql-fill\" points=\"3 11 5 9 3 7 3 11\"/><line class=\"ql-stroke ql-fill\" x1=\"15\" x2=\"11\" y1=\"4\" y2=\"4\"/><path class=\"ql-fill\" d=\"M11,3a3,3,0,0,0,0,6h1V3H11Z\"/><rect class=\"ql-fill\" height=\"11\" width=\"1\" x=\"11\" y=\"4\"/><rect class=\"ql-fill\" height=\"11\" width=\"1\" x=\"13\" y=\"4\"/></svg>';\nconst directionRightToLeftIcon = '<svg viewbox=\"0 0 18 18\"><polygon class=\"ql-stroke ql-fill\" points=\"15 12 13 10 15 8 15 12\"/><line class=\"ql-stroke ql-fill\" x1=\"9\" x2=\"5\" y1=\"4\" y2=\"4\"/><path class=\"ql-fill\" d=\"M5,3A3,3,0,0,0,5,9H6V3H5Z\"/><rect class=\"ql-fill\" height=\"11\" width=\"1\" x=\"5\" y=\"4\"/><rect class=\"ql-fill\" height=\"11\" width=\"1\" x=\"7\" y=\"4\"/></svg>';\nconst formulaIcon = '<svg viewbox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z\"/><rect class=\"ql-fill\" height=\"1.6\" rx=\"0.8\" ry=\"0.8\" width=\"5\" x=\"5.15\" y=\"6.2\"/><path class=\"ql-fill\" d=\"M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z\"/></svg>';\nconst headerIcon = '<svg viewBox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm6.06787,9.209H14.98975V7.59863a.54085.54085,0,0,0-.605-.60547h-.62744a1.01119,1.01119,0,0,0-.748.29688L11.645,8.56641a.5435.5435,0,0,0-.022.8584l.28613.30762a.53861.53861,0,0,0,.84717.0332l.09912-.08789a1.2137,1.2137,0,0,0,.2417-.35254h.02246s-.01123.30859-.01123.60547V13.209H12.041a.54085.54085,0,0,0-.605.60547v.43945a.54085.54085,0,0,0,.605.60547h4.02686a.54085.54085,0,0,0,.605-.60547v-.43945A.54085.54085,0,0,0,16.06787,13.209Z\"/></svg>';\nconst header2Icon = '<svg viewBox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M16.73975,13.81445v.43945a.54085.54085,0,0,1-.605.60547H11.855a.58392.58392,0,0,1-.64893-.60547V14.0127c0-2.90527,3.39941-3.42187,3.39941-4.55469a.77675.77675,0,0,0-.84717-.78125,1.17684,1.17684,0,0,0-.83594.38477c-.2749.26367-.561.374-.85791.13184l-.4292-.34082c-.30811-.24219-.38525-.51758-.1543-.81445a2.97155,2.97155,0,0,1,2.45361-1.17676,2.45393,2.45393,0,0,1,2.68408,2.40918c0,2.45312-3.1792,2.92676-3.27832,3.93848h2.79443A.54085.54085,0,0,1,16.73975,13.81445ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z\"/></svg>';\nconst header3Icon = '<svg viewBox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M16.65186,12.30664a2.6742,2.6742,0,0,1-2.915,2.68457,3.96592,3.96592,0,0,1-2.25537-.6709.56007.56007,0,0,1-.13232-.83594L11.64648,13c.209-.34082.48389-.36328.82471-.1543a2.32654,2.32654,0,0,0,1.12256.33008c.71484,0,1.12207-.35156,1.12207-.78125,0-.61523-.61621-.86816-1.46338-.86816H13.2085a.65159.65159,0,0,1-.68213-.41895l-.05518-.10937a.67114.67114,0,0,1,.14307-.78125l.71533-.86914a8.55289,8.55289,0,0,1,.68213-.7373V8.58887a3.93913,3.93913,0,0,1-.748.05469H11.9873a.54085.54085,0,0,1-.605-.60547V7.59863a.54085.54085,0,0,1,.605-.60547h3.75146a.53773.53773,0,0,1,.60547.59375v.17676a1.03723,1.03723,0,0,1-.27539.748L14.74854,10.0293A2.31132,2.31132,0,0,1,16.65186,12.30664ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z\"/></svg>';\nconst header4Icon = '<svg viewBox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Zm7.05371,7.96582v.38477c0,.39648-.165.60547-.46191.60547h-.47314v1.29785a.54085.54085,0,0,1-.605.60547h-.69336a.54085.54085,0,0,1-.605-.60547V12.95605H11.333a.5412.5412,0,0,1-.60547-.60547v-.15332a1.199,1.199,0,0,1,.22021-.748l2.56348-4.05957a.7819.7819,0,0,1,.72607-.39648h1.27637a.54085.54085,0,0,1,.605.60547v3.7627h.33008A.54055.54055,0,0,1,17.05371,11.96582ZM14.28125,8.7207h-.022a4.18969,4.18969,0,0,1-.38525.81348l-1.188,1.80469v.02246h1.5293V9.60059A7.04058,7.04058,0,0,1,14.28125,8.7207Z\"/></svg>';\nconst header5Icon = '<svg viewBox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M16.74023,12.18555a2.75131,2.75131,0,0,1-2.91553,2.80566,3.908,3.908,0,0,1-2.25537-.68164.54809.54809,0,0,1-.13184-.8252L11.73438,13c.209-.34082.48389-.36328.8252-.1543a2.23757,2.23757,0,0,0,1.1001.33008,1.01827,1.01827,0,0,0,1.1001-.96777c0-.61621-.53906-.97949-1.25439-.97949a2.15554,2.15554,0,0,0-.64893.09961,1.15209,1.15209,0,0,1-.814.01074l-.12109-.04395a.64116.64116,0,0,1-.45117-.71484l.231-3.00391a.56666.56666,0,0,1,.62744-.583H15.541a.54085.54085,0,0,1,.605.60547v.43945a.54085.54085,0,0,1-.605.60547H13.41748l-.04395.72559a1.29306,1.29306,0,0,1-.04395.30859h.022a2.39776,2.39776,0,0,1,.57227-.07715A2.53266,2.53266,0,0,1,16.74023,12.18555ZM9,3A.99974.99974,0,0,0,8,4V8H3V4A1,1,0,0,0,1,4V14a1,1,0,0,0,2,0V10H8v4a1,1,0,0,0,2,0V4A.99974.99974,0,0,0,9,3Z\"/></svg>';\nconst header6Icon = '<svg viewBox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M14.51758,9.64453a1.85627,1.85627,0,0,0-1.24316.38477H13.252a1.73532,1.73532,0,0,1,1.72754-1.4082,2.66491,2.66491,0,0,1,.5498.06641c.35254.05469.57227.01074.70508-.40723l.16406-.5166a.53393.53393,0,0,0-.373-.75977,4.83723,4.83723,0,0,0-1.17773-.14258c-2.43164,0-3.7627,2.17773-3.7627,4.43359,0,2.47559,1.60645,3.69629,3.19043,3.69629A2.70585,2.70585,0,0,0,16.96,12.19727,2.43861,2.43861,0,0,0,14.51758,9.64453Zm-.23047,3.58691c-.67187,0-1.22168-.81445-1.22168-1.45215,0-.47363.30762-.583.72559-.583.96875,0,1.27734.59375,1.27734,1.12207A.82182.82182,0,0,1,14.28711,13.23145ZM10,4V14a1,1,0,0,1-2,0V10H3v4a1,1,0,0,1-2,0V4A1,1,0,0,1,3,4V8H8V4a1,1,0,0,1,2,0Z\"/></svg>';\nconst italicIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"7\" x2=\"13\" y1=\"4\" y2=\"4\"/><line class=\"ql-stroke\" x1=\"5\" x2=\"11\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"8\" x2=\"10\" y1=\"14\" y2=\"4\"/></svg>';\nconst imageIcon = '<svg viewbox=\"0 0 18 18\"><rect class=\"ql-stroke\" height=\"10\" width=\"12\" x=\"3\" y=\"4\"/><circle class=\"ql-fill\" cx=\"6\" cy=\"7\" r=\"1\"/><polyline class=\"ql-even ql-fill\" points=\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\"/></svg>';\nconst indentIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"4\" y2=\"4\"/><line class=\"ql-stroke\" x1=\"9\" x2=\"15\" y1=\"9\" y2=\"9\"/><polyline class=\"ql-fill ql-stroke\" points=\"3 7 3 11 5 9 3 7\"/></svg>';\nconst outdentIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"4\" y2=\"4\"/><line class=\"ql-stroke\" x1=\"9\" x2=\"15\" y1=\"9\" y2=\"9\"/><polyline class=\"ql-stroke\" points=\"5 7 5 11 3 9 5 7\"/></svg>';\nconst linkIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"7\" x2=\"11\" y1=\"7\" y2=\"11\"/><path class=\"ql-even ql-stroke\" d=\"M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z\"/><path class=\"ql-even ql-stroke\" d=\"M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z\"/></svg>';\nconst listBulletIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"6\" x2=\"15\" y1=\"4\" y2=\"4\"/><line class=\"ql-stroke\" x1=\"6\" x2=\"15\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"6\" x2=\"15\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"3\" y1=\"4\" y2=\"4\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"3\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"3\" x2=\"3\" y1=\"14\" y2=\"14\"/></svg>';\nconst listCheckIcon = '<svg class=\"\" viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"9\" x2=\"15\" y1=\"4\" y2=\"4\"/><polyline class=\"ql-stroke\" points=\"3 4 4 5 6 3\"/><line class=\"ql-stroke\" x1=\"9\" x2=\"15\" y1=\"14\" y2=\"14\"/><polyline class=\"ql-stroke\" points=\"3 14 4 15 6 13\"/><line class=\"ql-stroke\" x1=\"9\" x2=\"15\" y1=\"9\" y2=\"9\"/><polyline class=\"ql-stroke\" points=\"3 9 4 10 6 8\"/></svg>';\nconst listOrderedIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke\" x1=\"7\" x2=\"15\" y1=\"4\" y2=\"4\"/><line class=\"ql-stroke\" x1=\"7\" x2=\"15\" y1=\"9\" y2=\"9\"/><line class=\"ql-stroke\" x1=\"7\" x2=\"15\" y1=\"14\" y2=\"14\"/><line class=\"ql-stroke ql-thin\" x1=\"2.5\" x2=\"4.5\" y1=\"5.5\" y2=\"5.5\"/><path class=\"ql-fill\" d=\"M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z\"/><path class=\"ql-stroke ql-thin\" d=\"M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156\"/><path class=\"ql-stroke ql-thin\" d=\"M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109\"/></svg>';\nconst subscriptIcon = '<svg viewbox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z\"/><path class=\"ql-fill\" d=\"M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z\"/></svg>';\nconst superscriptIcon = '<svg viewbox=\"0 0 18 18\"><path class=\"ql-fill\" d=\"M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z\"/><path class=\"ql-fill\" d=\"M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z\"/></svg>';\nconst strikeIcon = '<svg viewbox=\"0 0 18 18\"><line class=\"ql-stroke ql-thin\" x1=\"15.5\" x2=\"2.5\" y1=\"8.5\" y2=\"9.5\"/><path class=\"ql-fill\" d=\"M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z\"/><path class=\"ql-fill\" d=\"M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z\"/></svg>';\nconst tableIcon = '<svg viewbox=\"0 0 18 18\"><rect class=\"ql-stroke\" height=\"12\" width=\"12\" x=\"3\" y=\"3\"/><rect class=\"ql-fill\" height=\"2\" width=\"3\" x=\"5\" y=\"5\"/><rect class=\"ql-fill\" height=\"2\" width=\"4\" x=\"9\" y=\"5\"/><g class=\"ql-fill ql-transparent\"><rect height=\"2\" width=\"3\" x=\"5\" y=\"8\"/><rect height=\"2\" width=\"4\" x=\"9\" y=\"8\"/><rect height=\"2\" width=\"3\" x=\"5\" y=\"11\"/><rect height=\"2\" width=\"4\" x=\"9\" y=\"11\"/></g></svg>';\nconst underlineIcon = '<svg viewbox=\"0 0 18 18\"><path class=\"ql-stroke\" d=\"M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3\"/><rect class=\"ql-fill\" height=\"1\" rx=\"0.5\" ry=\"0.5\" width=\"12\" x=\"3\" y=\"15\"/></svg>';\nconst videoIcon = '<svg viewbox=\"0 0 18 18\"><rect class=\"ql-stroke\" height=\"12\" width=\"12\" x=\"3\" y=\"3\"/><rect class=\"ql-fill\" height=\"12\" width=\"1\" x=\"5\" y=\"3\"/><rect class=\"ql-fill\" height=\"12\" width=\"1\" x=\"12\" y=\"3\"/><rect class=\"ql-fill\" height=\"2\" width=\"8\" x=\"5\" y=\"8\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"3\" y=\"5\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"3\" y=\"7\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"3\" y=\"10\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"3\" y=\"12\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"12\" y=\"5\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"12\" y=\"7\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"12\" y=\"10\"/><rect class=\"ql-fill\" height=\"1\" width=\"3\" x=\"12\" y=\"12\"/></svg>';\nconst Icons = {\n  align: {\n    \"\": alignLeftIcon,\n    center: alignCenterIcon,\n    right: alignRightIcon,\n    justify: alignJustifyIcon\n  },\n  background: backgroundIcon,\n  blockquote: blockquoteIcon,\n  bold: boldIcon,\n  clean: cleanIcon,\n  code: codeIcon,\n  \"code-block\": codeIcon,\n  color: colorIcon,\n  direction: {\n    \"\": directionLeftToRightIcon,\n    rtl: directionRightToLeftIcon\n  },\n  formula: formulaIcon,\n  header: {\n    \"1\": headerIcon,\n    \"2\": header2Icon,\n    \"3\": header3Icon,\n    \"4\": header4Icon,\n    \"5\": header5Icon,\n    \"6\": header6Icon\n  },\n  italic: italicIcon,\n  image: imageIcon,\n  indent: {\n    \"+1\": indentIcon,\n    \"-1\": outdentIcon\n  },\n  link: linkIcon,\n  list: {\n    bullet: listBulletIcon,\n    check: listCheckIcon,\n    ordered: listOrderedIcon\n  },\n  script: {\n    sub: subscriptIcon,\n    super: superscriptIcon\n  },\n  strike: strikeIcon,\n  table: tableIcon,\n  underline: underlineIcon,\n  video: videoIcon\n};\nconst DropdownIcon = '<svg viewbox=\"0 0 18 18\"><polygon class=\"ql-stroke\" points=\"7 11 9 13 11 11 7 11\"/><polygon class=\"ql-stroke\" points=\"7 7 9 5 11 7 7 7\"/></svg>';\nlet optionsCounter = 0;\nfunction toggleAriaAttribute(element, attribute2) {\n  element.setAttribute(attribute2, `${!(element.getAttribute(attribute2) === \"true\")}`);\n}\nclass Picker {\n  constructor(select) {\n    this.select = select;\n    this.container = document.createElement(\"span\");\n    this.buildPicker();\n    this.select.style.display = \"none\";\n    this.select.parentNode.insertBefore(this.container, this.select);\n    this.label.addEventListener(\"mousedown\", () => {\n      this.togglePicker();\n    });\n    this.label.addEventListener(\"keydown\", (event) => {\n      switch (event.key) {\n        case \"Enter\":\n          this.togglePicker();\n          break;\n        case \"Escape\":\n          this.escape();\n          event.preventDefault();\n          break;\n      }\n    });\n    this.select.addEventListener(\"change\", this.update.bind(this));\n  }\n  togglePicker() {\n    this.container.classList.toggle(\"ql-expanded\");\n    toggleAriaAttribute(this.label, \"aria-expanded\");\n    toggleAriaAttribute(this.options, \"aria-hidden\");\n  }\n  buildItem(option) {\n    const item = document.createElement(\"span\");\n    item.tabIndex = \"0\";\n    item.setAttribute(\"role\", \"button\");\n    item.classList.add(\"ql-picker-item\");\n    const value = option.getAttribute(\"value\");\n    if (value) {\n      item.setAttribute(\"data-value\", value);\n    }\n    if (option.textContent) {\n      item.setAttribute(\"data-label\", option.textContent);\n    }\n    item.addEventListener(\"click\", () => {\n      this.selectItem(item, true);\n    });\n    item.addEventListener(\"keydown\", (event) => {\n      switch (event.key) {\n        case \"Enter\":\n          this.selectItem(item, true);\n          event.preventDefault();\n          break;\n        case \"Escape\":\n          this.escape();\n          event.preventDefault();\n          break;\n      }\n    });\n    return item;\n  }\n  buildLabel() {\n    const label = document.createElement(\"span\");\n    label.classList.add(\"ql-picker-label\");\n    label.innerHTML = DropdownIcon;\n    label.tabIndex = \"0\";\n    label.setAttribute(\"role\", \"button\");\n    label.setAttribute(\"aria-expanded\", \"false\");\n    this.container.appendChild(label);\n    return label;\n  }\n  buildOptions() {\n    const options = document.createElement(\"span\");\n    options.classList.add(\"ql-picker-options\");\n    options.setAttribute(\"aria-hidden\", \"true\");\n    options.tabIndex = \"-1\";\n    options.id = `ql-picker-options-${optionsCounter}`;\n    optionsCounter += 1;\n    this.label.setAttribute(\"aria-controls\", options.id);\n    this.options = options;\n    Array.from(this.select.options).forEach((option) => {\n      const item = this.buildItem(option);\n      options.appendChild(item);\n      if (option.selected === true) {\n        this.selectItem(item);\n      }\n    });\n    this.container.appendChild(options);\n  }\n  buildPicker() {\n    Array.from(this.select.attributes).forEach((item) => {\n      this.container.setAttribute(item.name, item.value);\n    });\n    this.container.classList.add(\"ql-picker\");\n    this.label = this.buildLabel();\n    this.buildOptions();\n  }\n  escape() {\n    this.close();\n    setTimeout(() => this.label.focus(), 1);\n  }\n  close() {\n    this.container.classList.remove(\"ql-expanded\");\n    this.label.setAttribute(\"aria-expanded\", \"false\");\n    this.options.setAttribute(\"aria-hidden\", \"true\");\n  }\n  selectItem(item) {\n    let trigger = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n    const selected = this.container.querySelector(\".ql-selected\");\n    if (item === selected) return;\n    if (selected != null) {\n      selected.classList.remove(\"ql-selected\");\n    }\n    if (item == null) return;\n    item.classList.add(\"ql-selected\");\n    this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\n    if (item.hasAttribute(\"data-value\")) {\n      this.label.setAttribute(\"data-value\", item.getAttribute(\"data-value\"));\n    } else {\n      this.label.removeAttribute(\"data-value\");\n    }\n    if (item.hasAttribute(\"data-label\")) {\n      this.label.setAttribute(\"data-label\", item.getAttribute(\"data-label\"));\n    } else {\n      this.label.removeAttribute(\"data-label\");\n    }\n    if (trigger) {\n      this.select.dispatchEvent(new Event(\"change\"));\n      this.close();\n    }\n  }\n  update() {\n    let option;\n    if (this.select.selectedIndex > -1) {\n      const item = (\n        // @ts-expect-error Fix me later\n        this.container.querySelector(\".ql-picker-options\").children[this.select.selectedIndex]\n      );\n      option = this.select.options[this.select.selectedIndex];\n      this.selectItem(item);\n    } else {\n      this.selectItem(null);\n    }\n    const isActive = option != null && option !== this.select.querySelector(\"option[selected]\");\n    this.label.classList.toggle(\"ql-active\", isActive);\n  }\n}\nclass ColorPicker extends Picker {\n  constructor(select, label) {\n    super(select);\n    this.label.innerHTML = label;\n    this.container.classList.add(\"ql-color-picker\");\n    Array.from(this.container.querySelectorAll(\".ql-picker-item\")).slice(0, 7).forEach((item) => {\n      item.classList.add(\"ql-primary\");\n    });\n  }\n  buildItem(option) {\n    const item = super.buildItem(option);\n    item.style.backgroundColor = option.getAttribute(\"value\") || \"\";\n    return item;\n  }\n  selectItem(item, trigger) {\n    super.selectItem(item, trigger);\n    const colorLabel = this.label.querySelector(\".ql-color-label\");\n    const value = item ? item.getAttribute(\"data-value\") || \"\" : \"\";\n    if (colorLabel) {\n      if (colorLabel.tagName === \"line\") {\n        colorLabel.style.stroke = value;\n      } else {\n        colorLabel.style.fill = value;\n      }\n    }\n  }\n}\nclass IconPicker extends Picker {\n  constructor(select, icons) {\n    super(select);\n    this.container.classList.add(\"ql-icon-picker\");\n    Array.from(this.container.querySelectorAll(\".ql-picker-item\")).forEach((item) => {\n      item.innerHTML = icons[item.getAttribute(\"data-value\") || \"\"];\n    });\n    this.defaultItem = this.container.querySelector(\".ql-selected\");\n    this.selectItem(this.defaultItem);\n  }\n  selectItem(target, trigger) {\n    super.selectItem(target, trigger);\n    const item = target || this.defaultItem;\n    if (item != null) {\n      if (this.label.innerHTML === item.innerHTML) return;\n      this.label.innerHTML = item.innerHTML;\n    }\n  }\n}\nconst isScrollable = (el) => {\n  const {\n    overflowY\n  } = getComputedStyle(el, null);\n  return overflowY !== \"visible\" && overflowY !== \"clip\";\n};\nclass Tooltip {\n  constructor(quill, boundsContainer) {\n    this.quill = quill;\n    this.boundsContainer = boundsContainer || document.body;\n    this.root = quill.addContainer(\"ql-tooltip\");\n    this.root.innerHTML = this.constructor.TEMPLATE;\n    if (isScrollable(this.quill.root)) {\n      this.quill.root.addEventListener(\"scroll\", () => {\n        this.root.style.marginTop = `${-1 * this.quill.root.scrollTop}px`;\n      });\n    }\n    this.hide();\n  }\n  hide() {\n    this.root.classList.add(\"ql-hidden\");\n  }\n  position(reference2) {\n    const left = reference2.left + reference2.width / 2 - this.root.offsetWidth / 2;\n    const top = reference2.bottom + this.quill.root.scrollTop;\n    this.root.style.left = `${left}px`;\n    this.root.style.top = `${top}px`;\n    this.root.classList.remove(\"ql-flip\");\n    const containerBounds = this.boundsContainer.getBoundingClientRect();\n    const rootBounds = this.root.getBoundingClientRect();\n    let shift = 0;\n    if (rootBounds.right > containerBounds.right) {\n      shift = containerBounds.right - rootBounds.right;\n      this.root.style.left = `${left + shift}px`;\n    }\n    if (rootBounds.left < containerBounds.left) {\n      shift = containerBounds.left - rootBounds.left;\n      this.root.style.left = `${left + shift}px`;\n    }\n    if (rootBounds.bottom > containerBounds.bottom) {\n      const height = rootBounds.bottom - rootBounds.top;\n      const verticalShift = reference2.bottom - reference2.top + height;\n      this.root.style.top = `${top - verticalShift}px`;\n      this.root.classList.add(\"ql-flip\");\n    }\n    return shift;\n  }\n  show() {\n    this.root.classList.remove(\"ql-editing\");\n    this.root.classList.remove(\"ql-hidden\");\n  }\n}\nconst ALIGNS = [false, \"center\", \"right\", \"justify\"];\nconst COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\nconst FONTS = [false, \"serif\", \"monospace\"];\nconst HEADERS = [\"1\", \"2\", \"3\", false];\nconst SIZES = [\"small\", false, \"large\", \"huge\"];\nclass BaseTheme extends Theme {\n  constructor(quill, options) {\n    super(quill, options);\n    const listener = (e2) => {\n      if (!document.body.contains(quill.root)) {\n        document.body.removeEventListener(\"click\", listener);\n        return;\n      }\n      if (this.tooltip != null && // @ts-expect-error\n      !this.tooltip.root.contains(e2.target) && // @ts-expect-error\n      document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n        this.tooltip.hide();\n      }\n      if (this.pickers != null) {\n        this.pickers.forEach((picker) => {\n          if (!picker.container.contains(e2.target)) {\n            picker.close();\n          }\n        });\n      }\n    };\n    quill.emitter.listenDOM(\"click\", document.body, listener);\n  }\n  addModule(name) {\n    const module2 = super.addModule(name);\n    if (name === \"toolbar\") {\n      this.extendToolbar(module2);\n    }\n    return module2;\n  }\n  buildButtons(buttons, icons) {\n    Array.from(buttons).forEach((button) => {\n      const className = button.getAttribute(\"class\") || \"\";\n      className.split(/\\s+/).forEach((name) => {\n        if (!name.startsWith(\"ql-\")) return;\n        name = name.slice(\"ql-\".length);\n        if (icons[name] == null) return;\n        if (name === \"direction\") {\n          button.innerHTML = icons[name][\"\"] + icons[name].rtl;\n        } else if (typeof icons[name] === \"string\") {\n          button.innerHTML = icons[name];\n        } else {\n          const value = button.value || \"\";\n          if (value != null && icons[name][value]) {\n            button.innerHTML = icons[name][value];\n          }\n        }\n      });\n    });\n  }\n  buildPickers(selects, icons) {\n    this.pickers = Array.from(selects).map((select) => {\n      if (select.classList.contains(\"ql-align\")) {\n        if (select.querySelector(\"option\") == null) {\n          fillSelect(select, ALIGNS);\n        }\n        if (typeof icons.align === \"object\") {\n          return new IconPicker(select, icons.align);\n        }\n      }\n      if (select.classList.contains(\"ql-background\") || select.classList.contains(\"ql-color\")) {\n        const format2 = select.classList.contains(\"ql-background\") ? \"background\" : \"color\";\n        if (select.querySelector(\"option\") == null) {\n          fillSelect(select, COLORS, format2 === \"background\" ? \"#ffffff\" : \"#000000\");\n        }\n        return new ColorPicker(select, icons[format2]);\n      }\n      if (select.querySelector(\"option\") == null) {\n        if (select.classList.contains(\"ql-font\")) {\n          fillSelect(select, FONTS);\n        } else if (select.classList.contains(\"ql-header\")) {\n          fillSelect(select, HEADERS);\n        } else if (select.classList.contains(\"ql-size\")) {\n          fillSelect(select, SIZES);\n        }\n      }\n      return new Picker(select);\n    });\n    const update = () => {\n      this.pickers.forEach((picker) => {\n        picker.update();\n      });\n    };\n    this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n  }\n}\nBaseTheme.DEFAULTS = merge({}, Theme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        formula() {\n          this.quill.theme.tooltip.edit(\"formula\");\n        },\n        image() {\n          let fileInput = this.container.querySelector(\"input.ql-image[type=file]\");\n          if (fileInput == null) {\n            fileInput = document.createElement(\"input\");\n            fileInput.setAttribute(\"type\", \"file\");\n            fileInput.setAttribute(\"accept\", this.quill.uploader.options.mimetypes.join(\", \"));\n            fileInput.classList.add(\"ql-image\");\n            fileInput.addEventListener(\"change\", () => {\n              const range = this.quill.getSelection(true);\n              this.quill.uploader.upload(range, fileInput.files);\n              fileInput.value = \"\";\n            });\n            this.container.appendChild(fileInput);\n          }\n          fileInput.click();\n        },\n        video() {\n          this.quill.theme.tooltip.edit(\"video\");\n        }\n      }\n    }\n  }\n});\nclass BaseTooltip extends Tooltip {\n  constructor(quill, boundsContainer) {\n    super(quill, boundsContainer);\n    this.textbox = this.root.querySelector('input[type=\"text\"]');\n    this.listen();\n  }\n  listen() {\n    this.textbox.addEventListener(\"keydown\", (event) => {\n      if (event.key === \"Enter\") {\n        this.save();\n        event.preventDefault();\n      } else if (event.key === \"Escape\") {\n        this.cancel();\n        event.preventDefault();\n      }\n    });\n  }\n  cancel() {\n    this.hide();\n    this.restoreFocus();\n  }\n  edit() {\n    let mode = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : \"link\";\n    let preview = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n    this.root.classList.remove(\"ql-hidden\");\n    this.root.classList.add(\"ql-editing\");\n    if (this.textbox == null) return;\n    if (preview != null) {\n      this.textbox.value = preview;\n    } else if (mode !== this.root.getAttribute(\"data-mode\")) {\n      this.textbox.value = \"\";\n    }\n    const bounds = this.quill.getBounds(this.quill.selection.savedRange);\n    if (bounds != null) {\n      this.position(bounds);\n    }\n    this.textbox.select();\n    this.textbox.setAttribute(\"placeholder\", this.textbox.getAttribute(`data-${mode}`) || \"\");\n    this.root.setAttribute(\"data-mode\", mode);\n  }\n  restoreFocus() {\n    this.quill.focus({\n      preventScroll: true\n    });\n  }\n  save() {\n    let {\n      value\n    } = this.textbox;\n    switch (this.root.getAttribute(\"data-mode\")) {\n      case \"link\": {\n        const {\n          scrollTop\n        } = this.quill.root;\n        if (this.linkRange) {\n          this.quill.formatText(this.linkRange, \"link\", value, Emitter.sources.USER);\n          delete this.linkRange;\n        } else {\n          this.restoreFocus();\n          this.quill.format(\"link\", value, Emitter.sources.USER);\n        }\n        this.quill.root.scrollTop = scrollTop;\n        break;\n      }\n      case \"video\": {\n        value = extractVideoUrl(value);\n      }\n      case \"formula\": {\n        if (!value) break;\n        const range = this.quill.getSelection(true);\n        if (range != null) {\n          const index2 = range.index + range.length;\n          this.quill.insertEmbed(\n            index2,\n            // @ts-expect-error Fix me later\n            this.root.getAttribute(\"data-mode\"),\n            value,\n            Emitter.sources.USER\n          );\n          if (this.root.getAttribute(\"data-mode\") === \"formula\") {\n            this.quill.insertText(index2 + 1, \" \", Emitter.sources.USER);\n          }\n          this.quill.setSelection(index2 + 2, Emitter.sources.USER);\n        }\n        break;\n      }\n    }\n    this.textbox.value = \"\";\n    this.hide();\n  }\n}\nfunction extractVideoUrl(url2) {\n  let match3 = url2.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url2.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n  if (match3) {\n    return `${match3[1] || \"https\"}://www.youtube.com/embed/${match3[2]}?showinfo=0`;\n  }\n  if (match3 = url2.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n    return `${match3[1] || \"https\"}://player.vimeo.com/video/${match3[2]}/`;\n  }\n  return url2;\n}\nfunction fillSelect(select, values) {\n  let defaultValue = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n  values.forEach((value) => {\n    const option = document.createElement(\"option\");\n    if (value === defaultValue) {\n      option.setAttribute(\"selected\", \"selected\");\n    } else {\n      option.setAttribute(\"value\", String(value));\n    }\n    select.appendChild(option);\n  });\n}\nconst TOOLBAR_CONFIG$1 = [[\"bold\", \"italic\", \"link\"], [{\n  header: 1\n}, {\n  header: 2\n}, \"blockquote\"]];\nclass BubbleTooltip extends BaseTooltip {\n  constructor(quill, bounds) {\n    super(quill, bounds);\n    this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n      if (type !== Emitter.events.SELECTION_CHANGE) return;\n      if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n        this.show();\n        this.root.style.left = \"0px\";\n        this.root.style.width = \"\";\n        this.root.style.width = `${this.root.offsetWidth}px`;\n        const lines = this.quill.getLines(range.index, range.length);\n        if (lines.length === 1) {\n          const bounds2 = this.quill.getBounds(range);\n          if (bounds2 != null) {\n            this.position(bounds2);\n          }\n        } else {\n          const lastLine = lines[lines.length - 1];\n          const index2 = this.quill.getIndex(lastLine);\n          const length = Math.min(lastLine.length() - 1, range.index + range.length - index2);\n          const indexBounds = this.quill.getBounds(new Range(index2, length));\n          if (indexBounds != null) {\n            this.position(indexBounds);\n          }\n        }\n      } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n        this.hide();\n      }\n    });\n  }\n  listen() {\n    super.listen();\n    this.root.querySelector(\".ql-close\").addEventListener(\"click\", () => {\n      this.root.classList.remove(\"ql-editing\");\n    });\n    this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n      setTimeout(() => {\n        if (this.root.classList.contains(\"ql-hidden\")) return;\n        const range = this.quill.getSelection();\n        if (range != null) {\n          const bounds = this.quill.getBounds(range);\n          if (bounds != null) {\n            this.position(bounds);\n          }\n        }\n      }, 1);\n    });\n  }\n  cancel() {\n    this.show();\n  }\n  position(reference2) {\n    const shift = super.position(reference2);\n    const arrow = this.root.querySelector(\".ql-tooltip-arrow\");\n    arrow.style.marginLeft = \"\";\n    if (shift !== 0) {\n      arrow.style.marginLeft = `${-1 * shift - arrow.offsetWidth / 2}px`;\n    }\n    return shift;\n  }\n}\n__publicField(BubbleTooltip, \"TEMPLATE\", ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', \"</div>\"].join(\"\"));\nclass BubbleTheme extends BaseTheme {\n  constructor(quill, options) {\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG$1;\n    }\n    super(quill, options);\n    this.quill.container.classList.add(\"ql-bubble\");\n  }\n  extendToolbar(toolbar) {\n    this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n    if (toolbar.container != null) {\n      this.tooltip.root.appendChild(toolbar.container);\n      this.buildButtons(toolbar.container.querySelectorAll(\"button\"), Icons);\n      this.buildPickers(toolbar.container.querySelectorAll(\"select\"), Icons);\n    }\n  }\n}\nBubbleTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link(value) {\n          if (!value) {\n            this.quill.format(\"link\", false, Quill.sources.USER);\n          } else {\n            this.quill.theme.tooltip.edit();\n          }\n        }\n      }\n    }\n  }\n});\nconst TOOLBAR_CONFIG = [[{\n  header: [\"1\", \"2\", \"3\", false]\n}], [\"bold\", \"italic\", \"underline\", \"link\"], [{\n  list: \"ordered\"\n}, {\n  list: \"bullet\"\n}], [\"clean\"]];\nclass SnowTooltip extends BaseTooltip {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"preview\", this.root.querySelector(\"a.ql-preview\"));\n  }\n  listen() {\n    super.listen();\n    this.root.querySelector(\"a.ql-action\").addEventListener(\"click\", (event) => {\n      if (this.root.classList.contains(\"ql-editing\")) {\n        this.save();\n      } else {\n        this.edit(\"link\", this.preview.textContent);\n      }\n      event.preventDefault();\n    });\n    this.root.querySelector(\"a.ql-remove\").addEventListener(\"click\", (event) => {\n      if (this.linkRange != null) {\n        const range = this.linkRange;\n        this.restoreFocus();\n        this.quill.formatText(range, \"link\", false, Emitter.sources.USER);\n        delete this.linkRange;\n      }\n      event.preventDefault();\n      this.hide();\n    });\n    this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n      if (range == null) return;\n      if (range.length === 0 && source === Emitter.sources.USER) {\n        const [link2, offset] = this.quill.scroll.descendant(Link, range.index);\n        if (link2 != null) {\n          this.linkRange = new Range(range.index - offset, link2.length());\n          const preview = Link.formats(link2.domNode);\n          this.preview.textContent = preview;\n          this.preview.setAttribute(\"href\", preview);\n          this.show();\n          const bounds = this.quill.getBounds(this.linkRange);\n          if (bounds != null) {\n            this.position(bounds);\n          }\n          return;\n        }\n      } else {\n        delete this.linkRange;\n      }\n      this.hide();\n    });\n  }\n  show() {\n    super.show();\n    this.root.removeAttribute(\"data-mode\");\n  }\n}\n__publicField(SnowTooltip, \"TEMPLATE\", ['<a class=\"ql-preview\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"https://quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join(\"\"));\nclass SnowTheme extends BaseTheme {\n  constructor(quill, options) {\n    if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n      options.modules.toolbar.container = TOOLBAR_CONFIG;\n    }\n    super(quill, options);\n    this.quill.container.classList.add(\"ql-snow\");\n  }\n  extendToolbar(toolbar) {\n    if (toolbar.container != null) {\n      toolbar.container.classList.add(\"ql-snow\");\n      this.buildButtons(toolbar.container.querySelectorAll(\"button\"), Icons);\n      this.buildPickers(toolbar.container.querySelectorAll(\"select\"), Icons);\n      this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n      if (toolbar.container.querySelector(\".ql-link\")) {\n        this.quill.keyboard.addBinding({\n          key: \"k\",\n          shortKey: true\n        }, (_range, context2) => {\n          toolbar.handlers.link.call(toolbar, !context2.format.link);\n        });\n      }\n    }\n  }\n}\nSnowTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, {\n  modules: {\n    toolbar: {\n      handlers: {\n        link(value) {\n          if (value) {\n            const range = this.quill.getSelection();\n            if (range == null || range.length === 0) return;\n            let preview = this.quill.getText(range);\n            if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf(\"mailto:\") !== 0) {\n              preview = `mailto:${preview}`;\n            }\n            const {\n              tooltip\n            } = this.quill.theme;\n            tooltip.edit(\"link\", preview);\n          } else {\n            this.quill.format(\"link\", false, Quill.sources.USER);\n          }\n        }\n      }\n    }\n  }\n});\nQuill.register({\n  \"attributors/attribute/direction\": DirectionAttribute,\n  \"attributors/class/align\": AlignClass,\n  \"attributors/class/background\": BackgroundClass,\n  \"attributors/class/color\": ColorClass,\n  \"attributors/class/direction\": DirectionClass,\n  \"attributors/class/font\": FontClass,\n  \"attributors/class/size\": SizeClass,\n  \"attributors/style/align\": AlignStyle,\n  \"attributors/style/background\": BackgroundStyle,\n  \"attributors/style/color\": ColorStyle,\n  \"attributors/style/direction\": DirectionStyle,\n  \"attributors/style/font\": FontStyle,\n  \"attributors/style/size\": SizeStyle\n}, true);\nQuill.register({\n  \"formats/align\": AlignClass,\n  \"formats/direction\": DirectionClass,\n  \"formats/indent\": IndentClass,\n  \"formats/background\": BackgroundStyle,\n  \"formats/color\": ColorStyle,\n  \"formats/font\": FontClass,\n  \"formats/size\": SizeClass,\n  \"formats/blockquote\": Blockquote,\n  \"formats/code-block\": CodeBlock,\n  \"formats/header\": Header,\n  \"formats/list\": ListItem,\n  \"formats/bold\": Bold,\n  \"formats/code\": Code,\n  \"formats/italic\": Italic,\n  \"formats/link\": Link,\n  \"formats/script\": Script,\n  \"formats/strike\": Strike,\n  \"formats/underline\": Underline,\n  \"formats/formula\": Formula,\n  \"formats/image\": Image,\n  \"formats/video\": Video,\n  \"modules/syntax\": Syntax,\n  \"modules/table\": Table,\n  \"modules/toolbar\": Toolbar,\n  \"themes/bubble\": BubbleTheme,\n  \"themes/snow\": SnowTheme,\n  \"ui/icons\": Icons,\n  \"ui/picker\": Picker,\n  \"ui/icon-picker\": IconPicker,\n  \"ui/color-picker\": ColorPicker,\n  \"ui/tooltip\": Tooltip\n}, true);\nconst RichtextMixin = {\n  name: \"richtext-mixin\",\n  initialState: {\n    quill: null\n  },\n  created() {\n    importInlineCSS(\"quill\", () => import(\"./quill.snow-BMrontFB.js\"));\n    this.quill = null;\n    this.listCallbacks.attach(\n      this.addCallback.bind(this),\n      \"RichtextMixin:addCallback\"\n    );\n  },\n  getPlaceHolderValue() {\n    return this.element.hasAttribute(\"placeholder\") ? this.element.getAttribute(\"placeholder\") : \"\";\n  },\n  addCallback(value, listCallbacks) {\n    if (this.quill == null) {\n      const toolbarOptions = [\n        [\"bold\", \"italic\"],\n        [\"blockquote\"],\n        [{ header: [1, 2, 3, 4, 5, 6, false] }],\n        [{ list: \"ordered\" }, { list: \"bullet\" }],\n        [\"link\"],\n        [\"clean\"]\n      ];\n      const richtext = this.element.querySelector(\n        \"[data-richtext]\"\n      );\n      this.quill = new Quill(richtext, {\n        modules: { toolbar: toolbarOptions },\n        placeholder: this.getPlaceHolderValue(),\n        theme: \"snow\"\n      });\n    }\n    const mdParser = new MarkdownIt({\n      html: true\n    });\n    const formattedValue = this.value.replace(/\\r\\n|\\n/g, \"<br>\");\n    const html = mdParser.render(formattedValue);\n    const delta = this.quill.clipboard.convert({ html });\n    this.quill.setContents(delta);\n    if (this.isRequired()) {\n      this.createHiddenRequiredInput();\n      this.quill.on(\"text-change\", this.onTextChange.bind(this));\n    }\n    const nextProcessor = listCallbacks.shift();\n    if (nextProcessor) nextProcessor(value, listCallbacks);\n  },\n  isRequired() {\n    return Array.from(this.element.attributes).some(\n      (attr) => attr.name === \"required\"\n    );\n  },\n  createHiddenRequiredInput() {\n    const attributeName = this.getAttributeValue(\"name\");\n    this.hiddenInput = document.querySelector(\n      `input[name=\"${`${attributeName}-hidden`}\"]`\n    );\n    if (!this.hiddenInput) {\n      this.hiddenInput = this.createHiddenInput(`${attributeName}-hidden`);\n      this.element.appendChild(this.hiddenInput);\n      this.addInvalidEventListener();\n    }\n    this.hiddenInput.value = this.quill.getText();\n  },\n  createHiddenInput(attributeName) {\n    const input = document.createElement(\"input\");\n    input.name = attributeName;\n    input.setAttribute(\"required\", \"true\");\n    input.style.opacity = \"0\";\n    input.style.position = \"absolute\";\n    input.style.pointerEvents = \"none\";\n    return input;\n  },\n  getAttributeValue(attributeName) {\n    const attribute2 = Array.from(this.element.attributes).find(\n      (attr) => attr.name === attributeName\n    );\n    return attribute2 ? attribute2.value : \"\";\n  },\n  displayCustomErrorMessage(message) {\n    const richtext = this.element.querySelector(\"[data-richtext]\");\n    if (richtext) {\n      let errorMessageElement = richtext.querySelector(\n        \".required-error-message\"\n      );\n      if (!errorMessageElement) {\n        errorMessageElement = document.createElement(\"div\");\n        errorMessageElement.className = \"required-error-message\";\n      }\n      richtext.appendChild(errorMessageElement);\n      errorMessageElement.textContent = message;\n      richtext.classList.add(\"error-border-richtext\");\n    }\n  },\n  addInvalidEventListener() {\n    this.hiddenInput.addEventListener(\"invalid\", (e2) => {\n      e2.preventDefault();\n      this.displayCustomErrorMessage(\"Please fill out this field.\");\n    });\n  },\n  onTextChange() {\n    this.hiddenInput.value = this.quill.getText();\n    this.removeErrorMessageAndStyling();\n  },\n  removeErrorMessageAndStyling() {\n    const richtext = this.element.querySelector(\"[data-richtext]\");\n    const errorMessageElement = richtext.querySelector(\n      \".required-error-message\"\n    );\n    if (errorMessageElement) errorMessageElement.remove();\n    richtext.classList.remove(\"error-border-richtext\");\n  }\n};\nconst callbackDirectory = {\n  autocompletion: AutocompletionMixin,\n  richtext: RichtextMixin\n};\nconst index$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  AutocompletionMixin,\n  RichtextMixin,\n  callbackDirectory\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst AddableMixin = {\n  name: \"addable-mixin\",\n  created() {\n    this.listTemplateAdditions.attach(\n      this.addableValue.bind(this),\n      \"AddableMixin:addableValue\"\n    );\n  },\n  getAddableAttributes() {\n    const addableAttr = Array.from(this.element.attributes).filter(\n      (a2) => a2.name.startsWith(\"addable-\")\n    );\n    const cleanAddableAttr = {};\n    for (const attr of addableAttr)\n      cleanAddableAttr[attr.name.replace(\"addable-\", \"\")] = attr.value;\n    if (!Object.hasOwn(cleanAddableAttr, \"data-src\"))\n      cleanAddableAttr[\"data-src\"] = this.range;\n    return cleanAddableAttr;\n  },\n  addableValue(template, listTemplateAdditions, attributes) {\n    const addables = this.getAddableAttributes(attributes);\n    const newTemplate = x`\n      ${template}\n      <solid-form ...=${spread(addables)}>\n      </solid-form>\n    `;\n    const nextProcessor = listTemplateAdditions.shift();\n    if (nextProcessor) nextProcessor(newTemplate, listTemplateAdditions);\n  }\n};\nconst LabelLastMixin = {\n  name: \"label-last-mixin\",\n  created() {\n    this.listTemplateAdditions.attach(\n      this.addLabelLast.bind(this),\n      \"LabelLastMixin:addLabelLast\"\n    );\n  },\n  addLabelLast(template, listTemplateAdditions) {\n    const newTemplate = x`${template}<label>${this.label || this.name}</label>`;\n    const nextProcessor = listTemplateAdditions.shift();\n    if (nextProcessor) nextProcessor(newTemplate, listTemplateAdditions);\n  }\n};\nconst LabelMixin = {\n  name: \"label-mixin\",\n  created() {\n    this.listAttributes.id = uniqID();\n    this.listTemplateAdditions.attach(\n      this.addLabel.bind(this),\n      \"LabelMixin:addLabel\"\n    );\n  },\n  addLabel(template, listTemplateAdditions) {\n    const newTemplate = x`<label for=\"${this.listAttributes.id}\">${this.label || this.name}</label>${template}`;\n    const nextProcessor = listTemplateAdditions.shift();\n    if (nextProcessor) nextProcessor(newTemplate, listTemplateAdditions);\n  }\n};\nconst templateAdditionDirectory = {\n  label: LabelMixin,\n  labellast: LabelLastMixin,\n  addable: AddableMixin\n};\nconst index$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  AddableMixin,\n  LabelLastMixin,\n  LabelMixin,\n  templateAdditionDirectory\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst LinkTextMixin = {\n  name: \"link-text-mixin\",\n  attributes: {\n    linkText: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"linkText\");\n      }\n    }\n  }\n};\nconst defaultTemplates = {\n  action: {\n    template: (value, attributes) => x`\n      <solid-link\n        data-src=${o$2(attributes.src)}\n        next=${o$2(value)}\n        id=${o$2(attributes.id)}\n        link-text=${o$2(attributes.linkText)}\n      >\n        ${attributes.linkText == null ? attributes.name || \"\" : attributes.linkText}\n      </solid-link>\n    `,\n    dependencies: [LinkTextMixin]\n  },\n  multiple: {\n    template: (value, attributes) => x`\n      <solid-display\n        data-src=${value || \"\"}\n        fields=${o$2(attributes.fields)}\n        next=${o$2(attributes.next)}\n        empty-widget=${o$2(attributes.emptyWidget)}\n      ></solid-display>\n    `,\n    dependencies: []\n  }\n};\nconst AltMixin = {\n  name: \"alt-mixin\",\n  attributes: {\n    alt: {\n      type: String,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"alt\");\n      }\n    }\n  }\n};\nconst EditableMixin = {\n  name: \"editable-mixin\",\n  use: [StoreMixin],\n  // used to get context\n  attributes: {\n    editable: {\n      type: Boolean,\n      default: null,\n      callback: function(newValue) {\n        if (newValue !== null) this.listAttributes.editable = true;\n      }\n    },\n    valueId: {\n      type: String,\n      default: \"\"\n    },\n    buttonLabel: {\n      type: String,\n      default: \"Modifier\"\n    }\n  },\n  created() {\n    this.listTemplateAdditions.attach(\n      this.addEditButton.bind(this),\n      \"EditableMixin:addEditButton\"\n    );\n  },\n  addEditButton(template, listTemplateAdditions) {\n    let newTemplate = null;\n    if (this.editable !== null) {\n      newTemplate = x`${template}<button @click=${this.activateEditableField.bind(this)}>${this.buttonLabel}</button>`;\n    }\n    const nextProcessor = listTemplateAdditions.shift();\n    if (nextProcessor)\n      nextProcessor(newTemplate || template, listTemplateAdditions);\n  },\n  activateEditableField(e2) {\n    const editableField = this.element.querySelector(\"[data-editable]\");\n    const editButton = e2.target;\n    editableField.toggleAttribute(\"contenteditable\", true);\n    editableField.focus();\n    editButton.toggleAttribute(\"disabled\", true);\n    editableField.addEventListener(\n      \"focusout\",\n      () => this.save(editableField, editButton)\n    );\n  },\n  save(editableField, editButton) {\n    editableField.toggleAttribute(\"contenteditable\", false);\n    editButton.removeAttribute(\"disabled\");\n    if (!this.name || !this.valueId) {\n      console.warn(\"Some attributes are missing to perform the update\");\n      return;\n    }\n    const resource = {};\n    resource[this.name] = editableField.innerText;\n    resource[\"@context\"] = this.context;\n    store.patch(resource, this.valueId);\n  }\n};\nconst displayTemplates = {\n  value: {\n    template: (value) => x`${value}`,\n    dependencies: []\n  },\n  div: {\n    template: (value, attributes) => x`<div name=${o$2(attributes.name)} ?data-editable=${attributes.editable}>${value}</div>`,\n    dependencies: [EditableMixin]\n  },\n  link: {\n    template: (value, attributes) => x`\n      <a\n        name=${o$2(attributes.name)}\n        href=${(attributes.mailto || attributes.tel || \"\") + (value || \"#\")}\n        target=${o$2(attributes.target)}\n        ?data-editable=${attributes.editable}\n        id=${o$2(attributes.id)}\n        link-text=${o$2(attributes.linkText)}\n      >\n        ${attributes.linkText || value || \"\"}\n      </a>\n    `,\n    dependencies: [EditableMixin, LinkTextMixin]\n  },\n  img: {\n    template: (value, attributes) => x`\n      <img\n        name=${o$2(attributes.name)}\n        src=${o$2(value)}\n        alt=${o$2(attributes.alt)}\n        style=\"max-width: 100%; max-height: 100%;\"\n      />\n    `,\n    dependencies: [AltMixin]\n  },\n  boolean: {\n    template: (value, attributes) => x`${value === \"true\" ? x`<label>${attributes.label || attributes.name || \"\"}</label>` : \"\"}`,\n    dependencies: []\n  }\n};\nconst FilterRangeFormMixin = {\n  name: \"filter-range-form-mixin\",\n  attributes: {\n    startValue: {\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        this.addToAttributes(this.getDefaultValue(value), \"startValue\");\n      }\n    },\n    endValue: {\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        this.addToAttributes(this.getDefaultValue(value), \"endValue\");\n      }\n    }\n  },\n  getDefaultValue(value) {\n    if (value === \"today\") return (/* @__PURE__ */ new Date()).toISOString().split(\"T\")[0];\n    return value;\n  },\n  getValue() {\n    if (!this.dataHolder) return [];\n    if (this.dataHolder.length !== 2)\n      this.showDataHolderError(2, this.dataHolder.length);\n    return [\n      // we expect 2 values, one min and one max\n      this.getValueFromElement(this.dataHolder[0]),\n      this.getValueFromElement(this.dataHolder[1])\n    ];\n  },\n  get type() {\n    return \"range\";\n  }\n};\nconst FormCheckboxMixin = {\n  name: \"form-checkbox-mixin\",\n  getValueFromElement(element) {\n    return element.checked;\n  },\n  get type() {\n    return \"boolean\";\n  }\n};\nconst FormCheckboxesMixin = {\n  name: \"form-checkboxes-mixin\",\n  attributes: {\n    values: {\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        if (!value) return;\n        try {\n          this.listAttributes.values = JSON.parse(value);\n        } catch (e2) {\n          console.error(e2);\n          this.listAttributes.values = [];\n        }\n        this.render();\n        this.element.dispatchEvent(new Event(\"change\"));\n      }\n    }\n  },\n  created() {\n    this.listAttributes.values = [];\n  },\n  getValue() {\n    const options = Array.from(\n      this.element.querySelectorAll(\"input\")\n    );\n    return options.filter((el) => el.checked).map((el) => {\n      if (!el.value) return null;\n      let value = el.value;\n      try {\n        value = JSON.parse(el.value);\n      } catch {\n      }\n      return value;\n    });\n  },\n  get type() {\n    return this.enum === \"\" ? \"resource\" : \"string\";\n  },\n  get multiple() {\n    return true;\n  }\n};\nconst FormDropdownMixin = {\n  name: \"form-dropdown-mixin\",\n  attributes: {\n    values: {\n      // used to set more than 1 value, for multiple select\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        if (value) {\n          try {\n            this.listAttributes.values = JSON.parse(value);\n          } catch (e2) {\n            console.error(e2);\n            this.listAttributes.values = [];\n          }\n          this.render();\n          this.dispatchChange();\n        }\n      }\n    },\n    dataId: {\n      type: String,\n      default: \"\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"id\");\n      }\n    }\n  },\n  created() {\n    this.listAttributes.values = [];\n    if (this.listAttributes.value && !JSON.parse(this.listAttributes.value[\"@id\"]) && Array.isArray(JSON.parse(this.listAttributes.value))) {\n      this.listAttributes.values = this.listAttributes.value;\n    }\n    if (this.multiple) this.listAttributes.multiple = true;\n  },\n  dispatchChange() {\n    if (!this.element.querySelector(\"select\")) return;\n    this.element.querySelector(\"select\").dispatchEvent(new Event(\"change\"));\n  },\n  getValue() {\n    if (!this.dataHolder) return \"\";\n    if (!this.multiple) {\n      if (this.dataHolder.length > 1)\n        this.showDataHolderError(1, this.dataHolder.length);\n      return this.getValueFromElement(this.dataHolder[0]);\n    }\n    const options = Array.from(\n      this.element.querySelectorAll(\"option\")\n    );\n    return options.filter((el) => el.selected).map((el) => el.value ? JSON.parse(el.value) : null);\n  },\n  get type() {\n    return this.enum === \"\" ? \"resource\" : \"string\";\n  },\n  get multiple() {\n    return this.element.hasAttribute(\"multiple\");\n  }\n};\nconst FormFileMixin = {\n  name: \"form-file-mixin\",\n  attributes: {\n    uploadUrl: {\n      type: String,\n      default: \"\"\n    }\n  },\n  initialState: {\n    initialValue: \"\"\n  },\n  created() {\n    this.listAttributes.output = \"\";\n    this.listAttributes.resetButtonHidden = true;\n    this.listAttributes.selectFile = this.selectFile.bind(this);\n    this.listAttributes.resetFile = this.resetFile.bind(this);\n  },\n  attached() {\n    this.element.closest(\"form\").addEventListener(\"reset\", this.resetFormFile.bind(this));\n    this.element.closest(\"solid-form\").addEventListener(\"populate\", this.onPopulate.bind(this));\n  },\n  onPopulate() {\n    const dataHolder = this.element.querySelector(\"input[data-holder]\");\n    dataHolder.value = this.value;\n    dataHolder.dispatchEvent(new Event(\"change\"));\n  },\n  resetFormFile(e2) {\n    if (e2.target && e2.target.contains(this.element)) {\n      if (this.initialValue !== \"\") {\n        this.value = this.initialValue;\n      }\n      this.listAttributes.resetButtonHidden = true;\n      this.planRender();\n      const dataHolder = this.element.querySelector(\"input[data-holder]\");\n      dataHolder.value = this.value;\n      dataHolder.dispatchEvent(new Event(\"change\"));\n    }\n  },\n  selectFile() {\n    var _a3, _b;\n    if (this.uploadUrl === null) return;\n    if (this.initialValue === \"\") {\n      this.initialValue = this.value;\n    }\n    const filePicker = this.element.querySelector('input[type=\"file\"]');\n    if (((_a3 = filePicker.files) == null ? void 0 : _a3.length) === 0) return;\n    const dataHolder = this.element.querySelector(\"input[data-holder]\");\n    this.listAttributes.output = \"⏳\";\n    this.planRender();\n    const file = (_b = filePicker.files) == null ? void 0 : _b[0];\n    const formData = new FormData();\n    formData.append(\"file\", file);\n    store.fetchAuthn(this.uploadUrl, {\n      method: \"POST\",\n      body: formData\n    }).then((response) => this.updateFile(dataHolder, response)).catch((error2) => {\n      this.listAttributes.fileValue = \"\";\n      this.listAttributes.output = \"upload error\";\n      this.planRender();\n      console.error(error2);\n    });\n  },\n  updateFile(dataHolder, response) {\n    const location2 = response.headers.get(\"location\");\n    if (location2 == null) {\n      this.listAttributes.output = \"header location not found!\";\n    } else {\n      this.value = location2;\n      this.listAttributes.output = \"\";\n      this.listAttributes.resetButtonHidden = false;\n      dataHolder.value = location2;\n      dataHolder.dispatchEvent(new Event(\"change\"));\n      this.planRender();\n    }\n  },\n  resetFile(event) {\n    event.preventDefault();\n    this.value = \"\";\n    const filePicker = this.element.querySelector('input[type=\"file\"]');\n    const dataHolder = this.element.querySelector(\"input[data-holder]\");\n    if (filePicker && dataHolder) {\n      filePicker.value = dataHolder.value = \"\";\n    }\n    this.listAttributes.fileValue = \"\";\n    this.listAttributes.output = \"\";\n    this.listAttributes.resetButtonHidden = true;\n    dataHolder.dispatchEvent(new Event(\"change\"));\n    this.planRender();\n  }\n};\nconst FormLengthMixin = {\n  name: \"form-length-mixin\",\n  attributes: {\n    maxlength: {\n      type: Number,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"maxlength\");\n      }\n    },\n    minlength: {\n      type: Number,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"minlength\");\n      }\n    }\n  }\n};\nconst FormMinMaxMixin = {\n  name: \"form-min-max-mixin\",\n  attributes: {\n    min: {\n      type: Number,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"min\");\n      }\n    },\n    max: {\n      type: Number,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"max\");\n      }\n    }\n  }\n};\nconst FormMixin = {\n  name: \"form-mixin\",\n  attributes: {\n    required: {\n      type: Boolean,\n      default: false,\n      callback: function() {\n        this.listAttributes.required = true;\n      }\n    },\n    autocomplete: {\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        this.addToAttributes(value, \"autocomplete\");\n      }\n    }\n  },\n  attached() {\n    this.listAttributes.onChange = this.onChange.bind(this);\n  },\n  onChange(e2) {\n    e2.preventDefault();\n    e2.stopPropagation();\n    this.element.dispatchEvent(new Event(\"change\", { bubbles: true }));\n  },\n  getValue() {\n    if (!this.dataHolder || this.dataHolder.length === 0) return this.value;\n    if (this.dataHolder.length > 1)\n      this.showDataHolderError(1, this.dataHolder.length);\n    return this.getValueFromElement(this.dataHolder[0]);\n  },\n  get type() {\n    return \"string\";\n  },\n  get multiple() {\n    return false;\n  },\n  get dataHolder() {\n    const dataHolders = Array.from(\n      this.element.querySelectorAll(\"[data-holder]\")\n    );\n    const widgetDataHolders = dataHolders.filter((element) => {\n      const dataHolderAncestor = element.parentElement ? element.parentElement.closest(\"[data-holder]\") : null;\n      return dataHolderAncestor === this.element || !dataHolderAncestor || !this.element.contains(dataHolderAncestor);\n    });\n    return widgetDataHolders.length > 0 ? widgetDataHolders : null;\n  },\n  getValueFromElement(element) {\n    return element.component ? element.component.getValue() : element.value;\n  },\n  showDataHolderError(expected, found) {\n    console.warn(\n      `Expected ${expected} data-holder element in ${this.element.tagName}. Found ${found}`\n    );\n  }\n};\nconst FormNumberMixin = {\n  name: \"form-number-mixin\",\n  getValueFromElement(element) {\n    return element.value ? Number(element.value) : \"\";\n  },\n  get type() {\n    return \"number\";\n  }\n};\nconst FormRadioMixin = {\n  name: \"form-radio-mixin\",\n  created() {\n    this.listAttributes.id = uniqID();\n  },\n  getValue() {\n    const checkedElement = this.element.querySelector(\n      \"input[type=radio]:checked\"\n    );\n    return checkedElement ? checkedElement.value : \"\";\n  }\n};\nconst FormStepMixin = {\n  name: \"form-time-mixin\",\n  attributes: {\n    step: {\n      type: Number,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"step\");\n      }\n    }\n  }\n};\nconst MultipleFormMixin = {\n  name: \"multiple-form-mixin\",\n  use: [StoreMixin],\n  attributes: {\n    widget: {\n      type: String,\n      default: \"solid-form-text\"\n    },\n    addLabel: {\n      type: String,\n      default: \"+\",\n      callback: function(value) {\n        if (value !== this.listAttributes.addLabel)\n          this.listAttributes.addLabel = value;\n        this.planRender();\n      }\n    },\n    removeLabel: {\n      type: String,\n      default: \"×\",\n      callback: function(value) {\n        if (value !== this.listAttributes.removeLabel)\n          this.listAttributes.removeLabel = value;\n        this.planRender();\n      }\n    },\n    range: {\n      type: String,\n      default: \"\"\n    },\n    addClass: {\n      type: String,\n      default: void 0,\n      callback: function(value) {\n        if (value !== this.listAttributes.addClass)\n          this.listAttributes.addClass = value;\n        this.planRender();\n      }\n    },\n    removeClass: {\n      type: String,\n      default: void 0,\n      callback: function(value) {\n        if (value !== this.listAttributes.removeClass)\n          this.listAttributes.removeClass = value;\n        this.planRender();\n      }\n    }\n  },\n  created() {\n    this.listValueTransformations.attach(\n      this.setDataSrc.bind(this),\n      \"MultipleFormMixin:setDataSrc\"\n    );\n    this.listAttributes.children = [];\n    this.listAttributes.addLabel = this.addLabel;\n    this.listAttributes.removeLabel = this.removeLabel;\n    this.listAttributes.addClass = this.addClass;\n    this.listAttributes.removeClass = this.removeClass;\n    this.listAttributes.addItem = () => {\n      this.insertWidget();\n      this.planRender();\n    };\n    this.listAttributes.removeItem = (index2) => {\n      this.element.querySelector(`[data-index=\"${this.name + index2}\"]`).remove();\n      this.element.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    };\n  },\n  setDataSrc(value, listValueTransformations) {\n    if (value && value !== this.dataSrc) {\n      try {\n        if (Array.isArray(JSON.parse(value))) {\n          this.setValue(JSON.parse(value));\n        }\n      } catch {\n        this.dataSrc = value;\n      }\n    }\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(value, listValueTransformations);\n  },\n  populate() {\n    if (!this.resource || !this.resource[\"ldp:contains\"]) return;\n    this.listAttributes.children = [];\n    for (const resource of this.resource[\"ldp:contains\"]) {\n      this.insertWidget(resource[\"@id\"]);\n    }\n    this.planRender();\n  },\n  insertWidget(value = \"\") {\n    if (!this.widget) return;\n    const widget = document.createElement(this.widget);\n    const attributes = {\n      \"data-holder\": true,\n      name: this.name,\n      value,\n      range: this.range\n    };\n    for (const name of Object.keys(attributes)) {\n      if (typeof attributes[name] === \"boolean\")\n        widget.toggleAttribute(name, attributes[name]);\n      else widget.setAttribute(name, attributes[name]);\n    }\n    this.listAttributes.children.push(widget);\n  },\n  empty() {\n    this.listAttributes.children = [];\n    this.planRender();\n  },\n  getValue() {\n    if (!this.dataHolder) return [];\n    return Array.from(this.dataHolder).map((element) => {\n      const elValue = this.getValueFromElement(element);\n      return elValue;\n    });\n  },\n  get type() {\n    return \"resource\";\n  },\n  get multiple() {\n    return true;\n  }\n};\nconst MultipleselectFormMixin = {\n  name: \"multipleselect-form-mixin\",\n  use: [StoreMixin],\n  attributes: {\n    range: {\n      // range attribute is passed to the solid-dropdown\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        if (value && value !== this.listAttributes.range)\n          this.listAttributes.range = value;\n      }\n    },\n    enum: {\n      // enum attribute is passed to the solid-dropdown\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        if (value && value !== this.listAttributes.enum)\n          this.listAttributes.enum = value;\n      }\n    },\n    orderAsc: {\n      type: String,\n      default: \"name\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"orderAsc\");\n      }\n    },\n    orderDesc: {\n      type: String,\n      default: \"name\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"orderDesc\");\n      }\n    }\n  },\n  created() {\n    this.listValueTransformations.attach(\n      this.setDataSrc.bind(this),\n      \"MultipleselectFormMixin:setDataSrc\"\n    );\n  },\n  setDataSrc(value, listValueTransformations) {\n    if (value && value !== this.dataSrc) {\n      try {\n        const values = JSON.parse(value);\n        if (values && Array.isArray(values)) {\n          this.setValue(values);\n        } else {\n          this.setValue([value]);\n        }\n      } catch {\n        this.dataSrc = value;\n        this.setValue([{ \"@id\": value }]);\n      }\n    }\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(value, listValueTransformations);\n  },\n  populate() {\n    if (!this.resource || !this.resource[\"ldp:contains\"] && !Array.isArray(this.resource))\n      return;\n    this.setValue(this.resource[\"ldp:contains\"]);\n    this.planRender();\n  },\n  setValue(values) {\n    this.listAttributes.values = JSON.stringify(values.map((r3) => r3[\"@id\"]));\n  },\n  empty() {\n    this.listAttributes.values = [];\n    this.planRender();\n  },\n  get type() {\n    return this.enum === \"\" ? \"resource\" : \"string\";\n  },\n  get multiple() {\n    return true;\n  }\n};\nconst PatternMixin = {\n  name: \"pattern-mixin\",\n  attributes: {\n    pattern: {\n      type: String,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"pattern\");\n      }\n    },\n    title: {\n      type: String,\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"title\");\n      }\n    }\n  }\n};\nconst RangeMixin = {\n  name: \"range-mixin\",\n  use: [StoreMixin, SorterMixin, FederationMixin],\n  attributes: {\n    range: {\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        if (value !== this.dataSrc) this.dataSrc = value;\n      }\n    },\n    enum: {\n      type: String,\n      default: \"\",\n      callback: function(value) {\n        if (value !== null) {\n          const optional = value.trim().split(\",\");\n          const list2 = {};\n          for (const element of optional) {\n            if (element.includes(\"=\")) {\n              const option = element.trim().split(\"=\");\n              const key = option[1].trim();\n              const keyValue = option[0].trim();\n              list2[key] = keyValue;\n            } else {\n              const elem = element.trim();\n              list2[elem] = elem;\n            }\n          }\n          this.addToAttributes(list2, \"enum\");\n        }\n      }\n    },\n    optionLabel: {\n      type: String,\n      default: \"name\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"optionLabel\");\n      }\n    },\n    optionValue: {\n      type: String,\n      default: \"@id\",\n      callback: function(newValue) {\n        this.addToAttributes(newValue, \"optionValue\");\n      }\n    }\n  },\n  initialState: {\n    listPostProcessors: new PostProcessorRegistry()\n  },\n  created() {\n    this.listPostProcessors = new PostProcessorRegistry();\n    this.listAttributes.optionLabel = this.optionLabel;\n    this.listAttributes.optionValue = this.optionValue;\n  },\n  async populate() {\n    const resources = this.resource ? this.resource[\"ldp:contains\"] : [];\n    const listPostProcessorsCopy = this.listPostProcessors.deepCopy();\n    listPostProcessorsCopy.attach(\n      this.setRangeAttribute.bind(this),\n      \"RangeMixin:setRangeAttribute\"\n    );\n    const nextProcessor = listPostProcessorsCopy.shift();\n    await nextProcessor(resources, listPostProcessorsCopy, null, this.dataSrc);\n  },\n  async setRangeAttribute(resources) {\n    if (resources) {\n      const getRangeValue = async (resource) => {\n        let res = await store.getData(\n          resource[\"@id\"],\n          this.context || base_context\n        );\n        if (res === null) {\n          res = resource;\n        }\n        const selectedValue = await resource[this.optionValue];\n        const value = this.optionValue.includes(\"@id\") || selectedValue[\"@id\"] ? `{\"@id\": \"${selectedValue}\"}` : (\n          //  resource\n          selectedValue\n        );\n        const labelProperty = this.optionLabel.split(/[.]+/).pop();\n        const label = await res[labelProperty];\n        return { value, label, selectedValue };\n      };\n      this.listAttributes.range = await Promise.all(\n        resources.filter((el) => el !== null).map((r3) => getRangeValue(r3))\n      );\n    }\n    this.planRender();\n  },\n  empty() {\n    this.listAttributes.range = [];\n    this.planRender();\n  },\n  get type() {\n    return this.enum === \"\" ? \"resource\" : \"string\";\n  }\n};\nvar fromDelta = { exports: {} };\nfunction isObject$2(value) {\n  var type = typeof value;\n  return value != null && (type == \"object\" || type == \"function\");\n}\nvar isObject_1 = isObject$2;\nvar isArray$3 = Array.isArray;\nvar isArray_1 = isArray$3;\nvar freeGlobal$1 = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\nvar _freeGlobal = freeGlobal$1;\nvar freeGlobal = _freeGlobal;\nvar freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\nvar root$2 = freeGlobal || freeSelf || Function(\"return this\")();\nvar _root = root$2;\nvar root$1 = _root;\nvar Symbol$4 = root$1.Symbol;\nvar _Symbol = Symbol$4;\nfunction arrayMap$2(array, iteratee) {\n  var index2 = -1, length = array == null ? 0 : array.length, result = Array(length);\n  while (++index2 < length) {\n    result[index2] = iteratee(array[index2], index2, array);\n  }\n  return result;\n}\nvar _arrayMap = arrayMap$2;\nvar Symbol$3 = _Symbol;\nvar objectProto$2 = Object.prototype;\nvar hasOwnProperty$1 = objectProto$2.hasOwnProperty;\nvar nativeObjectToString$1 = objectProto$2.toString;\nvar symToStringTag$1 = Symbol$3 ? Symbol$3.toStringTag : void 0;\nfunction getRawTag$1(value) {\n  var isOwn = hasOwnProperty$1.call(value, symToStringTag$1), tag = value[symToStringTag$1];\n  try {\n    value[symToStringTag$1] = void 0;\n    var unmasked = true;\n  } catch (e2) {\n  }\n  var result = nativeObjectToString$1.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag$1] = tag;\n    } else {\n      delete value[symToStringTag$1];\n    }\n  }\n  return result;\n}\nvar _getRawTag = getRawTag$1;\nvar objectProto$1 = Object.prototype;\nvar nativeObjectToString = objectProto$1.toString;\nfunction objectToString$1(value) {\n  return nativeObjectToString.call(value);\n}\nvar _objectToString = objectToString$1;\nvar Symbol$2 = _Symbol, getRawTag = _getRawTag, objectToString = _objectToString;\nvar nullTag = \"[object Null]\", undefinedTag = \"[object Undefined]\";\nvar symToStringTag = Symbol$2 ? Symbol$2.toStringTag : void 0;\nfunction baseGetTag$3(value) {\n  if (value == null) {\n    return value === void 0 ? undefinedTag : nullTag;\n  }\n  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\n}\nvar _baseGetTag = baseGetTag$3;\nfunction isObjectLike$2(value) {\n  return value != null && typeof value == \"object\";\n}\nvar isObjectLike_1 = isObjectLike$2;\nvar baseGetTag$2 = _baseGetTag, isObjectLike$1 = isObjectLike_1;\nvar symbolTag = \"[object Symbol]\";\nfunction isSymbol$1(value) {\n  return typeof value == \"symbol\" || isObjectLike$1(value) && baseGetTag$2(value) == symbolTag;\n}\nvar isSymbol_1 = isSymbol$1;\nvar Symbol$1 = _Symbol, arrayMap$1 = _arrayMap, isArray$2 = isArray_1, isSymbol = isSymbol_1;\nvar INFINITY = 1 / 0;\nvar symbolProto = Symbol$1 ? Symbol$1.prototype : void 0, symbolToString = symbolProto ? symbolProto.toString : void 0;\nfunction baseToString$2(value) {\n  if (typeof value == \"string\") {\n    return value;\n  }\n  if (isArray$2(value)) {\n    return arrayMap$1(value, baseToString$2) + \"\";\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : \"\";\n  }\n  var result = value + \"\";\n  return result == \"0\" && 1 / value == -INFINITY ? \"-0\" : result;\n}\nvar _baseToString = baseToString$2;\nfunction baseSlice$1(array, start, end) {\n  var index2 = -1, length = array.length;\n  if (start < 0) {\n    start = -start > length ? 0 : length + start;\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : end - start >>> 0;\n  start >>>= 0;\n  var result = Array(length);\n  while (++index2 < length) {\n    result[index2] = array[index2 + start];\n  }\n  return result;\n}\nvar _baseSlice = baseSlice$1;\nvar baseSlice = _baseSlice;\nfunction castSlice$1(array, start, end) {\n  var length = array.length;\n  end = end === void 0 ? length : end;\n  return !start && end >= length ? array : baseSlice(array, start, end);\n}\nvar _castSlice = castSlice$1;\nfunction baseFindIndex$1(array, predicate, fromIndex, fromRight) {\n  var length = array.length, index2 = fromIndex + (fromRight ? 1 : -1);\n  while (fromRight ? index2-- : ++index2 < length) {\n    if (predicate(array[index2], index2, array)) {\n      return index2;\n    }\n  }\n  return -1;\n}\nvar _baseFindIndex = baseFindIndex$1;\nfunction baseIsNaN$1(value) {\n  return value !== value;\n}\nvar _baseIsNaN = baseIsNaN$1;\nfunction strictIndexOf$1(array, value, fromIndex) {\n  var index2 = fromIndex - 1, length = array.length;\n  while (++index2 < length) {\n    if (array[index2] === value) {\n      return index2;\n    }\n  }\n  return -1;\n}\nvar _strictIndexOf = strictIndexOf$1;\nvar baseFindIndex = _baseFindIndex, baseIsNaN = _baseIsNaN, strictIndexOf = _strictIndexOf;\nfunction baseIndexOf$2(array, value, fromIndex) {\n  return value === value ? strictIndexOf(array, value, fromIndex) : baseFindIndex(array, baseIsNaN, fromIndex);\n}\nvar _baseIndexOf = baseIndexOf$2;\nvar baseIndexOf$1 = _baseIndexOf;\nfunction charsEndIndex$1(strSymbols, chrSymbols) {\n  var index2 = strSymbols.length;\n  while (index2-- && baseIndexOf$1(chrSymbols, strSymbols[index2], 0) > -1) {\n  }\n  return index2;\n}\nvar _charsEndIndex = charsEndIndex$1;\nfunction asciiToArray$1(string) {\n  return string.split(\"\");\n}\nvar _asciiToArray = asciiToArray$1;\nvar rsAstralRange$1 = \"\\\\ud800-\\\\udfff\", rsComboMarksRange$1 = \"\\\\u0300-\\\\u036f\", reComboHalfMarksRange$1 = \"\\\\ufe20-\\\\ufe2f\", rsComboSymbolsRange$1 = \"\\\\u20d0-\\\\u20ff\", rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1, rsVarRange$1 = \"\\\\ufe0e\\\\ufe0f\";\nvar rsZWJ$1 = \"\\\\u200d\";\nvar reHasUnicode = RegExp(\"[\" + rsZWJ$1 + rsAstralRange$1 + rsComboRange$1 + rsVarRange$1 + \"]\");\nfunction hasUnicode$1(string) {\n  return reHasUnicode.test(string);\n}\nvar _hasUnicode = hasUnicode$1;\nvar rsAstralRange = \"\\\\ud800-\\\\udfff\", rsComboMarksRange = \"\\\\u0300-\\\\u036f\", reComboHalfMarksRange = \"\\\\ufe20-\\\\ufe2f\", rsComboSymbolsRange = \"\\\\u20d0-\\\\u20ff\", rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, rsVarRange = \"\\\\ufe0e\\\\ufe0f\";\nvar rsAstral = \"[\" + rsAstralRange + \"]\", rsCombo = \"[\" + rsComboRange + \"]\", rsFitz = \"\\\\ud83c[\\\\udffb-\\\\udfff]\", rsModifier = \"(?:\" + rsCombo + \"|\" + rsFitz + \")\", rsNonAstral = \"[^\" + rsAstralRange + \"]\", rsRegional = \"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\", rsSurrPair = \"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\", rsZWJ = \"\\\\u200d\";\nvar reOptMod = rsModifier + \"?\", rsOptVar = \"[\" + rsVarRange + \"]?\", rsOptJoin = \"(?:\" + rsZWJ + \"(?:\" + [rsNonAstral, rsRegional, rsSurrPair].join(\"|\") + \")\" + rsOptVar + reOptMod + \")*\", rsSeq = rsOptVar + reOptMod + rsOptJoin, rsSymbol = \"(?:\" + [rsNonAstral + rsCombo + \"?\", rsCombo, rsRegional, rsSurrPair, rsAstral].join(\"|\") + \")\";\nvar reUnicode = RegExp(rsFitz + \"(?=\" + rsFitz + \")|\" + rsSymbol + rsSeq, \"g\");\nfunction unicodeToArray$1(string) {\n  return string.match(reUnicode) || [];\n}\nvar _unicodeToArray = unicodeToArray$1;\nvar asciiToArray = _asciiToArray, hasUnicode = _hasUnicode, unicodeToArray = _unicodeToArray;\nfunction stringToArray$1(string) {\n  return hasUnicode(string) ? unicodeToArray(string) : asciiToArray(string);\n}\nvar _stringToArray = stringToArray$1;\nvar baseToString$1 = _baseToString;\nfunction toString$1(value) {\n  return value == null ? \"\" : baseToString$1(value);\n}\nvar toString_1 = toString$1;\nvar reWhitespace = /\\s/;\nfunction trimmedEndIndex$1(string) {\n  var index2 = string.length;\n  while (index2-- && reWhitespace.test(string.charAt(index2))) {\n  }\n  return index2;\n}\nvar _trimmedEndIndex = trimmedEndIndex$1;\nvar baseToString = _baseToString, castSlice = _castSlice, charsEndIndex = _charsEndIndex, stringToArray = _stringToArray, toString = toString_1, trimmedEndIndex = _trimmedEndIndex;\nfunction trimEnd(string, chars, guard) {\n  string = toString(string);\n  if (string && (guard || chars === void 0)) {\n    return string.slice(0, trimmedEndIndex(string) + 1);\n  }\n  if (!string || !(chars = baseToString(chars))) {\n    return string;\n  }\n  var strSymbols = stringToArray(string), end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n  return castSlice(strSymbols, 0, end).join(\"\");\n}\nvar trimEnd_1 = trimEnd;\nvar baseGetTag$1 = _baseGetTag, isArray$1 = isArray_1, isObjectLike = isObjectLike_1;\nvar stringTag = \"[object String]\";\nfunction isString$1(value) {\n  return typeof value == \"string\" || !isArray$1(value) && isObjectLike(value) && baseGetTag$1(value) == stringTag;\n}\nvar isString_1 = isString$1;\nfunction identity$2(value) {\n  return value;\n}\nvar identity_1 = identity$2;\nfunction apply$1(func, thisArg, args) {\n  switch (args.length) {\n    case 0:\n      return func.call(thisArg);\n    case 1:\n      return func.call(thisArg, args[0]);\n    case 2:\n      return func.call(thisArg, args[0], args[1]);\n    case 3:\n      return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\nvar _apply = apply$1;\nvar apply = _apply;\nvar nativeMax = Math.max;\nfunction overRest$1(func, start, transform) {\n  start = nativeMax(start === void 0 ? func.length - 1 : start, 0);\n  return function() {\n    var args = arguments, index2 = -1, length = nativeMax(args.length - start, 0), array = Array(length);\n    while (++index2 < length) {\n      array[index2] = args[start + index2];\n    }\n    index2 = -1;\n    var otherArgs = Array(start + 1);\n    while (++index2 < start) {\n      otherArgs[index2] = args[index2];\n    }\n    otherArgs[start] = transform(array);\n    return apply(func, this, otherArgs);\n  };\n}\nvar _overRest = overRest$1;\nfunction constant$1(value) {\n  return function() {\n    return value;\n  };\n}\nvar constant_1 = constant$1;\nvar baseGetTag = _baseGetTag, isObject$1 = isObject_1;\nvar asyncTag = \"[object AsyncFunction]\", funcTag = \"[object Function]\", genTag = \"[object GeneratorFunction]\", proxyTag = \"[object Proxy]\";\nfunction isFunction$1(value) {\n  if (!isObject$1(value)) {\n    return false;\n  }\n  var tag = baseGetTag(value);\n  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\nvar isFunction_1 = isFunction$1;\nvar root = _root;\nvar coreJsData$1 = root[\"__core-js_shared__\"];\nvar _coreJsData = coreJsData$1;\nvar coreJsData = _coreJsData;\nvar maskSrcKey = function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || \"\");\n  return uid ? \"Symbol(src)_1.\" + uid : \"\";\n}();\nfunction isMasked$1(func) {\n  return !!maskSrcKey && maskSrcKey in func;\n}\nvar _isMasked = isMasked$1;\nvar funcProto$1 = Function.prototype;\nvar funcToString$1 = funcProto$1.toString;\nfunction toSource$1(func) {\n  if (func != null) {\n    try {\n      return funcToString$1.call(func);\n    } catch (e2) {\n    }\n    try {\n      return func + \"\";\n    } catch (e2) {\n    }\n  }\n  return \"\";\n}\nvar _toSource = toSource$1;\nvar isFunction = isFunction_1, isMasked = _isMasked, isObject = isObject_1, toSource = _toSource;\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\nvar funcProto = Function.prototype, objectProto = Object.prototype;\nvar funcToString = funcProto.toString;\nvar hasOwnProperty = objectProto.hasOwnProperty;\nvar reIsNative = RegExp(\n  \"^\" + funcToString.call(hasOwnProperty).replace(reRegExpChar, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\"\n);\nfunction baseIsNative$1(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\nvar _baseIsNative = baseIsNative$1;\nfunction getValue$1(object, key) {\n  return object == null ? void 0 : object[key];\n}\nvar _getValue = getValue$1;\nvar baseIsNative = _baseIsNative, getValue = _getValue;\nfunction getNative$1(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : void 0;\n}\nvar _getNative = getNative$1;\nvar getNative = _getNative;\nvar defineProperty$1 = function() {\n  try {\n    var func = getNative(Object, \"defineProperty\");\n    func({}, \"\", {});\n    return func;\n  } catch (e2) {\n  }\n}();\nvar _defineProperty = defineProperty$1;\nvar constant = constant_1, defineProperty = _defineProperty, identity$1 = identity_1;\nvar baseSetToString$1 = !defineProperty ? identity$1 : function(func, string) {\n  return defineProperty(func, \"toString\", {\n    \"configurable\": true,\n    \"enumerable\": false,\n    \"value\": constant(string),\n    \"writable\": true\n  });\n};\nvar _baseSetToString = baseSetToString$1;\nvar HOT_COUNT = 800, HOT_SPAN = 16;\nvar nativeNow = Date.now;\nfunction shortOut$1(func) {\n  var count = 0, lastCalled = 0;\n  return function() {\n    var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);\n    lastCalled = stamp;\n    if (remaining > 0) {\n      if (++count >= HOT_COUNT) {\n        return arguments[0];\n      }\n    } else {\n      count = 0;\n    }\n    return func.apply(void 0, arguments);\n  };\n}\nvar _shortOut = shortOut$1;\nvar baseSetToString = _baseSetToString, shortOut = _shortOut;\nvar setToString$1 = shortOut(baseSetToString);\nvar _setToString = setToString$1;\nvar identity = identity_1, overRest = _overRest, setToString = _setToString;\nfunction baseRest$1(func, start) {\n  return setToString(overRest(func, start, identity), func + \"\");\n}\nvar _baseRest = baseRest$1;\nfunction baseIndexOfWith$1(array, value, fromIndex, comparator) {\n  var index2 = fromIndex - 1, length = array.length;\n  while (++index2 < length) {\n    if (comparator(array[index2], value)) {\n      return index2;\n    }\n  }\n  return -1;\n}\nvar _baseIndexOfWith = baseIndexOfWith$1;\nfunction baseUnary$1(func) {\n  return function(value) {\n    return func(value);\n  };\n}\nvar _baseUnary = baseUnary$1;\nfunction copyArray$1(source, array) {\n  var index2 = -1, length = source.length;\n  array || (array = Array(length));\n  while (++index2 < length) {\n    array[index2] = source[index2];\n  }\n  return array;\n}\nvar _copyArray = copyArray$1;\nvar arrayMap = _arrayMap, baseIndexOf = _baseIndexOf, baseIndexOfWith = _baseIndexOfWith, baseUnary = _baseUnary, copyArray = _copyArray;\nvar arrayProto = Array.prototype;\nvar splice = arrayProto.splice;\nfunction basePullAll$1(array, values, iteratee, comparator) {\n  var indexOf = comparator ? baseIndexOfWith : baseIndexOf, index2 = -1, length = values.length, seen = array;\n  if (array === values) {\n    values = copyArray(values);\n  }\n  if (iteratee) {\n    seen = arrayMap(array, baseUnary(iteratee));\n  }\n  while (++index2 < length) {\n    var fromIndex = 0, value = values[index2], computed = iteratee ? iteratee(value) : value;\n    while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n      if (seen !== array) {\n        splice.call(seen, fromIndex, 1);\n      }\n      splice.call(array, fromIndex, 1);\n    }\n  }\n  return array;\n}\nvar _basePullAll = basePullAll$1;\nvar basePullAll = _basePullAll;\nfunction pullAll$1(array, values) {\n  return array && array.length && values && values.length ? basePullAll(array, values) : array;\n}\nvar pullAll_1 = pullAll$1;\nvar baseRest = _baseRest, pullAll = pullAll_1;\nvar pull$1 = baseRest(pullAll);\nvar pull_1 = pull$1;\nconst isArray = isArray_1;\nconst isString = isString_1;\nconst pull = pull_1;\nvar id = 0;\nlet Node$2 = class Node2 {\n  constructor(data) {\n    this.id = ++id;\n    if (isArray(data)) {\n      this.open = data[0];\n      this.close = data[1];\n    } else if (isString(data)) {\n      this.text = data;\n    }\n    this.children = [];\n  }\n  append(e2) {\n    if (!(e2 instanceof Node2)) {\n      e2 = new Node2(e2);\n    }\n    if (e2._parent) {\n      pull(e2._parent.children, e2);\n    }\n    e2._parent = this;\n    this.children = this.children.concat(e2);\n  }\n  render() {\n    var text2 = \"\";\n    if (this.open) {\n      text2 += this.open;\n    }\n    if (this.text) {\n      text2 += this.text;\n    }\n    for (var i3 = 0; i3 < this.children.length; i3++) {\n      text2 += this.children[i3].render();\n    }\n    if (this.close) {\n      text2 += this.close;\n    }\n    return text2;\n  }\n  parent() {\n    return this._parent;\n  }\n};\nvar Node_1 = Node$2;\nconst encodeLink$1 = (link2) => encodeURI(link2).replace(/\\(/i, \"%28\").replace(/\\)/i, \"%29\").replace(/(\\?|&)response-content-disposition=attachment.*$/, \"\");\nvar URL$1 = {\n  encodeLink: encodeLink$1\n};\nconst Node$1 = Node_1;\nconst { encodeLink } = URL$1;\nvar fromDelta_converters = {\n  embed: {\n    image: function(src) {\n      this.append(\"![](\" + encodeLink(src) + \")\");\n    },\n    // Not a default Quill feature, converts custom divider embed blot added when\n    // creating quill editor instance.\n    // See https://quilljs.com/guides/cloning-medium-with-parchment/#dividers\n    thematic_break: function() {\n      this.open = \"\\n---\\n\" + this.open;\n    }\n  },\n  inline: {\n    italic: function() {\n      return [\"_\", \"_\"];\n    },\n    bold: function() {\n      return [\"**\", \"**\"];\n    },\n    link: function(url2) {\n      return [\"[\", \"](\" + url2 + \")\"];\n    }\n  },\n  block: {\n    \"header\": function({ header }) {\n      this.open = \"#\".repeat(header) + \" \" + this.open;\n    },\n    blockquote: function() {\n      this.open = \"> \" + this.open;\n    },\n    \"list\": {\n      group: function() {\n        return new Node$1([\"\", \"\\n\"]);\n      },\n      line: function(attrs, group) {\n        if (attrs.list === \"bullet\") {\n          this.open = \"- \" + this.open;\n        } else if (attrs.list === \"checked\") {\n          this.open = \"- [x] \" + this.open;\n        } else if (attrs.list === \"unchecked\") {\n          this.open = \"- [ ] \" + this.open;\n        } else if (attrs.list === \"ordered\") {\n          group.count = group.count || 0;\n          var count = ++group.count;\n          this.open = count + \". \" + this.open;\n        }\n      }\n    }\n  }\n};\n(function(module2, exports2) {\n  const isObject2 = isObject_1;\n  const isArray2 = isArray_1;\n  const trimEnd2 = trimEnd_1;\n  const defaultConverters = fromDelta_converters;\n  const Node3 = Node_1;\n  module2.exports = function(ops, converters = defaultConverters) {\n    return trimEnd2(convert(ops, converters).render()) + \"\\n\";\n  };\n  function convert(ops, converters) {\n    var group, line, el, activeInline, beginningOfLine;\n    var root2 = new Node3();\n    function newLine() {\n      el = line = new Node3([\"\", \"\\n\"]);\n      root2.append(line);\n      activeInline = {};\n    }\n    newLine();\n    for (var i3 = 0; i3 < ops.length; i3++) {\n      var op = ops[i3];\n      if (isObject2(op.insert)) {\n        for (var k2 in op.insert) {\n          if (converters.embed[k2]) {\n            applyInlineAttributes(op.attributes);\n            converters.embed[k2].call(el, op.insert[k2], op.attributes);\n          }\n        }\n      } else {\n        var lines = op.insert.split(\"\\n\");\n        if (hasBlockLevelAttribute(op.attributes, converters)) {\n          for (var j2 = 1; j2 < lines.length; j2++) {\n            for (var attr in op.attributes) {\n              if (converters.block[attr]) {\n                var fn = converters.block[attr];\n                if (typeof fn === \"object\") {\n                  if (group && group.type !== attr) {\n                    group = null;\n                  }\n                  if (!group && fn.group) {\n                    group = {\n                      el: fn.group(),\n                      type: attr,\n                      value: op.attributes[k2],\n                      distance: 0\n                    };\n                    root2.append(group.el);\n                  }\n                  if (group) {\n                    group.el.append(line);\n                    group.distance = 0;\n                  }\n                  fn = fn.line;\n                }\n                fn.call(line, op.attributes, group);\n                newLine();\n                break;\n              }\n            }\n          }\n          beginningOfLine = true;\n        } else {\n          for (var l2 = 0; l2 < lines.length; l2++) {\n            if ((l2 > 0 || beginningOfLine) && group && ++group.distance >= 2) {\n              group = null;\n            }\n            applyInlineAttributes(op.attributes, ops[i3 + 1] && ops[i3 + 1].attributes);\n            el.append(lines[l2]);\n            if (l2 < lines.length - 1) {\n              newLine();\n            }\n          }\n          beginningOfLine = false;\n        }\n      }\n    }\n    return root2;\n    function applyInlineAttributes(attrs, next) {\n      var first = [], then = [];\n      attrs = attrs || {};\n      var tag = el, seen = {};\n      while (tag._format) {\n        seen[tag._format] = true;\n        if (!attrs[tag._format]) {\n          for (var k3 in seen) {\n            delete activeInline[k3];\n          }\n          el = tag.parent();\n        }\n        tag = tag.parent();\n      }\n      for (var attr2 in attrs) {\n        if (converters.inline[attr2]) {\n          if (activeInline[attr2]) {\n            if (activeInline[attr2] === attrs[attr2]) {\n              continue;\n            }\n          }\n          if (next && attrs[attr2] === next[attr2]) {\n            first.push(attr2);\n          } else {\n            then.push(attr2);\n          }\n          activeInline[attr2] = attrs[attr2];\n        }\n      }\n      first.forEach(apply2);\n      then.forEach(apply2);\n      function apply2(fmt) {\n        var newEl = converters.inline[fmt].call(null, attrs[fmt]);\n        if (isArray2(newEl)) {\n          newEl = new Node3(newEl);\n        }\n        newEl._format = fmt;\n        el.append(newEl);\n        el = newEl;\n      }\n    }\n  }\n  function hasBlockLevelAttribute(attrs, converters) {\n    for (var k2 in attrs) {\n      if (Object.keys(converters.block).includes(k2)) {\n        return true;\n      }\n    }\n    return false;\n  }\n})(fromDelta);\nvar fromDeltaExports = fromDelta.exports;\nvar quillDeltaToMarkdown = {\n  deltaToMarkdown: fromDeltaExports\n};\nconst qdtm = /* @__PURE__ */ getDefaultExportFromCjs(quillDeltaToMarkdown);\nconst ValueRichtextMixin = {\n  name: \"valuerichtext-mixin\",\n  getValue() {\n    const markdown = qdtm.deltaToMarkdown(this.quill.getContents().ops);\n    return markdown;\n  }\n};\nconst formTemplates = {\n  text: {\n    template: (value, attributes) => x`\n      <input\n        type=\"text\"\n        placeholder=${o$2(attributes.placeholder)}\n        name=${o$2(attributes.name)}\n        id=${o$2(attributes.id)}\n        value=${value || \"\"}\n        pattern=${o$2(attributes.pattern)}\n        title=${o$2(attributes.title)}\n        ?required=${attributes.required}\n        autocomplete=${o$2(attributes.autocomplete)}\n        data-holder\n        maxlength=${o$2(attributes.maxlength)}\n        minlength=${o$2(attributes.minlength)}\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin, PatternMixin, FormLengthMixin]\n  },\n  textarea: {\n    template: (value, attributes) => x`\n      <textarea\n        name=${o$2(attributes.name)}\n        id=${o$2(attributes.id)}\n        placeholder=${o$2(attributes.placeholder)}\n        data-holder\n        ?required=${attributes.required}\n        autocomplete=${o$2(attributes.autocomplete)}\n        maxlength=${o$2(attributes.maxlength)}\n        minlength=${o$2(attributes.minlength)}\n        @change=${attributes.onChange}\n      >${value}</textarea>\n    `,\n    dependencies: [FormMixin, FormLengthMixin]\n  },\n  checkbox: {\n    template: (value, attributes) => x`\n      <label>\n        <input\n          data-holder\n          type=\"checkbox\"\n          name=${o$2(attributes.name)}\n          ?required=${attributes.required}\n          ?checked=${value === \"true\"}\n          @change=${attributes.onChange}\n        >\n        <div>${attributes.label || attributes.name}</div>\n      </label>\n    `,\n    dependencies: [FormCheckboxMixin, FormMixin]\n  },\n  date: {\n    template: (_value, attributes) => x`\n      <input\n        type=\"date\"\n        placeholder=${o$2(attributes.placeholder)}\n        name=${o$2(attributes.name)}\n        id=${o$2(attributes.id)}\n        ?required=${attributes.required}\n        value=${o$2(attributes.originalValue)}\n        data-holder\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin]\n  },\n  rangedate: {\n    template: (_value, attributes) => x`\n      <input\n        data-holder\n        type=\"date\"\n        name=\"${attributes.name || \"\"}-start\"\n        @change=${attributes.onChange}\n        value=${o$2(attributes.startValue)}\n        />\n        <input\n        data-holder\n        type=\"date\"\n        name=\"${attributes.name || \"\"}-end\"\n        @change=${attributes.onChange}\n        value=${o$2(attributes.endValue)}\n      />\n    `,\n    dependencies: [FilterRangeFormMixin, FormMixin]\n  },\n  number: {\n    template: (value, attributes) => x`\n      <input\n        type=\"number\"\n        placeholder=${o$2(attributes.placeholder)}\n        name=${o$2(attributes.name)}\n        id=${o$2(attributes.id)}\n        value=${value}\n        min=${o$2(attributes.min)}\n        max=${o$2(attributes.max)}\n        step=${o$2(attributes.step)}\n        ?required=${attributes.required}\n        data-holder\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormNumberMixin, FormMinMaxMixin, FormMixin, FormStepMixin]\n  },\n  rangenumber: {\n    template: (_value, attributes) => x`\n      <input\n        data-holder\n        type=\"number\"\n        name=\"${attributes.name || \"\"}-start\"\n        @change=${attributes.onChange}\n        value=${o$2(attributes.startValue)}\n      />\n      <input\n        data-holder\n        type=\"number\"\n        name=\"${attributes.name || \"\"}-end\"\n        @change=${attributes.onChange}\n        value=${o$2(attributes.endValue)}\n      />\n    `,\n    dependencies: [FilterRangeFormMixin, FormNumberMixin, FormMixin]\n  },\n  hidden: {\n    template: (value, attributes) => x`\n      <input\n        type=\"hidden\"\n        name=${o$2(attributes.name)}\n        value=${value}\n        data-holder\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin]\n  },\n  dropdown: {\n    template: (value, attributes) => x`\n      <select\n        name=${o$2(attributes.name)}\n        id=${o$2(attributes.id)}\n        data-holder\n        ?required=${attributes.required}\n        ?multiple=${attributes.multiple}\n        autocomplete=${o$2(attributes.autocomplete)}\n        @change=${attributes.onChange}\n      >\n        ${!(attributes.multiple || attributes.autocomplete) ? x`\n        <option value=\"\" ?selected=${value === \"\"}>\n          ${attributes.placeholder || \"-\"}\n        </option>\n        ` : \"\"}\n        ${(attributes.range || []).map(\n      (el) => x`\n          <option\n            value=${el.value}\n            ?selected=${!attributes.multiple ? value === el.selectedValue : attributes.values.includes(el.selectedValue)}\n          >\n            ${el.label}\n          </option>\n        `\n    )}\n        ${Object.entries(attributes.enum || []).map(\n      ([key, val]) => x`\n          <option\n            value=\"${key}\"\n            ?selected=${!attributes.multiple ? value === key : attributes.values.includes(key)}\n          >\n            ${val}\n          </option>\n        `\n    )}\n      </select>\n    `,\n    dependencies: [FormDropdownMixin, FormMixin, RangeMixin]\n  },\n  radio: {\n    template: (value, attributes) => x`\n      <div\n        name=${o$2(attributes.name)}\n      >\n        ${(attributes.range || []).map(\n      (el) => x`\n          <label>\n            <input\n              type=\"radio\"\n              name=${o$2(attributes.id)}\n              value=${el.value}\n              ?required=${attributes.required}\n              ?checked=${value === el.selectedValue}\n            > <span>${el.label}</span>\n          </label>\n        `\n    )}\n        ${Object.entries(attributes.enum || []).map(\n      ([key, val]) => x`\n          <label>\n            <input\n              type=\"radio\"\n              value=\"${key}\"\n              name=${o$2(attributes.id)}\n              ?required=${attributes.required}\n              ?checked=${value === key}\n            > <span>${val}</span>\n          </label>\n        `\n    )}\n    `,\n    dependencies: [FormRadioMixin, FormMixin, RangeMixin]\n  },\n  multicheckbox: {\n    template: (_value, attributes) => x`\n      <div\n        name=${o$2(attributes.name)}\n      >\n        ${(attributes.range || []).map(\n      (el) => x`\n          <label>\n            <input\n              type=\"checkbox\"\n              value=${el.value}\n              ?checked=${attributes.values.includes(el.selectedValue)}\n            /> <span>${el.label}</span>\n          </label>\n        `\n    )}\n        ${Object.entries(attributes.enum || []).map(\n      ([key, val]) => x`\n          <label>\n            <input type=\"checkbox\"\n              value=\"${key}\"\n            /> <span>${val}</span>\n          </label>\n        `\n    )}\n      </select>\n    `,\n    dependencies: [FormCheckboxesMixin, FormMixin, RangeMixin]\n  },\n  checkboxes: {\n    template: (_value, attributes) => x`\n      <solid-form-multicheckbox\n        data-holder\n        name=${o$2(attributes.name)}\n        range=${o$2(attributes.range)}\n        enum=${o$2(attributes.enum)}\n        values=${o$2(attributes.values)}\n        option-label=${o$2(attributes.optionLabel)}\n        option-value=${o$2(attributes.optionValue)}\n        order-asc=${o$2(attributes.orderAsc)}\n        order-desc=${o$2(attributes.orderDesc)}\n        ?required=${attributes.required}\n      ></solid-form-multicheckbox>\n    `,\n    dependencies: [MultipleselectFormMixin, FormMixin, RangeMixin]\n  },\n  multiple: {\n    template: (_value, attributes) => x`\n      ${(attributes.children || []).map(\n      (child, index2) => x`\n        <div data-index=${attributes.name + index2}>\n          ${child}\n          <button type=\"button\" class=${o$2(attributes.removeClass)} @click=${() => attributes.removeItem(index2)}>${attributes.removeLabel}</button>\n        </div>\n      `\n    )}\n      <button type=\"button\" class=${o$2(attributes.addClass)} @click=${attributes.addItem}>${attributes.addLabel}</button>\n    `,\n    dependencies: [MultipleFormMixin, FormMixin]\n  },\n  multipleselect: {\n    template: (_value, attributes) => x`\n      <solid-form-dropdown\n        data-holder\n        name=${o$2(attributes.name)}\n        data-id=${o$2(attributes.id)}\n        range=${o$2(attributes.range)}\n        values=${o$2(attributes.values)}\n        option-label=${o$2(attributes.optionLabel)}\n        option-value=${o$2(attributes.optionValue)}\n        order-asc=${o$2(attributes.orderAsc)}\n        order-desc=${o$2(attributes.orderDesc)}\n        ?required=${attributes.required}\n        multiple\n      ></solid-form-dropdown>\n    `,\n    dependencies: [MultipleselectFormMixin, FormMixin, RangeMixin]\n  },\n  file: {\n    template: (value, attributes) => x`\n      <div>\n        <input\n          data-holder\n          type=\"text\"\n          ?required=${attributes.required}\n          name=${o$2(attributes.name)}\n          value=${value || \"\"}\n        >\n        <a\n          href=${value || \"\"}\n          ?hidden=${value === \"\"}\n        >${value !== \"\" ? decodeURI(value.split(\"/\").pop()) : \"\"}</a>\n\n        <input\n          type=\"file\"\n          id=${o$2(attributes.id)}\n          value=${o$2(attributes.fileValue)}\n          @change=${attributes.selectFile}\n        />\n        <button\n          ?hidden=${attributes.resetButtonHidden}\n          @click=${attributes.resetFile}\n        >×</button>\n        <span>${attributes.output}</span>\n      </div>\n    `,\n    dependencies: [FormFileMixin, FormMixin]\n  },\n  image: {\n    template: (value, attributes) => x`\n      <div>\n        <input\n          data-holder\n          type=\"text\"\n          name=${o$2(attributes.name)}\n          value=${value || \"\"}\n          ?required=${attributes.required}\n        >\n        <input\n          type=\"file\"\n          accept=\"image/*\"\n          id=${o$2(attributes.id)}\n          value=${o$2(attributes.fileValue)}\n          @change=${attributes.selectFile}\n        />\n        <img\n          src=${value || \"\"}\n          ?hidden=${value === \"\"}\n        />\n        <button\n          ?hidden=${attributes.resetButtonHidden}\n          @click=${attributes.resetFile}\n        >×</button>\n        <span>${attributes.output}</span>\n      </div>\n    `,\n    dependencies: [FormFileMixin, FormMixin]\n  },\n  richtext: {\n    template: (_value, attributes) => x`\n      <div \n        data-richtext\n        name=${o$2(attributes.name)}\n        data-holder\n      ></div>\n    `,\n    dependencies: [ValueRichtextMixin, FormMixin]\n  },\n  color: {\n    template: (_value, attributes) => x`\n      <input\n        type=\"color\"\n        placeholder=${o$2(attributes.placeholder)}\n        id=${o$2(attributes.id)}\n        name=${o$2(attributes.name)}\n        ?required=${attributes.required}\n        value=${o$2(attributes.originalValue)}\n        data-holder\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin]\n  },\n  email: {\n    template: (value, attributes) => x`\n      <input\n        type=\"email\"\n        placeholder=${o$2(attributes.placeholder)}\n        id=${o$2(attributes.id)}\n        name=${o$2(attributes.name)}\n        value=${value || \"\"}\n        ?required=${attributes.required}\n        data-holder\n        maxlength=${o$2(attributes.maxlength)}\n        minlength=${o$2(attributes.minlength)}\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin, FormLengthMixin]\n  },\n  password: {\n    template: (value, attributes) => x`\n      <input\n        type=\"password\"\n        placeholder=${o$2(attributes.placeholder)}\n        id=${o$2(attributes.id)}\n        name=${o$2(attributes.name)}\n        value=${value || \"\"}\n        ?required=${attributes.required}\n        pattern=${o$2(attributes.pattern)}\n        title=${o$2(attributes.title)}\n        data-holder\n        maxlength=${o$2(attributes.maxlength)}\n        minlength=${o$2(attributes.minlength)}\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin, PatternMixin, FormLengthMixin]\n  },\n  time: {\n    template: (value, attributes) => x`\n      <input\n        type=\"time\"\n        placeholder=${o$2(attributes.placeholder)}\n        name=${o$2(attributes.name)}\n        id=${o$2(attributes.id)}\n        value=${value || \"\"}\n        min=${o$2(attributes.min)}\n        max=${o$2(attributes.max)}\n        step=${o$2(attributes.step)}\n        ?required=${attributes.required}\n        data-holder\n        @change=${attributes.onChange}\n      />\n    `,\n    dependencies: [FormMixin, FormMinMaxMixin, FormStepMixin]\n  }\n};\nconst SetMixin = {\n  name: \"set-mixin\",\n  /**\n   * For sets and group widgets, remove auto rendering\n   * function to allow only manual renders\n   */\n  planRender() {\n  }\n};\nconst groupTemplates = {\n  default: {\n    template: (value) => x`<span>${value}</span><div data-content></div>`,\n    dependencies: [SetMixin]\n  }\n};\nconst setTemplates = {\n  default: {\n    template: () => x``,\n    dependencies: [SetMixin]\n  },\n  div: {\n    template: () => x`<div data-content></div>`,\n    dependencies: [SetMixin]\n  },\n  ul: {\n    template: () => x`<ul data-content></ul>`,\n    dependencies: [SetMixin]\n  }\n};\nconst index$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  defaultTemplates,\n  displayTemplates,\n  formTemplates,\n  groupTemplates,\n  setTemplates\n}, Symbol.toStringTag, { value: \"Module\" }));\nvar version = \"4.0.0\";\nfunction isUndefined(value) {\n  return value === void 0;\n}\nfunction isBoolean(value) {\n  return typeof value === \"boolean\";\n}\nfunction defaults(dest, src) {\n  for (var prop in src) {\n    if (src.hasOwnProperty(prop) && isUndefined(dest[prop])) {\n      dest[prop] = src[prop];\n    }\n  }\n  return dest;\n}\nfunction ellipsis(str, truncateLen, ellipsisChars) {\n  var ellipsisLength;\n  if (str.length > truncateLen) {\n    if (ellipsisChars == null) {\n      ellipsisChars = \"&hellip;\";\n      ellipsisLength = 3;\n    } else {\n      ellipsisLength = ellipsisChars.length;\n    }\n    str = str.substring(0, truncateLen - ellipsisLength) + ellipsisChars;\n  }\n  return str;\n}\nfunction remove(arr, item) {\n  for (var i3 = arr.length - 1; i3 >= 0; i3--) {\n    if (arr[i3] === item) {\n      arr.splice(i3, 1);\n    }\n  }\n}\nfunction removeWithPredicate(arr, fn) {\n  for (var i3 = arr.length - 1; i3 >= 0; i3--) {\n    if (fn(arr[i3]) === true) {\n      arr.splice(i3, 1);\n    }\n  }\n}\nfunction assertNever(theValue) {\n  throw new Error(\"Unhandled case for value: '\".concat(theValue, \"'\"));\n}\nvar letterRe = /[A-Za-z]/;\nvar digitRe = /[\\d]/;\nvar whitespaceRe = /\\s/;\nvar quoteRe = /['\"]/;\nvar controlCharsRe = /[\\x00-\\x1F\\x7F]/;\nvar alphaCharsStr = /A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/.source;\nvar emojiStr = /\\u2700-\\u27bf\\udde6-\\uddff\\ud800-\\udbff\\udc00-\\udfff\\ufe0e\\ufe0f\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ud83c\\udffb-\\udfff\\u200d\\u3299\\u3297\\u303d\\u3030\\u24c2\\ud83c\\udd70-\\udd71\\udd7e-\\udd7f\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01-\\ude02\\ude1a\\ude2f\\ude32-\\ude3a\\ude50-\\ude51\\u203c\\u2049\\u25aa-\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u00a9\\u00ae\\u2122\\u2139\\udc04\\u2600-\\u26FF\\u2b05\\u2b06\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u231a\\u231b\\u2328\\u23cf\\u23e9-\\u23f3\\u23f8-\\u23fa\\udccf\\u2935\\u2934\\u2190-\\u21ff/.source;\nvar marksStr = /\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/.source;\nvar alphaCharsAndMarksStr = alphaCharsStr + emojiStr + marksStr;\nvar decimalNumbersStr = /0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/.source;\nvar alphaNumericAndMarksCharsStr = alphaCharsAndMarksStr + decimalNumbersStr;\nvar alphaNumericAndMarksRe = new RegExp(\"[\".concat(alphaNumericAndMarksCharsStr, \"]\"));\nvar HtmlTag = (\n  /** @class */\n  function() {\n    function HtmlTag2(cfg) {\n      if (cfg === void 0) {\n        cfg = {};\n      }\n      this.tagName = \"\";\n      this.attrs = {};\n      this.innerHTML = \"\";\n      this.tagName = cfg.tagName || \"\";\n      this.attrs = cfg.attrs || {};\n      this.innerHTML = cfg.innerHtml || cfg.innerHTML || \"\";\n    }\n    HtmlTag2.prototype.setTagName = function(tagName) {\n      this.tagName = tagName;\n      return this;\n    };\n    HtmlTag2.prototype.getTagName = function() {\n      return this.tagName || \"\";\n    };\n    HtmlTag2.prototype.setAttr = function(attrName, attrValue) {\n      var tagAttrs = this.getAttrs();\n      tagAttrs[attrName] = attrValue;\n      return this;\n    };\n    HtmlTag2.prototype.getAttr = function(attrName) {\n      return this.getAttrs()[attrName];\n    };\n    HtmlTag2.prototype.setAttrs = function(attrs) {\n      Object.assign(this.getAttrs(), attrs);\n      return this;\n    };\n    HtmlTag2.prototype.getAttrs = function() {\n      return this.attrs || (this.attrs = {});\n    };\n    HtmlTag2.prototype.setClass = function(cssClass) {\n      return this.setAttr(\"class\", cssClass);\n    };\n    HtmlTag2.prototype.addClass = function(cssClass) {\n      var classAttr = this.getClass(), classes = !classAttr ? [] : classAttr.split(whitespaceRe), newClasses = cssClass.split(whitespaceRe), newClass;\n      while (newClass = newClasses.shift()) {\n        if (classes.indexOf(newClass) === -1) {\n          classes.push(newClass);\n        }\n      }\n      this.getAttrs()[\"class\"] = classes.join(\" \");\n      return this;\n    };\n    HtmlTag2.prototype.removeClass = function(cssClass) {\n      var classAttr = this.getClass(), classes = !classAttr ? [] : classAttr.split(whitespaceRe), removeClasses = cssClass.split(whitespaceRe), removeClass;\n      while (classes.length && (removeClass = removeClasses.shift())) {\n        var idx = classes.indexOf(removeClass);\n        if (idx !== -1) {\n          classes.splice(idx, 1);\n        }\n      }\n      this.getAttrs()[\"class\"] = classes.join(\" \");\n      return this;\n    };\n    HtmlTag2.prototype.getClass = function() {\n      return this.getAttrs()[\"class\"] || \"\";\n    };\n    HtmlTag2.prototype.hasClass = function(cssClass) {\n      return (\" \" + this.getClass() + \" \").indexOf(\" \" + cssClass + \" \") !== -1;\n    };\n    HtmlTag2.prototype.setInnerHTML = function(html) {\n      this.innerHTML = html;\n      return this;\n    };\n    HtmlTag2.prototype.setInnerHtml = function(html) {\n      return this.setInnerHTML(html);\n    };\n    HtmlTag2.prototype.getInnerHTML = function() {\n      return this.innerHTML || \"\";\n    };\n    HtmlTag2.prototype.getInnerHtml = function() {\n      return this.getInnerHTML();\n    };\n    HtmlTag2.prototype.toAnchorString = function() {\n      var tagName = this.getTagName(), attrsStr = this.buildAttrsStr();\n      attrsStr = attrsStr ? \" \" + attrsStr : \"\";\n      return [\"<\", tagName, attrsStr, \">\", this.getInnerHtml(), \"</\", tagName, \">\"].join(\"\");\n    };\n    HtmlTag2.prototype.buildAttrsStr = function() {\n      if (!this.attrs)\n        return \"\";\n      var attrs = this.getAttrs(), attrsArr = [];\n      for (var prop in attrs) {\n        if (attrs.hasOwnProperty(prop)) {\n          attrsArr.push(prop + '=\"' + attrs[prop] + '\"');\n        }\n      }\n      return attrsArr.join(\" \");\n    };\n    return HtmlTag2;\n  }()\n);\nfunction truncateSmart(url2, truncateLen, ellipsisChars) {\n  var ellipsisLengthBeforeParsing;\n  var ellipsisLength;\n  if (ellipsisChars == null) {\n    ellipsisChars = \"&hellip;\";\n    ellipsisLength = 3;\n    ellipsisLengthBeforeParsing = 8;\n  } else {\n    ellipsisLength = ellipsisChars.length;\n    ellipsisLengthBeforeParsing = ellipsisChars.length;\n  }\n  var parse_url = function(url3) {\n    var urlObj2 = {};\n    var urlSub = url3;\n    var match3 = urlSub.match(/^([a-z]+):\\/\\//i);\n    if (match3) {\n      urlObj2.scheme = match3[1];\n      urlSub = urlSub.substr(match3[0].length);\n    }\n    match3 = urlSub.match(/^(.*?)(?=(\\?|#|\\/|$))/i);\n    if (match3) {\n      urlObj2.host = match3[1];\n      urlSub = urlSub.substr(match3[0].length);\n    }\n    match3 = urlSub.match(/^\\/(.*?)(?=(\\?|#|$))/i);\n    if (match3) {\n      urlObj2.path = match3[1];\n      urlSub = urlSub.substr(match3[0].length);\n    }\n    match3 = urlSub.match(/^\\?(.*?)(?=(#|$))/i);\n    if (match3) {\n      urlObj2.query = match3[1];\n      urlSub = urlSub.substr(match3[0].length);\n    }\n    match3 = urlSub.match(/^#(.*?)$/i);\n    if (match3) {\n      urlObj2.fragment = match3[1];\n    }\n    return urlObj2;\n  };\n  var buildUrl = function(urlObj2) {\n    var url3 = \"\";\n    if (urlObj2.scheme && urlObj2.host) {\n      url3 += urlObj2.scheme + \"://\";\n    }\n    if (urlObj2.host) {\n      url3 += urlObj2.host;\n    }\n    if (urlObj2.path) {\n      url3 += \"/\" + urlObj2.path;\n    }\n    if (urlObj2.query) {\n      url3 += \"?\" + urlObj2.query;\n    }\n    if (urlObj2.fragment) {\n      url3 += \"#\" + urlObj2.fragment;\n    }\n    return url3;\n  };\n  var buildSegment = function(segment, remainingAvailableLength3) {\n    var remainingAvailableLengthHalf = remainingAvailableLength3 / 2, startOffset = Math.ceil(remainingAvailableLengthHalf), endOffset = -1 * Math.floor(remainingAvailableLengthHalf), end2 = \"\";\n    if (endOffset < 0) {\n      end2 = segment.substr(endOffset);\n    }\n    return segment.substr(0, startOffset) + ellipsisChars + end2;\n  };\n  if (url2.length <= truncateLen) {\n    return url2;\n  }\n  var availableLength = truncateLen - ellipsisLength;\n  var urlObj = parse_url(url2);\n  if (urlObj.query) {\n    var matchQuery = urlObj.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);\n    if (matchQuery) {\n      urlObj.query = urlObj.query.substr(0, matchQuery[1].length);\n      url2 = buildUrl(urlObj);\n    }\n  }\n  if (url2.length <= truncateLen) {\n    return url2;\n  }\n  if (urlObj.host) {\n    urlObj.host = urlObj.host.replace(/^www\\./, \"\");\n    url2 = buildUrl(urlObj);\n  }\n  if (url2.length <= truncateLen) {\n    return url2;\n  }\n  var str = \"\";\n  if (urlObj.host) {\n    str += urlObj.host;\n  }\n  if (str.length >= availableLength) {\n    if (urlObj.host.length == truncateLen) {\n      return (urlObj.host.substr(0, truncateLen - ellipsisLength) + ellipsisChars).substr(0, availableLength + ellipsisLengthBeforeParsing);\n    }\n    return buildSegment(str, availableLength).substr(0, availableLength + ellipsisLengthBeforeParsing);\n  }\n  var pathAndQuery = \"\";\n  if (urlObj.path) {\n    pathAndQuery += \"/\" + urlObj.path;\n  }\n  if (urlObj.query) {\n    pathAndQuery += \"?\" + urlObj.query;\n  }\n  if (pathAndQuery) {\n    if ((str + pathAndQuery).length >= availableLength) {\n      if ((str + pathAndQuery).length == truncateLen) {\n        return (str + pathAndQuery).substr(0, truncateLen);\n      }\n      var remainingAvailableLength = availableLength - str.length;\n      return (str + buildSegment(pathAndQuery, remainingAvailableLength)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n    } else {\n      str += pathAndQuery;\n    }\n  }\n  if (urlObj.fragment) {\n    var fragment = \"#\" + urlObj.fragment;\n    if ((str + fragment).length >= availableLength) {\n      if ((str + fragment).length == truncateLen) {\n        return (str + fragment).substr(0, truncateLen);\n      }\n      var remainingAvailableLength2 = availableLength - str.length;\n      return (str + buildSegment(fragment, remainingAvailableLength2)).substr(0, availableLength + ellipsisLengthBeforeParsing);\n    } else {\n      str += fragment;\n    }\n  }\n  if (urlObj.scheme && urlObj.host) {\n    var scheme = urlObj.scheme + \"://\";\n    if ((str + scheme).length < availableLength) {\n      return (scheme + str).substr(0, truncateLen);\n    }\n  }\n  if (str.length <= truncateLen) {\n    return str;\n  }\n  var end = \"\";\n  if (availableLength > 0) {\n    end = str.substr(-1 * Math.floor(availableLength / 2));\n  }\n  return (str.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\nfunction truncateMiddle(url2, truncateLen, ellipsisChars) {\n  if (url2.length <= truncateLen) {\n    return url2;\n  }\n  var ellipsisLengthBeforeParsing;\n  var ellipsisLength;\n  if (ellipsisChars == null) {\n    ellipsisChars = \"&hellip;\";\n    ellipsisLengthBeforeParsing = 8;\n    ellipsisLength = 3;\n  } else {\n    ellipsisLengthBeforeParsing = ellipsisChars.length;\n    ellipsisLength = ellipsisChars.length;\n  }\n  var availableLength = truncateLen - ellipsisLength;\n  var end = \"\";\n  if (availableLength > 0) {\n    end = url2.substr(-1 * Math.floor(availableLength / 2));\n  }\n  return (url2.substr(0, Math.ceil(availableLength / 2)) + ellipsisChars + end).substr(0, availableLength + ellipsisLengthBeforeParsing);\n}\nfunction truncateEnd(anchorText, truncateLen, ellipsisChars) {\n  return ellipsis(anchorText, truncateLen, ellipsisChars);\n}\nvar AnchorTagBuilder = (\n  /** @class */\n  function() {\n    function AnchorTagBuilder2(cfg) {\n      if (cfg === void 0) {\n        cfg = {};\n      }\n      this.newWindow = false;\n      this.truncate = {};\n      this.className = \"\";\n      this.newWindow = cfg.newWindow || false;\n      this.truncate = cfg.truncate || {};\n      this.className = cfg.className || \"\";\n    }\n    AnchorTagBuilder2.prototype.build = function(match3) {\n      return new HtmlTag({\n        tagName: \"a\",\n        attrs: this.createAttrs(match3),\n        innerHtml: this.processAnchorText(match3.getAnchorText())\n      });\n    };\n    AnchorTagBuilder2.prototype.createAttrs = function(match3) {\n      var attrs = {\n        href: match3.getAnchorHref()\n        // we'll always have the `href` attribute\n      };\n      var cssClass = this.createCssClass(match3);\n      if (cssClass) {\n        attrs[\"class\"] = cssClass;\n      }\n      if (this.newWindow) {\n        attrs[\"target\"] = \"_blank\";\n        attrs[\"rel\"] = \"noopener noreferrer\";\n      }\n      if (this.truncate) {\n        if (this.truncate.length && this.truncate.length < match3.getAnchorText().length) {\n          attrs[\"title\"] = match3.getAnchorHref();\n        }\n      }\n      return attrs;\n    };\n    AnchorTagBuilder2.prototype.createCssClass = function(match3) {\n      var className = this.className;\n      if (!className) {\n        return \"\";\n      } else {\n        var returnClasses = [className], cssClassSuffixes = match3.getCssClassSuffixes();\n        for (var i3 = 0, len = cssClassSuffixes.length; i3 < len; i3++) {\n          returnClasses.push(className + \"-\" + cssClassSuffixes[i3]);\n        }\n        return returnClasses.join(\" \");\n      }\n    };\n    AnchorTagBuilder2.prototype.processAnchorText = function(anchorText) {\n      anchorText = this.doTruncate(anchorText);\n      return anchorText;\n    };\n    AnchorTagBuilder2.prototype.doTruncate = function(anchorText) {\n      var truncate = this.truncate;\n      if (!truncate || !truncate.length)\n        return anchorText;\n      var truncateLength = truncate.length, truncateLocation = truncate.location;\n      if (truncateLocation === \"smart\") {\n        return truncateSmart(anchorText, truncateLength);\n      } else if (truncateLocation === \"middle\") {\n        return truncateMiddle(anchorText, truncateLength);\n      } else {\n        return truncateEnd(anchorText, truncateLength);\n      }\n    };\n    return AnchorTagBuilder2;\n  }()\n);\nvar extendStatics = function(d2, b2) {\n  extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d3, b3) {\n    d3.__proto__ = b3;\n  } || function(d3, b3) {\n    for (var p2 in b3) if (Object.prototype.hasOwnProperty.call(b3, p2)) d3[p2] = b3[p2];\n  };\n  return extendStatics(d2, b2);\n};\nfunction __extends(d2, b2) {\n  if (typeof b2 !== \"function\" && b2 !== null)\n    throw new TypeError(\"Class extends value \" + String(b2) + \" is not a constructor or null\");\n  extendStatics(d2, b2);\n  function __() {\n    this.constructor = d2;\n  }\n  d2.prototype = b2 === null ? Object.create(b2) : (__.prototype = b2.prototype, new __());\n}\nvar __assign = function() {\n  __assign = Object.assign || function __assign2(t2) {\n    for (var s2, i3 = 1, n3 = arguments.length; i3 < n3; i3++) {\n      s2 = arguments[i3];\n      for (var p2 in s2) if (Object.prototype.hasOwnProperty.call(s2, p2)) t2[p2] = s2[p2];\n    }\n    return t2;\n  };\n  return __assign.apply(this, arguments);\n};\ntypeof SuppressedError === \"function\" ? SuppressedError : function(error2, suppressed, message) {\n  var e2 = new Error(message);\n  return e2.name = \"SuppressedError\", e2.error = error2, e2.suppressed = suppressed, e2;\n};\nvar AbstractMatch = (\n  /** @class */\n  function() {\n    function AbstractMatch2(cfg) {\n      this._ = null;\n      this.matchedText = \"\";\n      this.offset = 0;\n      this.tagBuilder = cfg.tagBuilder;\n      this.matchedText = cfg.matchedText;\n      this.offset = cfg.offset;\n    }\n    AbstractMatch2.prototype.getMatchedText = function() {\n      return this.matchedText;\n    };\n    AbstractMatch2.prototype.setOffset = function(offset) {\n      this.offset = offset;\n    };\n    AbstractMatch2.prototype.getOffset = function() {\n      return this.offset;\n    };\n    AbstractMatch2.prototype.getCssClassSuffixes = function() {\n      return [this.type];\n    };\n    AbstractMatch2.prototype.buildTag = function() {\n      return this.tagBuilder.build(this);\n    };\n    return AbstractMatch2;\n  }()\n);\nvar tldRegexStr = \"(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|travelchannel|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|etisalat|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abarth|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|loans|locus|lotte|lotto|macys|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)\";\nvar tldRegex = new RegExp(\"^\" + tldRegexStr + \"$\");\nvar urlSuffixStartCharsRe = /[\\/?#]/;\nvar urlSuffixAllowedSpecialCharsRe = /[-+&@#/%=~_()|'$*\\[\\]{}\\u2713]/;\nvar urlSuffixNotAllowedAsLastCharRe = /[?!:,.;^]/;\nvar httpSchemeRe = /https?:\\/\\//i;\nvar httpSchemePrefixRe = new RegExp(\"^\" + httpSchemeRe.source, \"i\");\nvar urlSuffixedCharsNotAllowedAtEndRe = new RegExp(urlSuffixNotAllowedAsLastCharRe.source + \"$\");\nvar invalidSchemeRe = /^(javascript|vbscript):/i;\nvar schemeUrlRe = /^[A-Za-z][-.+A-Za-z0-9]*:(\\/\\/)?([^:/]*)/;\nvar tldUrlHostRe = /^(?:\\/\\/)?([^/#?:]+)/;\nfunction isSchemeStartChar(char) {\n  return letterRe.test(char);\n}\nfunction isSchemeChar(char) {\n  return letterRe.test(char) || digitRe.test(char) || char === \"+\" || char === \"-\" || char === \".\";\n}\nfunction isDomainLabelStartChar(char) {\n  return alphaNumericAndMarksRe.test(char);\n}\nfunction isDomainLabelChar(char) {\n  return char === \"_\" || isDomainLabelStartChar(char);\n}\nfunction isPathChar(char) {\n  return alphaNumericAndMarksRe.test(char) || urlSuffixAllowedSpecialCharsRe.test(char) || urlSuffixNotAllowedAsLastCharRe.test(char);\n}\nfunction isUrlSuffixStartChar(char) {\n  return urlSuffixStartCharsRe.test(char);\n}\nfunction isKnownTld(tld) {\n  return tldRegex.test(tld.toLowerCase());\n}\nfunction isValidSchemeUrl(url2) {\n  if (invalidSchemeRe.test(url2)) {\n    return false;\n  }\n  var schemeMatch = url2.match(schemeUrlRe);\n  if (!schemeMatch) {\n    return false;\n  }\n  var isAuthorityMatch = !!schemeMatch[1];\n  var host = schemeMatch[2];\n  if (isAuthorityMatch) {\n    return true;\n  }\n  if (host.indexOf(\".\") === -1 || !letterRe.test(host)) {\n    return false;\n  }\n  return true;\n}\nfunction isValidTldMatch(url2) {\n  var tldUrlHostMatch = url2.match(tldUrlHostRe);\n  if (!tldUrlHostMatch) {\n    return false;\n  }\n  var host = tldUrlHostMatch[0];\n  var hostLabels = host.split(\".\");\n  if (hostLabels.length < 2) {\n    return false;\n  }\n  var tld = hostLabels[hostLabels.length - 1];\n  if (!isKnownTld(tld)) {\n    return false;\n  }\n  return true;\n}\nvar ipV4Re = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\nvar ipV4PartRe = /[:/?#]/;\nfunction isValidIpV4Address(url2) {\n  var ipV4Part = url2.split(ipV4PartRe, 1)[0];\n  return ipV4Re.test(ipV4Part);\n}\nvar wwwPrefixRegex = /^(https?:\\/\\/)?(www\\.)?/i;\nvar protocolRelativeRegex = /^\\/\\//;\nvar UrlMatch = (\n  /** @class */\n  function(_super) {\n    __extends(UrlMatch2, _super);\n    function UrlMatch2(cfg) {\n      var _this = _super.call(this, cfg) || this;\n      _this.type = \"url\";\n      _this.url = \"\";\n      _this.urlMatchType = \"scheme\";\n      _this.protocolRelativeMatch = false;\n      _this.stripPrefix = {\n        scheme: true,\n        www: true\n      };\n      _this.stripTrailingSlash = true;\n      _this.decodePercentEncoding = true;\n      _this.protocolPrepended = false;\n      _this.urlMatchType = cfg.urlMatchType;\n      _this.url = cfg.url;\n      _this.protocolRelativeMatch = cfg.protocolRelativeMatch;\n      _this.stripPrefix = cfg.stripPrefix;\n      _this.stripTrailingSlash = cfg.stripTrailingSlash;\n      _this.decodePercentEncoding = cfg.decodePercentEncoding;\n      return _this;\n    }\n    UrlMatch2.prototype.getType = function() {\n      return \"url\";\n    };\n    UrlMatch2.prototype.getUrlMatchType = function() {\n      return this.urlMatchType;\n    };\n    UrlMatch2.prototype.getUrl = function() {\n      var url2 = this.url;\n      if (!this.protocolRelativeMatch && this.urlMatchType !== \"scheme\" && !this.protocolPrepended) {\n        url2 = this.url = \"http://\" + url2;\n        this.protocolPrepended = true;\n      }\n      return url2;\n    };\n    UrlMatch2.prototype.getAnchorHref = function() {\n      var url2 = this.getUrl();\n      return url2.replace(/&amp;/g, \"&\");\n    };\n    UrlMatch2.prototype.getAnchorText = function() {\n      var anchorText = this.getMatchedText();\n      if (this.protocolRelativeMatch) {\n        anchorText = stripProtocolRelativePrefix(anchorText);\n      }\n      if (this.stripPrefix.scheme) {\n        anchorText = stripSchemePrefix(anchorText);\n      }\n      if (this.stripPrefix.www) {\n        anchorText = stripWwwPrefix(anchorText);\n      }\n      if (this.stripTrailingSlash) {\n        anchorText = removeTrailingSlash(anchorText);\n      }\n      if (this.decodePercentEncoding) {\n        anchorText = removePercentEncoding(anchorText);\n      }\n      return anchorText;\n    };\n    return UrlMatch2;\n  }(AbstractMatch)\n);\nfunction stripSchemePrefix(url2) {\n  return url2.replace(httpSchemePrefixRe, \"\");\n}\nfunction stripWwwPrefix(url2) {\n  return url2.replace(wwwPrefixRegex, \"$1\");\n}\nfunction stripProtocolRelativePrefix(text2) {\n  return text2.replace(protocolRelativeRegex, \"\");\n}\nfunction removeTrailingSlash(anchorText) {\n  if (anchorText.charAt(anchorText.length - 1) === \"/\") {\n    anchorText = anchorText.slice(0, -1);\n  }\n  return anchorText;\n}\nfunction removePercentEncoding(anchorText) {\n  var preProcessedEntityAnchorText = anchorText.replace(/%22/gi, \"&quot;\").replace(/%26/gi, \"&amp;\").replace(/%27/gi, \"&#39;\").replace(/%3C/gi, \"&lt;\").replace(/%3E/gi, \"&gt;\");\n  try {\n    return decodeURIComponent(preProcessedEntityAnchorText);\n  } catch (e2) {\n    return preProcessedEntityAnchorText;\n  }\n}\nvar mailtoSchemePrefixRe = /^mailto:/i;\nvar emailLocalPartCharRegex = new RegExp(\"[\".concat(alphaNumericAndMarksCharsStr, \"!#$%&'*+/=?^_`{|}~-]\"));\nfunction isEmailLocalPartStartChar(char) {\n  return alphaNumericAndMarksRe.test(char);\n}\nfunction isEmailLocalPartChar(char) {\n  return emailLocalPartCharRegex.test(char);\n}\nfunction isValidEmail(emailAddress) {\n  var emailAddressTld = emailAddress.split(\".\").pop() || \"\";\n  return isKnownTld(emailAddressTld);\n}\nvar EmailMatch = (\n  /** @class */\n  function(_super) {\n    __extends(EmailMatch2, _super);\n    function EmailMatch2(cfg) {\n      var _this = _super.call(this, cfg) || this;\n      _this.type = \"email\";\n      _this.email = \"\";\n      _this.email = cfg.email;\n      return _this;\n    }\n    EmailMatch2.prototype.getType = function() {\n      return \"email\";\n    };\n    EmailMatch2.prototype.getEmail = function() {\n      return this.email;\n    };\n    EmailMatch2.prototype.getAnchorHref = function() {\n      return \"mailto:\" + this.email;\n    };\n    EmailMatch2.prototype.getAnchorText = function() {\n      return this.email;\n    };\n    return EmailMatch2;\n  }(AbstractMatch)\n);\nfunction isHashtagTextChar(char) {\n  return char === \"_\" || alphaNumericAndMarksRe.test(char);\n}\nfunction isValidHashtag(hashtag) {\n  return hashtag.length <= 140;\n}\nvar hashtagServices = [\"twitter\", \"facebook\", \"instagram\", \"tiktok\"];\nvar HashtagMatch = (\n  /** @class */\n  function(_super) {\n    __extends(HashtagMatch2, _super);\n    function HashtagMatch2(cfg) {\n      var _this = _super.call(this, cfg) || this;\n      _this.type = \"hashtag\";\n      _this.serviceName = \"twitter\";\n      _this.hashtag = \"\";\n      _this.serviceName = cfg.serviceName;\n      _this.hashtag = cfg.hashtag;\n      return _this;\n    }\n    HashtagMatch2.prototype.getType = function() {\n      return \"hashtag\";\n    };\n    HashtagMatch2.prototype.getServiceName = function() {\n      return this.serviceName;\n    };\n    HashtagMatch2.prototype.getHashtag = function() {\n      return this.hashtag;\n    };\n    HashtagMatch2.prototype.getAnchorHref = function() {\n      var serviceName = this.serviceName, hashtag = this.hashtag;\n      switch (serviceName) {\n        case \"twitter\":\n          return \"https://twitter.com/hashtag/\" + hashtag;\n        case \"facebook\":\n          return \"https://www.facebook.com/hashtag/\" + hashtag;\n        case \"instagram\":\n          return \"https://instagram.com/explore/tags/\" + hashtag;\n        case \"tiktok\":\n          return \"https://www.tiktok.com/tag/\" + hashtag;\n        default:\n          assertNever(serviceName);\n          throw new Error(\"Invalid hashtag service: \".concat(serviceName));\n      }\n    };\n    HashtagMatch2.prototype.getAnchorText = function() {\n      return \"#\" + this.hashtag;\n    };\n    HashtagMatch2.prototype.getCssClassSuffixes = function() {\n      var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this), serviceName = this.getServiceName();\n      if (serviceName) {\n        cssClassSuffixes.push(serviceName);\n      }\n      return cssClassSuffixes;\n    };\n    return HashtagMatch2;\n  }(AbstractMatch)\n);\nvar mentionRegexes = {\n  twitter: /^@\\w{1,15}$/,\n  instagram: /^@[_\\w]{1,30}$/,\n  soundcloud: /^@[-a-z0-9_]{3,25}$/,\n  // TikTok usernames are 1-24 characters containing letters, numbers, underscores\n  // and periods, but cannot end in a period: https://support.tiktok.com/en/getting-started/setting-up-your-profile/changing-your-username\n  tiktok: /^@[.\\w]{1,23}[\\w]$/\n};\nvar mentionTextCharRe = /[-\\w.]/;\nfunction isMentionTextChar(char) {\n  return mentionTextCharRe.test(char);\n}\nfunction isValidMention(mention, serviceName) {\n  var re = mentionRegexes[serviceName];\n  return re.test(mention);\n}\nvar mentionServices = [\"twitter\", \"instagram\", \"soundcloud\", \"tiktok\"];\nvar MentionMatch = (\n  /** @class */\n  function(_super) {\n    __extends(MentionMatch2, _super);\n    function MentionMatch2(cfg) {\n      var _this = _super.call(this, cfg) || this;\n      _this.type = \"mention\";\n      _this.serviceName = \"twitter\";\n      _this.mention = \"\";\n      _this.mention = cfg.mention;\n      _this.serviceName = cfg.serviceName;\n      return _this;\n    }\n    MentionMatch2.prototype.getType = function() {\n      return \"mention\";\n    };\n    MentionMatch2.prototype.getMention = function() {\n      return this.mention;\n    };\n    MentionMatch2.prototype.getServiceName = function() {\n      return this.serviceName;\n    };\n    MentionMatch2.prototype.getAnchorHref = function() {\n      switch (this.serviceName) {\n        case \"twitter\":\n          return \"https://twitter.com/\" + this.mention;\n        case \"instagram\":\n          return \"https://instagram.com/\" + this.mention;\n        case \"soundcloud\":\n          return \"https://soundcloud.com/\" + this.mention;\n        case \"tiktok\":\n          return \"https://www.tiktok.com/@\" + this.mention;\n        default:\n          throw new Error(\"Unknown service name to point mention to: \" + this.serviceName);\n      }\n    };\n    MentionMatch2.prototype.getAnchorText = function() {\n      return \"@\" + this.mention;\n    };\n    MentionMatch2.prototype.getCssClassSuffixes = function() {\n      var cssClassSuffixes = _super.prototype.getCssClassSuffixes.call(this), serviceName = this.getServiceName();\n      if (serviceName) {\n        cssClassSuffixes.push(serviceName);\n      }\n      return cssClassSuffixes;\n    };\n    return MentionMatch2;\n  }(AbstractMatch)\n);\nvar separatorCharRe = /[-. ]/;\nvar hasDelimCharsRe = /[-. ()]/;\nvar controlCharRe = /[,;]/;\nvar mostPhoneNumbers = /(?:(?:(?:(\\+)?\\d{1,3}[-. ]?)?\\(?\\d{3}\\)?[-. ]?\\d{3}[-. ]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\\d[-. ]?){6,12}\\d+))([,;]+[0-9]+#?)*/;\nvar japanesePhoneRe = /(0([1-9]-?[1-9]\\d{3}|[1-9]{2}-?\\d{3}|[1-9]{2}\\d{1}-?\\d{2}|[1-9]{2}\\d{2}-?\\d{1})-?\\d{4}|0[789]0-?\\d{4}-?\\d{4}|050-?\\d{4}-?\\d{4})/;\nvar validPhoneNumberRe = new RegExp(\"^\".concat(mostPhoneNumbers.source, \"|\").concat(japanesePhoneRe.source, \"$\"));\nfunction isPhoneNumberSeparatorChar(char) {\n  return separatorCharRe.test(char);\n}\nfunction isPhoneNumberControlChar(char) {\n  return controlCharRe.test(char);\n}\nfunction isValidPhoneNumber(phoneNumberText) {\n  var hasDelimiters = phoneNumberText.charAt(0) === \"+\" || hasDelimCharsRe.test(phoneNumberText);\n  return hasDelimiters && validPhoneNumberRe.test(phoneNumberText);\n}\nvar PhoneMatch = (\n  /** @class */\n  function(_super) {\n    __extends(PhoneMatch2, _super);\n    function PhoneMatch2(cfg) {\n      var _this = _super.call(this, cfg) || this;\n      _this.type = \"phone\";\n      _this.number = \"\";\n      _this.plusSign = false;\n      _this.number = cfg.number;\n      _this.plusSign = cfg.plusSign;\n      return _this;\n    }\n    PhoneMatch2.prototype.getType = function() {\n      return \"phone\";\n    };\n    PhoneMatch2.prototype.getPhoneNumber = function() {\n      return this.number;\n    };\n    PhoneMatch2.prototype.getNumber = function() {\n      return this.getPhoneNumber();\n    };\n    PhoneMatch2.prototype.getAnchorHref = function() {\n      return \"tel:\" + (this.plusSign ? \"+\" : \"\") + this.number;\n    };\n    PhoneMatch2.prototype.getAnchorText = function() {\n      return this.matchedText;\n    };\n    return PhoneMatch2;\n  }(AbstractMatch)\n);\nfunction parseMatches(text2, args) {\n  var tagBuilder = args.tagBuilder;\n  var stripPrefix = args.stripPrefix;\n  var stripTrailingSlash = args.stripTrailingSlash;\n  var decodePercentEncoding = args.decodePercentEncoding;\n  var hashtagServiceName = args.hashtagServiceName;\n  var mentionServiceName = args.mentionServiceName;\n  var matches = [];\n  var textLen = text2.length;\n  var stateMachines = [];\n  var charIdx = 0;\n  for (; charIdx < textLen; charIdx++) {\n    var char = text2.charAt(charIdx);\n    if (stateMachines.length === 0) {\n      stateNoMatch(char);\n    } else {\n      for (var stateIdx = stateMachines.length - 1; stateIdx >= 0; stateIdx--) {\n        var stateMachine = stateMachines[stateIdx];\n        switch (stateMachine.state) {\n          case 11:\n            stateProtocolRelativeSlash1(stateMachine, char);\n            break;\n          case 12:\n            stateProtocolRelativeSlash2(stateMachine, char);\n            break;\n          case 0:\n            stateSchemeChar(stateMachine, char);\n            break;\n          case 1:\n            stateSchemeHyphen(stateMachine, char);\n            break;\n          case 2:\n            stateSchemeColon(stateMachine, char);\n            break;\n          case 3:\n            stateSchemeSlash1(stateMachine, char);\n            break;\n          case 4:\n            stateSchemeSlash2(stateMachine, char);\n            break;\n          case 5:\n            stateDomainLabelChar(stateMachine, char);\n            break;\n          case 6:\n            stateDomainHyphen(stateMachine, char);\n            break;\n          case 7:\n            stateDomainDot(stateMachine, char);\n            break;\n          case 13:\n            stateIpV4Digit(stateMachine, char);\n            break;\n          case 14:\n            stateIPv4Dot(stateMachine, char);\n            break;\n          case 8:\n            statePortColon(stateMachine, char);\n            break;\n          case 9:\n            statePortNumber(stateMachine, char);\n            break;\n          case 10:\n            statePath(stateMachine, char);\n            break;\n          case 15:\n            stateEmailMailto_M(stateMachine, char);\n            break;\n          case 16:\n            stateEmailMailto_A(stateMachine, char);\n            break;\n          case 17:\n            stateEmailMailto_I(stateMachine, char);\n            break;\n          case 18:\n            stateEmailMailto_L(stateMachine, char);\n            break;\n          case 19:\n            stateEmailMailto_T(stateMachine, char);\n            break;\n          case 20:\n            stateEmailMailto_O(stateMachine, char);\n            break;\n          case 21:\n            stateEmailMailtoColon(stateMachine, char);\n            break;\n          case 22:\n            stateEmailLocalPart(stateMachine, char);\n            break;\n          case 23:\n            stateEmailLocalPartDot(stateMachine, char);\n            break;\n          case 24:\n            stateEmailAtSign(stateMachine, char);\n            break;\n          case 25:\n            stateEmailDomainChar(stateMachine, char);\n            break;\n          case 26:\n            stateEmailDomainHyphen(stateMachine, char);\n            break;\n          case 27:\n            stateEmailDomainDot(stateMachine, char);\n            break;\n          case 28:\n            stateHashtagHashChar(stateMachine, char);\n            break;\n          case 29:\n            stateHashtagTextChar(stateMachine, char);\n            break;\n          case 30:\n            stateMentionAtChar(stateMachine, char);\n            break;\n          case 31:\n            stateMentionTextChar(stateMachine, char);\n            break;\n          case 32:\n            statePhoneNumberOpenParen(stateMachine, char);\n            break;\n          case 33:\n            statePhoneNumberAreaCodeDigit1(stateMachine, char);\n            break;\n          case 34:\n            statePhoneNumberAreaCodeDigit2(stateMachine, char);\n            break;\n          case 35:\n            statePhoneNumberAreaCodeDigit3(stateMachine, char);\n            break;\n          case 36:\n            statePhoneNumberCloseParen(stateMachine, char);\n            break;\n          case 37:\n            statePhoneNumberPlus(stateMachine, char);\n            break;\n          case 38:\n            statePhoneNumberDigit(stateMachine, char);\n            break;\n          case 39:\n            statePhoneNumberSeparator(stateMachine, char);\n            break;\n          case 40:\n            statePhoneNumberControlChar(stateMachine, char);\n            break;\n          case 41:\n            statePhoneNumberPoundChar(stateMachine, char);\n            break;\n          default:\n            assertNever(stateMachine.state);\n        }\n      }\n    }\n  }\n  for (var i3 = stateMachines.length - 1; i3 >= 0; i3--) {\n    stateMachines.forEach(function(stateMachine2) {\n      return captureMatchIfValidAndRemove(stateMachine2);\n    });\n  }\n  return matches;\n  function stateNoMatch(char2) {\n    if (char2 === \"#\") {\n      stateMachines.push(createHashtagStateMachine(\n        charIdx,\n        28\n        /* HashtagHashChar */\n      ));\n    } else if (char2 === \"@\") {\n      stateMachines.push(createMentionStateMachine(\n        charIdx,\n        30\n        /* MentionAtChar */\n      ));\n    } else if (char2 === \"/\") {\n      stateMachines.push(createTldUrlStateMachine(\n        charIdx,\n        11\n        /* ProtocolRelativeSlash1 */\n      ));\n    } else if (char2 === \"+\") {\n      stateMachines.push(createPhoneNumberStateMachine(\n        charIdx,\n        37\n        /* PhoneNumberPlus */\n      ));\n    } else if (char2 === \"(\") {\n      stateMachines.push(createPhoneNumberStateMachine(\n        charIdx,\n        32\n        /* PhoneNumberOpenParen */\n      ));\n    } else {\n      if (digitRe.test(char2)) {\n        stateMachines.push(createPhoneNumberStateMachine(\n          charIdx,\n          38\n          /* PhoneNumberDigit */\n        ));\n        stateMachines.push(createIpV4UrlStateMachine(\n          charIdx,\n          13\n          /* IpV4Digit */\n        ));\n      }\n      if (isEmailLocalPartStartChar(char2)) {\n        var startState = char2.toLowerCase() === \"m\" ? 15 : 22;\n        stateMachines.push(createEmailStateMachine(charIdx, startState));\n      }\n      if (isSchemeStartChar(char2)) {\n        stateMachines.push(createSchemeUrlStateMachine(\n          charIdx,\n          0\n          /* SchemeChar */\n        ));\n      }\n      if (alphaNumericAndMarksRe.test(char2)) {\n        stateMachines.push(createTldUrlStateMachine(\n          charIdx,\n          5\n          /* DomainLabelChar */\n        ));\n      }\n    }\n  }\n  function stateSchemeChar(stateMachine2, char2) {\n    if (char2 === \":\") {\n      stateMachine2.state = 2;\n    } else if (char2 === \"-\") {\n      stateMachine2.state = 1;\n    } else if (isSchemeChar(char2)) ;\n    else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateSchemeHyphen(stateMachine2, char2) {\n    if (char2 === \"-\") ;\n    else if (char2 === \"/\") {\n      remove(stateMachines, stateMachine2);\n      stateMachines.push(createTldUrlStateMachine(\n        charIdx,\n        11\n        /* ProtocolRelativeSlash1 */\n      ));\n    } else if (isSchemeChar(char2)) {\n      stateMachine2.state = 0;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateSchemeColon(stateMachine2, char2) {\n    if (char2 === \"/\") {\n      stateMachine2.state = 3;\n    } else if (char2 === \".\") {\n      remove(stateMachines, stateMachine2);\n    } else if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 5;\n      if (isSchemeStartChar(char2)) {\n        stateMachines.push(createSchemeUrlStateMachine(\n          charIdx,\n          0\n          /* SchemeChar */\n        ));\n      }\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateSchemeSlash1(stateMachine2, char2) {\n    if (char2 === \"/\") {\n      stateMachine2.state = 4;\n    } else if (isPathChar(char2)) {\n      stateMachine2.state = 10;\n      stateMachine2.acceptStateReached = true;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateSchemeSlash2(stateMachine2, char2) {\n    if (char2 === \"/\") {\n      stateMachine2.state = 10;\n    } else if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 5;\n      stateMachine2.acceptStateReached = true;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateProtocolRelativeSlash1(stateMachine2, char2) {\n    if (char2 === \"/\") {\n      stateMachine2.state = 12;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateProtocolRelativeSlash2(stateMachine2, char2) {\n    if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 5;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateDomainLabelChar(stateMachine2, char2) {\n    if (char2 === \".\") {\n      stateMachine2.state = 7;\n    } else if (char2 === \"-\") {\n      stateMachine2.state = 6;\n    } else if (char2 === \":\") {\n      stateMachine2.state = 8;\n    } else if (isUrlSuffixStartChar(char2)) {\n      stateMachine2.state = 10;\n    } else if (isDomainLabelChar(char2)) ;\n    else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateDomainHyphen(stateMachine2, char2) {\n    if (char2 === \"-\") ;\n    else if (char2 === \".\") {\n      captureMatchIfValidAndRemove(stateMachine2);\n    } else if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 5;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateDomainDot(stateMachine2, char2) {\n    if (char2 === \".\") {\n      captureMatchIfValidAndRemove(stateMachine2);\n    } else if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 5;\n      stateMachine2.acceptStateReached = true;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateIpV4Digit(stateMachine2, char2) {\n    if (char2 === \".\") {\n      stateMachine2.state = 14;\n    } else if (char2 === \":\") {\n      stateMachine2.state = 8;\n    } else if (digitRe.test(char2)) ;\n    else if (isUrlSuffixStartChar(char2)) {\n      stateMachine2.state = 10;\n    } else if (alphaNumericAndMarksRe.test(char2)) {\n      remove(stateMachines, stateMachine2);\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateIPv4Dot(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.octetsEncountered++;\n      if (stateMachine2.octetsEncountered === 4) {\n        stateMachine2.acceptStateReached = true;\n      }\n      stateMachine2.state = 13;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function statePortColon(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 9;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function statePortNumber(stateMachine2, char2) {\n    if (digitRe.test(char2)) ;\n    else if (isUrlSuffixStartChar(char2)) {\n      stateMachine2.state = 10;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function statePath(stateMachine2, char2) {\n    if (isPathChar(char2)) ;\n    else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateEmailMailto_M(stateMachine2, char2) {\n    if (char2.toLowerCase() === \"a\") {\n      stateMachine2.state = 16;\n    } else {\n      stateEmailLocalPart(stateMachine2, char2);\n    }\n  }\n  function stateEmailMailto_A(stateMachine2, char2) {\n    if (char2.toLowerCase() === \"i\") {\n      stateMachine2.state = 17;\n    } else {\n      stateEmailLocalPart(stateMachine2, char2);\n    }\n  }\n  function stateEmailMailto_I(stateMachine2, char2) {\n    if (char2.toLowerCase() === \"l\") {\n      stateMachine2.state = 18;\n    } else {\n      stateEmailLocalPart(stateMachine2, char2);\n    }\n  }\n  function stateEmailMailto_L(stateMachine2, char2) {\n    if (char2.toLowerCase() === \"t\") {\n      stateMachine2.state = 19;\n    } else {\n      stateEmailLocalPart(stateMachine2, char2);\n    }\n  }\n  function stateEmailMailto_T(stateMachine2, char2) {\n    if (char2.toLowerCase() === \"o\") {\n      stateMachine2.state = 20;\n    } else {\n      stateEmailLocalPart(stateMachine2, char2);\n    }\n  }\n  function stateEmailMailto_O(stateMachine2, char2) {\n    if (char2.toLowerCase() === \":\") {\n      stateMachine2.state = 21;\n    } else {\n      stateEmailLocalPart(stateMachine2, char2);\n    }\n  }\n  function stateEmailMailtoColon(stateMachine2, char2) {\n    if (isEmailLocalPartChar(char2)) {\n      stateMachine2.state = 22;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateEmailLocalPart(stateMachine2, char2) {\n    if (char2 === \".\") {\n      stateMachine2.state = 23;\n    } else if (char2 === \"@\") {\n      stateMachine2.state = 24;\n    } else if (isEmailLocalPartChar(char2)) {\n      stateMachine2.state = 22;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateEmailLocalPartDot(stateMachine2, char2) {\n    if (char2 === \".\") {\n      remove(stateMachines, stateMachine2);\n    } else if (char2 === \"@\") {\n      remove(stateMachines, stateMachine2);\n    } else if (isEmailLocalPartChar(char2)) {\n      stateMachine2.state = 22;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateEmailAtSign(stateMachine2, char2) {\n    if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 25;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateEmailDomainChar(stateMachine2, char2) {\n    if (char2 === \".\") {\n      stateMachine2.state = 27;\n    } else if (char2 === \"-\") {\n      stateMachine2.state = 26;\n    } else if (isDomainLabelChar(char2)) ;\n    else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateEmailDomainHyphen(stateMachine2, char2) {\n    if (char2 === \"-\" || char2 === \".\") {\n      captureMatchIfValidAndRemove(stateMachine2);\n    } else if (isDomainLabelChar(char2)) {\n      stateMachine2.state = 25;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateEmailDomainDot(stateMachine2, char2) {\n    if (char2 === \".\" || char2 === \"-\") {\n      captureMatchIfValidAndRemove(stateMachine2);\n    } else if (isDomainLabelStartChar(char2)) {\n      stateMachine2.state = 25;\n      stateMachine2.acceptStateReached = true;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateHashtagHashChar(stateMachine2, char2) {\n    if (isHashtagTextChar(char2)) {\n      stateMachine2.state = 29;\n      stateMachine2.acceptStateReached = true;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateHashtagTextChar(stateMachine2, char2) {\n    if (isHashtagTextChar(char2)) ;\n    else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function stateMentionAtChar(stateMachine2, char2) {\n    if (isMentionTextChar(char2)) {\n      stateMachine2.state = 31;\n      stateMachine2.acceptStateReached = true;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function stateMentionTextChar(stateMachine2, char2) {\n    if (isMentionTextChar(char2)) ;\n    else if (alphaNumericAndMarksRe.test(char2)) {\n      remove(stateMachines, stateMachine2);\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function statePhoneNumberPlus(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 38;\n    } else {\n      remove(stateMachines, stateMachine2);\n      stateNoMatch(char2);\n    }\n  }\n  function statePhoneNumberOpenParen(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 33;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n    stateNoMatch(char2);\n  }\n  function statePhoneNumberAreaCodeDigit1(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 34;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function statePhoneNumberAreaCodeDigit2(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 35;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function statePhoneNumberAreaCodeDigit3(stateMachine2, char2) {\n    if (char2 === \")\") {\n      stateMachine2.state = 36;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function statePhoneNumberCloseParen(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 38;\n    } else if (isPhoneNumberSeparatorChar(char2)) {\n      stateMachine2.state = 39;\n    } else {\n      remove(stateMachines, stateMachine2);\n    }\n  }\n  function statePhoneNumberDigit(stateMachine2, char2) {\n    stateMachine2.acceptStateReached = true;\n    if (isPhoneNumberControlChar(char2)) {\n      stateMachine2.state = 40;\n    } else if (char2 === \"#\") {\n      stateMachine2.state = 41;\n    } else if (digitRe.test(char2)) ;\n    else if (char2 === \"(\") {\n      stateMachine2.state = 32;\n    } else if (isPhoneNumberSeparatorChar(char2)) {\n      stateMachine2.state = 39;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n      if (isSchemeStartChar(char2)) {\n        stateMachines.push(createSchemeUrlStateMachine(\n          charIdx,\n          0\n          /* SchemeChar */\n        ));\n      }\n    }\n  }\n  function statePhoneNumberSeparator(stateMachine2, char2) {\n    if (digitRe.test(char2)) {\n      stateMachine2.state = 38;\n    } else if (char2 === \"(\") {\n      stateMachine2.state = 32;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n      stateNoMatch(char2);\n    }\n  }\n  function statePhoneNumberControlChar(stateMachine2, char2) {\n    if (isPhoneNumberControlChar(char2)) ;\n    else if (char2 === \"#\") {\n      stateMachine2.state = 41;\n    } else if (digitRe.test(char2)) {\n      stateMachine2.state = 38;\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function statePhoneNumberPoundChar(stateMachine2, char2) {\n    if (isPhoneNumberControlChar(char2)) {\n      stateMachine2.state = 40;\n    } else if (digitRe.test(char2)) {\n      remove(stateMachines, stateMachine2);\n    } else {\n      captureMatchIfValidAndRemove(stateMachine2);\n    }\n  }\n  function captureMatchIfValidAndRemove(stateMachine2) {\n    remove(stateMachines, stateMachine2);\n    if (!stateMachine2.acceptStateReached) {\n      return;\n    }\n    var startIdx = stateMachine2.startIdx;\n    var matchedText = text2.slice(stateMachine2.startIdx, charIdx);\n    matchedText = excludeUnbalancedTrailingBracesAndPunctuation(matchedText);\n    if (stateMachine2.type === \"url\") {\n      var charBeforeUrlMatch = text2.charAt(stateMachine2.startIdx - 1);\n      if (charBeforeUrlMatch === \"@\") {\n        return;\n      }\n      var urlMatchType = stateMachine2.matchType;\n      if (urlMatchType === \"scheme\") {\n        var httpSchemeMatch = httpSchemeRe.exec(matchedText);\n        if (httpSchemeMatch) {\n          startIdx = startIdx + httpSchemeMatch.index;\n          matchedText = matchedText.slice(httpSchemeMatch.index);\n        }\n        if (!isValidSchemeUrl(matchedText)) {\n          return;\n        }\n      } else if (urlMatchType === \"tld\") {\n        if (!isValidTldMatch(matchedText)) {\n          return;\n        }\n      } else if (urlMatchType === \"ipV4\") {\n        if (!isValidIpV4Address(matchedText)) {\n          return;\n        }\n      } else {\n        assertNever(urlMatchType);\n      }\n      matches.push(new UrlMatch({\n        tagBuilder,\n        matchedText,\n        offset: startIdx,\n        urlMatchType,\n        url: matchedText,\n        protocolRelativeMatch: matchedText.slice(0, 2) === \"//\",\n        // TODO: Do these settings need to be passed to the match,\n        // or should we handle them here in UrlMatcher?\n        stripPrefix,\n        stripTrailingSlash,\n        decodePercentEncoding\n      }));\n    } else if (stateMachine2.type === \"email\") {\n      if (isValidEmail(matchedText)) {\n        matches.push(new EmailMatch({\n          tagBuilder,\n          matchedText,\n          offset: startIdx,\n          email: matchedText.replace(mailtoSchemePrefixRe, \"\")\n        }));\n      }\n    } else if (stateMachine2.type === \"hashtag\") {\n      if (isValidHashtag(matchedText)) {\n        matches.push(new HashtagMatch({\n          tagBuilder,\n          matchedText,\n          offset: startIdx,\n          serviceName: hashtagServiceName,\n          hashtag: matchedText.slice(1)\n        }));\n      }\n    } else if (stateMachine2.type === \"mention\") {\n      if (isValidMention(matchedText, mentionServiceName)) {\n        matches.push(new MentionMatch({\n          tagBuilder,\n          matchedText,\n          offset: startIdx,\n          serviceName: mentionServiceName,\n          mention: matchedText.slice(1)\n          // strip off the '@' character at the beginning\n        }));\n      }\n    } else if (stateMachine2.type === \"phone\") {\n      matchedText = matchedText.replace(/ +$/g, \"\");\n      if (isValidPhoneNumber(matchedText)) {\n        var cleanNumber = matchedText.replace(/[^0-9,;#]/g, \"\");\n        matches.push(new PhoneMatch({\n          tagBuilder,\n          matchedText,\n          offset: startIdx,\n          number: cleanNumber,\n          plusSign: matchedText.charAt(0) === \"+\"\n        }));\n      }\n    } else {\n      assertNever(stateMachine2);\n    }\n  }\n}\nvar openBraceRe = /[\\(\\{\\[]/;\nvar closeBraceRe = /[\\)\\}\\]]/;\nvar oppositeBrace = {\n  \")\": \"(\",\n  \"}\": \"{\",\n  \"]\": \"[\"\n};\nfunction excludeUnbalancedTrailingBracesAndPunctuation(matchedText) {\n  var braceCounts = {\n    \"(\": 0,\n    \"{\": 0,\n    \"[\": 0\n  };\n  for (var i3 = 0; i3 < matchedText.length; i3++) {\n    var char_1 = matchedText.charAt(i3);\n    if (openBraceRe.test(char_1)) {\n      braceCounts[char_1]++;\n    } else if (closeBraceRe.test(char_1)) {\n      braceCounts[oppositeBrace[char_1]]--;\n    }\n  }\n  var endIdx = matchedText.length - 1;\n  var char;\n  while (endIdx >= 0) {\n    char = matchedText.charAt(endIdx);\n    if (closeBraceRe.test(char)) {\n      var oppositeBraceChar = oppositeBrace[char];\n      if (braceCounts[oppositeBraceChar] < 0) {\n        braceCounts[oppositeBraceChar]++;\n        endIdx--;\n      } else {\n        break;\n      }\n    } else if (urlSuffixedCharsNotAllowedAtEndRe.test(char)) {\n      endIdx--;\n    } else {\n      break;\n    }\n  }\n  return matchedText.slice(0, endIdx + 1);\n}\nfunction createSchemeUrlStateMachine(startIdx, state) {\n  return {\n    type: \"url\",\n    startIdx,\n    state,\n    acceptStateReached: false,\n    matchType: \"scheme\"\n  };\n}\nfunction createTldUrlStateMachine(startIdx, state) {\n  return {\n    type: \"url\",\n    startIdx,\n    state,\n    acceptStateReached: false,\n    matchType: \"tld\"\n  };\n}\nfunction createIpV4UrlStateMachine(startIdx, state) {\n  return {\n    type: \"url\",\n    startIdx,\n    state,\n    acceptStateReached: false,\n    matchType: \"ipV4\",\n    octetsEncountered: 1\n    // starts at 1 because we create this machine when encountering the first octet\n  };\n}\nfunction createEmailStateMachine(startIdx, state) {\n  return {\n    type: \"email\",\n    startIdx,\n    state,\n    acceptStateReached: false\n  };\n}\nfunction createHashtagStateMachine(startIdx, state) {\n  return {\n    type: \"hashtag\",\n    startIdx,\n    state,\n    acceptStateReached: false\n  };\n}\nfunction createMentionStateMachine(startIdx, state) {\n  return {\n    type: \"mention\",\n    startIdx,\n    state,\n    acceptStateReached: false\n  };\n}\nfunction createPhoneNumberStateMachine(startIdx, state) {\n  return {\n    type: \"phone\",\n    startIdx,\n    state,\n    acceptStateReached: false\n  };\n}\nfunction parseHtml(html, _a3) {\n  var onOpenTag = _a3.onOpenTag, onCloseTag = _a3.onCloseTag, onText = _a3.onText, onComment = _a3.onComment, onDoctype = _a3.onDoctype;\n  var noCurrentTag = new CurrentTag();\n  var charIdx = 0, len = html.length, state = 0, currentDataIdx = 0, currentTag = noCurrentTag;\n  while (charIdx < len) {\n    var char = html.charAt(charIdx);\n    switch (state) {\n      case 0:\n        stateData(char);\n        break;\n      case 1:\n        stateTagOpen(char);\n        break;\n      case 2:\n        stateEndTagOpen(char);\n        break;\n      case 3:\n        stateTagName(char);\n        break;\n      case 4:\n        stateBeforeAttributeName(char);\n        break;\n      case 5:\n        stateAttributeName(char);\n        break;\n      case 6:\n        stateAfterAttributeName(char);\n        break;\n      case 7:\n        stateBeforeAttributeValue(char);\n        break;\n      case 8:\n        stateAttributeValueDoubleQuoted(char);\n        break;\n      case 9:\n        stateAttributeValueSingleQuoted(char);\n        break;\n      case 10:\n        stateAttributeValueUnquoted(char);\n        break;\n      case 11:\n        stateAfterAttributeValueQuoted(char);\n        break;\n      case 12:\n        stateSelfClosingStartTag(char);\n        break;\n      case 13:\n        stateMarkupDeclarationOpen();\n        break;\n      case 14:\n        stateCommentStart(char);\n        break;\n      case 15:\n        stateCommentStartDash(char);\n        break;\n      case 16:\n        stateComment(char);\n        break;\n      case 17:\n        stateCommentEndDash(char);\n        break;\n      case 18:\n        stateCommentEnd(char);\n        break;\n      case 19:\n        stateCommentEndBang(char);\n        break;\n      case 20:\n        stateDoctype(char);\n        break;\n      default:\n        assertNever(state);\n    }\n    charIdx++;\n  }\n  if (currentDataIdx < charIdx) {\n    emitText();\n  }\n  function stateData(char2) {\n    if (char2 === \"<\") {\n      startNewTag();\n    }\n  }\n  function stateTagOpen(char2) {\n    if (char2 === \"!\") {\n      state = 13;\n    } else if (char2 === \"/\") {\n      state = 2;\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isClosing: true }));\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else if (letterRe.test(char2)) {\n      state = 3;\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isOpening: true }));\n    } else {\n      state = 0;\n      currentTag = noCurrentTag;\n    }\n  }\n  function stateTagName(char2) {\n    if (whitespaceRe.test(char2)) {\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n      state = 4;\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else if (char2 === \"/\") {\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n      state = 12;\n    } else if (char2 === \">\") {\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { name: captureTagName() }));\n      emitTagAndPreviousTextNode();\n    } else if (!letterRe.test(char2) && !digitRe.test(char2) && char2 !== \":\") {\n      resetToDataState();\n    } else ;\n  }\n  function stateEndTagOpen(char2) {\n    if (char2 === \">\") {\n      resetToDataState();\n    } else if (letterRe.test(char2)) {\n      state = 3;\n    } else {\n      resetToDataState();\n    }\n  }\n  function stateBeforeAttributeName(char2) {\n    if (whitespaceRe.test(char2)) ;\n    else if (char2 === \"/\") {\n      state = 12;\n    } else if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else if (char2 === \"=\" || quoteRe.test(char2) || controlCharsRe.test(char2)) {\n      resetToDataState();\n    } else {\n      state = 5;\n    }\n  }\n  function stateAttributeName(char2) {\n    if (whitespaceRe.test(char2)) {\n      state = 6;\n    } else if (char2 === \"/\") {\n      state = 12;\n    } else if (char2 === \"=\") {\n      state = 7;\n    } else if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else if (quoteRe.test(char2)) {\n      resetToDataState();\n    } else ;\n  }\n  function stateAfterAttributeName(char2) {\n    if (whitespaceRe.test(char2)) ;\n    else if (char2 === \"/\") {\n      state = 12;\n    } else if (char2 === \"=\") {\n      state = 7;\n    } else if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else if (quoteRe.test(char2)) {\n      resetToDataState();\n    } else {\n      state = 5;\n    }\n  }\n  function stateBeforeAttributeValue(char2) {\n    if (whitespaceRe.test(char2)) ;\n    else if (char2 === '\"') {\n      state = 8;\n    } else if (char2 === \"'\") {\n      state = 9;\n    } else if (/[>=`]/.test(char2)) {\n      resetToDataState();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else {\n      state = 10;\n    }\n  }\n  function stateAttributeValueDoubleQuoted(char2) {\n    if (char2 === '\"') {\n      state = 11;\n    }\n  }\n  function stateAttributeValueSingleQuoted(char2) {\n    if (char2 === \"'\") {\n      state = 11;\n    }\n  }\n  function stateAttributeValueUnquoted(char2) {\n    if (whitespaceRe.test(char2)) {\n      state = 4;\n    } else if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else ;\n  }\n  function stateAfterAttributeValueQuoted(char2) {\n    if (whitespaceRe.test(char2)) {\n      state = 4;\n    } else if (char2 === \"/\") {\n      state = 12;\n    } else if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else {\n      state = 4;\n      reconsumeCurrentCharacter();\n    }\n  }\n  function stateSelfClosingStartTag(char2) {\n    if (char2 === \">\") {\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { isClosing: true }));\n      emitTagAndPreviousTextNode();\n    } else {\n      state = 4;\n    }\n  }\n  function stateMarkupDeclarationOpen(char2) {\n    if (html.substr(charIdx, 2) === \"--\") {\n      charIdx += 2;\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { type: \"comment\" }));\n      state = 14;\n    } else if (html.substr(charIdx, 7).toUpperCase() === \"DOCTYPE\") {\n      charIdx += 7;\n      currentTag = new CurrentTag(__assign(__assign({}, currentTag), { type: \"doctype\" }));\n      state = 20;\n    } else {\n      resetToDataState();\n    }\n  }\n  function stateCommentStart(char2) {\n    if (char2 === \"-\") {\n      state = 15;\n    } else if (char2 === \">\") {\n      resetToDataState();\n    } else {\n      state = 16;\n    }\n  }\n  function stateCommentStartDash(char2) {\n    if (char2 === \"-\") {\n      state = 18;\n    } else if (char2 === \">\") {\n      resetToDataState();\n    } else {\n      state = 16;\n    }\n  }\n  function stateComment(char2) {\n    if (char2 === \"-\") {\n      state = 17;\n    }\n  }\n  function stateCommentEndDash(char2) {\n    if (char2 === \"-\") {\n      state = 18;\n    } else {\n      state = 16;\n    }\n  }\n  function stateCommentEnd(char2) {\n    if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"!\") {\n      state = 19;\n    } else if (char2 === \"-\") ;\n    else {\n      state = 16;\n    }\n  }\n  function stateCommentEndBang(char2) {\n    if (char2 === \"-\") {\n      state = 17;\n    } else if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else {\n      state = 16;\n    }\n  }\n  function stateDoctype(char2) {\n    if (char2 === \">\") {\n      emitTagAndPreviousTextNode();\n    } else if (char2 === \"<\") {\n      startNewTag();\n    } else ;\n  }\n  function resetToDataState() {\n    state = 0;\n    currentTag = noCurrentTag;\n  }\n  function startNewTag() {\n    state = 1;\n    currentTag = new CurrentTag({ idx: charIdx });\n  }\n  function emitTagAndPreviousTextNode() {\n    var textBeforeTag = html.slice(currentDataIdx, currentTag.idx);\n    if (textBeforeTag) {\n      onText(textBeforeTag, currentDataIdx);\n    }\n    if (currentTag.type === \"comment\") {\n      onComment(currentTag.idx);\n    } else if (currentTag.type === \"doctype\") {\n      onDoctype(currentTag.idx);\n    } else {\n      if (currentTag.isOpening) {\n        onOpenTag(currentTag.name, currentTag.idx);\n      }\n      if (currentTag.isClosing) {\n        onCloseTag(currentTag.name, currentTag.idx);\n      }\n    }\n    resetToDataState();\n    currentDataIdx = charIdx + 1;\n  }\n  function emitText() {\n    var text2 = html.slice(currentDataIdx, charIdx);\n    onText(text2, currentDataIdx);\n    currentDataIdx = charIdx + 1;\n  }\n  function captureTagName() {\n    var startIdx = currentTag.idx + (currentTag.isClosing ? 2 : 1);\n    return html.slice(startIdx, charIdx).toLowerCase();\n  }\n  function reconsumeCurrentCharacter() {\n    charIdx--;\n  }\n}\nvar CurrentTag = (\n  /** @class */\n  /* @__PURE__ */ function() {\n    function CurrentTag2(cfg) {\n      if (cfg === void 0) {\n        cfg = {};\n      }\n      this.idx = cfg.idx !== void 0 ? cfg.idx : -1;\n      this.type = cfg.type || \"tag\";\n      this.name = cfg.name || \"\";\n      this.isOpening = !!cfg.isOpening;\n      this.isClosing = !!cfg.isClosing;\n    }\n    return CurrentTag2;\n  }()\n);\nvar Autolinker = (\n  /** @class */\n  function() {\n    function Autolinker2(cfg) {\n      if (cfg === void 0) {\n        cfg = {};\n      }\n      this.version = Autolinker2.version;\n      this.urls = {};\n      this.email = true;\n      this.phone = true;\n      this.hashtag = false;\n      this.mention = false;\n      this.newWindow = true;\n      this.stripPrefix = {\n        scheme: true,\n        www: true\n      };\n      this.stripTrailingSlash = true;\n      this.decodePercentEncoding = true;\n      this.truncate = {\n        length: 0,\n        location: \"end\"\n      };\n      this.className = \"\";\n      this.replaceFn = null;\n      this.context = void 0;\n      this.sanitizeHtml = false;\n      this.tagBuilder = null;\n      this.urls = normalizeUrlsCfg(cfg.urls);\n      this.email = isBoolean(cfg.email) ? cfg.email : this.email;\n      this.phone = isBoolean(cfg.phone) ? cfg.phone : this.phone;\n      this.hashtag = cfg.hashtag || this.hashtag;\n      this.mention = cfg.mention || this.mention;\n      this.newWindow = isBoolean(cfg.newWindow) ? cfg.newWindow : this.newWindow;\n      this.stripPrefix = normalizeStripPrefixCfg(cfg.stripPrefix);\n      this.stripTrailingSlash = isBoolean(cfg.stripTrailingSlash) ? cfg.stripTrailingSlash : this.stripTrailingSlash;\n      this.decodePercentEncoding = isBoolean(cfg.decodePercentEncoding) ? cfg.decodePercentEncoding : this.decodePercentEncoding;\n      this.sanitizeHtml = cfg.sanitizeHtml || false;\n      var mention = this.mention;\n      if (mention !== false && mentionServices.indexOf(mention) === -1) {\n        throw new Error(\"invalid `mention` cfg '\".concat(mention, \"' - see docs\"));\n      }\n      var hashtag = this.hashtag;\n      if (hashtag !== false && hashtagServices.indexOf(hashtag) === -1) {\n        throw new Error(\"invalid `hashtag` cfg '\".concat(hashtag, \"' - see docs\"));\n      }\n      this.truncate = normalizeTruncateCfg(cfg.truncate);\n      this.className = cfg.className || this.className;\n      this.replaceFn = cfg.replaceFn || this.replaceFn;\n      this.context = cfg.context || this;\n    }\n    Autolinker2.link = function(textOrHtml, options) {\n      var autolinker = new Autolinker2(options);\n      return autolinker.link(textOrHtml);\n    };\n    Autolinker2.parse = function(textOrHtml, options) {\n      var autolinker = new Autolinker2(options);\n      return autolinker.parse(textOrHtml);\n    };\n    Autolinker2.prototype.parse = function(textOrHtml) {\n      var _this = this;\n      var skipTagNames = [\"a\", \"style\", \"script\"], skipTagsStackCount = 0, matches = [];\n      parseHtml(textOrHtml, {\n        onOpenTag: function(tagName) {\n          if (skipTagNames.indexOf(tagName) >= 0) {\n            skipTagsStackCount++;\n          }\n        },\n        onText: function(text2, offset) {\n          if (skipTagsStackCount === 0) {\n            var htmlCharacterEntitiesRegex = /(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi;\n            var textSplit = text2.split(htmlCharacterEntitiesRegex);\n            var currentOffset_1 = offset;\n            textSplit.forEach(function(splitText, i3) {\n              if (i3 % 2 === 0) {\n                var textNodeMatches = _this.parseText(splitText, currentOffset_1);\n                matches.push.apply(matches, textNodeMatches);\n              }\n              currentOffset_1 += splitText.length;\n            });\n          }\n        },\n        onCloseTag: function(tagName) {\n          if (skipTagNames.indexOf(tagName) >= 0) {\n            skipTagsStackCount = Math.max(skipTagsStackCount - 1, 0);\n          }\n        },\n        onComment: function(_offset) {\n        },\n        onDoctype: function(_offset) {\n        }\n        // no need to process doctype nodes\n      });\n      matches = this.compactMatches(matches);\n      matches = this.removeUnwantedMatches(matches);\n      return matches;\n    };\n    Autolinker2.prototype.compactMatches = function(matches) {\n      matches.sort(function(a2, b2) {\n        return a2.getOffset() - b2.getOffset();\n      });\n      var i3 = 0;\n      while (i3 < matches.length - 1) {\n        var match3 = matches[i3], offset = match3.getOffset(), matchedTextLength = match3.getMatchedText().length, endIdx = offset + matchedTextLength;\n        if (i3 + 1 < matches.length) {\n          if (matches[i3 + 1].getOffset() === offset) {\n            var removeIdx = matches[i3 + 1].getMatchedText().length > matchedTextLength ? i3 : i3 + 1;\n            matches.splice(removeIdx, 1);\n            continue;\n          }\n          if (matches[i3 + 1].getOffset() < endIdx) {\n            matches.splice(i3 + 1, 1);\n            continue;\n          }\n        }\n        i3++;\n      }\n      return matches;\n    };\n    Autolinker2.prototype.removeUnwantedMatches = function(matches) {\n      if (!this.hashtag)\n        removeWithPredicate(matches, function(match3) {\n          return match3.getType() === \"hashtag\";\n        });\n      if (!this.email)\n        removeWithPredicate(matches, function(match3) {\n          return match3.getType() === \"email\";\n        });\n      if (!this.phone)\n        removeWithPredicate(matches, function(match3) {\n          return match3.getType() === \"phone\";\n        });\n      if (!this.mention)\n        removeWithPredicate(matches, function(match3) {\n          return match3.getType() === \"mention\";\n        });\n      if (!this.urls.schemeMatches) {\n        removeWithPredicate(matches, function(m2) {\n          return m2.getType() === \"url\" && m2.getUrlMatchType() === \"scheme\";\n        });\n      }\n      if (!this.urls.tldMatches) {\n        removeWithPredicate(matches, function(m2) {\n          return m2.getType() === \"url\" && m2.getUrlMatchType() === \"tld\";\n        });\n      }\n      if (!this.urls.ipV4Matches) {\n        removeWithPredicate(matches, function(m2) {\n          return m2.getType() === \"url\" && m2.getUrlMatchType() === \"ipV4\";\n        });\n      }\n      return matches;\n    };\n    Autolinker2.prototype.parseText = function(text2, offset) {\n      if (offset === void 0) {\n        offset = 0;\n      }\n      offset = offset || 0;\n      var matches = parseMatches(text2, {\n        tagBuilder: this.getTagBuilder(),\n        stripPrefix: this.stripPrefix,\n        stripTrailingSlash: this.stripTrailingSlash,\n        decodePercentEncoding: this.decodePercentEncoding,\n        hashtagServiceName: this.hashtag,\n        mentionServiceName: this.mention || \"twitter\"\n      });\n      for (var i3 = 0, numTextMatches = matches.length; i3 < numTextMatches; i3++) {\n        matches[i3].setOffset(offset + matches[i3].getOffset());\n      }\n      return matches;\n    };\n    Autolinker2.prototype.link = function(textOrHtml) {\n      if (!textOrHtml) {\n        return \"\";\n      }\n      if (this.sanitizeHtml) {\n        textOrHtml = textOrHtml.replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n      }\n      var matches = this.parse(textOrHtml), newHtml = [], lastIndex = 0;\n      for (var i3 = 0, len = matches.length; i3 < len; i3++) {\n        var match3 = matches[i3];\n        newHtml.push(textOrHtml.substring(lastIndex, match3.getOffset()));\n        newHtml.push(this.createMatchReturnVal(match3));\n        lastIndex = match3.getOffset() + match3.getMatchedText().length;\n      }\n      newHtml.push(textOrHtml.substring(lastIndex));\n      return newHtml.join(\"\");\n    };\n    Autolinker2.prototype.createMatchReturnVal = function(match3) {\n      var replaceFnResult;\n      if (this.replaceFn) {\n        replaceFnResult = this.replaceFn.call(this.context, match3);\n      }\n      if (typeof replaceFnResult === \"string\") {\n        return replaceFnResult;\n      } else if (replaceFnResult === false) {\n        return match3.getMatchedText();\n      } else if (replaceFnResult instanceof HtmlTag) {\n        return replaceFnResult.toAnchorString();\n      } else {\n        var anchorTag = match3.buildTag();\n        return anchorTag.toAnchorString();\n      }\n    };\n    Autolinker2.prototype.getTagBuilder = function() {\n      var tagBuilder = this.tagBuilder;\n      if (!tagBuilder) {\n        tagBuilder = this.tagBuilder = new AnchorTagBuilder({\n          newWindow: this.newWindow,\n          truncate: this.truncate,\n          className: this.className\n        });\n      }\n      return tagBuilder;\n    };\n    Autolinker2.version = version;\n    return Autolinker2;\n  }()\n);\nfunction normalizeUrlsCfg(urls) {\n  if (urls == null)\n    urls = true;\n  if (isBoolean(urls)) {\n    return { schemeMatches: urls, tldMatches: urls, ipV4Matches: urls };\n  } else {\n    return {\n      schemeMatches: isBoolean(urls.schemeMatches) ? urls.schemeMatches : true,\n      tldMatches: isBoolean(urls.tldMatches) ? urls.tldMatches : true,\n      ipV4Matches: isBoolean(urls.ipV4Matches) ? urls.ipV4Matches : true\n    };\n  }\n}\nfunction normalizeStripPrefixCfg(stripPrefix) {\n  if (stripPrefix == null)\n    stripPrefix = true;\n  if (isBoolean(stripPrefix)) {\n    return { scheme: stripPrefix, www: stripPrefix };\n  } else {\n    return {\n      scheme: isBoolean(stripPrefix.scheme) ? stripPrefix.scheme : true,\n      www: isBoolean(stripPrefix.www) ? stripPrefix.www : true\n    };\n  }\n}\nfunction normalizeTruncateCfg(truncate) {\n  if (typeof truncate === \"number\") {\n    return { length: truncate, location: \"end\" };\n  } else {\n    return defaults(truncate || {}, {\n      length: Number.POSITIVE_INFINITY,\n      location: \"end\"\n    });\n  }\n}\nconst AutolinkMixin = {\n  name: \"autolink-mixin\",\n  created() {\n    this.listValueTransformations.attach(\n      this.transformValue.bind(this),\n      \"AutolinkMixin:transformValue\"\n    );\n  },\n  transformValue(value, listValueTransformations) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = Autolinker.link(value);\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor)\n      nextProcessor(template.content, listValueTransformations);\n  }\n};\nconst DateMixin = {\n  name: \"date-mixin\",\n  created() {\n    this.listValueTransformations.attach(\n      this.transformValue.bind(this),\n      \"DateMixin:transformValue\"\n    );\n  },\n  transformValue(value, listValueTransformations) {\n    try {\n      this.listAttributes.originalValue = this.formatDateForInput(value);\n    } catch {\n      console.warn(\"Invalid date format for widget\", this.name);\n      this.listAttributes.originalValue = \"\";\n    }\n    const newValue = value ? new Date(value).toLocaleDateString() : value;\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(newValue, listValueTransformations);\n  },\n  formatDateForInput(date) {\n    const d2 = new Date(date);\n    if (Number.isNaN(d2.getTime())) throw new Error(\"Invalid date\");\n    let month = `${d2.getMonth() + 1}`;\n    let day = `${d2.getDate()}`;\n    const year = d2.getFullYear();\n    if (month.length < 2) month = `0${month}`;\n    if (day.length < 2) day = `0${day}`;\n    return [year, month, day].join(\"-\");\n  }\n};\nconst DateTimeMixin = {\n  name: \"date-time-mixin\",\n  created() {\n    this.listValueTransformations.attach(\n      this.transformValue.bind(this),\n      \"DateTimeMixin:transformValue\"\n    );\n  },\n  transformValue(value, listValueTransformations) {\n    const newValue = value ? new Date(value).toLocaleString() : value;\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(newValue, listValueTransformations);\n  }\n};\nfunction findFirstMatchingConfig(link2, configs) {\n  var i3, config2;\n  var href = link2.attrs[link2.attrIndex(\"href\")][1];\n  for (i3 = 0; i3 < configs.length; ++i3) {\n    config2 = configs[i3];\n    if (typeof config2.matcher === \"function\") {\n      if (config2.matcher(href, config2)) {\n        return config2;\n      } else {\n        continue;\n      }\n    }\n    return config2;\n  }\n}\nfunction applyAttributes(idx, tokens, attributes) {\n  Object.keys(attributes).forEach(function(attr) {\n    var attrIndex2;\n    var value = attributes[attr];\n    if (attr === \"className\") {\n      attr = \"class\";\n    }\n    attrIndex2 = tokens[idx].attrIndex(attr);\n    if (attrIndex2 < 0) {\n      tokens[idx].attrPush([attr, value]);\n    } else {\n      tokens[idx].attrs[attrIndex2][1] = value;\n    }\n  });\n}\nfunction markdownitLinkAttributes(md, configs) {\n  if (!configs) {\n    configs = [];\n  } else {\n    configs = Array.isArray(configs) ? configs : [configs];\n  }\n  Object.freeze(configs);\n  var defaultRender = md.renderer.rules.link_open || this.defaultRender;\n  md.renderer.rules.link_open = function(tokens, idx, options, env, self2) {\n    var config2 = findFirstMatchingConfig(tokens[idx], configs);\n    var attributes = config2 && config2.attrs;\n    if (attributes) {\n      applyAttributes(idx, tokens, attributes);\n    }\n    return defaultRender(tokens, idx, options, env, self2);\n  };\n}\nmarkdownitLinkAttributes.defaultRender = function(tokens, idx, options, env, self2) {\n  return self2.renderToken(tokens, idx, options);\n};\nvar markdownItLinkAttributes = markdownitLinkAttributes;\nconst mila = /* @__PURE__ */ getDefaultExportFromCjs(markdownItLinkAttributes);\nconst MarkdownMixin = {\n  name: \"markdown-mixin\",\n  created() {\n    this.listValueTransformations.attach(\n      this.transformValue.bind(this),\n      \"MarkdownMixin:transformValue\"\n    );\n  },\n  transformValue(value, listValueTransformations) {\n    let newValue = \"\";\n    if (value) {\n      const md = MarkdownIt({\n        breaks: true,\n        html: false,\n        linkify: true\n      });\n      md.use(mila, {\n        attrs: {\n          target: \"_blank\",\n          rel: \"noopener\"\n        }\n      });\n      const html = md.render(value);\n      newValue = o$1(html);\n    }\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(newValue, listValueTransformations);\n  }\n};\nconst MultilineMixin = {\n  name: \"multiline-mixin\",\n  created() {\n    this.listValueTransformations.attach(\n      this.transformValue.bind(this),\n      \"MultilineMixin:transformValue\"\n    );\n  },\n  transformValue(value, listValueTransformations) {\n    const newValue = value ? o$1(value.replace(/\\n/g, \"<br/>\")) : value;\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(newValue, listValueTransformations);\n  }\n};\nconst OembedMixin = {\n  name: \"oembed-mixin\",\n  initialState: {\n    existingOembed: null\n  },\n  created() {\n    this.listValueTransformations.attach(\n      this.transformValue.bind(this),\n      \"OembedMixin:transformValue\"\n    );\n  },\n  async transformValue(value, listValueTransformations) {\n    if (!value) return;\n    if (this.existingOembed == null) {\n      const response = await fetch(this.value);\n      this.existingOembed = await response.json();\n    }\n    const newValue = o$1(this.existingOembed.html);\n    const nextProcessor = listValueTransformations.shift();\n    if (nextProcessor) nextProcessor(newValue, listValueTransformations);\n  }\n};\nconst valueTransformationDirectory = {\n  date: DateMixin,\n  datetime: DateTimeMixin,\n  multiline: MultilineMixin,\n  markdown: MarkdownMixin,\n  oembed: OembedMixin,\n  autolink: AutolinkMixin\n};\nconst valueTransformationKeys = Object.keys(valueTransformationDirectory);\nconst attributeKeys = Object.keys(attributeDirectory);\nconst templateAdditionKeys = Object.keys(templateAdditionDirectory);\nconst callbackKeys = Object.keys(callbackDirectory);\nconst newWidgetFactory = (tagName) => {\n  let widgetMixins;\n  try {\n    widgetMixins = getWidgetMixins(tagName);\n  } catch (e2) {\n    console.error(e2);\n    return;\n  }\n  const newWidget = {\n    // compose widget\n    name: tagName,\n    use: [\n      ...widgetMixins.mixins,\n      BaseWidgetMixin\n      // at the end so created() is called first\n    ],\n    get template() {\n      return widgetMixins.templateMixin.template;\n    }\n  };\n  Sib.register(newWidget);\n};\nfunction getWidgetMixins(tagName) {\n  const valueTransformations = [];\n  const attributes = [];\n  const templateAdditions = [];\n  const callbacks = [];\n  let template = null;\n  const mixinNames = tagName.split(\"-\").filter((t2) => t2 !== \"solid\");\n  let widgetType = defaultTemplates;\n  if (mixinNames.includes(\"display\")) widgetType = displayTemplates;\n  else if (mixinNames.includes(\"form\")) widgetType = formTemplates;\n  else if (mixinNames.includes(\"set\")) widgetType = setTemplates;\n  else if (mixinNames.includes(\"group\")) widgetType = groupTemplates;\n  const templateKeys = Object.keys(widgetType);\n  for (const mixin of mixinNames) {\n    if (valueTransformationKeys.includes(mixin)) {\n      valueTransformations.push(valueTransformationDirectory[mixin]);\n    }\n    if (attributeKeys.includes(mixin)) {\n      attributes.push(attributeDirectory[mixin]);\n    }\n    if (templateAdditionKeys.includes(mixin)) {\n      templateAdditions.push(templateAdditionDirectory[mixin]);\n    }\n    if (callbackKeys.includes(mixin)) {\n      callbacks.push(callbackDirectory[mixin]);\n    }\n    if (templateKeys.includes(mixin)) {\n      template = widgetType[mixin];\n    }\n  }\n  if (!template) throw `No template found for widget \"${tagName}\"`;\n  return {\n    templateMixin: template,\n    mixins: [\n      ...valueTransformations,\n      ...attributes,\n      ...templateAdditions,\n      ...template.dependencies || [],\n      ...callbacks\n    ]\n  };\n}\nnewWidgetFactory(\"solid-form-dropdown\");\nnewWidgetFactory(\"solid-form-multicheckbox\");\nnewWidgetFactory(\"solid-form-file-label\");\nnewWidgetFactory(\"solid-action\");\nnewWidgetFactory(\"solid-group-default\");\nvar WidgetType = /* @__PURE__ */ ((WidgetType2) => {\n  WidgetType2[\"CUSTOM\"] = \"custom\";\n  WidgetType2[\"USER\"] = \"user\";\n  WidgetType2[\"NATIVE\"] = \"native\";\n  return WidgetType2;\n})(WidgetType || {});\nconst WidgetMixin = {\n  name: \"widget-mixin\",\n  use: [],\n  attributes: {\n    fields: {\n      type: String,\n      default: void 0\n    }\n  },\n  initialState: {\n    nameWidgets: null,\n    _div: null\n  },\n  created() {\n    this.nameWidgets = [];\n  },\n  attached() {\n    if (!this.dataSrc && !this.resource && this.noRender === null)\n      this.populate();\n  },\n  get parentElement() {\n    return \"div\";\n  },\n  get div() {\n    if (this._div) return this._div;\n    this._div = document.createElement(this.parentElement);\n    this.element.appendChild(this._div);\n    return this._div;\n  },\n  set div(value) {\n    this._div = value;\n  },\n  get widgets() {\n    return this.nameWidgets.map(\n      (name) => this.element.querySelector(`[name=\"${name}\"]`)\n    );\n  },\n  /**\n   * Return field list of the component\n   */\n  async getFields() {\n    var _a3;\n    const attr = this.fields;\n    if (attr === \"\") return [];\n    if (attr) return parseFieldsString(attr);\n    let resource = this.resource;\n    if ((_a3 = resource == null ? void 0 : resource.isContainer) == null ? void 0 : _a3.call(resource)) {\n      for (const res of resource[\"ldp:contains\"]) {\n        resource = res;\n        break;\n      }\n    } else if (resource && this.arrayField && this.predicateName) {\n      for (const res of resource[this.predicateName]) {\n        resource = res;\n        break;\n      }\n    }\n    if (!this.dataSrc)\n      console.error(new Error('You must provide a \"fields\" attribute'));\n    if (!resource) return [];\n    const fields = [];\n    for (const prop of resource.properties) {\n      if (!prop.startsWith(\"@\") && !(prop === \"permissions\")) {\n        if (!this.isAlias(prop) && await resource[prop]) fields.push(prop);\n        else if (this.isAlias(prop)) fields.push(prop);\n      }\n    }\n    return fields;\n  },\n  /**\n   * return attribute if \"field\" is an action\n   * @param field - string\n   */\n  getAction(field) {\n    const action = this.element.getAttribute(`action-${field}`);\n    return action;\n  },\n  /**\n   * return true if \"field\" is editable\n   * @param field - string\n   */\n  editable(field) {\n    return this.element.hasAttribute(`editable-${field}`);\n  },\n  /**\n   * Return regexp to check if \"field\" is a set\n   * @param field - string\n   */\n  getSetRegexp(field) {\n    return new RegExp(`(^|\\\\,|\\\\(|\\\\s)\\\\s*${field}\\\\s*\\\\(`, \"g\");\n  },\n  /**\n   * Return fields contained in set \"field\"\n   * @param field - string\n   */\n  getSet(field) {\n    const setString = this.fields.match(this.getSetRegexp(field));\n    if (!setString) return [];\n    const firstSetBracket = this.fields.indexOf(setString[0]) + setString[0].length - 1;\n    const lastSetBracket = findClosingBracketMatchIndex(\n      this.fields,\n      firstSetBracket\n    );\n    const set2 = this.fields.substring(firstSetBracket + 1, lastSetBracket);\n    return parseFieldsString(set2);\n  },\n  /**\n   * Return true if \"field\" is a set\n   * @param field - string\n   */\n  isSet(field) {\n    if (!this.fields) return false;\n    const foundSets = this.fields.match(this.getSetRegexp(field));\n    return foundSets ? foundSets.length > 0 : false;\n  },\n  /**\n   * Return true if \"field\" is a string\n   * @param field - string\n   */\n  isString(field) {\n    return field.startsWith(\"'\") || field.startsWith('\"');\n  },\n  /**\n   * Return true if \"field\" is an alias (contains \" as \")\n   * @param field - string\n   */\n  isAlias(field) {\n    const aliasRegex = /^[\\w@.]+\\s+as\\s+[\\w@.]+$/;\n    return aliasRegex.test(field);\n  },\n  /**\n   * Return the value of \"resource\" for predicate \"field\"\n   * @param field - string\n   * @param resource - Resource\n   */\n  async fetchValue(field, resource) {\n    var _a3, _b;\n    if (resource && !((_a3 = resource.isContainer) == null ? void 0 : _a3.call(resource))) {\n      let fieldValue = await resource[field];\n      if (fieldValue === null || fieldValue === void 0 || fieldValue === \"\") {\n        const expandedPredicate = sibStore.getExpandedPredicate(\n          field,\n          this.context\n        );\n        fieldValue = await resource[expandedPredicate];\n      }\n      if (fieldValue === null || fieldValue === void 0 || fieldValue === \"\")\n        return void 0;\n      if (Array.isArray(fieldValue) && !fieldValue[\"ldp:contains\"]) {\n        return JSON.stringify(fieldValue);\n      }\n      if (typeof fieldValue === \"object\" && fieldValue[\"@id\"] && Object.keys(fieldValue).length === 1) {\n        return JSON.stringify([fieldValue]);\n      }\n    }\n    return resource && !((_b = resource.isContainer) == null ? void 0 : _b.call(resource)) ? await resource[field] : void 0;\n  },\n  /**\n   * Return the value of the field\n   * @param field - field\n   */\n  async getValue(field, resource) {\n    const escapedField = this.getEscapedField(field);\n    if (this.getAction(escapedField)) {\n      return this.getAction(escapedField);\n    }\n    if (this.element.hasAttribute(`value-${field}`)) {\n      return this.element.getAttribute(`value-${field}`);\n    }\n    if (this.isAlias(field)) {\n      const alias = field.split(\" as \");\n      return await this.fetchValue(alias[0], resource);\n    }\n    const resourceValue = await this.fetchValue(field, resource);\n    if (resourceValue === void 0 || resourceValue === \"\" || resourceValue === null)\n      return this.element.hasAttribute(`default-${field}`) ? this.element.getAttribute(`default-${field}`) : \"\";\n    return resourceValue;\n  },\n  empty() {\n  },\n  /**\n   * Return a widget from a tagName, and create it if necessary\n   * @param tagName - string\n   */\n  widgetFromTagName(tagName) {\n    let type = tagName.startsWith(\"solid\") ? WidgetType.CUSTOM : WidgetType.USER;\n    if (!customElements.get(tagName)) {\n      if (tagName.startsWith(\"solid\"))\n        newWidgetFactory(tagName);\n      else type = WidgetType.NATIVE;\n    }\n    return { tagName, type };\n  },\n  /**\n   * Return widget for field \"field\"\n   * @param field - string\n   * @param isSet - boolean\n   */\n  getWidget(field, isSet2 = false) {\n    if (this.isAlias(field)) field = field.split(\" as \")[1];\n    const widget = this.element.getAttribute(`widget-${field}`);\n    if (widget) return this.widgetFromTagName(widget);\n    if (this.getAction(field)) return this.widgetFromTagName(\"solid-action\");\n    return !isSet2 ? this.widgetFromTagName(this.defaultWidget) : this.widgetFromTagName(this.defaultSetWidget);\n  },\n  /**\n   * Return multiple widget if \"field\" is a multiple, false if it's not\n   * @param field - string\n   */\n  multiple(field) {\n    const attribute2 = `multiple-${field}`;\n    if (!this.element.hasAttribute(attribute2)) return null;\n    const widget = this.element.getAttribute(attribute2) || this.defaultMultipleWidget;\n    return this.widgetFromTagName(widget);\n  },\n  /**\n   * If attribute \"lookForAttr\" is set on element, add \"attrKey\" to the \"attributes\" list\n   * @param lookForAttr - string\n   * @param setAttrKey - string\n   * @param attributes - object\n   */\n  addToAttributes(lookForAttr, setAttrKey, attributes) {\n    const attribute2 = this.element.getAttribute(lookForAttr);\n    if (attribute2 == null) return;\n    attributes[setAttrKey] = attribute2;\n  },\n  /**\n   * Return all the attributes of widget \"field\"\n   * @param field - string\n   * @param resource - Resource\n   */\n  widgetAttributes(field, resource) {\n    const attrs = { name: field };\n    if (this.isAlias(field)) field = field.split(\" as \")[1];\n    const escapedField = this.getEscapedField(field);\n    const multipleAttributes = [\n      \"fields\",\n      \"label\",\n      \"widget\",\n      \"add-label\",\n      \"remove-label\",\n      \"next\",\n      \"empty-widget\",\n      \"add-class\",\n      \"remove-class\"\n    ];\n    for (const attr of multipleAttributes)\n      this.addToAttributes(`multiple-${escapedField}-${attr}`, attr, attrs);\n    const defaultAttributes = [\n      \"range\",\n      \"enum\",\n      \"label\",\n      \"placeholder\",\n      \"class\",\n      /* 'widget', */\n      \"required\",\n      \"editable\",\n      \"autocomplete\",\n      \"upload-url\",\n      \"option-label\",\n      \"option-value\",\n      \"order-by\",\n      // deprecated. Remove in 0.15\n      \"each-label\",\n      \"order-asc\",\n      \"order-desc\",\n      \"min\",\n      \"max\",\n      \"pattern\",\n      \"title\",\n      \"start-value\",\n      \"end-value\",\n      \"alt\",\n      \"step\",\n      \"maxlength\",\n      \"minlength\",\n      \"search-text\",\n      \"search-placeholder\",\n      \"link-text\",\n      \"target-src\",\n      \"data-label\"\n    ];\n    for (const attr of defaultAttributes)\n      this.addToAttributes(`${attr}-${escapedField}`, attr, attrs);\n    const addableAttributes = Array.from(this.element.attributes).filter((a2) => a2.name.startsWith(`addable-${escapedField}`));\n    for (const attr of addableAttributes)\n      this.addToAttributes(\n        attr.name,\n        attr.name.replace(`addable-${escapedField}`, \"addable\"),\n        attrs\n      );\n    const resourceId = (resource == null ? void 0 : resource[\"@id\"]) ?? null;\n    if (this.multiple(escapedField))\n      attrs.widget = this.getWidget(escapedField).tagName;\n    if (this.getAction(escapedField) && resourceId)\n      attrs.src = this.element.getAttribute(`src-${escapedField}`) || resourceId;\n    if (this.editable(escapedField) && resourceId)\n      attrs[\"value-id\"] = resourceId;\n    return attrs;\n  },\n  /**\n   * Creates and return a widget for field + add it to the widget list\n   * @param field - string\n   */\n  async createWidgetTemplate(field, resource = null, transformAttributes = false) {\n    if (this.isString(field)) return this.createString(field);\n    if (this.isSet(field)) return await this.createSet(field);\n    const currentResource = resource || this.resource;\n    let attributes = this.widgetAttributes(field, currentResource);\n    const escapedField = this.getEscapedField(field);\n    const widgetMeta = this.multiple(escapedField) || this.getWidget(escapedField);\n    let tagName = widgetMeta.tagName;\n    let widgetTemplate = x``;\n    const value = await this.getValue(field, currentResource);\n    if (widgetMeta.type === WidgetType.NATIVE) {\n      widgetTemplate = preHTML`<${tagName} name=\"${o$2(attributes.name)}\" class=\"${o$2(attributes.class)}\">${value}</${tagName}>`;\n    } else {\n      if ((value === null || value === \"\") && this.element.hasAttribute(`default-widget-${field}`)) {\n        tagName = this.element.getAttribute(`default-widget-${field}`);\n      }\n      if (value === null || value === void 0) attributes.value = \"\";\n      if (widgetMeta.type === WidgetType.USER) {\n        if (value[\"@id\"]) {\n          attributes[\"data-src\"] = value[\"@id\"];\n        } else {\n          try {\n            const isUrl = new URL(value);\n            if (isUrl) attributes[\"data-src\"] = value;\n          } catch {\n          }\n          attributes.value = value;\n        }\n      } else {\n        attributes.value = value;\n      }\n      if (value == null ? void 0 : value[\"@id\"]) attributes[\"auto-subscribe\"] = value[\"@id\"];\n      if (transformAttributes)\n        attributes = await this.transformAttributes(\n          attributes,\n          currentResource\n        );\n      widgetTemplate = preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n    }\n    this.nameWidgets.push(field);\n    return widgetTemplate;\n  },\n  defineAttribute(widget, attribute2, value) {\n    if (widget.getAttribute(attribute2) !== value) {\n      widget.setAttribute(attribute2, value);\n    }\n  },\n  /**\n   * Create a set and add fields to it\n   * @param field - string\n   */\n  async createSet(field) {\n    const setWidget = this.getWidget(field, true);\n    const attrs = { name: field };\n    const setAttributes = [\"class\", \"label\"];\n    for (const attr of setAttributes)\n      this.addToAttributes(`${attr}-${field}`, attr, attrs);\n    let widget = this.element.querySelector(\n      `${setWidget.tagName}[name=\"${field}\"]`\n    );\n    let initializing = false;\n    if (!widget) {\n      widget = document.createElement(setWidget.tagName);\n      initializing = true;\n    }\n    for (const name of Object.keys(attrs)) {\n      this.defineAttribute(widget, name, attrs[name], setWidget.type);\n    }\n    if (widget.component && initializing) widget.component.render();\n    const setFields = this.getSet(field);\n    if (this.element.hasAttribute(`empty-${field}`)) {\n      let hasOnlyEmpty = true;\n      for (const field2 of setFields) {\n        const value = await this.getValue(field2, this.resource);\n        if (value !== \"\") {\n          hasOnlyEmpty = false;\n          break;\n        }\n      }\n      if (hasOnlyEmpty) {\n        const attributes = this.widgetAttributes(field, this.resource);\n        const tagName = this.element.getAttribute(`empty-${field}`);\n        const valueSet = this.element.getAttribute(`empty-${field}-value`);\n        if (valueSet) attributes.value = valueSet;\n        return preHTML`<${tagName} ...=${spread(attributes)}></${tagName}>`;\n      }\n    }\n    if (setFields.length === 0) {\n      console.warn(\n        `Set with name ${field} has not been generated due to being empty`\n      );\n    }\n    const widgetsTemplate = await Promise.all(\n      setFields.map((field2) => this.createWidgetTemplate(field2))\n    );\n    const template = x`${widgetsTemplate}`;\n    B(template, widget.querySelector(\"[data-content]\") || widget);\n    return widget;\n  },\n  createString(value) {\n    return x`<span>${value.slice(1, -1).replace(/\\\\(['\"])/g, \"$1\")}</span>`;\n  },\n  /**\n   * Returns field name without starting \"@\"\n   * @param field\n   */\n  getEscapedField(field) {\n    return field.startsWith(\"@\") ? field.slice(1, field.length) : field;\n  }\n};\nconst SolidDisplay = {\n  name: \"solid-display\",\n  use: [\n    WidgetMixin,\n    ListMixin,\n    StoreMixin,\n    PaginateMixin,\n    GrouperMixin,\n    CounterMixin,\n    HighlighterMixin,\n    FilterMixin,\n    SorterMixin,\n    RequiredMixin,\n    FederationMixin,\n    NextMixin\n  ],\n  attributes: {\n    defaultWidget: {\n      type: String,\n      default: \"solid-display-value\"\n    }\n  },\n  initialState: {\n    activeSubscription: null,\n    removeActiveSubscription: null,\n    resources: []\n  },\n  created() {\n    const route = document.querySelector(\"solid-route[active]\");\n    if (!route) return;\n    setTimeout(() => {\n      if (route.resourceId === this.resourceId) this.addActiveCallback();\n    });\n  },\n  detached() {\n    if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n    if (this.removeActiveSubscription)\n      PubSub.unsubscribe(this.removeActiveSubscription);\n  },\n  // Update subscription when id changes\n  updateNavigateSubscription() {\n    if (this.activeSubscription) PubSub.unsubscribe(this.activeSubscription);\n    if (this.resourceId) {\n      this.activeSubscription = PubSub.subscribe(\n        `enterRoute.${this.resourceId}`,\n        this.addActiveCallback.bind(this)\n      );\n    }\n  },\n  addActiveCallback() {\n    this.element.setAttribute(\"active\", \"\");\n    this.removeActiveSubscription = PubSub.subscribe(\n      \"leaveRoute\",\n      this.removeActiveCallback.bind(this)\n    );\n  },\n  removeActiveCallback() {\n    this.element.removeAttribute(\"active\");\n    PubSub.unsubscribe(this.removeActiveSubscription);\n  },\n  get childTag() {\n    return this.element.dataset.child || this.element.tagName;\n  },\n  get defaultMultipleWidget() {\n    return \"solid-multiple\";\n  },\n  get defaultSetWidget() {\n    return \"solid-set-default\";\n  },\n  // Here \"even.target\" points to the content of the widgets of the children of solid-display\n  dispatchSelect(event, resourceId) {\n    const linkTarget = (event == null ? void 0 : event.target).closest(\"a\");\n    if (linkTarget == null ? void 0 : linkTarget.hasAttribute(\"href\")) return;\n    const resource = { \"@id\": resourceId };\n    this.element.dispatchEvent(\n      new CustomEvent(\"resourceSelect\", { detail: { resource } })\n    );\n    this.goToNext(resource);\n  },\n  enterKeydownAction(event, resourceId) {\n    if (event.keyCode === 13) {\n      const resource = { \"@id\": resourceId };\n      this.goToNext(resource);\n    }\n  },\n  /**\n   * Returns template of a child element (resource)\n   * @param resourceId\n   * @param attributes\n   */\n  getChildTemplate(resourceId, attributes) {\n    const template = x`\n      <solid-display\n        data-src=${resourceId}\n        @click=${(event) => this.dispatchSelect(event, resourceId)}\n        @keydown=${(event) => this.enterKeydownAction(event, resourceId)}\n        fields=${o$2(this.fields)}\n        ...=${spread(attributes)}\n      ></solid-display>\n    `;\n    return template;\n  },\n  /**\n   * Creates and render the content of a single element (resource)\n   * @param parent\n   */\n  async appendSingleElt(parent) {\n    const fields = await this.getFields();\n    const widgetTemplates = await Promise.all(\n      // generate all widget templates\n      fields.map((field) => this.createWidgetTemplate(field))\n    );\n    B(x`${widgetTemplates}`, parent);\n  },\n  /**\n   * @override listMixin method to use litHtml\n   *\n   * Render resources from a container\n   * @param resources\n   * @param listPostProcessors\n   * @param div\n   * @param context\n   */\n  renderDOM: trackRenderAsync(async function(resources, listPostProcessors, div, context2) {\n    const attributes = this.getChildAttributes();\n    const template = x`${resources.map((r3) => r3 ? this.getChildTemplate(r3[\"@id\"], attributes) : null)}`;\n    B(template, div);\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  }, \"SolidDisplay:renderDom\"),\n  /**\n   * Get attributes to dispatch to children from current element\n   */\n  getChildAttributes() {\n    const attributes = {};\n    for (const attr of this.element.attributes) {\n      if (attr.name.startsWith(\"value-\") || attr.name.startsWith(\"label-\") || attr.name.startsWith(\"placeholder-\") || attr.name.startsWith(\"widget-\") || attr.name.startsWith(\"class-\") || attr.name.startsWith(\"multiple-\") || attr.name.startsWith(\"editable-\") || attr.name.startsWith(\"action-\") || attr.name.startsWith(\"default-\") || attr.name.startsWith(\"link-text-\") || attr.name.startsWith(\"target-src-\") || attr.name.startsWith(\"data-label-\") || attr.name === \"extra-context\")\n        attributes[attr.name] = attr.value;\n      if (attr.name.startsWith(\"child-\"))\n        attributes[attr.name.replace(/^child-/, \"\")] = attr.value;\n      if (attr.name === \"next\") {\n        attributes.role = \"button\";\n        attributes.tabindex = \"0\";\n      }\n    }\n    return attributes;\n  }\n};\nSib.register(SolidDisplay);\nconst SolidFormSearch = {\n  name: \"solid-form-search\",\n  use: [WidgetMixin, AttributeBinderMixin, ContextMixin],\n  debounceTimeout: void 0,\n  attributes: {\n    defaultWidget: {\n      type: String,\n      default: \"solid-form-label-text\"\n    },\n    submitButton: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (this.noRender == null && newValue !== oldValue) this.populate();\n      }\n    },\n    submitWidget: {\n      type: String,\n      default: void 0\n    },\n    classSubmitButton: {\n      type: String,\n      default: void 0\n    },\n    noRender: {\n      type: String,\n      default: null,\n      callback: function(value) {\n        if (value === null) this.populate();\n      }\n    },\n    debounce: {\n      type: Number,\n      default: 0\n      // Avoiding blink effect with static values\n    }\n  },\n  initialState: {\n    error: \"\"\n  },\n  created() {\n    if (this.element.closest(\"[no-render]\")) this.noRender = \"\";\n    this.autoRangeValues = {};\n    this.rangeId = uniqID();\n    this.attachedElements = /* @__PURE__ */ new Set();\n  },\n  get defaultMultipleWidget() {\n    return \"solid-multiple-form\";\n  },\n  get defaultSetWidget() {\n    return \"solid-set-default\";\n  },\n  get value() {\n    const values = {};\n    for (const widget of this.widgets) {\n      if (widget == null) continue;\n      const name = (widget.component || widget).name;\n      if (name == null) continue;\n      let value = widget.component ? widget.component.getValue() : widget.value;\n      try {\n        value = JSON.parse(value);\n      } catch {\n      }\n      value = {\n        type: widget.component.type,\n        list: !!widget.component.multiple,\n        value\n      };\n      values[name] = value;\n    }\n    return values;\n  },\n  getWidget(field, isSet2 = false) {\n    let tagName = \"\";\n    if (this.element.hasAttribute(`auto-range-${field}`) && !this.element.hasAttribute(`range-${field}`)) {\n      const idField = `${this.rangeId}_${field}`;\n      this.element.setAttribute(`range-${field}`, `store://local.${idField}`);\n      this.populate();\n    }\n    const widgetAttribute = this.element.getAttribute(`widget-${field}`);\n    if (!widgetAttribute && (this.element.hasAttribute(`range-${field}`) || this.element.hasAttribute(`enum-${field}`))) {\n      tagName = \"solid-form-dropdown\";\n    } else {\n      tagName = widgetAttribute || (!isSet2 ? this.defaultWidget : this.defaultSetWidget);\n    }\n    if (!customElements.get(tagName)) {\n      if (tagName.startsWith(\"solid\")) newWidgetFactory(tagName);\n    }\n    return this.widgetFromTagName(tagName);\n  },\n  async attach(elm) {\n    if (this.attachedElements.has(elm)) return;\n    this.attachedElements.add(elm);\n    await this.updateAutoRanges();\n  },\n  async detach(elm) {\n    if (!this.attachedElements.has(elm)) return;\n    this.attachedElements.delete(elm);\n    await this.updateAutoRanges();\n  },\n  async updateAutoRanges() {\n    for (const attr of this.element.attributes) {\n      if (!attr.name.startsWith(\"auto-range-\")) continue;\n      const fieldName = attr.value !== \"\" ? attr.value : attr.name.replace(\"auto-range-\", \"\");\n      const autoRangeValues = /* @__PURE__ */ new Set();\n      for (const elm of this.attachedElements) {\n        for (const value of await elm.getValuesOfField(fieldName)) {\n          autoRangeValues.add(value);\n        }\n      }\n      const idField = `${this.rangeId}_${fieldName}`;\n      const id2 = `store://local.${idField}`;\n      const ldpContains = Array.from(autoRangeValues).map((id22) => ({\n        \"@id\": id22\n      }));\n      const data = {\n        \"@type\": \"ldp:Container\",\n        \"@context\": this.context,\n        \"ldp:contains\": ldpContains\n      };\n      sibStore.setLocalData(data, id2);\n    }\n  },\n  change(resource, eventOptions) {\n    if (!resource) return;\n    this.element.dispatchEvent(\n      new CustomEvent(\"formChange\", {\n        bubbles: true,\n        detail: { resource }\n      })\n    );\n    if (!eventOptions.value) return;\n    this.element.dispatchEvent(\n      new CustomEvent(\"filterChange\", {\n        bubbles: true,\n        detail: {\n          value: eventOptions.value,\n          inputLabel: eventOptions.inputLabel,\n          type: eventOptions.type\n        }\n      })\n    );\n  },\n  inputChange(input) {\n    var _a3, _b;\n    const parentElementLabel = (_a3 = input == null ? void 0 : input.parentElement) == null ? void 0 : _a3.getAttribute(\"label\");\n    try {\n      const selectedLabel = (_b = input.selectedOptions[0].textContent) == null ? void 0 : _b.trim();\n      this.change(this.value, {\n        value: selectedLabel,\n        inputLabel: parentElementLabel,\n        type: \"select\"\n      });\n    } catch {\n      this.change(this.value, {\n        value: input.value,\n        inputLabel: parentElementLabel,\n        type: \"input\"\n      });\n    }\n  },\n  getSubmitTemplate() {\n    return x`\n      <div class=${o$2(this.classSubmitButton)}>\n        ${this.submitWidget === \"button\" ? x`<button type=\"submit\">${this.submitButton || \"\"}</button>` : x`<input type=\"submit\" value=${o$2(this.submitButton || void 0)}>`}\n      </div>\n    `;\n  },\n  empty() {\n  },\n  debounceInput(input) {\n    clearTimeout(this.debounceTimeout);\n    this.debounceTimeout = setTimeout(() => {\n      this.debounceTimeout = void 0;\n      this.inputChange(input);\n    }, this.debounce);\n  },\n  populate: trackRenderAsync(async function() {\n    await this.replaceAttributesData();\n    if (this.submitButton == null) {\n      this.element.addEventListener(\"input\", (e2) => {\n        this.debounceInput(e2.target);\n      });\n    }\n    this.element.addEventListener(\"submit\", (e2) => {\n      e2.preventDefault();\n      this.inputChange(e2.target);\n    });\n    const fields = await this.getFields();\n    const widgetTemplates = await Promise.all(\n      fields.map((field) => this.createWidgetTemplate(field))\n    );\n    const template = x`\n        <form>\n          ${widgetTemplates}\n          ${this.submitButton == null ? \"\" : this.getSubmitTemplate()}\n        </form>\n      `;\n    B(template, this.element);\n  }, \"SolidFormSearch:populate\")\n};\nSib.register(SolidFormSearch);\nconst SolidForm = {\n  name: \"solid-form\",\n  use: [WidgetMixin, StoreMixin, NextMixin, ValidationMixin],\n  attributes: {\n    autosave: {\n      type: Boolean,\n      default: null\n    },\n    classSubmitButton: {\n      type: String,\n      default: void 0\n    },\n    defaultWidget: {\n      type: String,\n      default: \"solid-form-label-text\"\n    },\n    naked: {\n      type: Boolean,\n      default: null\n    },\n    partial: {\n      type: Boolean,\n      default: null\n    },\n    submitButton: {\n      type: String,\n      default: void 0,\n      callback: function(newValue, oldValue) {\n        if (this.noRender == null && newValue !== oldValue) this.populate();\n      }\n    },\n    submitWidget: {\n      type: String,\n      default: null\n    }\n  },\n  initialState: {\n    error: \"\"\n  },\n  get defaultMultipleWidget() {\n    return \"solid-multiple-form\";\n  },\n  get defaultSetWidget() {\n    return \"solid-set-default\";\n  },\n  get value() {\n    var _a3, _b;\n    const values = {};\n    for (const widget of this.widgets) {\n      const name = (widget.component || widget).name;\n      if (name == null) continue;\n      let value = widget.component ? widget.component.getValue() : widget.value;\n      try {\n        value = JSON.parse(value);\n      } catch {\n      }\n      setDeepProperty(values, name.split(\".\"), value);\n    }\n    if (this.resource && !((_b = (_a3 = this.resource).isContainer) == null ? void 0 : _b.call(_a3)))\n      values[\"@id\"] = this.resourceId;\n    return values;\n  },\n  get isNaked() {\n    return this.element.hasAttribute(\"naked\");\n  },\n  get isSavingAutomatically() {\n    return this.autosave !== null;\n  },\n  isCreationForm(formValue) {\n    return !(\"@id\" in formValue);\n  },\n  async getFormValue() {\n    var _a3, _b;\n    const value = this.value;\n    if (this.resource && !((_b = (_a3 = this.resource).isContainer) == null ? void 0 : _b.call(_a3))) {\n      for (const predicate of Object.keys(this.value)) {\n        let object = await this.resource[predicate];\n        if (!object) {\n          object = await this.resource[store.getExpandedPredicate(predicate, this.context)];\n        }\n        if ((object == null ? void 0 : object[\"@id\"]) && !value[predicate][\"@id\"])\n          value[predicate][\"@id\"] = object[\"@id\"];\n        if (object && !object[\"@id\"] && Array.isArray(object) && value[predicate].length === 0 && object.length > 0) {\n          value[predicate] = object;\n        }\n      }\n    }\n    return transformArrayToContainer(value);\n  },\n  getWidget(field, isSet2 = false) {\n    let tagName = \"\";\n    const widgetAttribute = this.element.getAttribute(`widget-${field}`);\n    if (!widgetAttribute && this.element.hasAttribute(`upload-url-${field}`)) {\n      tagName = \"solid-form-file\";\n    } else if (!widgetAttribute && (this.element.hasAttribute(`range-${field}`) || this.element.hasAttribute(`enum-${field}`))) {\n      tagName = \"solid-form-dropdown\";\n    } else {\n      tagName = widgetAttribute || (!isSet2 ? this.defaultWidget : this.defaultSetWidget);\n    }\n    return this.widgetFromTagName(tagName);\n  },\n  change(resource) {\n    this.element.dispatchEvent(\n      new CustomEvent(\"formChange\", {\n        bubbles: true,\n        detail: { resource }\n      })\n    );\n  },\n  async save() {\n    this.toggleLoaderHidden(false);\n    this.hideError();\n    const resource = await this.getFormValue();\n    resource[\"@context\"] = this.context;\n    let saved;\n    try {\n      if (this.partial == null) {\n        saved = resource[\"@id\"] ? await store.put(resource, this.resourceId) : await store.post(resource, this.resourceId);\n      } else {\n        saved = await store.patch(resource, this.resourceId);\n      }\n    } catch (e2) {\n      this.toggleLoaderHidden(true);\n      if (e2 == null ? void 0 : e2.json) {\n        e2.json().then((error2) => this.showError(error2));\n        throw e2;\n      }\n    }\n    this.element.dispatchEvent(\n      new CustomEvent(\"save\", {\n        bubbles: true,\n        detail: {\n          resource,\n          id: saved || null\n        }\n      })\n    );\n    this.toggleLoaderHidden(true);\n    return saved;\n  },\n  async submitForm() {\n    let id2;\n    try {\n      id2 = await this.save() || this.getFormValue()[\"@id\"];\n    } catch (_e) {\n      return;\n    }\n    this.reset();\n    this.goToNext({ \"@id\": id2 });\n  },\n  async onInput() {\n    const formValue = await this.getFormValue();\n    this.change(formValue);\n  },\n  async onChange() {\n    const formValue = await this.getFormValue();\n    if (!this.isCreationForm(formValue) && this.isSavingAutomatically)\n      this.submitForm();\n  },\n  displayErrorMessage(errors2, errorFullName = \"\") {\n    for (const member of errors2) {\n      const errorNextName = Object.values(member)[0];\n      const subErrorName = errorFullName === \"\" ? errorNextName : `${errorFullName}.${errorNextName}`;\n      let errorFieldName = \"\";\n      if (errorFullName) errorFieldName = `${errorFullName}.${errorNextName}`;\n      else errorFieldName = errorNextName;\n      if (errorFieldName) {\n        const formField = this.element.querySelector(\n          `[name=\"${errorFieldName}\"]`\n        );\n        if (formField) {\n          formField.classList.add(\"error\");\n          const errorParagraph = document.createElement(\"p\");\n          if (Array.isArray(Object.values(member)[1]) === true) {\n            for (const error2 of Object.values(member)[1]) {\n              const errorText = document.createElement(\"p\");\n              errorText.textContent = error2;\n              errorParagraph.appendChild(errorText);\n            }\n          } else if (typeof Object.values(member)[1] === \"object\") {\n            for (const value of Object.values(Object.values(member)[1])) {\n              if (Array.isArray(value)) {\n                for (const error2 of value) {\n                  const errorText = document.createElement(\"p\");\n                  errorText.textContent = error2;\n                  errorParagraph.appendChild(errorText);\n                }\n              } else if (typeof value === \"string\") {\n                const errorText = document.createElement(\"p\");\n                errorText.textContent = value;\n                errorParagraph.appendChild(errorText);\n              }\n            }\n          } else {\n            errorParagraph.textContent = Object.values(member)[1];\n          }\n          errorParagraph.classList.add(\"error-message\");\n          formField.appendChild(errorParagraph);\n        }\n      }\n      if (!Array.isArray(Object.values(member)[1]) === true) {\n        const objectErrors = Object.values(member)[1];\n        const subErrors = Object.entries(objectErrors);\n        this.displayErrorMessage(subErrors, subErrorName);\n      }\n    }\n  },\n  empty() {\n  },\n  showError(e2) {\n    const errors2 = Object.entries(e2).filter(\n      (field) => !field[0].startsWith(\"@context\")\n    );\n    this.displayErrorMessage(errors2);\n    const errorTemplate = x`<p>${this.t(\"solid-form.validation-error\")}</p>`;\n    const parentElement = this.element.querySelector(\"[data-id=error]\");\n    if (parentElement) B(errorTemplate, parentElement);\n  },\n  hideError() {\n    const formErrors = this.element.querySelectorAll(\".error-message\");\n    if (formErrors) for (const error2 of formErrors) error2.remove();\n    const errorFields = this.element.querySelectorAll(\".error\");\n    if (errorFields)\n      for (const errorField of errorFields)\n        errorField.classList.remove(\"error\");\n    const parentElement = this.element.querySelector(\"[data-id=error]\");\n    if (parentElement) B(\"\", parentElement);\n  },\n  reset() {\n    if (!this.isNaked) this.element.querySelector(\"form\").reset();\n  },\n  onSubmit(event) {\n    if (!this.isNaked) {\n      event.preventDefault();\n      this.performAction();\n    }\n  },\n  validateModal() {\n    return this.submitForm();\n  },\n  onReset() {\n    if (!this.isNaked) setTimeout(() => this.onInput());\n  },\n  getSubmitTemplate() {\n    return x`\n      <div class=${o$2(this.classSubmitButton)}>\n        ${this.submitWidget === \"button\" ? x`<button type=\"submit\">${this.submitButton || this.t(\"solid-form.submit-button\")}</button>` : x`<input type=\"submit\" value=${this.submitButton || this.t(\"solid-form.submit-button\")}>`}\n      </div>\n    `;\n  },\n  populate: trackRenderAsync(async function() {\n    this.element.oninput = () => this.onInput();\n    this.element.onchange = () => this.onChange();\n    const fields = await this.getFields();\n    const widgetTemplates = await Promise.all(\n      fields.map((field) => this.createWidgetTemplate(field))\n    );\n    const template = x`\n        <div data-id=\"error\"></div>\n        ${!this.isNaked ? x`\n          <form\n            @submit=${this.onSubmit.bind(this)}\n            @reset=${this.onReset.bind(this)}\n          >\n            ${widgetTemplates}\n            ${!this.isSavingAutomatically ? this.getSubmitTemplate() : \"\"}\n            ${this.element.hasAttribute(\"reset\") ? x`<input type=\"reset\" />` : \"\"}\n          </form>\n        ` : x`${widgetTemplates}`}\n        ${this.getModalDialog()}\n      `;\n    B(template, this.element);\n  }, \"SolidForm:populate\")\n};\nSib.register(SolidForm);\nconst SolidLang = {\n  name: \"solid-lang\",\n  use: [],\n  attributes: {\n    lang: {\n      type: String,\n      default: null\n    },\n    dataLabel: {\n      type: String,\n      default: null\n    }\n  },\n  created() {\n    this.render();\n  },\n  languageLoader() {\n    store.selectLanguage(this.lang);\n    location.reload();\n  },\n  render() {\n    const template = x`<button @click=${this.languageLoader.bind(this)}>${this.dataLabel}</button>`;\n    B(template, this.element);\n  }\n};\nSib.register(SolidLang);\nconst SolidMemberAdd = {\n  name: \"solid-member-add\",\n  use: [NextMixin, ValidationMixin, ContextMixin, StoreMixin],\n  attributes: {\n    // The list of users to load\n    rangeUsers: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    },\n    addMemberLabel: {\n      type: String,\n      default: \"Add a member\",\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    },\n    classSubmitButton: {\n      type: String,\n      default: void 0\n    },\n    orderAsc: {\n      type: String,\n      default: void 0\n    }\n  },\n  initialState: {\n    renderPlanned: false\n  },\n  created() {\n    newWidgetFactory(\"solid-form-dropdown-autocompletion\");\n    this.planRender();\n  },\n  planRender() {\n    if (!this.renderPlanned) {\n      this.renderPlanned = true;\n      setTimeout(() => {\n        this.updateDOM();\n        this.renderPlanned = false;\n      });\n    }\n  },\n  addMember(e2) {\n    if (!this.dataSrc || !this.resourceId) return;\n    e2.preventDefault();\n    this.performAction();\n  },\n  async addMembership() {\n    this.currentMembers.push(JSON.parse(this.dataTargetSrc));\n    const currentRes = {\n      \"@context\": this.context,\n      user_set: this.currentMembers\n    };\n    return store.patch(currentRes, this.resourceId).then((response) => {\n      if (!response) {\n        console.warn(\n          `Error while adding user ${this.dataTargetSrc} to group ${this.resourceId}`\n        );\n        return;\n      }\n      this.goToNext(null);\n      const eventData = {\n        detail: { resource: { \"@id\": this.dataSrc } },\n        bubbles: true\n      };\n      this.element.dispatchEvent(new CustomEvent(\"save\", eventData));\n      this.element.dispatchEvent(new CustomEvent(\"memberAdded\", eventData));\n      this.planRender();\n    });\n  },\n  validateModal() {\n    return this.addMembership();\n  },\n  changeSelectedUser(e2) {\n    var _a3;\n    if (!e2.target || !e2.target.firstElementChild) return;\n    this.dataTargetSrc = (_a3 = e2.target.firstElementChild) == null ? void 0 : _a3.value;\n  },\n  async populate() {\n    if (!this.resource) return;\n    const memberPredicate = store.getExpandedPredicate(\n      \"user_set\",\n      base_context\n    );\n    this.currentMembers = await this.resource[memberPredicate];\n    if (!Array.isArray(this.currentMembers)) {\n      this.currentMembers = [this.currentMembers];\n    }\n    this.currentMembers = this.currentMembers.map((member) => {\n      return { \"@id\": member[\"@id\"] };\n    });\n    const button = x`\n      <solid-ac-checker data-src=\"${this.dataSrc}\"\n        permission=\"acl:Write\"\n      >\n        <form\n          src=\"${this.dataSrc}\"\n          @submit=\"${this.addMember.bind(this)}\"\n        >\n          <solid-form-dropdown-autocompletion\n            range=\"${this.rangeUsers}\"\n            data-src=\"${this.rangeUsers}\"\n            name=\"users\"\n            @change=\"${this.changeSelectedUser.bind(this)}\"\n            order-asc=\"${o$2(this.orderAsc || \"name\")}\"\n          ></solid-form-dropdown-autocompletion>\n          <div class=${o$2(this.classSubmitButton)}>\n            <button type=\"submit\">\n              ${this.addMemberLabel}\n            </button>\n          </div>\n        </form>\n\n        ${this.getModalDialog()}\n      </solid-ac-checker>\n      `;\n    B(button, this.element);\n  }\n};\nSib.register(SolidMemberAdd);\nconst SolidMemberDelete = {\n  name: \"solid-member-delete\",\n  use: [NextMixin, ValidationMixin, ContextMixin],\n  attributes: {\n    // Data Source being a group URI in that case\n    dataSrc: {\n      type: String,\n      default: null,\n      callback: function() {\n        this.resourceId = this.dataSrc;\n      }\n    },\n    dataLabel: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    },\n    // The user id to remove from the group\n    dataTargetSrc: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) {\n          this.planRender();\n        }\n      }\n    },\n    dataUnknownMember: {\n      type: String,\n      default: \"Given user is not a member of this group\",\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    },\n    classSubmitButton: {\n      type: String,\n      default: void 0\n    }\n  },\n  initialState: {\n    renderPlanned: false\n  },\n  created() {\n    this.planRender();\n  },\n  async populate() {\n    if (!this.resourceId) return;\n    this.resource = await store.getData(this.resourceId);\n    if (!this.resource) return;\n    const memberPredicate = store.getExpandedPredicate(\n      \"user_set\",\n      base_context\n    );\n    this.currentMembers = await this.resource[memberPredicate];\n    if (!Array.isArray(this.currentMembers)) {\n      this.currentMembers = [this.currentMembers];\n    }\n    this.currentMembers = this.currentMembers.map((member) => {\n      return { \"@id\": member[\"@id\"] };\n    });\n    this.isMember = this.currentMembers ? this.currentMembers.some((member) => member[\"@id\"] === this.dataTargetSrc) : false;\n  },\n  planRender() {\n    if (!this.renderPlanned) {\n      this.renderPlanned = true;\n      setTimeout(() => {\n        this.render();\n        this.renderPlanned = false;\n      });\n    }\n  },\n  removeMember(e2) {\n    e2.stopPropagation();\n    if (!this.dataSrc) return;\n    this.performAction();\n  },\n  async deleteMembership() {\n    const userSet = this.currentMembers.filter((value) => {\n      const userId = value[\"@id\"];\n      if (userId === this.dataTargetSrc) return false;\n      return true;\n    });\n    const currentRes = {\n      \"@context\": this.context,\n      user_set: userSet\n    };\n    return store.patch(currentRes, this.dataSrc).then((response) => {\n      if (!response) {\n        console.warn(\n          `Error while removing user ${this.dataTargetSrc} from group ${this.dataSrc}`\n        );\n        return;\n      }\n      this.goToNext(null);\n      const eventData = {\n        detail: { resource: { \"@id\": this.dataSrc } },\n        bubbles: true\n      };\n      this.element.dispatchEvent(new CustomEvent(\"save\", eventData));\n      this.element.dispatchEvent(new CustomEvent(\"memberRemoved\", eventData));\n      this.planRender();\n    });\n  },\n  validateModal() {\n    return this.deleteMembership();\n  },\n  update() {\n    this.render();\n  },\n  render: trackRenderAsync(async function() {\n    await this.populate();\n    let button = x``;\n    if (this.isMember) {\n      button = x`\n        <solid-ac-checker data-src=\"${this.dataSrc}\"\n              permission=\"acl:Write\"\n              class=${o$2(this.classSubmitButton)}\n            >\n          <button\n            @click=${this.removeMember.bind(this)}>\n              ${this.dataLabel || this.t(\"solid-delete-member.button\")}\n          </button>\n          ${this.getModalDialog()}\n        </solid-ac-checker>\n        `;\n    } else {\n      button = x`<span>${this.dataUnknownMember || this.t(\"solid-member-unknown.span\")}</span>`;\n    }\n    B(button, this.element);\n  }, \"SolidMemberDelete:render\")\n};\nSib.register(SolidMemberDelete);\nconst SolidMembership = {\n  name: \"solid-membership\",\n  use: [NextMixin, ValidationMixin, ContextMixin],\n  attributes: {\n    dataSrc: {\n      type: String,\n      default: null,\n      callback: function() {\n        this.resourceId = this.dataSrc;\n      }\n    },\n    dataTargetSrc: {\n      type: String,\n      default: null\n    },\n    dataLeaveLabel: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    },\n    dataJoinLabel: {\n      type: String,\n      default: null,\n      callback: function(newValue, oldValue) {\n        if (newValue !== oldValue) this.planRender();\n      }\n    },\n    classSubmitButton: {\n      type: String,\n      default: void 0\n    }\n  },\n  initialState: {\n    renderPlanned: false\n  },\n  created() {\n    this.planRender();\n  },\n  async populate() {\n    if (!store.session) return;\n    const currentUserSession = await store.session;\n    if (!currentUserSession) return;\n    if (!this.dataTargetSrc) this.userId = await currentUserSession.webId;\n    else this.userId = this.dataTargetSrc;\n    if (!this.userId) return;\n    this.resource = await store.getData(this.resourceId);\n    if (!this.resource) return;\n    const memberPredicate = store.getExpandedPredicate(\n      \"user_set\",\n      base_context\n    );\n    this.currentMembers = await this.resource[memberPredicate];\n    if (!Array.isArray(this.currentMembers)) {\n      this.currentMembers = [this.currentMembers];\n    }\n    this.currentMembers = this.currentMembers.map((member) => {\n      return { \"@id\": member[\"@id\"] };\n    });\n    this.isMember = this.currentMembers ? this.currentMembers.some((member) => member[\"@id\"] === this.userId) : false;\n  },\n  planRender() {\n    if (!this.renderPlanned) {\n      this.renderPlanned = true;\n      setTimeout(() => {\n        this.render();\n        this.renderPlanned = false;\n      });\n    }\n  },\n  changeMembership(e2) {\n    e2.stopPropagation();\n    if (!this.dataSrc) return;\n    this.performAction();\n  },\n  async joinGroup() {\n    this.currentMembers.push({ \"@id\": this.userId });\n    const currentRes = {\n      \"@context\": this.context,\n      user_set: this.currentMembers\n    };\n    return store.patch(currentRes, this.dataSrc).then((response) => {\n      if (!response) {\n        console.warn(\n          `Error while joining group ${this.dataSrc} for user ${this.userId}`\n        );\n        return;\n      }\n      this.goToNext(null);\n      const eventData = {\n        detail: { resource: { \"@id\": this.dataSrc } },\n        bubbles: true\n      };\n      this.element.dispatchEvent(new CustomEvent(\"save\", eventData));\n      this.element.dispatchEvent(new CustomEvent(\"memberAdded\", eventData));\n      this.planRender();\n    });\n  },\n  async leaveGroup() {\n    const userSet = this.currentMembers.filter((value) => {\n      const userId = value[\"@id\"];\n      if (userId === this.userId) return false;\n      return true;\n    });\n    const currentRes = {\n      \"@context\": this.context,\n      user_set: userSet\n    };\n    return store.patch(currentRes, this.dataSrc).then((response) => {\n      if (!response) {\n        console.warn(\n          `Error while leaving group ${this.dataSrc} for user ${this.userId}`\n        );\n        return;\n      }\n      this.goToNext(null);\n      const eventData = {\n        detail: { resource: { \"@id\": this.dataSrc } },\n        bubbles: true\n      };\n      this.element.dispatchEvent(new CustomEvent(\"save\", eventData));\n      this.element.dispatchEvent(new CustomEvent(\"memberRemoved\", eventData));\n      this.planRender();\n    });\n  },\n  switchMembership() {\n    if (this.isMember) {\n      return this.leaveGroup();\n    }\n    return this.joinGroup();\n  },\n  validateModal() {\n    return this.switchMembership();\n  },\n  update() {\n    this.render();\n  },\n  render: trackRenderAsync(async function() {\n    await this.populate();\n    let button = x``;\n    if (this.isMember) {\n      button = x`\n          <solid-ac-checker data-src=\"${this.dataSrc}\"\n                permission=\"acl:Read\"\n                class=${o$2(`${this.classSubmitButton ? `leave ${this.classSubmitButton}` : \"leave\"}`)}\n              >\n            <button @click=${this.changeMembership.bind(this)}>${this.dataLeaveLabel || this.t(\"solid-leave-group.button\")}</button>\n            ${this.getModalDialog()}\n          </solid-ac-checker>\n          `;\n    } else {\n      button = x`\n          <solid-ac-checker data-src=\"${this.dataSrc}\"\n                permission=\"acl:Read\"\n                class=${o$2(`${this.classSubmitButton ? `join ${this.classSubmitButton}` : \"join\"}`)}\n              >\n            <button @click=${this.changeMembership.bind(this)}>${this.dataJoinLabel || this.t(\"solid-join-group.button\")}</button>\n            ${this.getModalDialog()}\n          </solid-ac-checker>\n          `;\n    }\n    B(button, this.element);\n  }, \"SolidMembership:render\")\n};\nSib.register(SolidMembership);\n/**\n * @license\n * Copyright 2020 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst i$1 = (o2) => null === o2 || \"object\" != typeof o2 && \"function\" != typeof o2, f$1 = (o2) => void 0 === o2.strings;\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst s$1 = (i3, t2) => {\n  var _a3;\n  const e2 = i3._$AN;\n  if (void 0 === e2) return false;\n  for (const i4 of e2) (_a3 = i4._$AO) == null ? void 0 : _a3.call(i4, t2, false), s$1(i4, t2);\n  return true;\n}, o = (i3) => {\n  let t2, e2;\n  do {\n    if (void 0 === (t2 = i3._$AM)) break;\n    e2 = t2._$AN, e2.delete(i3), i3 = t2;\n  } while (0 === (e2 == null ? void 0 : e2.size));\n}, r2 = (i3) => {\n  for (let t2; t2 = i3._$AM; i3 = t2) {\n    let e2 = t2._$AN;\n    if (void 0 === e2) t2._$AN = e2 = /* @__PURE__ */ new Set();\n    else if (e2.has(i3)) break;\n    e2.add(i3), c$1(t2);\n  }\n};\nfunction h$1(i3) {\n  void 0 !== this._$AN ? (o(this), this._$AM = i3, r2(this)) : this._$AM = i3;\n}\nfunction n$1(i3, t2 = false, e2 = 0) {\n  const r3 = this._$AH, h3 = this._$AN;\n  if (void 0 !== h3 && 0 !== h3.size) if (t2) if (Array.isArray(r3)) for (let i4 = e2; i4 < r3.length; i4++) s$1(r3[i4], false), o(r3[i4]);\n  else null != r3 && (s$1(r3, false), o(r3));\n  else s$1(this, i3);\n}\nconst c$1 = (i3) => {\n  i3.type == t.CHILD && (i3._$AP ?? (i3._$AP = n$1), i3._$AQ ?? (i3._$AQ = h$1));\n};\nclass f extends i$2 {\n  constructor() {\n    super(...arguments), this._$AN = void 0;\n  }\n  _$AT(i3, t2, e2) {\n    super._$AT(i3, t2, e2), r2(this), this.isConnected = i3._$AU;\n  }\n  _$AO(i3, t2 = true) {\n    var _a3, _b;\n    i3 !== this.isConnected && (this.isConnected = i3, i3 ? (_a3 = this.reconnected) == null ? void 0 : _a3.call(this) : (_b = this.disconnected) == null ? void 0 : _b.call(this)), t2 && (s$1(this, i3), o(this));\n  }\n  setValue(t2) {\n    if (f$1(this._$Ct)) this._$Ct._$AI(t2, this);\n    else {\n      const i3 = [...this._$Ct._$AH];\n      i3[this._$Ci] = t2, this._$Ct._$AI(i3, this, 0);\n    }\n  }\n  disconnected() {\n  }\n  reconnected() {\n  }\n}\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nclass s {\n  constructor(t2) {\n    this.Y = t2;\n  }\n  disconnect() {\n    this.Y = void 0;\n  }\n  reconnect(t2) {\n    this.Y = t2;\n  }\n  deref() {\n    return this.Y;\n  }\n}\nclass i2 {\n  constructor() {\n    this.Z = void 0, this.q = void 0;\n  }\n  get() {\n    return this.Z;\n  }\n  pause() {\n    this.Z ?? (this.Z = new Promise((t2) => this.q = t2));\n  }\n  resume() {\n    var _a3;\n    (_a3 = this.q) == null ? void 0 : _a3.call(this), this.Z = this.q = void 0;\n  }\n}\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst n2 = (t2) => !i$1(t2) && \"function\" == typeof t2.then, h2 = 1073741823;\nclass c extends f {\n  constructor() {\n    super(...arguments), this._$Cwt = h2, this._$Cbt = [], this._$CK = new s(this), this._$CX = new i2();\n  }\n  render(...s2) {\n    return s2.find((t2) => !n2(t2)) ?? T;\n  }\n  update(s2, i3) {\n    const e2 = this._$Cbt;\n    let r3 = e2.length;\n    this._$Cbt = i3;\n    const o2 = this._$CK, c2 = this._$CX;\n    this.isConnected || this.disconnected();\n    for (let t2 = 0; t2 < i3.length && !(t2 > this._$Cwt); t2++) {\n      const s3 = i3[t2];\n      if (!n2(s3)) return this._$Cwt = t2, s3;\n      t2 < r3 && s3 === e2[t2] || (this._$Cwt = h2, r3 = 0, Promise.resolve(s3).then(async (t3) => {\n        for (; c2.get(); ) await c2.get();\n        const i4 = o2.deref();\n        if (void 0 !== i4) {\n          const e3 = i4._$Cbt.indexOf(s3);\n          e3 > -1 && e3 < i4._$Cwt && (i4._$Cwt = e3, i4.setValue(t3));\n        }\n      }));\n    }\n    return T;\n  }\n  disconnected() {\n    this._$CK.disconnect(), this._$CX.pause();\n  }\n  reconnected() {\n    this._$CK.reconnect(this), this._$CX.resume();\n  }\n}\nconst m = e$1(c);\nconst SolidTable = {\n  name: \"solid-table\",\n  use: [\n    WidgetMixin,\n    ListMixin,\n    StoreMixin,\n    PaginateMixin,\n    GrouperMixin,\n    CounterMixin,\n    HighlighterMixin,\n    FilterMixin,\n    SorterMixin,\n    RequiredMixin,\n    FederationMixin\n  ],\n  attributes: {\n    defaultWidget: {\n      type: String,\n      default: \"solid-display-value\"\n    },\n    selectable: {\n      type: String,\n      default: null\n    },\n    header: {\n      type: String,\n      default: null\n    }\n  },\n  initialState: {\n    resources: []\n  },\n  get parentElement() {\n    return \"table\";\n  },\n  get defaultMultipleWidget() {\n    return \"solid-multiple\";\n  },\n  get defaultSetWidget() {\n    return \"solid-set-default\";\n  },\n  get selectedLines() {\n    if (this.selectable === null) return [];\n    return Array.from(\n      this.element.querySelectorAll(\"input[data-selection]:checked\")\n    ).map((e2) => {\n      var _a3;\n      return (_a3 = e2 == null ? void 0 : e2.closest(\"[data-resource]\")) == null ? void 0 : _a3.getAttribute(\"data-resource\");\n    });\n  },\n  /**\n   * Select all lines\n   * @param e - event\n   */\n  selectAll(e2) {\n    if (this.selectable === null) return;\n    for (const checkbox of Array.from(\n      this.element.querySelectorAll(\n        \"input[data-selection]\"\n      )\n    )) {\n      checkbox.checked = e2.target.checked;\n    }\n  },\n  /**\n   * Unselect all lines\n   */\n  unselectAll() {\n    if (this.selectable === null) return;\n    for (const checkbox of Array.from(\n      this.element.querySelectorAll(\n        \"input[data-selection]\"\n      )\n    )) {\n      checkbox.checked = false;\n    }\n  },\n  /**\n   * Select specific lines\n   * @param lines - array of selected lines\n   */\n  selectLines(lines) {\n    if (this.selectable === null || lines.length === 0) return;\n    for (const line of lines) {\n      const checkbox = this.element.querySelector(\n        `[data-resource=\"${line}\"] input[data-selection]`\n      );\n      if (checkbox) checkbox.checked = true;\n    }\n  },\n  /**\n   * Create a widget for the field or a form if it's editable\n   * @param field\n   * @param resource\n   */\n  createCellWidget(field, resource) {\n    if (!this.element.hasAttribute(`editable-${field}`))\n      return this.createWidgetTemplate(field, resource, true);\n    const attributes = {};\n    const formWidgetAttributes = [\n      // attributes to give to the form widget\n      \"range\",\n      \"enum\",\n      \"placeholder\",\n      \"required\",\n      \"autocomplete\",\n      \"option-label\",\n      \"option-value\",\n      \"min\",\n      \"max\",\n      \"pattern\",\n      \"title\",\n      \"widget\"\n    ];\n    for (const attr of formWidgetAttributes)\n      this.addToAttributes(`${attr}-${field}`, `${attr}-${field}`, attributes);\n    const formAttributes = [\n      // attributes to give to the form\n      \"class\",\n      \"submit-button\",\n      \"next\"\n    ];\n    for (const attr of formAttributes)\n      this.addToAttributes(`${attr}-${field}`, attr, attributes);\n    return x`\n      <solid-form\n        data-src=\"${resource[\"@id\"]}\"\n        fields=\"${field}\"\n        partial\n        autosave\n        ...=${spread(attributes)}\n      ></solid-form>\n    `;\n  },\n  /**\n   * Creates a header line for the table\n   * @param fields\n   */\n  getHeader(fields) {\n    const template = x`\n      <tr>\n        ${this.selectable !== null ? x`<th><input type=\"checkbox\" @change=\"${this.selectAll.bind(this)}\" /></th>` : \"\"}\n        ${fields.map((field) => x`<th>${this.element.hasAttribute(`label-${field}`) ? this.element.getAttribute(`label-${field}`) : field}</th>`)}\n      </tr>\n    `;\n    return template;\n  },\n  /**\n   * Returns template of a child element (resource)\n   * @param resourceId\n   * @param attributes\n   */\n  async getChildTemplate(resourceId, fields) {\n    const resource = await store.getData(resourceId, this.context);\n    const template = x`\n      <tr data-resource=\"${resourceId}\">\n        ${this.selectable !== null ? x`<td><input type=\"checkbox\" data-selection /></td>` : \"\"}\n        ${fields.map((field) => x`<td>${m(this.createCellWidget(field, resource))}</td>`)}\n      </tr>\n    `;\n    return template;\n  },\n  /**\n   * Creates and render the content of a single element (resource)\n   * @param parent\n   */\n  async appendSingleElt(parent) {\n    const fields = await this.getFields();\n    const template = x`${this.header !== null ? this.getHeader(fields) : \"\"}${m(this.getChildTemplate(this.resource[\"@id\"], fields))}`;\n    B(template, parent);\n  },\n  /**\n   * @override listMixin method to use litHtml\n   *\n   * Render resources from a container\n   * @param resources\n   * @param listPostProcessors\n   * @param div\n   * @param context\n   */\n  renderDOM: trackRenderAsync(async function(resources, listPostProcessors, div, context2) {\n    const selectedLines = [...this.selectedLines];\n    const fields = await this.getFields();\n    const childTemplates = await Promise.all(\n      resources.map((r3) => r3 ? this.getChildTemplate(r3[\"@id\"], fields) : null)\n    );\n    const template = x`${this.header !== null ? this.getHeader(fields) : \"\"}${childTemplates}`;\n    B(template, div);\n    this.unselectAll();\n    this.selectLines(selectedLines);\n    const nextProcessor = listPostProcessors.shift();\n    if (nextProcessor)\n      await nextProcessor(resources, listPostProcessors, div, context2);\n  }, \"SolidTable:renderDom\")\n};\nSib.register(SolidTable);\nconst SolidWidget = {\n  name: \"solid-widget\",\n  use: [],\n  attributes: {\n    name: {\n      type: String,\n      default: \"\",\n      required: true\n    }\n  },\n  attached() {\n    if (!this.name) return;\n    const template = this.template;\n    const newWidget = {\n      name: this.name,\n      use: [BaseWidgetMixin, StoreMixin, FormMixin, ActionMixin],\n      attributes: {\n        label: {\n          type: String,\n          default: \"\",\n          callback: function(newValue) {\n            this.addToAttributes(newValue, \"label\");\n          }\n        }\n      },\n      get template() {\n        return () => this.evalTemplate(template).then(\n          (tpl) => x`${o$1(tpl)}`\n        );\n      },\n      evalTemplate(template2) {\n        const tpl = evalTemplateString(template2, {\n          name: this.name,\n          value: this.value || this.resource || \"\",\n          src: this.src,\n          label: this.label,\n          targetSrc: this.targetSrc || \"\"\n        });\n        return tpl;\n      },\n      async templateToDOM(template2) {\n        B(await template2, this.element);\n      },\n      // For form widgets, handle nested solid-form\n      // TODO: type custom elements\n      getValueFromElement(element) {\n        if (element.tagName === \"SOLID-FORM\") return element.component.value;\n        if (element.component) return element.component.getValue();\n        return element.value;\n      },\n      updateDOM() {\n        this.planRender();\n      }\n    };\n    Sib.register(newWidget);\n  },\n  get template() {\n    return this.element.querySelector(\"template:not([data-range])\").innerHTML;\n  },\n  get childTemplate() {\n    const child = this.element.querySelector(\"template[data-range]\");\n    return child ? child.innerHTML : null;\n  }\n};\nSib.register(SolidWidget);\nconst index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  AltMixin,\n  EditableMixin,\n  FilterRangeFormMixin,\n  FormCheckboxMixin,\n  FormCheckboxesMixin,\n  FormDropdownMixin,\n  FormFileMixin,\n  FormLengthMixin,\n  FormMinMaxMixin,\n  FormMixin,\n  FormNumberMixin,\n  FormRadioMixin,\n  FormStepMixin,\n  LinkTextMixin,\n  MultipleFormMixin,\n  MultipleselectFormMixin,\n  PatternMixin,\n  RangeMixin,\n  SetMixin,\n  ValueRichtextMixin\n}, Symbol.toStringTag, { value: \"Module\" }));\nclass SolidTemplateElement extends HTMLElement {\n  constructor() {\n    super();\n    __publicField(this, \"renderPlanned\", false);\n    __publicField(this, \"strings\", {});\n    __publicField(this, \"translationsPath\", null);\n    __publicField(this, \"translationsFetched\", false);\n    __publicField(this, \"props\", {});\n    this.initProps();\n  }\n  static get observedAttributes() {\n    return Object.values(SolidTemplateElement.propsDefinition);\n  }\n  static get propsDefinition() {\n    return {};\n  }\n  initProps() {\n    this.props = {};\n    for (const key in this.constructor.propsDefinition) {\n      this.props[key] = void 0;\n    }\n  }\n  updateProps() {\n    const declaredAttributes = [];\n    for (const key in this.constructor.propsDefinition) {\n      const def = this.constructor.propsDefinition[key];\n      if (typeof def === \"string\") {\n        this.props[key] = this.hasAttribute(def) ? this.getAttribute(def) : void 0;\n        declaredAttributes.push(def);\n      } else if (typeof def === \"object\" && def.attribute && typeof def.attribute === \"string\") {\n        this.props[key] = this.hasAttribute(def.attribute) ? this.getAttribute(def.attribute) : def.default || void 0;\n        declaredAttributes.push(def.attribute);\n      }\n    }\n    for (const attr of this.attributes) {\n      if (!declaredAttributes.includes(attr.name)) {\n        this.props[this._camelize(attr.name)] = attr.value || void 0;\n      }\n    }\n  }\n  /**\n   * Define the path folder of translations files\n   * @param path\n   */\n  setTranslationsPath(path) {\n    this.translationsPath = path;\n  }\n  /**\n   * Fetch all localized strings\n   */\n  async fetchLocaleStrings() {\n    if (this.translationsFetched) return;\n    const filesToFetch = [];\n    if (this.translationsPath)\n      filesToFetch.push(this.fetchTranslationFile(this.translationsPath));\n    const extraTranslationsPath = this.getAttribute(\"extra-translations-path\");\n    if (extraTranslationsPath)\n      filesToFetch.push(this.fetchTranslationFile(extraTranslationsPath));\n    return Promise.all(filesToFetch).then((res) => {\n      this.translationsFetched = true;\n      this.strings = Object.assign({}, ...res);\n    });\n  }\n  /**\n   * Fetch the translation file from [path]\n   */\n  async fetchTranslationFile(path) {\n    const ln = this.getLocale();\n    const fullPath = `${path}/${ln}.json`;\n    return fetch(fullPath).then((result) => {\n      if (result.ok) {\n        return result.json().catch(\n          () => console.error(\n            `Error while parsing the translation file: ${fullPath}`\n          )\n        );\n      }\n    }).catch(\n      () => console.error(\n        `Error while retrieving the translation file: ${fullPath}`\n      )\n    );\n  }\n  /**\n   * Returns current locale of app\n   */\n  getLocale() {\n    return localStorage.getItem(\"language\") || window.navigator.language.slice(0, 2);\n  }\n  /**\n   * Return localized string for [key]\n   * @param key\n   */\n  localize(key) {\n    return this.strings[key] || key;\n  }\n  attributeChangedCallback() {\n    this.updateProps();\n    this.planRender();\n  }\n  connectedCallback() {\n    this.updateProps();\n    this.planRender();\n  }\n  /**\n   * Plan a render if none is already waiting to prevent multi re-renders\n   */\n  planRender() {\n    if (!this.renderPlanned) {\n      this.renderPlanned = true;\n      setTimeout(() => {\n        this.render();\n        this.renderPlanned = false;\n      });\n    }\n  }\n  renderCallback() {\n  }\n  render() {\n    this.fetchLocaleStrings().finally(() => {\n      this.innerHTML = this.template(this.props);\n      this.renderCallback();\n    });\n  }\n  template() {\n    return \"\";\n  }\n  _camelize(str) {\n    return str.replace(/\\W+(.)/g, (_match, chr) => chr.toUpperCase());\n  }\n}\nclass BaseWidget extends HTMLElement {\n  constructor() {\n    super(...arguments);\n    __publicField(this, \"src\");\n    __publicField(this, \"multiple\");\n    __publicField(this, \"editable\");\n    __publicField(this, \"required\");\n    __publicField(this, \"resourceId\");\n    __publicField(this, \"_value\");\n    __publicField(this, \"_range\");\n    __publicField(this, \"_context\");\n    __publicField(this, \"_subscriptions\", /* @__PURE__ */ new Map());\n  }\n  connectedCallback() {\n    this.render();\n  }\n  disconnectedCallback() {\n    for (const subscription of this._subscriptions.values()) {\n      PubSub.unsubscribe(subscription);\n    }\n  }\n  async render() {\n    var _a3;\n    this.innerHTML = await evalTemplateString(this.template, {\n      src: this.src,\n      name: this.name,\n      label: this.label,\n      placeholder: this.placeholder,\n      value: this.value,\n      id: ((_a3 = this._value) == null ? void 0 : _a3[\"@id\"]) || \"\",\n      escapedValue: this.escapedValue,\n      range: await this.htmlRange,\n      multiple: this.multiple,\n      editable: this.editable === \"\",\n      required: this.required === \"\"\n    });\n    this.addEditButtons();\n    this.initChangeEvents();\n  }\n  get label() {\n    return this.hasAttribute(\"label\") ? this.getAttribute(\"label\") : this.name;\n  }\n  set label(label) {\n    if (label != null) this.setAttribute(\"label\", label);\n    this.render();\n  }\n  get placeholder() {\n    return this.hasAttribute(\"placeholder\") ? this.getAttribute(\"placeholder\") : this.label;\n  }\n  set placeholder(placeholder) {\n    if (placeholder != null) this.setAttribute(\"placeholder\", placeholder);\n    this.render();\n  }\n  get name() {\n    return this.getAttribute(\"name\");\n  }\n  set name(name) {\n    if (name) this.setAttribute(\"name\", name);\n    this.render();\n  }\n  get value() {\n    if (this.dataHolder) {\n      const values = this.dataHolder.map((element) => {\n        if (element instanceof HTMLInputElement && element.type === \"checkbox\")\n          return element.checked;\n        return this.getValueHolder(element).value;\n      });\n      return values.length === 1 ? values[0] : values;\n    }\n    return this._value || \"\";\n  }\n  set value(value) {\n    this._value = value;\n    if (this._value == null) return;\n    if (this.dataHolder && this.dataHolder.length === 1) {\n      const element = this.getValueHolder(this.dataHolder[0]);\n      if (element.type === \"checkbox\") {\n        element.checked = value;\n      } else {\n        element.value = value;\n      }\n      if (element.dispatchEvent) element.dispatchEvent(new Event(\"change\"));\n    } else if (this.dataHolder && this.dataHolder.length > 1) {\n      this.dataHolder.forEach((el, index2) => {\n        const element = this.getValueHolder(el);\n        if (element.type === \"checkbox\") {\n          element.checked = value ? value[index2] : \"\";\n        } else {\n          element.value = value ? value[index2] : \"\";\n        }\n        element.dispatchEvent(new Event(\"change\"));\n      });\n    }\n    this.render();\n  }\n  get \"each-label\"() {\n    return this.getAttribute(\"each-label\") || \"\";\n  }\n  set \"each-label\"(label) {\n    this.setAttribute(\"each-label\", label);\n  }\n  set \"add-label\"(label) {\n    this.setAttribute(\"add-label\", label);\n  }\n  set \"remove-label\"(label) {\n    this.setAttribute(\"remove-label\", label);\n  }\n  get dataHolder() {\n    const widgetDataHolders = Array.from(\n      this.querySelectorAll(\"[data-holder]\")\n    ).filter((element) => {\n      const dataHolderAncestor = element.parentElement ? element.parentElement.closest(\"[data-holder]\") : null;\n      return dataHolderAncestor === this || !dataHolderAncestor || !this.contains(dataHolderAncestor);\n    });\n    return widgetDataHolders.length > 0 ? widgetDataHolders : null;\n  }\n  get template() {\n    return \"\";\n  }\n  get childTemplate() {\n    return \"\";\n  }\n  get escapedValue() {\n    return `${this.value}`.replace(/&/g, \"&amp;\").replace(/'/g, \"&apos;\").replace(/\"/g, \"&quot;\");\n  }\n  set context(value) {\n    this._context = value;\n  }\n  get context() {\n    return this._context || {};\n  }\n  get range() {\n    return this.fetchSources(this._range);\n  }\n  set range(range) {\n    (async () => {\n      this._listen(range, async () => {\n        this._range = await store.getData(range, this.context);\n      });\n      this._range = await store.getData(range, this.context);\n      this.render();\n    })();\n  }\n  async fetchSources(resource) {\n    var _a3;\n    if (!resource || !resource[\"ldp:contains\"]) return null;\n    const resources = [];\n    let index2 = 0;\n    for (let res of resource[\"ldp:contains\"]) {\n      if (!res) {\n        try {\n          const resourceId = resource.getChildren(\"ldp:contains\")[index2][\"@id\"];\n          res = await store.getData(resourceId, this.context);\n        } catch {\n          continue;\n        }\n      }\n      if ((_a3 = res.isContainer) == null ? void 0 : _a3.call(res)) {\n        const resourcesFromContainer = await store.getData(\n          res[\"@id\"],\n          this.context\n        );\n        this._listen(res[\"@id\"]);\n        if (resourcesFromContainer)\n          resources.push(...resourcesFromContainer[\"ldp:contains\"]);\n      } else {\n        resources.push(res);\n      }\n      index2++;\n    }\n    return resources;\n  }\n  async htmlRange() {\n    var _a3, _b;\n    let htmlRange = \"\";\n    const rangeResources = await this.range;\n    if (!rangeResources) return;\n    for await (let element of rangeResources) {\n      element = await store.getData(element[\"@id\"], this.context);\n      this._listen(element[\"@id\"]);\n      let selected;\n      if ((_b = (_a3 = this._value) == null ? void 0 : _a3.isContainer) == null ? void 0 : _b.call(_a3)) {\n        selected = false;\n        for await (const value of this._value[\"ldp:contains\"]) {\n          if (value[\"@id\"] === element[\"@id\"]) {\n            selected = true;\n            break;\n          }\n        }\n      } else {\n        selected = this._value ? this._value[\"@id\"] === element[\"@id\"] : false;\n      }\n      htmlRange += await evalTemplateString(this.childTemplate, {\n        name: await element.name,\n        id: element[\"@id\"],\n        selected\n      });\n    }\n    return htmlRange || \"\";\n  }\n  getValueHolder(element) {\n    return element.component ? element.component : element;\n  }\n  subscribe(event) {\n    this._listen(event);\n  }\n  _listen(id2, callback = () => {\n  }) {\n    if (!this._subscriptions.get(id2)) {\n      this._subscriptions.set(\n        id2,\n        PubSub.subscribe(id2, async () => {\n          await callback();\n          this.render();\n        })\n      );\n    }\n  }\n  // Editable widgets\n  addEditButtons() {\n    const editableField = this.querySelector(\"[data-editable]\");\n    if (editableField) {\n      const editButton = document.createElement(\"button\");\n      editButton.innerText = \"Modifier\";\n      editButton.onclick = () => this.activateEditableField(editableField, editButton);\n      editableField.insertAdjacentElement(\"afterend\", editButton);\n      editableField.addEventListener(\n        \"focusout\",\n        () => this.save(editableField, editButton)\n      );\n    }\n  }\n  activateEditableField(editableField, editButton) {\n    editableField.setAttribute(\"contenteditable\", \"true\");\n    editableField.focus();\n    editButton.setAttribute(\"disabled\", \"disabled\");\n  }\n  /**\n   * Dispatch change events of data holders from the current widget\n   */\n  initChangeEvents() {\n    if (this.dataHolder) {\n      const event = new Event(\"change\", { bubbles: true });\n      for (const element of this.dataHolder) {\n        element.addEventListener(\"change\", (e2) => {\n          e2.preventDefault();\n          e2.stopPropagation();\n          this.dispatchEvent(event);\n        });\n      }\n    }\n  }\n  save(editableField, editButton) {\n    editableField.setAttribute(\"contenteditable\", \"false\");\n    editButton.removeAttribute(\"disabled\");\n    if (!this.name) return;\n    const resource = {};\n    resource[this.name] = editableField.innerText;\n    resource[\"@context\"] = this.context;\n    if (this.resourceId && resource) store.patch(resource, this.resourceId);\n  }\n}\nconst widgetFactory = (tagName, customTemplate, childTemplate = \"\", callback) => {\n  const registered = customElements.get(tagName);\n  if (registered) return registered;\n  const cls = class extends BaseWidget {\n    async render() {\n      await super.render();\n      if (callback) callback(this);\n    }\n    get template() {\n      return customTemplate;\n    }\n    get childTemplate() {\n      return childTemplate;\n    }\n  };\n  defineComponent(tagName, cls);\n  return cls;\n};\nexport {\n  index$4 as AttributeMixins,\n  BaseWidgetMixin,\n  index$3 as CallbackMixins,\n  CounterMixin,\n  FederationMixin,\n  FilterMixin,\n  GrouperMixin,\n  h as Helpers,\n  HighlighterMixin,\n  ListMixin,\n  NextMixin,\n  PaginateMixin,\n  RequiredMixin,\n  Sib,\n  SolidAcChecker,\n  SolidDelete,\n  SolidDisplay,\n  SolidForm,\n  SolidFormSearch,\n  SolidLang,\n  SolidMemberAdd,\n  SolidMemberDelete,\n  SolidMembership,\n  SolidTable,\n  SolidTemplateElement,\n  SolidWidget,\n  SorterMixin,\n  StoreMixin,\n  index$2 as TemplateAdditionMixins,\n  index$1 as Templates,\n  index as TemplatesDependenciesMixins,\n  TranslationMixin,\n  ValidationMixin,\n  WidgetMixin,\n  base_context as baseContext,\n  x as html,\n  o$2 as ifDefined,\n  newWidgetFactory,\n  B as render,\n  store,\n  o$1 as unsafeHTML,\n  m as until,\n  widgetFactory\n};\n"]}