UNPKG

digitalmarketplace-frontend

Version:

Digital Marketplace Frontend contains assets and components used in Digital Marketplace projects

1 lines 76.8 kB
{"version":3,"file":"compliance-communication-attachments.bundle.mjs","sources":["../../../../../../node_modules/govuk-frontend/dist/govuk/common/index.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/errors/index.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/component.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/common/configuration.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/i18n.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs","../../../../../../node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.mjs","../../../../src/digitalmarketplace/components/compliance-communication-attachments/compliance-communication-attachments.ts"],"sourcesContent":["function getBreakpoint(name) {\n  const property = `--govuk-breakpoint-${name}`;\n  const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);\n  return {\n    property,\n    value: value || undefined\n  };\n}\nfunction setFocus($element, options = {}) {\n  var _options$onBeforeFocu;\n  const isFocusable = $element.getAttribute('tabindex');\n  if (!isFocusable) {\n    $element.setAttribute('tabindex', '-1');\n  }\n  function onFocus() {\n    $element.addEventListener('blur', onBlur, {\n      once: true\n    });\n  }\n  function onBlur() {\n    var _options$onBlur;\n    (_options$onBlur = options.onBlur) == null || _options$onBlur.call($element);\n    if (!isFocusable) {\n      $element.removeAttribute('tabindex');\n    }\n  }\n  $element.addEventListener('focus', onFocus, {\n    once: true\n  });\n  (_options$onBeforeFocu = options.onBeforeFocus) == null || _options$onBeforeFocu.call($element);\n  $element.focus();\n}\nfunction isInitialised($root, moduleName) {\n  return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);\n}\n\n/**\n * Checks if GOV.UK Frontend is supported on this page\n *\n * Some browsers will load and run our JavaScript but GOV.UK Frontend\n * won't be supported.\n *\n * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support\n * @returns {boolean} Whether GOV.UK Frontend is supported on this page\n */\nfunction isSupported($scope = document.body) {\n  if (!$scope) {\n    return false;\n  }\n  return $scope.classList.contains('govuk-frontend-supported');\n}\nfunction isArray(option) {\n  return Array.isArray(option);\n}\nfunction isObject(option) {\n  return !!option && typeof option === 'object' && !isArray(option);\n}\nfunction isScope($scope) {\n  return !!$scope && ($scope instanceof Element || $scope instanceof Document);\n}\nfunction formatErrorMessage(Component, message) {\n  return `${Component.moduleName}: ${message}`;\n}\n/**\n * @typedef ComponentWithModuleName\n * @property {string} moduleName - Name of the component\n */\n\nexport { formatErrorMessage, getBreakpoint, isInitialised, isObject, isScope, isSupported, setFocus };\n//# sourceMappingURL=index.mjs.map\n","import { isObject, formatErrorMessage } from '../common/index.mjs';\n\nclass GOVUKFrontendError extends Error {\n  constructor(...args) {\n    super(...args);\n    this.name = 'GOVUKFrontendError';\n  }\n}\nclass SupportError extends GOVUKFrontendError {\n  /**\n   * Checks if GOV.UK Frontend is supported on this page\n   *\n   * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support\n   */\n  constructor($scope = document.body) {\n    const supportMessage = 'noModule' in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class=\"govuk-frontend-supported\">` from template `<script>` snippet' : 'GOV.UK Frontend is not supported in this browser';\n    super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type=\"module\">`');\n    this.name = 'SupportError';\n  }\n}\nclass ConfigError extends GOVUKFrontendError {\n  constructor(...args) {\n    super(...args);\n    this.name = 'ConfigError';\n  }\n}\nclass ElementError extends GOVUKFrontendError {\n  constructor(messageOrOptions) {\n    let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';\n    if (isObject(messageOrOptions)) {\n      const {\n        component,\n        identifier,\n        element,\n        expectedType\n      } = messageOrOptions;\n      message = identifier;\n      message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';\n      if (component) {\n        message = formatErrorMessage(component, message);\n      }\n    }\n    super(message);\n    this.name = 'ElementError';\n  }\n}\nclass InitError extends GOVUKFrontendError {\n  constructor(componentOrMessage) {\n    const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\\`$root\\`) already initialised`);\n    super(message);\n    this.name = 'InitError';\n  }\n}\n/**\n * @import { ComponentWithModuleName } from '../common/index.mjs'\n */\n\nexport { ConfigError, ElementError, GOVUKFrontendError, InitError, SupportError };\n//# sourceMappingURL=index.mjs.map\n","import { isInitialised, isSupported } from './common/index.mjs';\nimport { InitError, ElementError, SupportError } from './errors/index.mjs';\n\nclass Component {\n  /**\n   * Returns the root element of the component\n   *\n   * @protected\n   * @returns {RootElementType} - the root element of component\n   */\n  get $root() {\n    return this._$root;\n  }\n  constructor($root) {\n    this._$root = void 0;\n    const childConstructor = this.constructor;\n    if (typeof childConstructor.moduleName !== 'string') {\n      throw new InitError(`\\`moduleName\\` not defined in component`);\n    }\n    if (!($root instanceof childConstructor.elementType)) {\n      throw new ElementError({\n        element: $root,\n        component: childConstructor,\n        identifier: 'Root element (`$root`)',\n        expectedType: childConstructor.elementType.name\n      });\n    } else {\n      this._$root = $root;\n    }\n    childConstructor.checkSupport();\n    this.checkInitialised();\n    const moduleName = childConstructor.moduleName;\n    this.$root.setAttribute(`data-${moduleName}-init`, '');\n  }\n  checkInitialised() {\n    const constructor = this.constructor;\n    const moduleName = constructor.moduleName;\n    if (moduleName && isInitialised(this.$root, moduleName)) {\n      throw new InitError(constructor);\n    }\n  }\n  static checkSupport() {\n    if (!isSupported()) {\n      throw new SupportError();\n    }\n  }\n}\n\n/**\n * @typedef ChildClass\n * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component\n */\n\n/**\n * @typedef {typeof Component & ChildClass} ChildClassConstructor\n */\nComponent.elementType = HTMLElement;\n\nexport { Component };\n//# sourceMappingURL=component.mjs.map\n","import { Component } from '../component.mjs';\nimport { ConfigError } from '../errors/index.mjs';\nimport { isObject, formatErrorMessage, isScope } from './index.mjs';\n\nconst configOverride = Symbol.for('configOverride');\nclass ConfigurableComponent extends Component {\n  [configOverride](param) {\n    return {};\n  }\n\n  /**\n   * Returns the root element of the component\n   *\n   * @protected\n   * @returns {ConfigurationType} - the root element of component\n   */\n  get config() {\n    return this._config;\n  }\n  constructor($root, config) {\n    super($root);\n    this._config = void 0;\n    const childConstructor = this.constructor;\n    if (!isObject(childConstructor.defaults)) {\n      throw new ConfigError(formatErrorMessage(childConstructor, 'Config passed as parameter into constructor but no defaults defined'));\n    }\n    const datasetConfig = normaliseDataset(childConstructor, this._$root.dataset);\n    this._config = mergeConfigs(childConstructor.defaults, config != null ? config : {}, this[configOverride](datasetConfig), datasetConfig);\n  }\n}\nfunction normaliseString(value, property) {\n  const trimmedValue = value ? value.trim() : '';\n  let output;\n  let outputType = property == null ? void 0 : property.type;\n  if (!outputType) {\n    if (['true', 'false'].includes(trimmedValue)) {\n      outputType = 'boolean';\n    }\n    if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n      outputType = 'number';\n    }\n  }\n  switch (outputType) {\n    case 'boolean':\n      output = trimmedValue === 'true';\n      break;\n    case 'number':\n      output = Number(trimmedValue);\n      break;\n    default:\n      output = value;\n  }\n  return output;\n}\nfunction normaliseDataset(Component, dataset) {\n  if (!isObject(Component.schema)) {\n    throw new ConfigError(formatErrorMessage(Component, 'Config passed as parameter into constructor but no schema defined'));\n  }\n  const out = {};\n  const entries = Object.entries(Component.schema.properties);\n  for (const entry of entries) {\n    const [namespace, property] = entry;\n    const field = namespace.toString();\n    if (field in dataset) {\n      out[field] = normaliseString(dataset[field], property);\n    }\n    if ((property == null ? void 0 : property.type) === 'object') {\n      out[field] = extractConfigByNamespace(Component.schema, dataset, namespace);\n    }\n  }\n  return out;\n}\nfunction normaliseOptions(scopeOrOptions) {\n  let $scope = document;\n  let onError;\n  if (isObject(scopeOrOptions)) {\n    const options = scopeOrOptions;\n    if (isScope(options.scope) || options.scope === null) {\n      $scope = options.scope;\n    }\n    if (typeof options.onError === 'function') {\n      onError = options.onError;\n    }\n  }\n  if (isScope(scopeOrOptions)) {\n    $scope = scopeOrOptions;\n  } else if (scopeOrOptions === null) {\n    $scope = null;\n  } else if (typeof scopeOrOptions === 'function') {\n    onError = scopeOrOptions;\n  }\n  return {\n    scope: $scope,\n    onError\n  };\n}\nfunction mergeConfigs(...configObjects) {\n  const formattedConfigObject = {};\n  for (const configObject of configObjects) {\n    for (const key of Object.keys(configObject)) {\n      const option = formattedConfigObject[key];\n      const override = configObject[key];\n      if (isObject(option) && isObject(override)) {\n        formattedConfigObject[key] = mergeConfigs(option, override);\n      } else {\n        formattedConfigObject[key] = override;\n      }\n    }\n  }\n  return formattedConfigObject;\n}\nfunction validateConfig(schema, config) {\n  const validationErrors = [];\n  for (const [name, conditions] of Object.entries(schema)) {\n    const errors = [];\n    if (Array.isArray(conditions)) {\n      for (const {\n        required,\n        errorMessage\n      } of conditions) {\n        if (!required.every(key => !!config[key])) {\n          errors.push(errorMessage);\n        }\n      }\n      if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {\n        validationErrors.push(...errors);\n      }\n    }\n  }\n  return validationErrors;\n}\nfunction extractConfigByNamespace(schema, dataset, namespace) {\n  const property = schema.properties[namespace];\n  if ((property == null ? void 0 : property.type) !== 'object') {\n    return;\n  }\n  const newObject = {\n    [namespace]: {}\n  };\n  for (const [key, value] of Object.entries(dataset)) {\n    let current = newObject;\n    const keyParts = key.split('.');\n    for (const [index, name] of keyParts.entries()) {\n      if (isObject(current)) {\n        if (index < keyParts.length - 1) {\n          if (!isObject(current[name])) {\n            current[name] = {};\n          }\n          current = current[name];\n        } else if (key !== namespace) {\n          current[name] = normaliseString(value);\n        }\n      }\n    }\n  }\n  return newObject[namespace];\n}\n/**\n * Schema for component config\n *\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @typedef {object} Schema\n * @property {Record<keyof ConfigurationType, SchemaProperty | undefined>} properties - Schema properties\n * @property {SchemaCondition<ConfigurationType>[]} [anyOf] - List of schema conditions\n */\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n/**\n * Schema condition for component config\n *\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @typedef {object} SchemaCondition\n * @property {(keyof ConfigurationType)[]} required - List of required config fields\n * @property {string} errorMessage - Error message when required config fields not provided\n */\n/**\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef ChildClass\n * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component\n * @property {Schema<ConfigurationType>} [schema] - The schema of the component configuration\n * @property {ConfigurationType} [defaults] - The default values of the configuration of the component\n */\n/**\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef {typeof Component & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>\n */\n/**\n * @import { CompatibleClass, Config, CreateAllOptions, OnErrorCallback } from '../init.mjs'\n */\n\nexport { ConfigurableComponent, configOverride, extractConfigByNamespace, mergeConfigs, normaliseDataset, normaliseOptions, normaliseString, validateConfig };\n//# sourceMappingURL=configuration.mjs.map\n","import { isObject } from './common/index.mjs';\n\nclass I18n {\n  constructor(translations = {}, config = {}) {\n    var _config$locale;\n    this.translations = void 0;\n    this.locale = void 0;\n    this.translations = translations;\n    this.locale = (_config$locale = config.locale) != null ? _config$locale : document.documentElement.lang || 'en';\n  }\n  t(lookupKey, options) {\n    if (!lookupKey) {\n      throw new Error('i18n: lookup key missing');\n    }\n    let translation = this.translations[lookupKey];\n    if (typeof (options == null ? void 0 : options.count) === 'number' && isObject(translation)) {\n      const translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];\n      if (translationPluralForm) {\n        translation = translationPluralForm;\n      }\n    }\n    if (typeof translation === 'string') {\n      if (translation.match(/%{(.\\S+)}/)) {\n        if (!options) {\n          throw new Error('i18n: cannot replace placeholders in string if no option data provided');\n        }\n        return this.replacePlaceholders(translation, options);\n      }\n      return translation;\n    }\n    return lookupKey;\n  }\n  replacePlaceholders(translationString, options) {\n    const formatter = Intl.NumberFormat.supportedLocalesOf(this.locale).length ? new Intl.NumberFormat(this.locale) : undefined;\n    return translationString.replace(/%{(.\\S+)}/g, function (placeholderWithBraces, placeholderKey) {\n      if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {\n        const placeholderValue = options[placeholderKey];\n        if (placeholderValue === false || typeof placeholderValue !== 'number' && typeof placeholderValue !== 'string') {\n          return '';\n        }\n        if (typeof placeholderValue === 'number') {\n          return formatter ? formatter.format(placeholderValue) : `${placeholderValue}`;\n        }\n        return placeholderValue;\n      }\n      throw new Error(`i18n: no data found to replace ${placeholderWithBraces} placeholder in string`);\n    });\n  }\n  hasIntlPluralRulesSupport() {\n    return Boolean('PluralRules' in window.Intl && Intl.PluralRules.supportedLocalesOf(this.locale).length);\n  }\n  getPluralSuffix(lookupKey, count) {\n    count = Number(count);\n    if (!isFinite(count)) {\n      return 'other';\n    }\n    const translation = this.translations[lookupKey];\n    const preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : 'other';\n    if (isObject(translation)) {\n      if (preferredForm in translation) {\n        return preferredForm;\n      } else if ('other' in translation) {\n        console.warn(`i18n: Missing plural form \".${preferredForm}\" for \"${this.locale}\" locale. Falling back to \".other\".`);\n        return 'other';\n      }\n    }\n    throw new Error(`i18n: Plural form \".other\" is required for \"${this.locale}\" locale`);\n  }\n}\n\nexport { I18n };\n//# sourceMappingURL=i18n.mjs.map\n","function closestAttributeValue($element, attributeName) {\n  const $closestElementWithAttribute = $element.closest(`[${attributeName}]`);\n  return $closestElementWithAttribute ? $closestElementWithAttribute.getAttribute(attributeName) : null;\n}\n\nexport { closestAttributeValue };\n//# sourceMappingURL=closest-attribute-value.mjs.map\n","import { closestAttributeValue } from '../../common/closest-attribute-value.mjs';\nimport { ConfigurableComponent } from '../../common/configuration.mjs';\nimport { formatErrorMessage } from '../../common/index.mjs';\nimport { ElementError } from '../../errors/index.mjs';\nimport { I18n } from '../../i18n.mjs';\n\n/**\n * File upload component\n *\n * @preserve\n * @augments ConfigurableComponent<FileUploadConfig>\n */\nclass FileUpload extends ConfigurableComponent {\n  /**\n   * @param {Element | null} $root - File input element\n   * @param {FileUploadConfig} [config] - File Upload config\n   */\n  constructor($root, config = {}) {\n    super($root, config);\n    this.$input = void 0;\n    this.$button = void 0;\n    this.$status = void 0;\n    this.i18n = void 0;\n    this.id = void 0;\n    this.$announcements = void 0;\n    this.enteredAnotherElement = void 0;\n    const $input = this.$root.querySelector('input');\n    if ($input === null) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: 'File inputs (`<input type=\"file\">`)'\n      });\n    }\n    if ($input.type !== 'file') {\n      throw new ElementError(formatErrorMessage(FileUpload, 'File input (`<input type=\"file\">`) attribute (`type`) is not `file`'));\n    }\n    this.$input = $input;\n    if (!this.$input.id) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: 'File input (`<input type=\"file\">`) attribute (`id`)'\n      });\n    }\n    this.id = this.$input.id;\n    this.i18n = new I18n(this.config.i18n, {\n      locale: closestAttributeValue(this.$root, 'lang')\n    });\n    const $label = this.findLabel();\n    if (!$label.id) {\n      $label.id = `${this.id}-label`;\n    }\n    this.$input.id = `${this.id}-input`;\n    this.$input.setAttribute('hidden', 'true');\n    const $button = document.createElement('button');\n    $button.classList.add('govuk-file-upload-button');\n    $button.type = 'button';\n    $button.id = this.id;\n    $button.classList.add('govuk-file-upload-button--empty');\n    const ariaDescribedBy = this.$input.getAttribute('aria-describedby');\n    if (ariaDescribedBy) {\n      $button.setAttribute('aria-describedby', ariaDescribedBy);\n    }\n    const $status = document.createElement('span');\n    $status.className = 'govuk-body govuk-file-upload-button__status';\n    $status.setAttribute('aria-live', 'polite');\n    $status.innerText = this.i18n.t('noFileChosen');\n    $button.appendChild($status);\n    const commaSpan = document.createElement('span');\n    commaSpan.className = 'govuk-visually-hidden';\n    commaSpan.innerText = ', ';\n    commaSpan.id = `${this.id}-comma`;\n    $button.appendChild(commaSpan);\n    const containerSpan = document.createElement('span');\n    containerSpan.className = 'govuk-file-upload-button__pseudo-button-container';\n    const buttonSpan = document.createElement('span');\n    buttonSpan.className = 'govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button';\n    buttonSpan.innerText = this.i18n.t('chooseFilesButton');\n    containerSpan.appendChild(buttonSpan);\n    containerSpan.insertAdjacentText('beforeend', ' ');\n    const instructionSpan = document.createElement('span');\n    instructionSpan.className = 'govuk-body govuk-file-upload-button__instruction';\n    instructionSpan.innerText = this.i18n.t('dropInstruction');\n    containerSpan.appendChild(instructionSpan);\n    $button.appendChild(containerSpan);\n    $button.setAttribute('aria-labelledby', `${$label.id} ${commaSpan.id} ${$button.id}`);\n    $button.addEventListener('click', this.onClick.bind(this));\n    $button.addEventListener('dragover', event => {\n      event.preventDefault();\n    });\n    this.$root.insertAdjacentElement('afterbegin', $button);\n    this.$input.setAttribute('tabindex', '-1');\n    this.$input.setAttribute('aria-hidden', 'true');\n    this.$button = $button;\n    this.$status = $status;\n    this.$input.addEventListener('change', this.onChange.bind(this));\n    this.updateDisabledState();\n    this.observeDisabledState();\n    this.$announcements = document.createElement('span');\n    this.$announcements.classList.add('govuk-file-upload-announcements');\n    this.$announcements.classList.add('govuk-visually-hidden');\n    this.$announcements.setAttribute('aria-live', 'assertive');\n    this.$root.insertAdjacentElement('afterend', this.$announcements);\n    this.$button.addEventListener('drop', this.onDrop.bind(this));\n    document.addEventListener('dragenter', this.updateDropzoneVisibility.bind(this));\n    document.addEventListener('dragenter', () => {\n      this.enteredAnotherElement = true;\n    });\n    document.addEventListener('dragleave', () => {\n      if (!this.enteredAnotherElement && !this.$button.disabled) {\n        this.hideDraggingState();\n        this.$announcements.innerText = this.i18n.t('leftDropZone');\n      }\n      this.enteredAnotherElement = false;\n    });\n  }\n  updateDropzoneVisibility(event) {\n    if (this.$button.disabled) return;\n    if (event.target instanceof Node) {\n      if (this.$root.contains(event.target)) {\n        if (event.dataTransfer && this.canDrop(event.dataTransfer)) {\n          if (!this.$button.classList.contains('govuk-file-upload-button--dragging')) {\n            this.showDraggingState();\n            this.$announcements.innerText = this.i18n.t('enteredDropZone');\n          }\n        }\n      } else {\n        if (this.$button.classList.contains('govuk-file-upload-button--dragging')) {\n          this.hideDraggingState();\n          this.$announcements.innerText = this.i18n.t('leftDropZone');\n        }\n      }\n    }\n  }\n  showDraggingState() {\n    this.$button.classList.add('govuk-file-upload-button--dragging');\n  }\n  hideDraggingState() {\n    this.$button.classList.remove('govuk-file-upload-button--dragging');\n  }\n  onDrop(event) {\n    event.preventDefault();\n    if (event.dataTransfer && this.canFillInput(event.dataTransfer)) {\n      this.$input.files = event.dataTransfer.files;\n      this.$input.dispatchEvent(new CustomEvent('change'));\n      this.hideDraggingState();\n    }\n  }\n  canFillInput(dataTransfer) {\n    return this.matchesInputCapacity(dataTransfer.files.length);\n  }\n  canDrop(dataTransfer) {\n    if (dataTransfer.items.length) {\n      return this.matchesInputCapacity(countFileItems(dataTransfer.items));\n    }\n    if (dataTransfer.types.length) {\n      return dataTransfer.types.includes('Files');\n    }\n    return true;\n  }\n  matchesInputCapacity(numberOfFiles) {\n    if (this.$input.multiple) {\n      return numberOfFiles > 0;\n    }\n    return numberOfFiles === 1;\n  }\n  onChange() {\n    const fileCount = this.$input.files.length;\n    if (fileCount === 0) {\n      this.$status.innerText = this.i18n.t('noFileChosen');\n      this.$button.classList.add('govuk-file-upload-button--empty');\n    } else {\n      if (fileCount === 1) {\n        this.$status.innerText = this.$input.files[0].name;\n      } else {\n        this.$status.innerText = this.i18n.t('multipleFilesChosen', {\n          count: fileCount\n        });\n      }\n      this.$button.classList.remove('govuk-file-upload-button--empty');\n    }\n  }\n  findLabel() {\n    const $label = document.querySelector(`label[for=\"${this.$input.id}\"]`);\n    if (!$label) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: `Field label (\\`<label for=${this.$input.id}>\\`)`\n      });\n    }\n    return $label;\n  }\n  onClick() {\n    this.$input.click();\n  }\n  observeDisabledState() {\n    const observer = new MutationObserver(mutationList => {\n      for (const mutation of mutationList) {\n        if (mutation.type === 'attributes' && mutation.attributeName === 'disabled') {\n          this.updateDisabledState();\n        }\n      }\n    });\n    observer.observe(this.$input, {\n      attributes: true\n    });\n  }\n  updateDisabledState() {\n    this.$button.disabled = this.$input.disabled;\n    this.$root.classList.toggle('govuk-drop-zone--disabled', this.$button.disabled);\n  }\n}\n\n/**\n * Counts the number of `DataTransferItem` whose kind is `file`\n *\n * @param {DataTransferItemList} list - The list\n * @returns {number} - The number of items whose kind is `file` in the list\n */\nFileUpload.moduleName = 'govuk-file-upload';\nFileUpload.defaults = Object.freeze({\n  i18n: {\n    chooseFilesButton: 'Choose file',\n    dropInstruction: 'or drop file',\n    noFileChosen: 'No file chosen',\n    multipleFilesChosen: {\n      one: '%{count} file chosen',\n      other: '%{count} files chosen'\n    },\n    enteredDropZone: 'Entered drop zone',\n    leftDropZone: 'Left drop zone'\n  }\n});\nFileUpload.schema = Object.freeze({\n  properties: {\n    i18n: {\n      type: 'object'\n    }\n  }\n});\nfunction countFileItems(list) {\n  let result = 0;\n  for (let i = 0; i < list.length; i++) {\n    if (list[i].kind === 'file') {\n      result++;\n    }\n  }\n  return result;\n}\n\n/**\n * @typedef {HTMLInputElement & {files: FileList}} HTMLFileInputElement\n */\n\n/**\n * File upload config\n *\n * @see {@link FileUpload.defaults}\n * @typedef {object} FileUploadConfig\n * @property {FileUploadTranslations} [i18n=FileUpload.defaults.i18n] - File upload translations\n */\n\n/**\n * File upload translations\n *\n * @see {@link FileUpload.defaults.i18n}\n * @typedef {object} FileUploadTranslations\n *\n * Messages used by the component\n * @property {string} [chooseFile] - The text of the button that opens the file picker\n * @property {string} [dropInstruction] - The text informing users they can drop files\n * @property {TranslationPluralForms} [multipleFilesChosen] - The text displayed when multiple files\n *   have been chosen by the user\n * @property {string} [noFileChosen] - The text to displayed when no file has been chosen by the user\n * @property {string} [enteredDropZone] - The text announced by assistive technology\n *   when user drags files and enters the drop zone\n * @property {string} [leftDropZone] - The text announced by assistive technology\n *   when user drags files and leaves the drop zone without dropping\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n * @import { TranslationPluralForms } from '../../i18n.mjs'\n */\n\nexport { FileUpload };\n//# sourceMappingURL=file-upload.mjs.map\n","import { DigitalMarketplaceFrontendComponent } from '../../digitalmarketplace-frontend-component'\nimport { FileUpload } from 'govuk-frontend/dist/govuk/all.mjs'\n\n\nclass ComplianceCommunicationAttachmentListRowFileInput {\n  $dropZone: JQuery<HTMLElement>\n  $input: JQuery<HTMLInputElement>\n  $label: JQuery<HTMLLabelElement>\n  $hint: JQuery<HTMLElement>\n  $button: JQuery<HTMLButtonElement>\n  $comma: JQuery<HTMLElement>\n  $announcements: JQuery<HTMLElement>\n\n  constructor ($row: JQuery<HTMLElement>, column: number) {\n    const $column = $row.find(`.govuk-grid-column-one-half:nth-of-type(${column})`)\n\n    this.$dropZone = $column.find('.govuk-drop-zone')\n    this.$input = $column.find('input')\n    this.$label = $column.find<HTMLLabelElement>('.govuk-label')\n    this.$hint = $column.find('div.govuk-hint')\n    this.$button = $column.find('button')\n    this.$comma = $column.find('button > span.govuk-visually-hidden')\n    this.$announcements = $column.find('span.govuk-file-upload-announcements')\n  }\n\n  updateIndex (newIndex: number) {\n    const newName = (this.$input.attr('name') as string).replace(/\\d+/, newIndex.toString())\n    const newId = `input-${newName}`\n\n    if (this.$button.length) {\n      this.$label.attr('for', newId)\n      this.$label.attr('id', `${newId}-label`)\n  \n      this.$hint.attr('id', `${newId}-hint`)\n  \n      this.$input.attr('id', `${newId}-input`)\n      this.$input.attr('name', newName)\n      this.$input.attr('aria-describedby', `${newId}-hint`)\n  \n      this.$button.attr('id', newId)\n      this.$button.attr('aria-describedby', `${newId}-hint`)\n      this.$button.attr('aria-labelledby', `${newId}-label ${newId}-comma ${newId}`)\n  \n      this.$comma.attr('id', `${newId}-comma`)\n    } else {\n      this.$label.attr('for', newId)\n      this.$hint.attr('id', `${newId}-hint`)\n  \n      this.$input.attr('id', newId)\n      this.$input.attr('name', newName)\n      this.$input.attr('aria-describedby', `${newId}-hint`)\n    }\n  }\n\n  makeInteractable () {\n    if (!this.$button.length) {\n      return new FileUpload(this.$dropZone.get(0) as HTMLElement)\n    }\n  }\n\n  resetHtml () {\n    this.$label.removeAttr('id')\n    \n    this.$dropZone.removeAttr('data-govuk-file-upload-init')\n    \n    this.$button.remove()\n    \n    const id = this.$input.attr('id') as string\n\n    this.$input.removeAttr('hidden')\n    this.$input.removeAttr('aria-hidden')\n    this.$input.attr('id', id.substring(0, id.length - 6))\n\n    this.$announcements.remove()\n  }\n}\n\nclass ComplianceCommunicationAttachmentListRequiredInput {\n  $requiredSection: JQuery<HTMLElement>\n  $input: JQuery<HTMLInputElement>\n  $label: JQuery<HTMLLabelElement>\n\n  constructor ($row: JQuery<HTMLElement>) {\n    this.$requiredSection = $row.find('.dm-compliance-communication__attachments-item-required')\n    this.$input = this.$requiredSection.find<HTMLInputElement>('.govuk-checkboxes__item > input')\n    this.$label = this.$requiredSection.find<HTMLLabelElement>('.govuk-checkboxes__item > .govuk-label')\n  }\n\n  isChecked () {\n    return this.$input.is(':checked')\n  }\n\n  updateIndex (newIndex: number) {\n    const newName = (this.$input.attr('name') as string).replace(/\\d+/, newIndex.toString())\n    const newId = `input-${newName}`\n\n    this.$label.attr('for', newId)\n\n    this.$input.attr('id', newId)\n    this.$input.attr('name', newName)\n  }\n\n  checkRow () {\n    this.$requiredSection.toggleClass('govuk-visually-hidden', true)\n    this.$input.prop('checked', true)\n    this.$input.attr('tabindex', -1)\n    this.$input.attr('tabindex', -1)\n  }\n}\n\nclass ComplianceCommunicationAttachmentListRowRemoveButton {\n  attachmentListRow: ComplianceCommunicationAttachmentListRow\n  $button: JQuery<HTMLElement>\n  $removeButtonCounter: JQuery<HTMLElement>\n\n  constructor (attachmentListRow: ComplianceCommunicationAttachmentListRow, $row: JQuery<HTMLElement>) {\n    this.attachmentListRow = attachmentListRow\n    this.$button = $row.find('.dm-compliance-communication__attachments-item-remove')\n    this.$removeButtonCounter = this.$button.find('.dm-compliance-communication__attachments-item-remove-counter')\n  }\n\n  init () {\n    this.toggleVisibility(true)\n\n    this.$button.on('click', () => {\n      this.attachmentListRow.removeRow()\n    })\n  }\n\n  toggleVisibility (isShown: boolean) {\n    this.$button.toggleClass('govuk-visually-hidden', !isShown)\n\n    if (isShown) {\n      this.$button.removeAttr('tabindex')\n    } else {\n      this.$button.attr('tabindex', -1)\n    }\n  }\n\n  updateIndex (newIndex: number) {\n    this.$removeButtonCounter.text(newIndex + 1)\n  }\n}\n\nclass ComplianceCommunicationAttachmentListRow {\n  $row: JQuery<HTMLElement>\n  attachmentList: ComplianceCommunicationAttachments\n  index: number\n  $legendCounter: JQuery<HTMLElement>\n  attachmentListRowFileInput: ComplianceCommunicationAttachmentListRowFileInput\n  attachmentListRowRequiredInput: ComplianceCommunicationAttachmentListRequiredInput\n  attachmentListRowRemoveButton: ComplianceCommunicationAttachmentListRowRemoveButton\n\n  constructor (attachmentList: ComplianceCommunicationAttachments, index: number, $row: JQuery<HTMLElement>) {\n    this.$row = $row\n    this.attachmentList = attachmentList\n    this.index = index\n    this.$legendCounter = this.$row.find('.dm-compliance-communication__attachments-item-legend-counter')\n    this.attachmentListRowFileInput = new ComplianceCommunicationAttachmentListRowFileInput($row, 1)\n    this.attachmentListRowRequiredInput = new ComplianceCommunicationAttachmentListRequiredInput($row)\n    this.attachmentListRowRemoveButton = new ComplianceCommunicationAttachmentListRowRemoveButton(this, $row)\n  }\n\n  init () {\n    this.attachmentListRowRemoveButton.init()\n    this.attachmentListRowFileInput.makeInteractable()\n    this.attachmentListRowRequiredInput.checkRow()\n  }\n\n  updateIndex (newIndex: number) {\n    this.index = newIndex\n    this.attachmentListRowFileInput.updateIndex(newIndex)\n    this.attachmentListRowRequiredInput.updateIndex(newIndex)\n    this.attachmentListRowRemoveButton.updateIndex(newIndex)\n    this.$legendCounter.text(newIndex + 1)\n  }\n\n  removeRow () {\n    this.attachmentList.removeRow(this.index)\n    this.deleteRow()\n  }\n\n  deleteRow () {\n    this.$row.remove()\n  }\n\n  toggleRemoveButtonVisibility (isShown: boolean) {\n    this.attachmentListRowRemoveButton.toggleVisibility(isShown)\n  }\n\n  isRowChecked () {\n    return this.attachmentListRowRequiredInput.isChecked()\n  }\n}\n\nclass ComplianceCommunicationAttachmentListAddButton {\n  attachmentList: ComplianceCommunicationAttachments\n  $button: JQuery<HTMLButtonElement>\n  $buttonCounter: JQuery<HTMLElement>\n\n  constructor (attachmentList: ComplianceCommunicationAttachments, $button: JQuery<HTMLButtonElement>) {\n    this.attachmentList = attachmentList\n    this.$button = $button\n    this.$buttonCounter = $button.find('.dm-compliance-communication__attachments__js-remaining-counter')\n  }\n\n  init (numberOfRows: number) {\n    this.$button.on('click', () => {\n      this.attachmentList.addRow()\n    })\n\n    this.updateButtonText(this.attachmentList.maxNumberOfAttachments - numberOfRows)\n  }\n\n  updateButtonText (numberRemaining: number) {\n    this.$buttonCounter.text(numberRemaining)\n  }\n\n  toggleVisibility (isShown: boolean) {\n    this.$button.toggleClass('govuk-visually-hidden', !isShown)\n\n    if (isShown) {\n      this.$button.removeAttr('tabindex')\n    } else {\n      this.$button.attr('tabindex', -1)\n    }\n  }\n}\n\nclass ComplianceCommunicationAttachments implements DigitalMarketplaceFrontendComponent {\n  static moduleName = 'dm-compliance-communication-attachments'\n  $attachmentList: JQuery<HTMLElement>\n  $attachmentListItems: JQuery<HTMLElement>\n  attachmentListRows: ComplianceCommunicationAttachmentListRow[]\n  attachmentListTemplateRow: ComplianceCommunicationAttachmentListRow\n  attachmentListAddButton: ComplianceCommunicationAttachmentListAddButton\n  maxNumberOfAttachments: number\n\n  constructor ($attachmentList: JQuery<HTMLElement>) {\n    this.$attachmentList = $attachmentList\n    this.$attachmentListItems = this.$attachmentList.find('.dm-compliance-communication__attachments-items')\n    this.attachmentListRows = this.$attachmentListItems.find('.dm-compliance-communication__attachments-item').get().map((row, index) => new ComplianceCommunicationAttachmentListRow(this, index, $(row)))\n    this.attachmentListTemplateRow = new ComplianceCommunicationAttachmentListRow(this, 99, this.$attachmentList.find('.dm-compliance-communication__attachments-item-template > .dm-compliance-communication__attachments-item'))\n    this.attachmentListAddButton = new ComplianceCommunicationAttachmentListAddButton(this, this.$attachmentList.find<HTMLButtonElement>('.dm-compliance-communication__attachments-add'))\n    this.maxNumberOfAttachments = this.$attachmentList.data('maxNumberOfAttachments')\n  }\n\n  init () {\n    const rowsChecked = this.attachmentListRows.map((attachmentListRow) => attachmentListRow.isRowChecked())\n    let indexToDeleteFrom\n\n    if (rowsChecked.every((rowChecked) => !rowChecked)) {\n      indexToDeleteFrom = 0\n    } else {\n      indexToDeleteFrom = rowsChecked.indexOf(false)\n    }\n\n    if (indexToDeleteFrom >= 0) {\n      this.attachmentListRows.slice(indexToDeleteFrom).forEach((attachmentListRow) => attachmentListRow.deleteRow())\n      this.attachmentListRows.splice(indexToDeleteFrom)\n    }\n\n    this.attachmentListAddButton.init(this.attachmentListRows.length)\n    this.attachmentListRows.forEach((attachmentListRow) => attachmentListRow.init())\n\n    this.attachmentListTemplateRow.attachmentListRowFileInput.resetHtml()\n\n    this.updateIfMinRows()\n    this.updateAttachmentButton()\n  }\n\n  removeRow (indexToRemove: number) {\n    this.attachmentListRows.splice(indexToRemove, 1)\n\n    this.attachmentListRows.slice(indexToRemove).forEach((attachmentListRow, index) => {\n      attachmentListRow.updateIndex(indexToRemove + index)\n    })\n\n    this.updateIfMinRows()\n    this.updateAttachmentButton()\n\n    if (indexToRemove > 0) {\n      this.focusOnRow(indexToRemove)\n    } else {\n      this.attachmentListAddButton.$button.focus()\n    }\n  }\n\n  addRow () {\n    const numberOfRows = this.attachmentListRows.length\n\n    if (numberOfRows < this.maxNumberOfAttachments) {\n      const $newRow = this.attachmentListTemplateRow.$row.clone()\n      const attachmentListRow = new ComplianceCommunicationAttachmentListRow(this, numberOfRows, $newRow)\n\n      attachmentListRow.updateIndex(numberOfRows)\n\n      this.attachmentListRows.push(attachmentListRow)\n      this.$attachmentListItems.append($newRow)\n      this.attachmentListRows[numberOfRows].init()\n\n      this.updateIfMinRows()\n      this.updateAttachmentButton()\n      this.focusOnRow(numberOfRows)\n    }\n  }\n\n  updateIfMinRows () {\n    if (this.attachmentListRows.length !== 0) {\n      this.attachmentListRows[0].toggleRemoveButtonVisibility(true)\n    }\n  }\n\n  updateAttachmentButton () {\n    if (this.attachmentListRows.length === this.maxNumberOfAttachments) {\n      this.attachmentListAddButton.toggleVisibility(false)\n    } else {\n      this.attachmentListAddButton.toggleVisibility(true)\n      this.attachmentListAddButton.updateButtonText(this.maxNumberOfAttachments - this.attachmentListRows.length)\n    }\n  }\n\n  focusOnRow (targetIndexToFocus: number) {\n    const numberOfRows = this.attachmentListRows.length\n    let indexToFocus = targetIndexToFocus\n\n    if (targetIndexToFocus >= numberOfRows) {\n      indexToFocus = numberOfRows - 1\n    }\n\n    this.attachmentListRows[indexToFocus].attachmentListRowFileInput.$button.focus()\n  }\n}\n\nexport { ComplianceCommunicationAttachments }\n"],"names":["isInitialised","$root","moduleName","HTMLElement","hasAttribute","isSupported","$scope","document","body","classList","contains","isArray","option","Array","isObject","formatErrorMessage","Component","message","GOVUKFrontendError","_Error","_this","_len","arguments","length","args","_key","call","apply","concat","name","_inheritsLoose","_wrapNativeSuper","Error","SupportError","_GOVUKFrontendError","constructor","_this2","supportMessage","HTMLScriptElement","prototype","ConfigError","_GOVUKFrontendError2","_this3","_len2","_key2","ElementError","_GOVUKFrontendError3","messageOrOptions","_this4","component","identifier","element","expectedType","InitError","_GOVUKFrontendError4","componentOrMessage","_this5","_$root","childConstructor","elementType","checkSupport","checkInitialised","setAttribute","_proto","_createClass","key","get","configOverride","Symbol","ConfigurableComponent","_Component","config","_config","defaults","datasetConfig","normaliseDataset","dataset","mergeConfigs","param","normaliseString","value","property","trimmedValue","trim","output","outputType","type","includes","isFinite","Number","schema","out","entries","Object","properties","_i","_entries","entry","namespace","field","toString","extractConfigByNamespace","formattedConfigObject","configObjects","_i2","_configObjects","configObject","_i3","_Object$keys","keys","override","_newObject","newObject","_i5","_Object$entries2","_Object$entries2$_i","current","keyParts","split","_iterator2","_createForOfIteratorHelperLoose","_step2","done","_step2$value","index","I18n","translations","_config$locale","locale","documentElement","lang","t","lookupKey","options","translation","count","translationPluralForm","getPluralSuffix","match","replacePlaceholders","translationString","formatter","Intl","NumberFormat","supportedLocalesOf","undefined","replace","placeholderWithBraces","placeholderKey","hasOwnProperty","placeholderValue","format","hasIntlPluralRulesSupport","Boolean","window","PluralRules","preferredForm","select","console","warn","closestAttributeValue","$element","attributeName","$closestElementWithAttribute","closest","getAttribute","FileUpload","_ConfigurableComponen","$input","$button","$status","i18n","id","$announcements","enteredAnotherElement","querySelector","$label","findLabel","createElement","add","ariaDescribedBy","className","innerText","appendChild","commaSpan","containerSpan","buttonSpan","insertAdjacentText","instructionSpan","addEventListener","onClick","bind","event","preventDefault","insertAdjacentElement","onChange","updateDisabledState","observeDisabledState","onDrop","updateDropzoneVisibility","disabled","hideDraggingState","target","Node","dataTransfer","canDrop","showDraggingState","remove","canFillInput","files","dispatchEvent","CustomEvent","matchesInputCapacity","items","countFileItems","types","numberOfFiles","multiple","fileCount","click","observer","MutationObserver","mutationList","_iterator","_step","mutation","observe","attributes","toggle","freeze","chooseFilesButton","dropInstruction","noFileChosen","multipleFilesChosen","one","other","enteredDropZone","leftDropZone","list","result","i","kind"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFO,SAASA,aAAaA,CAACC,KAAK,EAAEC,UAAU,EAAE;EAC/C,OACED,KAAK,YAAYE,WAAW,IAC5BF,KAAK,CAACG,YAAY,CAAA,OAAA,GAASF,UAAU,GAAA,OAAO,CAAC;AAEjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,WAAWA,CAACC,MAAM,EAAkB;AAAA,EAAA,IAAxBA,MAAM,KAAA,MAAA,EAAA;IAANA,MAAM,GAAGC,QAAQ,CAACC,IAAI;AAAA,EAAA;EAChD,IAAI,CAACF,MAAM,EAAE;AACX,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,OAAOA,MAAM,CAACG,SAAS,CAACC,QAAQ,CAAC,0BAA0B,CAAC;AAC9D;AASA,SAASC,OAAOA,CAACC,MAAM,EAAE;AACvB,EAAA,OAAOC,KAAK,CAACF,OAAO,CAACC,MAAM,CAAC;AAC9B;AAUO,SAASE,QAAQA,CAACF,MAAM,EAAE;AAC/B,EAAA,OAAO,CAAC,CAACA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAI,CAACD,OAAO,CAACC,MAAM,CAAC;AACnE;AAsBO,SAASG,kBAAkBA,CAACC,SAAS,EAAEC,OAAO,EAAE;AACrD,EAAA,OAAUD,SAAS,CAACd,UAAU,GAAA,IAAA,GAAKe,OAAO;AAC5C;;AClIaC,IAAAA,kBAAkB,aAAAC,MAAA,EAAA;AAAe,EAAA,SAAAD,kBAAAA,GAAA;AAAA,IAAA,IAAAE,KAAA;AAAA,IAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAC,IAAA,GAAA,IAAAX,KAAA,CAAAQ,IAAA,GAAAI,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA,EAAA,EAAA;AAAAD,MAAAA,IAAA,CAAAC,IAAA,CAAA,GAAAH,SAAA,CAAAG,IAAA,CAAA;AAAA,IAAA;IAAAL,KAAA,GAAAD,MAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,MAAA,EAAA,CAAA,IAAA,CAAA,CAAAS,MAAA,CAAAJ,IAAA,CAAA,CAAA,IAAA,IAAA;IAAAJ,KAAA,CAC5CS,IAAI,GAAG,oBAAoB;AAAA,IAAA,OAAAT,KAAA;AAAA,EAAA;EAAAU,cAAA,CAAAZ,kBAAA,EAAAC,MAAA,CAAA;AAAA,EAAA,OAAAD,kBAAA;AAAA,CAAA,CAAAa,gBAAA,CADWC,KAAK,CAAA,CAAA;AAAA,IAOhCC,YAAY,aAAAC,mBAAA,EAAA;AAGvB;AACF;AACA;AACA;AACA;EACE,SAAAC,YAAAA,CAAY7B,MAAM,EAAkB;AAAA,IAAA,IAAA8B,MAAA;AAAA,IAAA,IAAxB9B,MAAM,KAAA,MAAA,EAAA;MAANA,MAAM,GAAGC,QAAQ,CAACC,IAAI;AAAA,IAAA;IAChC,IAAM6B,cAAc,GAClB,UAAU,IAAIC,iBAAiB,CAACC,SAAS,GACrC,gHAAgH,GAChH,kDAAkD;IAExDH,MAAA,GAAAF,mBAAA,CAAAR,IAAA,CAAA,IAAA,EACEpB,MAAM,GACF+B,cAAc,GACd,8DACN,CAAC,IAAA,IAAA;IAAAD,MAAA,CAjBHP,IAAI,GAAG,cAAc;AAAA,IAAA,OAAAO,MAAA;AAkBrB,EAAA;EAAAN,cAAA,CAAAG,YAAA,EAAAC,mBAAA,CAAA;AAAA,EAAA,OAAAD,YAAA;AAAA,CAAA,CAnBgCf,kBAAkB,CAAA;AAAA,IAyBvCsB,WAAW,aAAAC,oBAAA,EAAA;AAA4B,EAAA,SAAAD,WAAAA,GAAA;AAAA,IAAA,IAAAE,MAAA;AAAA,IAAA,KAAA,IAAAC,KAAA,GAAArB,SAAA,CAAAC,MAAA,EAAAC,IAAA,GAAA,IAAAX,KAAA,CAAA8B,KAAA,GAAAC,KAAA,GAAA,CAAA,EAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA,EAAA,EAAA;AAAApB,MAAAA,IAAA,CAAAoB,KAAA,CAAA,GAAAtB,SAAA,CAAAsB,KAAA,CAAA;AAAA,IAAA;IAAAF,MAAA,GAAAD,oBAAA,CAAAf,IAAA,CAAAC,KAAA,CAAAc,oBAAA,EAAA,CAAA,IAAA,CAAA,CAAAb,MAAA,CAAAJ,IAAA,CAAA,CAAA,IAAA,IAAA;IAAAkB,MAAA,CAClDb,IAAI,GAAG,aAAa;AAAA,IAAA,OAAAa,MAAA;AAAA,EAAA;EAAAZ,cAAA,CAAAU,WAAA,EAAAC,oBAAA,CAAA;AAAA,EAAA,OAAAD,WAAA;AAAA,CAAA,CADWtB,kBAAkB,CAAA;AAAA,IAOtC2B,YAAY,aAAAC,oBAAA,EAAA;EAmBvB,SAAAX,YAAAA,CAAYY,gBAAgB,EAAE;AAAA,IAAA,IAAAC,MAAA;IAC5B,IAAI/B,OAAO,GAAG,OAAO8B,gBAAgB,KAAK,QAAQ,GAAGA,gBAAgB,GAAG,EAAE;AAG1E,IAAA,IAAIjC,QAAQ,CAACiC,gBAAgB,CAAC,EAAE;AAC9B,MAAA,IAAQE,SAAS,GAAwCF,gBAAgB,CAAjEE,SAAS;QAAEC,UAAU,GAA4BH,gBAAgB,CAAtDG,UAAU;QAAEC,OAAO,GAAmBJ,gBAAgB,CAA1CI,OAAO;QAAEC,YAAA,GAAiBL,gBAAgB,CAAjCK,YAAA;AAExCnC,MAAAA,OAAO,GAAGiC,UAAU;MAGpBjC,OAAO,IAAIkC,OAAO,GAAA,kBAAA,IACKC,YAAY,WAAZA,YAAY,GAAI,aAAa,CAAA,GAChD,YAAY;AAGhB,MAAA,IAAIH,SAAS,EAAE;AACbhC,QAAAA,OAAO,GAAGF,kBAAkB,CAACkC,SAAS,EAAEhC,OAAO,CAAC;AAClD,MAAA;AACF,IAAA;AAEA+B,IAAAA,MAAA,GAAAF,oBAAA,CAAApB,IAAA,CAAA,IAAA,EAAMT,OAAO,CAAC,IAAA,IAAA;IAAA+B,MAAA,CAtChBnB,IAAI,GAAG,cAAc;AAAA,IAAA,OAAAmB,MAAA;AAuCrB,EAAA;EAAAlB,cAAA,CAAAe,YAAA,EAAAC,oBAAA,CAAA;AAAA,EAAA,OAAAD,YAAA;AAAA,CAAA,CAxCgC3B,kBAAkB,CAAA;AAAA,IA8CvCmC,SAAS,aAAAC,oBAAA,EAAA;EAOpB,SAAAnB,SAAAA,CAAYoB,kBAAkB,EAAE;AAAA,IAAA,IAAAC,MAAA;AAC9B,IAAA,IAAMvC,OAAO,GACX,OAAOsC,kBAAkB,KAAK,QAAQ,GAClCA,kBAAkB,GAClBxC,kBAAkB,CAChBwC,kBAAkB,8CAEpB,CAAC;AAEPC,IAAAA,MAAA,GAAAF,oBAAA,CAAA5B,IAAA,CAAA,IAAA,EAAMT,OAAO,CAAC,IAAA,IAAA;IAAAuC,MAAA,CAfhB3B,IAAI,GAAG,WAAW;AAAA,IAAA,OAAA2B,MAAA;AAgBlB,EAAA;EAAA1B,cAAA,CAAAuB,SAAA,EAAAC,oBAAA,CAAA;AAAA,EAAA,OAAAD,SAAA;AAAA,CAAA,CAjB6BnC,kBAAkB,CAAA;;IChGpCF,SAAS,GAAA,YAAA;EA+BpB,SAAAmB,SAAAA,CAAYlC,KAAK,EAAE;AAAA,IAAA,IAAA,CARnBwD,MAAM,GAAA,MAAA;AASJ,IAAA,IAAMC,gBAAgB,GACpB,IAAI,CAACvB,WACN;AASD,IAAA,IAAI,OAAOuB,gBAAgB,CAACxD,UAAU,KAAK,QAAQ,EAAE;MACnD,MAAM,IAAImD,SAAS,CAAA,uCAA0C,CAAC;AAChE,IAAA;AAEA,IAAA,IAAI,EAAEpD,KAAK,YAAYyD,gBAAgB,CAACC,WAAW,CAAC,EAAE;MACpD,MAAM,IAAId,YAAY,CAAC;AACrBM,QAAAA,OAAO,EAAElD,KAAK;AACdgD,QAAAA,SAAS,EAAES,gBAAgB;AAC3BR,QAAAA,UAAU,EAAE,wBAAwB;AACpCE,QAAAA,YAAY,EAAEM,gBAAgB,CAACC,WAAW,CAAC9B;AAC7C,OAAC,CAAC;AACJ,IAAA,CAAC,MAAM;MACL,IAAI,CAAC4B,MAAM,GAAmCxD,KAAM;AACtD,IAAA;IAEAyD,gBAAgB,CAACE,YAAY,EAAE;IAE/B,IAAI,CAACC,gBAAgB,EAAE;AAEvB,IAAA,IAAM3D,UAAU,GAAGwD,gBAAgB,CAACxD,UAAU;IAE9C,IAAI,CAACD,KAAK,CAAC6D,YAAY,WAAS5D,UAAU,GAAA,OAAA,EAAS,EAAE,CAAC;AACxD,EAAA;AAAA,EAAA,IAAA6D,MAAA,GAAA/C,SAAA,CAAAuB,SAAA;AAAAwB,EAAAA,MAAA,CAQAF,gBAAgB,GAAhB,SAAAA,gBAAgBA,GAAG;AACjB,IAAA,IAAM1B,WAAW,GAAyC,IAAI,CAACA,WAAY;AAC3E,IAAA,IAAMjC,UAAU,GAAGiC,WAAW,CAACjC,UAAU;IAEzC,IAAIA,UAAU,IAAIF,aAAa,CAAC,IAAI,CAACC,KAAK,EAAEC,UAAU,CAAC,EAAE;AACvD,MAAA,MAAM,IAAImD,SAAS,CAAClB,WAAW,CAAC;AAClC,IAAA;AACF,EAAA,CAAA;AAAAnB,EAAAA,SAAA,CAOO4C,YAAY,GAAnB,SAAOA,YAAYA,GAAG;IACpB,IAAI,CAACvD,WAAW,EAAE,EAAE;MAClB,MAAM,IAAI4B,YAAY,EAAE;AAC1B,IAAA;AACF,EAAA,CAAA;EAAA,OAAA+B,YAAA,CAAAhD,SAAA,EAAA,CAAA;IAAAiD,GAAA,EAAA,OAAA;IAAAC,GAAA;AAlFA;AACF;AACA;AACA;AACA;AACA;AACE,IAAA,SAAAA,MAAY;MACV,OAAO,IAAI,CAACT,MAAM;AACpB,IAAA;AAAA,GAAA,CAAA,CAAA;AAAA,CAAA,EAAA;AA6EF;AACA;AACA;AACA;AAEA;AACA;AACA;AArGazC,SAAS,CAIb2C,WAAW,GAAGxD,WAAW;;ACV3B,IAAMgE,cAAc,GAAGC,MAAM,CAAA,KAAA,CAAI,CAAC,gBAAgB,CAAA;AAAA,IAY5CC,qBAAqB,aAAAC,UAAA,EAAA;AA6ChC,EAAA,SAAAnC,qBAAAA,CAAYlC,KAAK,EAAEsE,MAAM,EAAE;AAAA,IAAA,IAAAnD,KAAA;AACzBA,IAAAA,KAAA,GAAAkD,UAAA,CAAA5C,IAAA,CAAA,IAAA,EAAMzB,KAAK,CAAC,IAAA,IAAA;AAAAmB,IAAAA,KAAA,CAVdoD,OAAO,GAAA,MAAA;AAYL,IAAA,IAAMd,gBAAgB,GACqCtC,KAAA,CAAKe,WAAY;AAE5E,IAAA,IAAI,CAACrB,QAAQ,CAAC4C,gBAAgB,CAACe,QAAQ,CAAC,EAAE;MACxC,MAAM,IAAIjC,WAAW,CACnBzB,kBAAkB,CAChB2C,gBAAgB,EAChB,qEACF,CACF,CAAC;AACH,IAAA;IAEA,IAAMgB,aAAa,GACjBC,gBAAgB,CAACjB,gBAAgB,EAAEtC,KAAA,CAAKqC,MAAM,CAACmB,OAAO,CACvD;IAEDxD,KAAA,CAAKoD,OAAO,GACVK,YAAY,CACVnB,gBAAgB,CAACe,QAAQ,EACzBF,MAAM,IAAA,IAAA,GAANA,MAAM,GAAI,EAAE,EACZnD,KAAA,CAAK+C,cAAc,CAAC,CAACO,aAAa,CAAC,EACnCA,aACF,CACD;AAAA,IAAA,OAAAtD,KAAA;AACH,EAAA;EAAAU,cAAA,CAAAuC,qBAAA,EAAAC,UAAA,CAAA;AAAA,EAAA,IAAAP,MAAA,GAAAM,qBAAA,CAAA9B,SAAA;AAAAwB,EAAAA,MAAA,CAtDCI,cAAc,CAAA,GAAf,UAAiBW,KAAK,EAAE;AACtB,IAAA,OAAO,EAAE;AACX,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EALE,OAAAd,YAAA,CAAAK,qBAAA,EAAA,CAAA;IAAAJ,GAAA,EAAA,QAAA;IAAAC,GAAA,EAMA,SAAAA,GAAAA,GAAa;MACX,OAAO,IAAI,CAACM,OAAO;AACrB,IAAA;AAAA,GAAA,CAAA,CAAA;AAAA,CAAA,CA9ByCxD,SAAS,CAAA;AA2F7C,SAAS+D,eAAeA,CAACC,KAAK,EAAEC,QAAQ,EAAE;EAC/C,IAAMC,YAAY,GAAGF,KAAK,GAAGA,KAAK,CAACG,IAAI,EAAE,GAAG,EAAE;AAE9C,EAAA,IAAIC,MAAM;AACV,EAAA,IAAIC,UAAU,GAAGJ,QAAQ,IAAA,IAAA,GAAA,MAAA,GAARA,QAAQ,CAAEK,IAAI;EAG/B,IAAI,CAACD,UAAU,EAAE;IACf,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAACE,QAAQ,CAACL,YAAY,CAAC,EAAE;AAC5CG,MAAAA,UAAU,GAAG,SAAS;AACxB,IAAA;AAIA,IAAA,IAAIH,YAAY,CAAC3D,MAAM,GAAG,CAAC,IAAIiE,QAAQ,CAACC,MAAM,CAACP,YAAY,CAAC,CAAC,EAAE;AAC7DG,MAAAA,UAAU,GAAG,QAAQ;AACvB,IAAA;AACF,EAAA;AAEA,EAAA,QAAQA,UAAU;AAChB,IAAA,KAAK,SAAS;MACZD,MAAM,GAAGF,YAAY,KAAK,MAAM;AAChC,MAAA;AAEF,IAAA,KAAK,QAAQ;AACXE,MAAAA,MAAM,GAAGK,MAAM,CAACP,YAAY,CAAC;AAC7B,MAAA;AAEF,IAAA;AACEE,MAAAA,MAAM,GAAGJ,KAAK;AAClB;AAEA,EAAA,OAAOI,MAAM;AACf;AAeO,SAAST,gBAAgBA,CAAC3D,SAAS,EAAE4D,OAAO,EAAE;AACnD,EAAA,IAAI,CAAC9D,QAAQ,CAACE,SAAS,CAAC0E,MAAM,CAAC,EAAE;IAC/B,MAAM,IAAIlD,WAAW,CACnBzB,kBAAkB,CAChBC,SAAS,EACT,mEACF,CACF,CAAC;AACH,EAAA;EAEA,IAAM2E,GAAG,GAAgC,EAAG;EAC5C,IAAMC,OAAO,GACXC,MAAM,CAACD,OAAO,CAAC5E,SAAS,CAAC0E,MAAM,CAACI,UAAU,CAC3C;AAGD,EAAA,KAAA,IAAAC,EAAA,GAAA,CAAA,EAAAC,QAAA,GAAoBJ,OAAO,EAAAG,EAAA,GAAAC,QAAA,CAAAzE,MAAA,EAAAwE,EAAA,EAAA,EAAE;AAAxB,IAAA,IAAME,KAAK,GAAAD,QAAA,CAAAD,EAAA,CAAA;IACd,IAAOG,SAAS,GAAcD,KAAK,CAAA,CAAA,CAAA;AAAjBhB,MAAAA,QAAQ,GAAIgB,KAAK,CAAA,CAAA,CAAA;AAGnC,IAAA,IAAME,KAAK,GAAGD,SAAS,CAACE,QAAQ,EAAE;IAElC,IAAID,KAAK,IAAIvB,OAAO,EAAE;AACpBe,MAAAA,GAAG,CAACQ,KAAK,CAAC,GAAGpB,eAAe,CAACH,OAAO,CAACuB,KAAK,CAAC,EAAElB,QAAQ,CAAC;AACxD,IAAA;IAMA,IAAI,CAAAA,QAAQ,IAAA,IAAA,GAAA,MAAA,GAARA,QAAQ,CAAEK,IAAI,MAAK,QAAQ,EAAE;AAC/BK,MAAAA,GAAG,CAACQ,KAAK,CAAC,GAAGE,wBAAwB,CACnCrF,SAAS,CAAC0E,MAAM,EAChBd,OAAO,EACPsB,SACF,CAAC;AACH,IAAA;AACF,EAAA;AAEA,EAAA,OAAOP,GAAG;AACZ;AAqDO,SAASd,YAAYA,GAAmB;EAG7C,IAAMyB,qBAAqB,GAAG,EAAE;AAAA,EAAA,KAAA,IAAAjF,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAHFgF,aAAa,GAAA,IAAA1F,KAAA,CAAAQ,IAAA,GAAAI,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA,EAAA,EAAA;AAAb8E,IAAAA,aAAa,CAAA9E,IAAA,CAAA,GAAAH,SAAA,CAAAG,IAAA,CAAA;AAAA,EAAA;AAM3C,EAAA,KAAA,IAAA+E,GAAA,GAAA,CAAA,EAAAC,cAAA,GAA2BF,aAAa,EAAAC,GAAA,GAAAC,cAAA,CAAAlF,MAAA,EAAAiF,GAAA,EAAA,EAAE;AAArC,IAAA,IAAME,YAAY,GAAAD,cAAA,CAAAD,GAAA,CAAA;AACrB,IAAA,KAAA,IAAAG,GAAA,GAAA,CAAA,EAAAC,YAAA,GAAkBf,MAAM,CAACgB,IAAI,CAACH,YAAY,CAAC,EAAAC,GAAA,GAAAC,YAAA,CAAArF,MAAA,EAAAoF,GAAA,EAAA,EAAE;AAAxC,MAAA,IAAM1C,GAAG,GAAA2C,YAAA,CAAAD,GAAA,CAAA;AACZ,MAAA,IAAM/F,MAAM,GAAG0F,qBAAqB,CAACrC,GAAG,CAAC;AACzC,MAAA,IAAM6C,QAAQ,GAAGJ,YAAY,CAACzC,GAAG,CAAC;MAKlC,IAAInD,QAAQ,CAACF,MAAM,CAAC,IAAIE,QAAQ,CAACgG,QAAQ,CAAC,EAAE;QAC1CR,qBAAqB,CAACrC,GAAG,CAAC,GAAGY,YAAY,CAACjE,MAAM,EAAEkG,QAAQ,CAAC;AAC7D,MAAA,CAAC,MAAM;AAELR,QAAAA,qBAAqB,CAACrC,GAAG,CAAC,GAAG6C,QAAQ;AACvC,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAOR,qBAAqB;AAC9B;AAoDO,SAASD,wBAAwBA,CAACX,MAAM,EAAEd,OAAO,EAAEsB,SAAS,EAAE;AAAA,EAAA,IAAAa,UAAA;AACnE,EAAA,IAAM9B,QAAQ,GAAGS,MAAM,CAACI,UAAU,CAACI,SAAS,CAAC;EAG7C,IAAI,CAAAjB,QAAQ,IAAA,IAAA,GAAA,MAAA,GAARA,QAAQ,CAAEK,IAAI,MAAK,QAAQ,EAAE;AAC/B,IAAA;AACF,EAAA;EAGA,IAAM0B,SAAS,IAAAD,UAAA,GAAA,EAAA,EAAAA,UAAA,CACZb,SAAS,CAAA,GAAG,EAAA,EAAAa,UAAA,CACb;AAEF,EAAA,KAAA,IAAAE,GAAA,GAAA,CAAA,EAAAC,gBAAA,GAA2BrB,MAAM,CAACD,OAAO,CAAChB,OAAO,CAAC,EAAAqC,GAAA,GAAAC,gBAAA,CAAA3F,MAAA,EAAA0F,GAAA,EAAA,EAAE;AAA/C,IAAA,IAAAE,mBAAA,GAAAD,gBAAA,CAAAD,GAAA,CAAA;AAAOhD,MAAAA,GAAG,GAAAkD,mBAAA,CAAA,CAAA,CAAA;AAAEnC,MAAAA,KAAK,GAAAmC,mBAAA,CAAA,CAAA,CAAA;IAEpB,IAAIC,OAAO,GAAGJ,SAAS;AAGvB,IAAA,IAAMK,QAAQ,GAAGpD,GAAG,CAACqD,KAAK,CAAC,GAAG,CAAC;AAQ/B,IAAA,KAAA,IAAAC,UAAA,GAAAC,+BAAA,CAA4BH,QAAQ,CAACzB,OAAO,EAAE,CAAA,EAAA6B,MAAA,IAAAA,MAAA,GAAAF,UAAA,EAAA,EAAAG,IAAA,GAAE;AAAA,MAAA,IAAAC,YAAA,GAAAF,MAAA,CAAAzC,KAAA;AAApC4C,QAAAA,KAAK,GAAAD,YAAA,CAAA,CAAA,CAAA;AAAE9F,QAAAA,IAAI,GAAA8F,YAAA,CAAA,CAAA,CAAA;AACrB,MAAA,IAAI7G,QAAQ,CAACsG,OAAO,CAAC,EAAE;AAErB,QAAA,IAAIQ,KAAK,GAAGP,QAAQ,CAAC9F,MAAM,GAAG,CAAC,EAAE;UAE/B,IAAI,CAACT,QAAQ,CAACsG,OAAO,CAACvF,IAAI,CAAC,CAAC,EAAE;AAC5BuF,YAAAA,OAAO,CAACvF,IAAI,CAAC,GAAG,EAAE;AACpB,UAAA;AAGAuF,UAAAA,OAAO,GAAGA,OAAO,CAACvF,IAAI,CAAC;AACzB,QAAA,CAAC,MAAM,IAAIoC,GAAG,KAAKiC,SAAS,EAAE;AAE5BkB,UAAAA,OAAO,CAACvF,IAAI,CAAC,GAAGkD,eAAe,CAACC,KAAK,CAAC;AACxC,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;EAEA,OAAOgC,SAAS,CAACd,SAAS,CAAC;AAC7B;;IC3Wa2B,IAAI,GAAA,YAAA;AAUf,EAAA,SAAA1F,IAAAA,CAAY2F,YAAY,EAAOvD,MAAM,EAAO;AAAA,IAAA,IAAhCuD,YAAY,KAAA,MAAA,EAAA;AAAZA,MAAAA,YAAY,GAAG,EAAE;AAAA,IAAA;AAAA,IAAA,IAAEvD,MAAM,KAAA,MAAA,EAAA;AAANA,MAAAA,MAAM,GAAG,EAAE;AAAA,IAAA;AAAE,IAAA,IAAAwD,cAAA;AAAA,IAAA,IAAA,CAT5CD,YAAY,GAAA,MAAA;AAAA,IAAA,IAAA,CACZE,MAAM,GAAA,MAAA;IAUJ,IAAI,CAACF,YAAY,GAAGA,YAAY;AAGhC,IAAA,IAAI,CAACE,MAAM,GAAA,CAAAD,cAAA,GAAGxD,MAAM,CAACyD,MAAM,KAAA,IAAA,GAAAD,cAAA,GAAKxH,QAAQ,CAAC0H,eAAe,CAACC,IAAI,IAAI,IAAK;AACxE,EAAA;AAAA,EAAA,IAAAnE,MAAA,GAAA8D,IAAA,CAAAtF,SAAA;EAAAwB,MAAA,CAaAoE,CAAC,GAAD,SAAAA,CAACA,CAACC,SAAS,EAAEC,OAAO,EAAE;IACpB,IAAI,CAACD,SAAS,EAAE;AAEd,MAAA,MAAM,IAAIpG,KAAK,CAAC,0BAA0B,CAAC;AAC7C,IAAA;AAGA,IAAA,IAAIsG,WAAW,GAAG,IAAI,CAACR,YAAY,CAACM,SAAS,CAAC;AAK9C,IAAA,IAAI,QAAOC,OAAO,IAAA,IAAA,GAAA,MAAA,GAAPA,OAAO,CAAEE,KAAK,CAAA,KAAK,QAAQ,IAAIzH,QAAQ,CAACwH,WAAW,CAAC,EAAE;AAC/D,MAAA,IAAME,qBAAqB,GACzBF,WAAW,CAAC,IAAI,CAACG,eAAe,CAACL,SAAS,EAAEC,OAAO,CAACE,KAAK,CAAC,CAAC;AAG7D,MAAA,IAAIC,qBAAqB,EAAE;AACzBF,QAAAA,WAAW,GAAGE,qBAAqB;AACrC,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,OAAOF,WAAW,KAAK,QAAQ,EAAE;AAGnC,MAAA,IAAIA,WAAW,CAACI,KAAK,CAAC,WAAW,CAAC,EAAE;QAClC,IAAI,CAACL,OAAO,EAAE;AACZ,UAAA,MAAM,IAAIrG,KAAK,CACb,wEACF,CAAC;AACH,QAAA;AAEA,QAAA,OAAO,IAAI,CAAC2G,mBAAmB,CAACL,WAAW,EAAED,OAAO,CAAC;AACvD,MAAA;AAEA,MAAA,OAAOC,WAAW;AACpB,IAAA;AAIA,IAAA,OAAOF,SAAS;AAClB,EAAA,CAAA;EAAArE,MAAA,CAWA4E,mBAAmB,GAAnB,SAAAA,mBAAmBA,CAACC,iBAAiB,EAAEP,OAAO,EAAE;IAC9C,IAAMQ,SAAS,GAAGC,IAAI,CAACC,YAAY,CAACC,kBAAkB,CAAC,IAAI,CAAChB,MAAM,CAAC,CAACzG,MAAM,GACtE,IAAIuH,IAAI,CAACC,YAAY,CAAC,IAAI,CAACf,MAAM,CAAC,GAClCiB,SAAS;IAEb,OAAOL,iBAAiB,CAACM,OAAO,CAC9B,YAAY,EAUZ,UAAUC,qBAAqB,EAAEC,cAAc,EAAE;AAC/C,MAAA,IAAIvD,MAAM,CAACtD,SAAS,CAAC8G,cAAc,CAAC3H,IAAI,CAAC2G,OAAO,EAAEe,cAAc,CAAC,EAAE;AACjE,QAAA,IAAME,gBAAgB,GAAGjB,OAAO,CAACe,cAAc,CAAC;AAIhD,QAAA,IACEE,gBAAgB,KAAK,KAAK,IACzB,OAAOA,gBAAgB,KAAK,QAAQ,IACnC,OAAOA,gBAAgB,KAAK,QAAS,EACvC;AACA,UAAA,OAAO,EAAE;AACX,QAAA;AAGA,QAAA,IAAI,OAAOA,gBAAgB,KAAK,QAAQ,EAAE;UACxC,OAAOT,SAAS,GACZA,SAAS,CAACU,MAAM,CAACD,gBAAgB,CAAC,GAAA,EAAA,GAC/BA,gBAAkB;AAC3B,QAAA;AAEA,QAAA,OAAOA,gBAAgB;AACzB,MAAA;AAEA,MAAA,MAAM,IAAItH,KAAK,CAAA,iCAAA,GACqBmH,qBAAqB,2BACzD,CAAC;AACH,IAAA,CACF,CAAC;AACH,EAAA,CAAA;AAAApF,EAAAA,MAAA,CAcAyF,yBAAyB,GAAzB,SAAAA,yBAAyBA,GAAG;IAC1B,OAAOC,OAAO,CACZ,aAAa,IAAIC,MAAM,CAACZ,IAAI,IAC1BA,IAAI,CAACa,WAAW,CAACX,kBAAkB,CAAC,IAAI,CAAChB,MAAM,CAAC,CAACzG,MACrD,CAAC;AACH,EAAA,CAAA;EAAAwC,MAAA,CAkBA0E,eAAe,GAAf,SAAAA,eAAeA,CAACL,SAAS,EAAEG,KAAK,EAAE;AAMhCA,IAAAA,KAAK,GAAG9C,MAAM,CAAC8C,KAAK,CAAC;AACrB,IAAA,IAAI,CAAC/C,QAAQ,CAAC+C,KAAK,CAAC,EAAE;AACpB,MAAA,OAAO,OAAO;AAChB,IAAA;AAGA,IAAA,IAAMD,WAAW,GAAG,IAAI,CAACR,YAAY,CAACM,SAAS,CAAC;IAKhD,IAAMwB,aAAa,GAAG,IAAI,CAACJ,yBAAyB,EAAE,GAClD,IAAIV,IAAI,CAACa,WAAW,CAAC,IAAI,CAAC3B,MAAM,CAAC,CAAC6B,MAAM,CAACtB,KAAK,CAAC,GAC/C,OAAO;AAGX,IAAA,IAAIzH,QAAQ,CAACwH,WAAW,CAAC,EAAE;MACzB,IAAIsB,aAAa,IAAItB,WAAW,EAAE;AAChC,QAAA,OAAOsB,aAAa;AAGtB,MAAA,CAAC,MAAM,IAAI,OAAO,IAAItB,WAAW,EAAE;QACjCwB,OAAO,CAACC,IAAI,CAAA,+BAAA,GACqBH,aAAa,iBAAU,IAAI,CAAC5B,MAAM,GAAA,wCACnE,CAAC;AAED,QAAA,OAAO,OAAO;AAChB,MAAA;AACF,IAAA;AAGA,IAAA,MAAM,IAAIhG,KAAK,CAAA,iDAAA,GACkC,IAAI,CAACgG,MAAM,cAC5D,CAAC;AACH,EAAA,CAAA;AAAA,EAAA,OAAAH,IAAA;AAAA,CAAA,EAAA;;AC3MK,SAASmC,qBAAqBA,CAACC,QAAQ,EAAEC,aAAa,EAAE;EAC7D,IAAMC,4BAA4B,GAAGF,QAAQ,CAACG,OAAO,CAAA,GAAA,GAAKF,aAAa,MAAG,CAAC;EAC3E,OAAOC,4BAA4B,GAC/BA,4BAA4B,CAACE,YAAY,CAACH,aAAa,CAAC,GACxD,IAAI;AACV;;ACPA;AACA;AACA;AACA;AACA;AACA;AALA,IAMaI,UAAU,aAAAC,qBAAA,EAAA;AAgCrB;AACF;AACA;AACA;AACE,EAAA,SAAApI,UAAAA,CAAYlC,KAAK,EAAEsE,MAAM,EAAO;AAAA,IAAA,IAAAnD,KAAA;AAAA,IAAA,IAAbmD,MAAM,KAAA,MAAA,EAAA;AAANA,MAAAA,MAAM,GAAG,EAAE;AAAA,IAAA;IAC5BnD,KAAA,GAAAmJ,qBAAA,CAAA7I,IAAA,OAAMzB,KAAK,EAAEsE,MAAM,CAAC,IAAA,IAAA;AAAAnD,IAAAA,KAAA,CAhCtBoJ,MAAM,GAAA,MAAA;AAAApJ,IAAAA,KAAA,CAKNqJ,OAAO,GAAA,MAAA;AAAArJ,IAAAA,KAAA,CAKPsJ,OAAO,GAAA,MAAA;AAAAtJ,IAAAA,KAAA,CAGPuJ,IAAI,GAAA,MAAA;AAAAvJ,IAAAA,KAAA,CAGJwJ,EAAE,GAAA,MAAA;AAAAxJ,IAAAA,KAAA,CAGFyJ,cAAc,GAAA,MAAA;AAAAzJ,IAAAA,KAAA,CAMd0J,qBAAqB,GAAA,MAAA;IASnB,IAAMN,MAAM,GAAGpJ,KAAA,CAAKnB,KAAK,CAAC8K,aAAa,CAAC,OAAO,CAAC;IAEhD,IAAIP,MAAM,KAAK,IAAI,EAAE;MACnB,MAAM,IAAI3H,YAAY,CAAC;AACrBI,QAAAA,SAAS,EAAEqH,UAAU;AACrBpH,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ,IAAA;AAEA,IAAA,IAAIsH,MAAM,CAAClF,IAAI,KAAK,MAAM,EAAE;MAC1B,MAAM,IAAIzC,YAAY,CACpB9B,kBAAkB,CAChBuJ,UAAU,EACV,qEACF,CACF,CAAC;AACH,IAAA;IAEAlJ,KAAA,CAAKoJ,MAAM,GAAwCA,MAAO;AAE1D,IAAA,IAAI,CAACpJ,KAAA,CAAKoJ,MAAM,CAACI,EAAE,EAAE;MACnB,MAAM,IAAI/H,YAAY,CAAC;AACrBI,QAAAA,SAAS,EAAEqH,UAAU;AACrBpH,QAAAA,UAAU,EAAE;AACd,OAAC,CAAC;AACJ,IAAA;AAEA9B,IAAAA,KAAA,CAAKwJ,EAAE,GAAGxJ,KAAA,CAAKoJ,MAAM,CAACI,EAAE;IAExBxJ,KAAA,CAAKuJ,IAAI,GAAG,IAAI9C,IAAI,CAACzG,KAAA,CAAKmD,MAAM,CAACoG,IAAI,EAAE;AAErC3C,MAAAA,MAAM,EAAEgC,qBAAqB,CAAC5I,KAAA,CAAKnB,KAAK,EAAE,MAAM;AAClD,KAAC,CAAC;AAEF,IAAA,IAAM+K,MAAM,GAAG5J,KAAA,CAAK6J,SAAS,EAAE;AAG/B,IAAA,IAAI,CAACD,MAAM,CAACJ,EAAE,EAAE;AACdI,MAAAA,MAAM,CAACJ,EAAE,GAAMxJ,KAAA,CAAKwJ,EAAE,GAAA,QAAQ;AAChC,IAAA;IAKAxJ,KAAA,CAAKoJ,MAAM,CAACI,EAAE,GAAMxJ,KAAA,CAAKwJ,EAAE,GAAA,QAAQ;IAGnCxJ,KAAA,CAAKoJ,MAAM,CAAC1G,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;AAG1C,IAAA,IAAM2G,OAAO,GAAGlK,QAAQ,CAAC2K,aAAa,CAAC,QAAQ,CAAC;AAChDT,IAAAA,OAAO,CAAChK,SAAS,CAAC0K,GAAG,CAAC,0BAA0B,CAAC;IACjDV,OAAO,CAACnF,IAAI,GAAG,QAAQ;AACvBmF,IAAAA,OAAO,CAACG,EAAE,GAAGxJ,KAAA,CAAKwJ,EAAE;AACpBH,IAAAA,OAAO,CAAChK,SAAS,CAAC0K,GAAG,CAAC,iCAAiC,CAAC;IAIxD,IAAMC,eAAe,GAAGhK,KAAA,CAAKoJ,MAAM,CAACH,YAAY,CAAC,kBAAkB,CAAC;AACpE,IAAA,IAAIe,eAAe,EAAE;AACnBX,MAAAA,OAAO,CAAC3G,YAAY,CAAC,kBAAkB,EAAEsH,eAAe,CAAC;AAC3D,IAAA;AAGA,IAAA,IAAMV,OAAO,GAAGnK,QAAQ,CAAC2K,aAAa,CAAC,MAAM,CAAC;IAC9CR,OAAO,CAACW,SAAS,GAAG,6CAA6C;AACjEX,IAAAA,OAAO,CAAC5G,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC;IAC3C4G,OAAO,CAACY,SAAS,GAAGlK,KAAA,CAAKuJ,IAAI,CAACxC,CAAC,CAAC,cAAc,CAAC;AAE/CsC,IAAAA,OAAO,CAACc,WAAW,CAACb,OAAO,CAAC;AAE5B,IAAA,IAAMc,SAAS,GAAGjL,QAAQ,CAAC2K,aAAa,CAAC,MAAM,CAAC;IAChDM,SAAS,CAACH,SAAS,GAAG,uBAAuB;IAC7CG,SAAS,CAACF,SAAS,GAAG,IAAI;AAC1BE,IAAAA,SAAS,CAACZ,EAAE,GAAMxJ,KAAA,CAAKwJ,EAAE,GAAA,QAAQ;AAEjCH,IAAAA,OAAO,CAACc,WAAW,CAACC,SAAS,CAAC;AAE9B,IAAA,IAAMC,aAAa,GAAGlL,QAAQ,CAAC2K,aAAa,CAAC,MAAM,CAAC;IACpDO,aAAa,CAACJ,SAAS,GACrB,mDAAmD;AAErD,IAAA,IAAMK,UAAU,GAAGnL,QAAQ,CAAC2K,aAAa,CAAC,MAAM,CAAC;IACjDQ,UAAU,CAACL,SAAS,GAClB,8EAA8E;IAChFK,UAAU,CAACJ,SAAS,GAAGlK,KAAA,CAAKuJ,IAAI,CAACxC,CAAC,CAAC,mBAAmB,CAAC;AAEvDsD,IAAAA,aAAa,CAACF,WAAW,CAACG,UAAU,CAAC;AAIrCD,IAAAA,aAAa,CAACE,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC;AAElD,IAAA,IAAMC,eAAe,GAAGrL,QAAQ,CAAC2K,aAAa,CAAC,MAAM,CAAC;IACtDU,eAAe,CAACP,SAAS,GACvB,kDAAkD;IACpDO,eAAe,CAACN,SAAS,GAAGlK,KAAA,CAAKuJ,IAAI,CAACxC,CAAC,CAAC,iBAAiB,CAAC;AAE1DsD,IAAAA,aAAa,CAACF,WAAW,CAACK,eAAe,CAAC;AAE1CnB,IAAAA,OAAO,CAACc,WAAW,CAACE,aAAa,CAAC;AAClChB,IAAAA,OAAO,CAAC3G,YAAY,CAClB,iBAAiB,EACdkH,MAAM,CAACJ,EAAE,GAAA,GAAA,GAAIY,SAAS,CAACZ,EAAE,GAAA,GAAA,GAAIH,OAAO,CAACG,EAC1C,CAAC;AACDH,IAAAA,OAAO,CAACoB,gBAAgB,CAAC,OAAO,EAAEzK,KAAA,CAAK0K,OAAO,CAACC,IAAI,CAAA3K,KAAK,CAAC,CAAC;AAC1DqJ,IAAAA,OAAO,CAACoB,gBAAgB,CAAC,UAAU,EAAG,UAAAG,KAAK,EAAK;MAE9CA,KAAK,CAACC,cAAc,EAAE;AACxB,IAAA,CAAC,CAAC;IAGF7K,KAAA,CAAKnB,KAAK,CAACiM,qBAAqB,CAAC,YAAY,EAAEzB,OAAO,CAAC;IAEvDrJ,KAAA,CAAKoJ,MAAM,CAAC1G,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1C1C,KAAA,CAAKoJ,MAAM,CAAC1G,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAG/C1C,KAAA,CAAKqJ,OAAO,GAAGA,OAAO;IACtBrJ,KAAA,CAAKsJ,OAAO,GAAGA,OAAO;AAGtBtJ,IAAAA,KAAA,CAAKoJ,MAAM,CAACqB,gBAAgB,CAAC,QAAQ,EAAEzK,KAAA,CAAK+K,QAAQ,CAACJ,IAAI,CAAA3K,KAAK,CAAC,CAAC;IAGhEA,KAAA,CAAKgL,mBAAmB,EAAE;IAC1BhL,KAAA,CAAKiL,oBAAoB,EAAE;IAI3BjL,KAAA,CAAKyJ,cAAc,GAAGtK,QAAQ,CAAC2K,aAAa,CAAC,MAAM,CAAC;IACpD9J,KAAA,CAAKyJ,cAAc,CAACpK,SAAS,CAAC0K,GAAG,CAAC,iCAAiC,CAAC;IACpE/J,KAAA,CAAKyJ,cAAc,CAACpK,SAAS,CAAC0K,GAAG,CAAC,uBAAuB,CAAC;IAC1D/J,KAAA,CAAKyJ,cAAc,CAAC/G,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC;IAC1D1C,KAAA,CAAKnB,KAAK,CAACiM,qBAAqB,CAAC,UAAU,EAAE9K,KAAA,CAAKyJ,cAAc,CAAC;AAIjEzJ,IAAAA,KAAA,CAAKqJ,OAAO,CAACoB,gBAAgB,CAAC,MAAM,EAAEzK,KAAA,CAAKkL,MAAM,CAACP,IAAI,CAAA3K,KAAK,CAAC,CAAC;AAa7Db,IAAAA,QAAQ,CAACsL,gBAAgB,CACvB,WAAW,EACXzK,KAAA,CAAKmL,wBAAwB,CAACR,IAAI,CAAA3K,KAAK,CACzC,CAAC;AAQDb,IAAAA,QAAQ,CAACsL,gBAAgB,CAAC,WAAW,EAAE,YAAM;MAC3CzK,KAAA,CAAK0J,qBAAqB,GAAG,IAAI;AACnC,IAAA,CAAC,CAAC;AAEFvK,IAAAA,QAAQ,CAACsL,gBAAgB,CAAC,WAAW,EAAE,YAAM;MAC3C,IAAI,CAACzK,KAAA,CAAK0J,qBAAqB,IAAI,CAAC1J,KAAA,CAAKqJ,OAAO,CAAC+B,QAAQ,EAAE;QACzDpL,KAAA,CAAKqL,iBAAiB,EAAE;AACxBrL,QAAAA,KAAA,CAAKyJ,cAAc,CAACS,SAAS,GAAGlK,KAAA,CAAKuJ,IAAI,CAACxC,CAAC,CAAC,cAAc,CAAC;AAC7D,MAAA;MAEA/G,KAAA,CAAK0J,qBAAqB,GAAG,KAAK;AACpC,IAAA,CAAC,CAAC;AAAA,IAAA,OAAA1J,KAAA;AACJ,EAAA;EAAAU,cAAA,CAAAwI,UAAA,EAAAC,qBAAA,CAAA;AAAA,EAAA,IAAAxG,MAAA,GAAAuG,UAAA,CAAA/H,SAAA;AAAAwB,EAAAA,MAAA,CAQAwI,wBAAwB,GAAxB,SAAAA,wBAAwBA,CAACP,KAAK,EAAE;AAC9B,IAAA,IAAI,IAAI,CAACvB,OAAO,CAAC+B,QAAQ,EAAE;AAI3B,IAAA,IAAIR,KAAK,CAACU,MAAM,YAAYC,IAAI,EAAE;MAChC,IAAI,IAAI,CAAC1M,KAAK,CAACS,QAAQ,CAACsL,KAAK,CAACU,MAAM,CAAC,EAAE;AACrC,QAAA,IAAIV,KAAK,CAACY,YAAY,IAAI,IAAI,CAACC,OAAO,CAACb,KAAK,CAACY,YAAY,CAAC,EAAE;UAG1D,IACE,CAAC,IAAI,CAACnC,OAAO,CAAChK,SAAS,CAACC,QAAQ,CAC9B,oCACF,CAAC,EACD;YACA,IAAI,CAACoM,iBAAiB,EAAE;AACxB,YAAA,IAAI,CAACjC,cAAc,CAACS,SAAS,GAAG,IAAI,CAACX,IAAI,CAACxC,CAAC,CAAC,iBAAiB,CAAC;AAChE,UAAA;AACF,QAAA;AACF,MAAA,CAAC,MAAM;QAIL,IACE,IAAI,CAACsC,OAAO,CAAChK,SAAS,CAACC,QAAQ,CAAC,oCAAoC,CAAC,EACrE;UACA,IAAI,CAAC+L,iBAAiB,EAAE;AACxB,UAAA,IAAI,CAAC5B,cAAc,CAACS,SAAS,GAAG,IAAI,CAACX,IAAI,CAACxC,CAAC,CAAC,cAAc,CAAC;AAC7D,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA,CAAA;AAAApE,EAAAA,MAAA,CAOA+I,iBAAiB,GAAjB,SAAAA,iBAAiBA,GAAG;IAClB,IAAI,CAACrC,OAAO,CAAChK,SAAS,CAAC0K,GAAG,CAAC,oCAAoC,CAAC;AAClE,EAAA,CAAA;AAAApH,EAAAA,MAAA,CAOA0I,iBAAiB,GAAjB,SAAAA,iBAAiBA,GAAG;IAClB,IAAI,CAAChC,OAAO,CAAChK,SAAS,CAACsM,MAAM,CAAC,oCAAoC,CAAC;AACrE,EAAA,CAAA;AAAAhJ,EAAAA,MAAA,CAQAuI,MAAM,GAAN,SAAAA,MAAMA,CAACN,KAAK,EAAE;IACZA,KAAK,CAACC,cAAc,EAAE;AAEtB,IAAA,IAAID,KAAK,CAACY,YAAY,IAAI,IAAI,CAACI,YAAY,CAAChB,KAAK,CAACY,YAAY,CAAC,EAAE;MAC/D,IAAI,CAACpC,MAAM,CAACyC,KAAK,GAAGjB,KAAK,CAACY,YAAY,CAACK,KAAK;MAK5C,IAAI,CAACzC,MAAM,CAAC0C,aAAa,CAAC,IAAIC,WAAW,CAAC,QAAQ,CAAC,CAAC;MAEpD,IAAI,CAACV,iBAAiB,EAAE;AAC1B,IAAA;AACF,EAAA,CAAA;AAAA1I,EAAAA,MAAA,CASAiJ,YAAY,GAAZ,SAAAA,YAAYA,CAACJ,YAAY,EAAE;IACzB,OAAO,IAAI,CAACQ,oBAAoB,CAACR,YAAY,CAACK,KAAK,CAAC1L,MAAM,CAAC;AAC7D,EAAA,CAAA;AAAAwC,EAAAA,MAAA,CAYA8I,OAAO,GAAP,SAAAA,OAAOA,CAACD,YAAY,EAAE;AAEpB,IAAA,IAAIA,YAAY,CAACS,KAAK,CAAC9L,MAAM,EAAE;MAC7B,OAAO,IAAI,CAAC6L,oBAAoB,CAACE,cAAc,CAACV,YAAY,CAACS,KAAK,CAAC,CAAC;AACtE,IAAA;AAGA,IAAA,IAAIT,YAAY,CAACW,KAAK,CAAChM,MAAM,EAAE;AAC7B,MAAA,OAAOqL,YAAY,CAACW,KAAK,CAAChI,QAAQ,CAAC,OAAO,CAAC;AAC7C,IAAA;AAIA,IAAA,OAAO,IAAI;AACb,EAAA,CAAA;AAAAxB,EAAAA,MAAA,CASAqJ,oBAAoB,GAApB,SAAAA,oBAAoBA,CAACI,aAAa,EAAE;AAClC,IAAA,IAAI,IAAI,CAAChD,MAAM,CAACiD,QAAQ,EAAE;MACxB,OAAOD,aAAa,GAAG,CAAC;AAC1B,IAAA;IAEA,OAAOA,aAAa,KAAK,CAAC;AAC5B,EAAA,CAAA;AAAAzJ,EAAAA,MAAA,CAOAoI,QAAQ,GAAR,SAAAA,QAAQA,GAAG;IACT,IAAMuB,SAAS,GAAG,IAAI,CAAClD,MAAM,CAACyC,KAAK,CAAC1L,MAAM;IAE1C,IAAImM,SAAS,KAAK,CAAC,EAAE;AAEnB,MAAA,IAAI,CAAChD,OAAO,CAACY,SAAS,GAAG,IAAI,CAACX,IAAI,CAACxC,CAAC,CAAC,cAAc,CAAC;MACpD,IAAI,CAACsC,OAAO,CAAChK,SAAS,CAAC0K,GAAG,CAAC,iCAAiC,CAAC;AAC/D,IAAA,CAAC,MAAM;MACL,IAEEuC,SAAS,KAAK,CAAC,EACf;AACA,QAAA,IAAI,CAAChD,OAAO,CAACY,SAAS,GAAG,IAAI,CAACd,MAAM,CAACyC,KAAK,CAAC,CAAC,CAAC,CAACpL,IAAI;AACpD,MAAA,CAAC,MAAM;AAEL,QAAA,IAAI,CAAC6I,OAAO,CAACY,SAAS,GAAG,IAAI,CAACX,IAAI,CAACxC,CAAC,CAAC,qBAAqB,EAAE;AAC1DI,UAAAA,KAAK,EAAEmF;AACT,SAAC,CAAC;AACJ,MAAA;MAEA,IAAI,CAACjD,OAAO,CAAChK,SAAS,CAACsM,MAAM,CAAC,iCAAiC,CAAC;AAClE,IAAA;AACF,EAAA,CAAA;AAAAhJ,EAAAA,MAAA,CASAkH,SAAS,GAAT,SAAAA,SAASA,GAAG;AAEV,IAAA,IAAMD,MAAM,GAAGzK,QAAQ,CAACwK,aAAa,CAAA,cAAA,GAAe,IAAI,CAACP,MAAM,CAACI,EAAE,GAAA,KAAI,CAAC;IAEvE,IAAI,CAACI,MAAM,EAAE;MACX,MAAM,IAAInI,YAAY,CAAC;AACrBI,QAAAA,SAAS,EAAEqH,UAAU;AACrBpH,QAAAA,UAAU,EAAA,2BAAA,GAA+B,IAAI,CAACsH,MAAM,CAACI,EAAE,GAAA;AACzD,OAAC,CAAC;AACJ,IAAA;AAEA,IAAA,OAAOI,MAAM;AACf,EAAA,CAAA;AAAAjH,EAAAA,MAAA,CAOA+H,OAAO,GAAP,SAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,CAACtB,MAAM,CAACmD,KAAK,EAAE;AACrB,EAAA,CAAA;AAAA5J,EAAAA,MAAA,CAOAsI,oBAAoB,GAApB,SAAAA,oBAAoBA,GAAG;AAAA,IAAA,IAAAjK,MAAA,GAAA,IAAA;AACrB,IAAA,IAAMwL,QAAQ,GAAG,IAAIC,gBAAgB,CAAE,UAAAC,YAAY,EAAK;AACtD,MAAA,KAAA,IAAAC,SAAA,GAAAvG,+BAAA,CAAuBsG,YAAY,CAAA,EAAAE,KAAA,EAAA,CAAA,CAAAA,KAAA,GAAAD,SAAA,EAAA,EAAArG,IAAA,GAAE;AAAA,QAAA,IAA1BuG,QAAQ,GAAAD,KAAA,CAAAhJ,KAAA;QACjB,IACEiJ,QAAQ,CAAC3I,IAAI,KAAK,YAAY,IAC9B2I,QAAQ,CAAC/D,aAAa,KAAK,UAAU,EACrC;UACA9H,MAAI,CAACgK,mBAAmB,EAAE;AAC5B,QAAA;AACF,MAAA;AACF,IAAA,CAAC,CAAC;AAEFwB,IAAAA,QAAQ,CAACM,OAAO,CAAC,IAAI,CAAC1D,MAAM,EAAE;AAC5B2D,MAAAA,UAAU,EAAE;AACd,KAAC,CAAC;AACJ,EAAA,CAAA;AAAApK,EAAAA,MAAA,CAOAqI,mBAAmB,GAAnB,SAAAA,mBAAmBA,GAAG;IACpB,IAAI,CAAC3B,OAAO,CAAC+B,QAAQ,GAAG,IAAI,CAAChC,MAAM,CAACgC,QAAQ;AAE5C,IAAA,IAAI,CAACvM,KAAK,CAACQ,SAAS,CAAC2N,MAAM,CACzB,2BAA2B,EAC3B,IAAI,CAAC3D,OAAO,CAAC+B,QACf,CAAC;AACH,EAAA,CAAA;AAAA,EAAA,OAAAlC,UAAA;AAAA,CAAA,CAtb8BjG,qBAAqB,CAAA;AAierD;AACA;AACA;AACA;AACA;AACA;AAteaiG,UAAU,CA2bdpK,UAAU,GAAG,mBAAmB;AA3b5BoK,UAAU,CAocd7F,QAAQ,GAAGoB,MAAM,CAACwI,MAAM,CAAC;AAC9B1D,EAAAA,IAAI,EAAE;AACJ2D,IAAAA,iBAAiB,EAAE,aAAa;AAChCC,IAAAA,eAAe,EAAE,cAAc;AAC/BC,IAAAA,YAAY,EAAE,gBAAgB;AAC9BC,IAAAA,mBAAmB,EAAE;AAGnBC,MAAAA,GAAG,EAAE,sBAAsB;AAC3BC,MAAAA,KAAK,EAAE;AACR,KAAA;AACDC,IAAAA,eAAe,EAAE,mBAAmB;AACpCC,IAAAA,YAAY,EAAE;AAChB;AACF,CAAC,CAAC;AAldSvE,UAAU,CA0dd5E,MAAM,GAAGG,MAAM,CAACwI,MAAM,CAAC;AAC5BvI,EAAAA,UAAU,EAAE;AACV6E,IAAAA,IAAI,EAAE;AAAErF,MAAAA,IAAI,EAAE;AAAS;AACzB;AACF,CAAC,CAAC;AASJ,SAASgI,cAAcA,CAACwB,IAAI,EAAE;EAC5B,IAAIC,MAAM,GAAG,CAAC;AAId,EAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACvN,MAAM,EAAEyN,CAAC,EAAE,EAAE;IACpC,IAAIF,IAAI,CAACE,CAAC,CAAC,CAACC,IAAI,KAAK,MAAM,EAAE;AAC3BF,MAAAA,MAAM,EAAE;AACV,IAAA;AACF,EAAA;AACA,EAAA,OAAOA,MAAM;AACf;;AC1fA,MAAM,iDAAiD,CAAA;AACrD,IAAA,SAAS;AACT,IAAA,MAAM;AACN,IAAA,MAAM;AACN,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,cAAc;IAEd,WAAA,CAAa,IAAyB,EAAE,MAAc,EAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA,wCAAA,EAA2C,MAAM,CAAA,CAAA,CAAG,CAAC;QAE/E,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAmB,cAAc,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC;IAC5E;AAEA,IAAA,WAAW,CAAE,QAAgB,EAAA;QAC3B,MAAM,OAAO,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAY,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxF,QAAA,MAAM,KAAK,GAAG,CAAA,MAAA,EAAS,OAAO,EAAE;AAEhC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,CAAC;YAExC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO,CAAC;YAEtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO,CAAC;YAErD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO,CAAC;AACtD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAA,EAAG,KAAK,UAAU,KAAK,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,CAAC;YAE9E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,MAAA,CAAQ,CAAC;QAC1C;aAAO;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO,CAAC;YAEtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAA,EAAG,KAAK,CAAA,KAAA,CAAO,CAAC;QACvD;IACF;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACxB,YAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAgB,CAAC;QAC7D;IACF;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAE5B,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,6BAA6B,CAAC;AAExD,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAErB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAW;AAE3C,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;IAC9B;AACD;AAED,MAAM,kDAAkD,CAAA;AACtD,IAAA,gBAAgB;AAChB,IAAA,MAAM;AACN,IAAA,MAAM;AAEN,IAAA,WAAA,CAAa,IAAyB,EAAA;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,yDAAyD,CAAC;QAC5F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAmB,iCAAiC,CAAC;QAC7F,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAmB,wCAAwC,CAAC;IACtG;IAEA,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;IACnC;AAEA,IAAA,WAAW,CAAE,QAAgB,EAAA;QAC3B,MAAM,OAAO,GAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAY,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACxF,QAAA,MAAM,KAAK,GAAG,CAAA,MAAA,EAAS,OAAO,EAAE;QAEhC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;QAE9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;IACnC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,uBAAuB,EAAE,IAAI,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;IAClC;AACD;AAED,MAAM,oDAAoD,CAAA;AACxD,IAAA,iBAAiB;AACjB,IAAA,OAAO;AACP,IAAA,oBAAoB;IAEpB,WAAA,CAAa,iBAA2D,EAAE,IAAyB,EAAA;AACjG,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;QACjF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC;IAChH;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AAC5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;AACpC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,gBAAgB,CAAE,OAAgB,EAAA;QAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC;QAE3D,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QACrC;aAAO;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACnC;IACF;AAEA,IAAA,WAAW,CAAE,QAAgB,EAAA;QAC3B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC9C;AACD;AAED,MAAM,wCAAwC,CAAA;AAC5C,IAAA,IAAI;AACJ,IAAA,cAAc;AACd,IAAA,KAAK;AACL,IAAA,cAAc;AACd,IAAA,0BAA0B;AAC1B,IAAA,8BAA8B;AAC9B,IAAA,6BAA6B;AAE7B,IAAA,WAAA,CAAa,cAAkD,EAAE,KAAa,EAAE,IAAyB,EAAA;AACvG,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;QAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,+DAA+D,CAAC;QACrG,IAAI,CAAC,0BAA0B,GAAG,IAAI,iDAAiD,CAAC,IAAI,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,8BAA8B,GAAG,IAAI,kDAAkD,CAAC,IAAI,CAAC;QAClG,IAAI,CAAC,6BAA6B,GAAG,IAAI,oDAAoD,CAAC,IAAI,EAAE,IAAI,CAAC;IAC3G;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,6BAA6B,CAAC,IAAI,EAAE;AACzC,QAAA,IAAI,CAAC,0BAA0B,CAAC,gBAAgB,EAAE;AAClD,QAAA,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE;IAChD;AAEA,IAAA,WAAW,CAAE,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ;AACrB,QAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,QAAQ,CAAC;AACrD,QAAA,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,QAAQ,CAAC;AACzD,QAAA,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,QAAQ,CAAC;QACxD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACxC;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IACpB;AAEA,IAAA,4BAA4B,CAAE,OAAgB,EAAA;AAC5C,QAAA,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC9D;IAEA,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE;IACxD;AACD;AAED,MAAM,8CAA8C,CAAA;AAClD,IAAA,cAAc;AACd,IAAA,OAAO;AACP,IAAA,cAAc;IAEd,WAAA,CAAa,cAAkD,EAAE,OAAkC,EAAA;AACjG,QAAA,IAAI,CAAC,cAAc,GAAG,cAAc;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC;IACvG;AAEA,IAAA,IAAI,CAAE,YAAoB,EAAA;QACxB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAK;AAC5B,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC9B,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,sBAAsB,GAAG,YAAY,CAAC;IAClF;AAEA,IAAA,gBAAgB,CAAE,eAAuB,EAAA;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC;IAC3C;AAEA,IAAA,gBAAgB,CAAE,OAAgB,EAAA;QAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC,OAAO,CAAC;QAE3D,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QACrC;aAAO;YACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;QACnC;IACF;AACD;AAED,MAAM,kCAAkC,CAAA;AACtC,IAAA,OAAO,UAAU,GAAG,yCAAyC;AAC7D,IAAA,eAAe;AACf,IAAA,oBAAoB;AACpB,IAAA,kBAAkB;AAClB,IAAA,yBAAyB;AACzB,IAAA,uBAAuB;AACvB,IAAA,sBAAsB;AAEtB,IAAA,WAAA,CAAa,eAAoC,EAAA;AAC/C,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe;QACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iDAAiD,CAAC;AACxG,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,wCAAwC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvM,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,wCAAwC,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,0GAA0G,CAAC,CAAC;AAC9N,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,8CAA8C,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAoB,+CAA+C,CAAC,CAAC;QACtL,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,CAAC;IACnF;IAEA,IAAI,GAAA;AACF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACxG,QAAA,IAAI,iBAAiB;AAErB,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,CAAC,EAAE;YAClD,iBAAiB,GAAG,CAAC;QACvB;aAAO;AACL,YAAA,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;QAChD;AAEA,QAAA,IAAI,iBAAiB,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,SAAS,EAAE,CAAC;AAC9G,YAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACnD;QAEA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;AACjE,QAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,iBAAiB,KAAK,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAEhF,QAAA,IAAI,CAAC,yBAAyB,CAAC,0BAA0B,CAAC,SAAS,EAAE;QAErE,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,sBAAsB,EAAE;IAC/B;AAEA,IAAA,SAAS,CAAE,aAAqB,EAAA;QAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;AAEhD,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,KAAK,KAAI;AAChF,YAAA,iBAAiB,CAAC,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC;AACtD,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,sBAAsB,EAAE;AAE7B,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChC;aAAO;AACL,YAAA,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE;QAC9C;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM;AAEnD,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,sBAAsB,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,EAAE;YAC3D,MAAM,iBAAiB,GAAG,IAAI,wCAAwC,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC;AAEnG,YAAA,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC;AAE3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/C,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE;YAE5C,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,sBAAsB,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC/B;IACF;IAEA,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC;QAC/D;IACF;IAEA,sBAAsB,GAAA;QACpB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,IAAI,CAAC,sBAAsB,EAAE;AAClE,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACtD;aAAO;AACL,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC7G;IACF;AAEA,IAAA,UAAU,CAAE,kBAA0B,EAAA;AACpC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM;QACnD,IAAI,YAAY,GAAG,kBAAkB;AAErC,QAAA,IAAI,kBAAkB,IAAI,YAAY,EAAE;AACtC,YAAA,YAAY,GAAG,YAAY,GAAG,CAAC;QACjC;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,EAAE;IAClF;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6]}