{"version":3,"file":"index.cjs","sources":["../../../../../../../../src/mods/kdbx/headers/inner/markup/index.ts"],"sourcesContent":["import { Nullable } from \"libs/nullable/index.js\"\nimport { Data } from \"../data/index.js\"\n\nexport class KeePassFile {\n\n  constructor(\n    readonly document: Document\n  ) { }\n\n  getMetaOrThrow() {\n    const element = this.document.querySelector(\":scope > Meta\")\n\n    if (element == null)\n      throw new Error()\n\n    return new KeePassFile.Meta(element)\n  }\n\n  getRootOrThrow() {\n    const element = this.document.querySelector(\":scope > Root\")\n\n    if (element == null)\n      throw new Error()\n\n    return new KeePassFile.Root(element)\n  }\n\n}\n\nexport namespace KeePassFile {\n\n  export class Meta {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    getDatabaseNameOrThrow() {\n      const element = this.element.querySelector(\":scope > DatabaseName\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getDatabaseNameChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > DatabaseNameChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getGeneratorOrThrow() {\n      const element = this.element.querySelector(\":scope > Generator\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getHistoryMaxItemsOrThrow() {\n      const element = this.element.querySelector(\":scope > HistoryMaxItems\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsInteger(element)\n    }\n\n    getHistoryMaxSizeOrThrow() {\n      const element = this.element.querySelector(\":scope > HistoryMaxSize\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsInteger(element)\n    }\n\n    getRecycleBinEnabledOrThrow() {\n      const element = this.element.querySelector(\":scope > RecycleBinEnabled\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsBoolean(element)\n    }\n\n    getRecycleBinUuidOrThrow() {\n      const element = this.element.querySelector(\":scope > RecycleBinUUID\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getRecycleBinChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > RecycleBinChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getSettingsChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > SettingsChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getDatabaseDescriptionOrThrow() {\n      const element = this.element.querySelector(\":scope > DatabaseDescription\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getDatabaseDescriptionChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > DatabaseDescriptionChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getDefaultUserNameOrThrow() {\n      const element = this.element.querySelector(\":scope > DefaultUserName\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getDefaultUserNameChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > DefaultUserNameChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getColorOrThrow() {\n      const element = this.element.querySelector(\":scope > Color\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getDirectEntryTemplatesGroupOrThrow() {\n      const element = this.element.querySelector(\":scope > EntryTemplatesGroup\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getDirectEntryTemplatesGroupChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > EntryTemplatesGroupChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n  }\n\n  export class Root {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    *getGroups() {\n      const elements = this.element.querySelectorAll(`Group`);\n\n      for (const element of elements)\n        yield new Group(element)\n\n      return\n    }\n\n    getGroupByUuidOrThrow(uuid: string) {\n      const elements = this.element.querySelectorAll(`Group`);\n\n      for (const element of elements) {\n        const group = new Group(element);\n\n        if (group.getUuidOrThrow().get() === uuid)\n          return group;\n\n        continue\n      }\n\n      throw new Error()\n    }\n\n    getGroupByUuidOrNull(uuid: string) {\n      const elements = this.element.querySelectorAll(`Group`);\n\n      for (const element of elements) {\n        const group = new Group(element);\n\n        if (group.getUuidOrThrow().get() === uuid)\n          return group;\n\n        continue\n      }\n\n      return\n    }\n\n    *getDirectGroups() {\n      const elements = this.element.querySelectorAll(`:scope > Group`);\n\n      for (const element of elements)\n        yield new Group(element)\n\n      return\n    }\n\n    getDirectGroupByIndexOrThrow(index: number) {\n      const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        throw new Error();\n\n      return new Group(element);\n    }\n\n    getDirectGroupByIndexOrNull(index: number) {\n      const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        return\n\n      return new Group(element)\n    }\n\n    getDirectGroupByUuidOrThrow(uuid: string) {\n      const elements = this.element.querySelectorAll(`:scope > Group`);\n\n      for (const element of elements) {\n        const group = new Group(element);\n\n        if (group.getUuidOrThrow().get() === uuid)\n          return group;\n\n        continue\n      }\n\n      throw new Error();\n    }\n\n    getDirectGroupByUuidOrNull(uuid: string) {\n      const elements = this.element.querySelectorAll(`:scope > Group`);\n\n      for (const element of elements) {\n        const group = new Group(element);\n\n        if (group.getUuidOrThrow().get() === uuid)\n          return group;\n\n        continue\n      }\n\n      return\n    }\n\n  }\n\n  export class Group {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    moveOrThrow(group: Group) {\n      if (this.element.parentNode === group.element)\n        return\n\n      this.element.parentNode?.removeChild(this.element)\n\n      group.element.appendChild(this.element)\n\n      this.getTimesOrThrow().getLocationChangedOrThrow().setOrThrow(new Date())\n\n      group.getTimesOrThrow().getLastModificationTimeOrThrow().setOrThrow(new Date())\n    }\n\n    getNameOrThrow() {\n      const element = this.element.querySelector(\":scope > Name\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getUuidOrThrow() {\n      const element = this.element.querySelector(\":scope > UUID\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getTimesOrThrow() {\n      const element = this.element.querySelector(\":scope > Times\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Times(element)\n    }\n\n    getIconIdOrThrow() {\n      const element = this.element.querySelector(\":scope > IconID\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsInteger(element)\n    }\n\n    getEnableAutoTypeOrThrow() {\n      const element = this.element.querySelector(\":scope > EnableAutoType\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsBoolean(element)\n    }\n\n    getEnableSearchingOrThrow() {\n      const element = this.element.querySelector(\":scope > EnableSearching\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsBoolean(element)\n    }\n\n    *getDirectGroups() {\n      const elements = this.element.querySelectorAll(`:scope > Group`);\n\n      for (const element of elements)\n        yield new Group(element)\n\n      return\n    }\n\n    getDirectGroupByIndexOrThrow(index: number) {\n      const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        throw new Error();\n\n      return new Group(element);\n    }\n\n    getDirectGroupByIndexOrNull(index: number) {\n      const element = this.element.querySelector(`:scope > Group:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        return\n\n      return new Group(element)\n    }\n\n    getDirectGroupByUuidOrThrow(uuid: string) {\n      const elements = this.element.querySelectorAll(`:scope > Group`);\n\n      for (const element of elements) {\n        const group = new Group(element);\n\n        if (group.getUuidOrThrow().get() === uuid)\n          return group;\n\n        continue\n      }\n\n      throw new Error();\n    }\n\n    getDirectGroupByUuidOrNull(uuid: string) {\n      const elements = this.element.querySelectorAll(`:scope > Group`);\n\n      for (const element of elements) {\n        const group = new Group(element);\n\n        if (group.getUuidOrThrow().get() === uuid)\n          return group;\n\n        continue\n      }\n\n      return\n    }\n\n    *getDirectEntries() {\n      const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n      for (const element of elements)\n        yield new Entry(element)\n\n      return\n    }\n\n    getDirectEntryByIndexOrThrow(index: number) {\n      const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        throw new Error();\n\n      return new Entry(element);\n    }\n\n    getDirectEntryByIndexOrNull(index: number) {\n      const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        return\n\n      return new Entry(element)\n    }\n\n    getDirectEntryByUuidOrThrow(uuid: string) {\n      const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n      for (const element of elements) {\n        const entry = new Entry(element);\n\n        if (entry.getUuidOrThrow().get() === uuid)\n          return entry;\n\n        continue\n      }\n\n      throw new Error();\n    }\n\n    getDirectEntryByUuidOrNull(uuid: string) {\n      const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n      for (const element of elements) {\n        const entry = new Entry(element);\n\n        if (entry.getUuidOrThrow().get() === uuid)\n          return entry;\n\n        continue\n      }\n\n      return\n    }\n\n  }\n\n  export class Times {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    getLastModificationTimeOrThrow() {\n      const element = this.element.querySelector(\":scope > LastModificationTime\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getCreationTimeOrThrow() {\n      const element = this.element.querySelector(\":scope > CreationTime\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getLastAccessTimeOrThrow() {\n      const element = this.element.querySelector(\":scope > LastAccessTime\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n    getExpiresOrThrow() {\n      const element = this.element.querySelector(\":scope > Expires\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsBoolean(element)\n    }\n\n    getUsageCountOrThrow() {\n      const element = this.element.querySelector(\":scope > UsageCount\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsInteger(element)\n    }\n\n    getLocationChangedOrThrow() {\n      const element = this.element.querySelector(\":scope > LocationChanged\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsDate(element)\n    }\n\n  }\n\n  export class Entry {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    moveOrThrow(group: Group) {\n      if (this.element.parentNode === group.element)\n        return\n\n      this.element.parentNode?.removeChild(this.element)\n\n      group.element.appendChild(this.element)\n\n      this.getTimesOrThrow().getLocationChangedOrThrow().setOrThrow(new Date())\n\n      group.getTimesOrThrow().getLastModificationTimeOrThrow().setOrThrow(new Date())\n    }\n\n    moveToTrashOrThrow() {\n      const file = new KeePassFile(this.element.ownerDocument)\n      const meta = file.getMetaOrThrow()\n      const root = file.getRootOrThrow()\n\n      const recybleBinEnabled = meta.getRecycleBinEnabledOrThrow().get()\n\n      if (!recybleBinEnabled)\n        throw new Error(\"Recycle bin is not enabled\")\n\n      const recycleBinUuid = meta.getRecycleBinUuidOrThrow().get()\n      const recycleBinGroup = root.getGroupByUuidOrThrow(recycleBinUuid)\n\n      this.moveOrThrow(recycleBinGroup)\n\n      meta.getRecycleBinChangedOrThrow().setOrThrow(new Date())\n    }\n\n    cloneToHistoryOrThrow() {\n      return this.getHistoryOrNew().insertAndCleanOrThrow(this)\n    }\n\n    createStringOrThrow(key: string, value: string) {\n      const { ownerDocument } = this.element\n\n      const $string = ownerDocument.createElement(\"String\");\n      this.element.appendChild($string);\n\n      const $key = ownerDocument.createElement(\"Key\");\n      $key.innerHTML = key;\n      $string.appendChild($key);\n\n      const $value = ownerDocument.createElement(\"Value\");\n      $value.innerHTML = value;\n      $string.appendChild($value);\n\n      this.getTimesOrThrow().getLastModificationTimeOrThrow().setOrThrow(new Date())\n\n      return new String($string)\n    }\n\n    getUuidOrThrow() {\n      const element = this.element.querySelector(\":scope > UUID\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getTimesOrThrow() {\n      const element = this.element.querySelector(\":scope > Times\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Times(element)\n    }\n\n    getHistoryOrThrow() {\n      const element = this.element.querySelector(\":scope > History\")\n\n      if (element == null)\n        throw new Error()\n\n      return new History(element)\n    }\n\n    getHistoryOrNull() {\n      const element = this.element.querySelector(\":scope > History\")\n\n      if (element == null)\n        return\n\n      return new History(element)\n    }\n\n    getHistoryOrNew() {\n      const { ownerDocument } = this.element\n\n      const previous = this.element.querySelector(\":scope > History\")\n\n      if (previous != null)\n        return new History(previous)\n\n      const created = ownerDocument.createElement(\"History\");\n\n      this.element.appendChild(created);\n\n      return new History(created);\n    }\n\n    *getDirectStrings() {\n      const elements = this.element.querySelectorAll(`:scope > String`);\n\n      for (const element of elements)\n        yield new String(element)\n\n      return\n    }\n\n    getDirectStringByIndexOrThrow(index: number) {\n      const element = this.element.querySelector(`:scope > String:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        throw new Error();\n\n      return new String(element);\n    }\n\n    getDirectStringByIndexOrNull(index: number) {\n      const element = this.element.querySelector(`:scope > String:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        return\n\n      return new String(element)\n    }\n\n    getDirectStringByKeyOrThrow(key: string) {\n      const elements = this.element.querySelectorAll(`:scope > String`);\n\n      for (const element of elements) {\n        const string = new String(element);\n\n        if (string.getKeyOrThrow().get() === key)\n          return string;\n\n        continue\n      }\n\n      throw new Error();\n    }\n\n    getDirectStringByKeyOrNull(key: string) {\n      const elements = this.element.querySelectorAll(`:scope > String`);\n\n      for (const element of elements) {\n        const string = new String(element);\n\n        if (string.getKeyOrThrow().get() === key)\n          return string;\n\n        continue\n      }\n\n      return\n    }\n\n  }\n\n  export class String {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    getKeyOrThrow() {\n      const element = this.element.querySelector(\":scope > Key\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n    getValueOrThrow() {\n      const element = this.element.querySelector(\":scope > Value\")\n\n      if (element == null)\n        throw new Error()\n\n      return new Data.AsString(element)\n    }\n\n  }\n\n  export class Value {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    get() {\n      return this.element.innerHTML\n    }\n\n    set(value: string) {\n      this.element.innerHTML = value\n    }\n\n    get protected() {\n      return this.element.getAttribute(\"Protected\")\n    }\n\n    set protected(value: Nullable<string>) {\n      if (value == null)\n        this.element.removeAttribute(\"Protected\")\n      else\n        this.element.setAttribute(\"Protected\", value)\n    }\n\n  }\n\n  export class History {\n\n    constructor(\n      readonly element: Element\n    ) { }\n\n    insertAndCleanOrThrow(entry: Entry) {\n      const clone = new Entry(entry.element.cloneNode(true) as Element)\n\n      const history = clone.getHistoryOrNull()\n\n      if (history != null)\n        clone.element.removeChild(history.element)\n\n      this.element.prepend(clone.element)\n\n      this.cleanOrThrow()\n\n      return clone\n    }\n\n    cleanOrThrow() {\n      const file = new KeePassFile(this.element.ownerDocument)\n      const meta = file.getMetaOrThrow()\n\n      const historyMaxItems = meta.getHistoryMaxItemsOrThrow().getOrThrow()\n\n      if (this.element.children.length > historyMaxItems) {\n        while (this.element.children.length > historyMaxItems) {\n          const last = this.element.lastElementChild;\n\n          if (last == null)\n            throw new Error();\n\n          this.element.removeChild(last);\n        }\n      }\n\n      const historyMaxSize = meta.getHistoryMaxSizeOrThrow().getOrThrow()\n\n      for (let bytes = new TextEncoder().encode(new XMLSerializer().serializeToString(this.element)); bytes.length > historyMaxSize; bytes = new TextEncoder().encode(new XMLSerializer().serializeToString(this.element))) {\n        const last = this.element.lastElementChild;\n\n        if (last == null)\n          throw new Error();\n\n        this.element.removeChild(last);\n      }\n    }\n\n    *getDirectEntries() {\n      const elements = this.element.querySelectorAll(`:scope > Entry`);\n\n      for (const element of elements)\n        yield new Entry(element)\n\n      return\n    }\n\n    getDirectEntryByIndexOrThrow(index: number) {\n      const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        throw new Error();\n\n      return new Entry(element);\n    }\n\n    getDirectEntryByIndexOrNull(index: number) {\n      const element = this.element.querySelector(`:scope > Entry:nth-of-type(${index + 1})`);\n\n      if (element == null)\n        return\n\n      return new Entry(element)\n    }\n\n  }\n}"],"names":["Data"],"mappings":";;;;MAGa,WAAW,CAAA;AAGX,IAAA,QAAA;AADX,IAAA,WAAA,CACW,QAAkB,EAAA;QAAlB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACf;IAEJ,cAAc,GAAA;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC;QAE5D,IAAI,OAAO,IAAI,IAAI;YACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC;IAEA,cAAc,GAAA;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC;QAE5D,IAAI,OAAO,IAAI,IAAI;YACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,QAAA,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;IACtC;AAED;AAED,CAAA,UAAiB,WAAW,EAAA;AAE1B,IAAA,MAAa,IAAI,CAAA;AAGJ,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;QAEJ,sBAAsB,GAAA;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAEnE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,6BAA6B,GAAA;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,8BAA8B,CAAC;YAE1E,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,mBAAmB,GAAA;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,oBAAoB,CAAC;YAEhE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,yBAAyB,GAAA;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;YAEtE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,wBAAwB,GAAA;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;YAErE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,2BAA2B,GAAA;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC;YAExE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,wBAAwB,GAAA;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;YAErE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,2BAA2B,GAAA;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,4BAA4B,CAAC;YAExE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,yBAAyB,GAAA;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;YAEtE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,6BAA6B,GAAA;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,8BAA8B,CAAC;YAE1E,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,oCAAoC,GAAA;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qCAAqC,CAAC;YAEjF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,yBAAyB,GAAA;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;YAEtE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,gCAAgC,GAAA;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iCAAiC,CAAC;YAE7E,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,eAAe,GAAA;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAE5D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,mCAAmC,GAAA;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,8BAA8B,CAAC;YAE1E,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,0CAA0C,GAAA;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qCAAqC,CAAC;YAEjF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;AAED;AAtJY,IAAA,WAAA,CAAA,IAAI,OAsJhB;AAED,IAAA,MAAa,IAAI,CAAA;AAGJ,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;AAEJ,QAAA,CAAC,SAAS,GAAA;YACR,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,KAAA,CAAO,CAAC;YAEvD,KAAK,MAAM,OAAO,IAAI,QAAQ;AAC5B,gBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAE1B;QACF;AAEA,QAAA,qBAAqB,CAAC,IAAY,EAAA;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,KAAA,CAAO,CAAC;AAEvD,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA,MAAM,IAAI,KAAK,EAAE;QACnB;AAEA,QAAA,oBAAoB,CAAC,IAAY,EAAA;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,KAAA,CAAO,CAAC;AAEvD,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA;QACF;AAEA,QAAA,CAAC,eAAe,GAAA;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;YAEhE,KAAK,MAAM,OAAO,IAAI,QAAQ;AAC5B,gBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAE1B;QACF;AAEA,QAAA,4BAA4B,CAAC,KAAa,EAAA;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB;AAEF,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,IAAY,EAAA;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;AAEhE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA,MAAM,IAAI,KAAK,EAAE;QACnB;AAEA,QAAA,0BAA0B,CAAC,IAAY,EAAA;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;AAEhE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA;QACF;AAED;AAtGY,IAAA,WAAA,CAAA,IAAI,OAsGhB;AAED,IAAA,MAAa,KAAK,CAAA;AAGL,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;AAEJ,QAAA,WAAW,CAAC,KAAY,EAAA;YACtB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO;gBAC3C;YAEF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAElD,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAEvC,YAAA,IAAI,CAAC,eAAe,EAAE,CAAC,yBAAyB,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;AAEzE,YAAA,KAAK,CAAC,eAAe,EAAE,CAAC,8BAA8B,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QACjF;QAEA,cAAc,GAAA;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;YAE3D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,cAAc,GAAA;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;YAE3D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,eAAe,GAAA;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAE5D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;QAEA,gBAAgB,GAAA;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC;YAE7D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,wBAAwB,GAAA;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;YAErE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,yBAAyB,GAAA;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;YAEtE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;AAEA,QAAA,CAAC,eAAe,GAAA;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;YAEhE,KAAK,MAAM,OAAO,IAAI,QAAQ;AAC5B,gBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAE1B;QACF;AAEA,QAAA,4BAA4B,CAAC,KAAa,EAAA;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB;AAEF,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,IAAY,EAAA;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;AAEhE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA,MAAM,IAAI,KAAK,EAAE;QACnB;AAEA,QAAA,0BAA0B,CAAC,IAAY,EAAA;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;AAEhE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA;QACF;AAEA,QAAA,CAAC,gBAAgB,GAAA;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;YAEhE,KAAK,MAAM,OAAO,IAAI,QAAQ;AAC5B,gBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAE1B;QACF;AAEA,QAAA,4BAA4B,CAAC,KAAa,EAAA;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB;AAEF,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,IAAY,EAAA;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;AAEhE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA,MAAM,IAAI,KAAK,EAAE;QACnB;AAEA,QAAA,0BAA0B,CAAC,IAAY,EAAA;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;AAEhE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC;gBAEhC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;AACvC,oBAAA,OAAO,KAAK;gBAEd;YACF;YAEA;QACF;AAED;AA3LY,IAAA,WAAA,CAAA,KAAK,QA2LjB;AAED,IAAA,MAAa,KAAK,CAAA;AAGL,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;QAEJ,8BAA8B,GAAA;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,+BAA+B,CAAC;YAE3E,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,sBAAsB,GAAA;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,uBAAuB,CAAC;YAEnE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,wBAAwB,GAAA;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC;YAErE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;QAEA,iBAAiB,GAAA;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;YAE9D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,oBAAoB,GAAA;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,CAAC;YAEjE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACpC;QAEA,yBAAyB,GAAA;YACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,0BAA0B,CAAC;YAEtE,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACjC;AAED;AA5DY,IAAA,WAAA,CAAA,KAAK,QA4DjB;AAED,IAAA,MAAa,KAAK,CAAA;AAGL,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;AAEJ,QAAA,WAAW,CAAC,KAAY,EAAA;YACtB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO;gBAC3C;YAEF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;YAElD,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAEvC,YAAA,IAAI,CAAC,eAAe,EAAE,CAAC,yBAAyB,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;AAEzE,YAAA,KAAK,CAAC,eAAe,EAAE,CAAC,8BAA8B,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QACjF;QAEA,kBAAkB,GAAA;YAChB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACxD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;AAClC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;YAElC,MAAM,iBAAiB,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC,GAAG,EAAE;AAElE,YAAA,IAAI,CAAC,iBAAiB;AACpB,gBAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;YAE/C,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE;YAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC;AAElE,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;YAEjC,IAAI,CAAC,2BAA2B,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3D;QAEA,qBAAqB,GAAA;YACnB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;QAC3D;QAEA,mBAAmB,CAAC,GAAW,EAAE,KAAa,EAAA;AAC5C,YAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO;YAEtC,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;AACrD,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;YAEjC,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG;AACpB,YAAA,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YAEzB,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC;AACnD,YAAA,MAAM,CAAC,SAAS,GAAG,KAAK;AACxB,YAAA,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;AAE3B,YAAA,IAAI,CAAC,eAAe,EAAE,CAAC,8BAA8B,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;AAE9E,YAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC5B;QAEA,cAAc,GAAA;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;YAE3D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,eAAe,GAAA;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAE5D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;QAEA,iBAAiB,GAAA;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;YAE9D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;QAC7B;QAEA,gBAAgB,GAAA;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;YAE9D,IAAI,OAAO,IAAI,IAAI;gBACjB;AAEF,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;QAC7B;QAEA,eAAe,GAAA;AACb,YAAA,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,OAAO;YAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC;YAE/D,IAAI,QAAQ,IAAI,IAAI;AAClB,gBAAA,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;YAE9B,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,SAAS,CAAC;AAEtD,YAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;AAEjC,YAAA,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;QAC7B;AAEA,QAAA,CAAC,gBAAgB,GAAA;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,eAAA,CAAiB,CAAC;YAEjE,KAAK,MAAM,OAAO,IAAI,QAAQ;AAC5B,gBAAA,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;YAE3B;QACF;AAEA,QAAA,6BAA6B,CAAC,KAAa,EAAA;AACzC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,4BAAA,EAA+B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEvF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC5B;AAEA,QAAA,4BAA4B,CAAC,KAAa,EAAA;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,4BAAA,EAA+B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEvF,IAAI,OAAO,IAAI,IAAI;gBACjB;AAEF,YAAA,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAC5B;AAEA,QAAA,2BAA2B,CAAC,GAAW,EAAA;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,eAAA,CAAiB,CAAC;AAEjE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;gBAElC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AACtC,oBAAA,OAAO,MAAM;gBAEf;YACF;YAEA,MAAM,IAAI,KAAK,EAAE;QACnB;AAEA,QAAA,0BAA0B,CAAC,GAAW,EAAA;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,eAAA,CAAiB,CAAC;AAEjE,YAAA,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;AAC9B,gBAAA,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC;gBAElC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG;AACtC,oBAAA,OAAO,MAAM;gBAEf;YACF;YAEA;QACF;AAED;AAxKY,IAAA,WAAA,CAAA,KAAK,QAwKjB;AAED,IAAA,MAAa,MAAM,CAAA;AAGN,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;QAEJ,aAAa,GAAA;YACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;YAE1D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;QAEA,eAAe,GAAA;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC;YAE5D,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAIA,UAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnC;AAED;AAxBY,IAAA,WAAA,CAAA,MAAM,SAwBlB;AAED,IAAA,MAAa,KAAK,CAAA;AAGL,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;QAEJ,GAAG,GAAA;AACD,YAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;QAC/B;AAEA,QAAA,GAAG,CAAC,KAAa,EAAA;AACf,YAAA,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK;QAChC;AAEA,QAAA,IAAI,SAAS,GAAA;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;QAC/C;QAEA,IAAI,SAAS,CAAC,KAAuB,EAAA;YACnC,IAAI,KAAK,IAAI,IAAI;AACf,gBAAA,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC;;gBAEzC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC;QACjD;AAED;AAzBY,IAAA,WAAA,CAAA,KAAK,QAyBjB;AAED,IAAA,MAAa,OAAO,CAAA;AAGP,QAAA,OAAA;AADX,QAAA,WAAA,CACW,OAAgB,EAAA;YAAhB,IAAA,CAAA,OAAO,GAAP,OAAO;QACd;AAEJ,QAAA,qBAAqB,CAAC,KAAY,EAAA;AAChC,YAAA,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;AAEjE,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,EAAE;YAExC,IAAI,OAAO,IAAI,IAAI;gBACjB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;YAE5C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAEnC,IAAI,CAAC,YAAY,EAAE;AAEnB,YAAA,OAAO,KAAK;QACd;QAEA,YAAY,GAAA;YACV,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;AACxD,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE;YAElC,MAAM,eAAe,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC,UAAU,EAAE;YAErE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,EAAE;gBAClD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,EAAE;AACrD,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;oBAE1C,IAAI,IAAI,IAAI,IAAI;wBACd,MAAM,IAAI,KAAK,EAAE;AAEnB,oBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC;YACF;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC,UAAU,EAAE;YAEnE,KAAK,IAAI,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AACpN,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;gBAE1C,IAAI,IAAI,IAAI,IAAI;oBACd,MAAM,IAAI,KAAK,EAAE;AAEnB,gBAAA,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YAChC;QACF;AAEA,QAAA,CAAC,gBAAgB,GAAA;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA,cAAA,CAAgB,CAAC;YAEhE,KAAK,MAAM,OAAO,IAAI,QAAQ;AAC5B,gBAAA,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;YAE1B;QACF;AAEA,QAAA,4BAA4B,CAAC,KAAa,EAAA;AACxC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB,MAAM,IAAI,KAAK,EAAE;AAEnB,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAEA,QAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA,2BAAA,EAA8B,KAAK,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC;YAEtF,IAAI,OAAO,IAAI,IAAI;gBACjB;AAEF,YAAA,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;QAC3B;AAED;AA7EY,IAAA,WAAA,CAAA,OAAO,UA6EnB;AACH,CAAC,EA1yBgB,WAAW,KAAX,WAAW,GAAA,EAAA,CAAA,CAAA;;;;"}