uitec-ng-header 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +11 -182
  2. package/esm2020/lib/ui-header.component.mjs +20 -26
  3. package/esm2020/lib/ui-header.module.mjs +4 -10
  4. package/esm2020/public-api.mjs +1 -17
  5. package/fesm2015/uitec-ng-header.mjs +24 -1808
  6. package/fesm2015/uitec-ng-header.mjs.map +1 -1
  7. package/fesm2020/uitec-ng-header.mjs +24 -1771
  8. package/fesm2020/uitec-ng-header.mjs.map +1 -1
  9. package/lib/ui-header.component.d.ts +8 -11
  10. package/lib/ui-header.module.d.ts +1 -2
  11. package/package.json +2 -3
  12. package/public-api.d.ts +0 -15
  13. package/esm2020/lib/assistant/components/assistant-action-card/ui-assistant-action-card.component.mjs +0 -102
  14. package/esm2020/lib/assistant/components/assistant-button/ui-assistant-button.component.mjs +0 -18
  15. package/esm2020/lib/assistant/components/assistant-composer/ui-assistant-composer.component.mjs +0 -79
  16. package/esm2020/lib/assistant/components/assistant-layout/ui-assistant-layout.component.mjs +0 -140
  17. package/esm2020/lib/assistant/components/assistant-messages/ui-assistant-messages.component.mjs +0 -144
  18. package/esm2020/lib/assistant/components/assistant-panel/ui-assistant-panel.component.mjs +0 -156
  19. package/esm2020/lib/assistant/components/assistant-text/ui-assistant-text.component.mjs +0 -26
  20. package/esm2020/lib/assistant/models/uiny-api.models.mjs +0 -12
  21. package/esm2020/lib/assistant/models/uiny.models.mjs +0 -2
  22. package/esm2020/lib/assistant/services/ui-assistant.service.mjs +0 -137
  23. package/esm2020/lib/assistant/services/uiny-api.service.mjs +0 -149
  24. package/esm2020/lib/assistant/services/uiny-chat.service.mjs +0 -368
  25. package/esm2020/lib/assistant/services/uiny-session.service.mjs +0 -74
  26. package/esm2020/lib/assistant/ui-assistant.module.mjs +0 -59
  27. package/esm2020/lib/assistant/uiny.config.mjs +0 -53
  28. package/esm2020/lib/assistant/utils/uiny-api.adapter.mjs +0 -154
  29. package/esm2020/lib/assistant/utils/uiny-contexto.mjs +0 -43
  30. package/esm2020/lib/assistant/utils/uiny-markdown.mjs +0 -122
  31. package/lib/assistant/components/assistant-action-card/ui-assistant-action-card.component.d.ts +0 -33
  32. package/lib/assistant/components/assistant-button/ui-assistant-button.component.d.ts +0 -9
  33. package/lib/assistant/components/assistant-composer/ui-assistant-composer.component.d.ts +0 -24
  34. package/lib/assistant/components/assistant-layout/ui-assistant-layout.component.d.ts +0 -51
  35. package/lib/assistant/components/assistant-messages/ui-assistant-messages.component.d.ts +0 -38
  36. package/lib/assistant/components/assistant-panel/ui-assistant-panel.component.d.ts +0 -53
  37. package/lib/assistant/components/assistant-text/ui-assistant-text.component.d.ts +0 -14
  38. package/lib/assistant/models/uiny-api.models.d.ts +0 -109
  39. package/lib/assistant/models/uiny.models.d.ts +0 -104
  40. package/lib/assistant/services/ui-assistant.service.d.ts +0 -55
  41. package/lib/assistant/services/uiny-api.service.d.ts +0 -38
  42. package/lib/assistant/services/uiny-chat.service.d.ts +0 -82
  43. package/lib/assistant/services/uiny-session.service.d.ts +0 -38
  44. package/lib/assistant/ui-assistant.module.d.ts +0 -19
  45. package/lib/assistant/uiny.config.d.ts +0 -31
  46. package/lib/assistant/utils/uiny-api.adapter.d.ts +0 -22
  47. package/lib/assistant/utils/uiny-contexto.d.ts +0 -7
  48. package/lib/assistant/utils/uiny-markdown.d.ts +0 -37
@@ -1 +1 @@
1
- {"version":3,"file":"uitec-ng-header.mjs","sources":["../../../projects/ui-header/src/lib/ui-header.service.ts","../../../projects/ui-header/src/lib/assistant/uiny.config.ts","../../../projects/ui-header/src/lib/assistant/utils/uiny-contexto.ts","../../../projects/ui-header/src/lib/assistant/services/uiny-session.service.ts","../../../projects/ui-header/src/lib/assistant/utils/uiny-api.adapter.ts","../../../projects/ui-header/src/lib/assistant/services/uiny-api.service.ts","../../../projects/ui-header/src/lib/assistant/services/ui-assistant.service.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-button/ui-assistant-button.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-button/ui-assistant-button.component.html","../../../projects/ui-header/src/lib/my-account/my-account.component.ts","../../../projects/ui-header/src/lib/my-account/my-account.component.html","../../../projects/ui-header/src/lib/ui-header.component.ts","../../../projects/ui-header/src/lib/ui-header.component.html","../../../projects/ui-header/src/lib/assistant/components/assistant-action-card/ui-assistant-action-card.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-action-card/ui-assistant-action-card.component.html","../../../projects/ui-header/src/lib/assistant/components/assistant-composer/ui-assistant-composer.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-composer/ui-assistant-composer.component.html","../../../projects/ui-header/src/lib/assistant/services/uiny-chat.service.ts","../../../projects/ui-header/src/lib/assistant/utils/uiny-markdown.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-text/ui-assistant-text.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-text/ui-assistant-text.component.html","../../../projects/ui-header/src/lib/assistant/components/assistant-messages/ui-assistant-messages.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-messages/ui-assistant-messages.component.html","../../../projects/ui-header/src/lib/assistant/components/assistant-panel/ui-assistant-panel.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-panel/ui-assistant-panel.component.html","../../../projects/ui-header/src/lib/assistant/components/assistant-layout/ui-assistant-layout.component.ts","../../../projects/ui-header/src/lib/assistant/components/assistant-layout/ui-assistant-layout.component.html","../../../projects/ui-header/src/lib/assistant/ui-assistant.module.ts","../../../projects/ui-header/src/lib/ui-header.module.ts","../../../projects/ui-header/src/public-api.ts","../../../projects/ui-header/src/uitec-ng-header.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UiHeaderService {\r\n\r\n constructor() { }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { UinyConfig } from './models/uiny.models';\r\n\r\nexport const UINY_CONFIG = new InjectionToken<UinyConfig>('UINY_CONFIG');\r\n\r\nexport const UINY_AVATAR_PADRAO = 'assets/images/uiny/avatar.svg';\r\nexport const UINY_LARGURA_PADRAO = 380;\r\nexport const UINY_LARGURA_MIN = 340;\r\nexport const UINY_LARGURA_MAX = 400;\r\nexport const UINY_LADO_A_LADO_PADRAO = 1200;\r\n\r\n/** Mesmo limite padrão do backend (UINY_MENSAGEM_MAX_CARACTERES no uishop-ia). */\r\nexport const UINY_MENSAGEM_MAX_CARACTERES = 2000;\r\n\r\n/** O backend limita cada mensagem a UINY_TEMPO_MAXIMO_SEGUNDOS (90 s); damos uma folga. */\r\nexport const UINY_TIMEOUT_MENSAGEM_MS = 100000;\r\nexport const UINY_TIMEOUT_ACAO_MS = 60000;\r\nexport const UINY_TIMEOUT_CONSULTA_MS = 20000;\r\n\r\n/**\r\n * Resolve a URL-base: forRoot({ apiUrl }) tem prioridade; depois APP_ENVIRONMENT.domain.uiny.\r\n * Sem barra no final. Retorna null quando não configurada (o recurso fica indisponível).\r\n */\r\nexport function resolverUrlUiny(config: UinyConfig | null, env: any): string | null {\r\n const url = config?.apiUrl || env?.domain?.uiny || null;\r\n if (!url || typeof url !== 'string') return null;\r\n if (!/^https?:\\/\\//i.test(url)) return null;\r\n return url.replace(/\\/+$/, '');\r\n}\r\n\r\nexport function larguraPainel(config: UinyConfig | null): number {\r\n const largura = config?.larguraPainel || UINY_LARGURA_PADRAO;\r\n return Math.min(UINY_LARGURA_MAX, Math.max(UINY_LARGURA_MIN, largura));\r\n}\r\n\r\n/**\r\n * Sugestões do primeiro acesso. A API não expõe o catálogo de ferramentas, então a lista\r\n * acompanha as ferramentas implementadas no uishop-ia (README, \"Ferramentas implementadas\").\r\n * Ao adicionar ou remover ferramentas no backend, atualize aqui.\r\n */\r\nexport const UINY_SUGESTOES: { [sistema: string]: { textos: string[]; alteracoes: boolean } } = {\r\n studio: {\r\n textos: [\r\n 'Quais lojas e temas eu tenho?',\r\n 'Quais são as cores do meu tema?',\r\n 'Troque a cor principal do tema para #e8590c',\r\n ],\r\n // studio_alterar_cor_tema exige confirmação\r\n alteracoes: true,\r\n },\r\n erp: {\r\n textos: [\r\n 'Quais produtos estão sem estoque?',\r\n 'Como foram minhas vendas neste mês?',\r\n ],\r\n alteracoes: false,\r\n },\r\n};\r\n","import { UinyContextoApi, UinySistemaOrigem } from '../models/uiny-api.models';\nimport { UinyContexto } from '../models/uiny.models';\n\n/** Mesma regra de ContextoTela no backend. */\nconst TELA_VALIDA = /^[a-z0-9_\\-\\/.]{1,60}$/i;\nconst CAMPOS_ID: (keyof UinyContexto)[] = ['idLoja', 'idLojaLeiaute', 'idTema', 'idProduto', 'idPedido'];\n\nfunction idPositivo(valor: unknown): number | null {\n return typeof valor === 'number' && Number.isInteger(valor) && valor > 0 && valor <= 2147483647 ? valor : null;\n}\n\n/** Normaliza o contexto informado pelo consumidor: só campos conhecidos e valores válidos. */\nexport function normalizarContexto(contexto: UinyContexto | null | undefined): UinyContexto {\n const resultado: UinyContexto = {};\n if (!contexto) return resultado;\n\n const tela = typeof contexto.tela === 'string' ? contexto.tela.trim() : '';\n if (tela && TELA_VALIDA.test(tela)) resultado.tela = tela;\n\n CAMPOS_ID.forEach(campo => {\n const id = idPositivo(contexto[campo]);\n if (id) (resultado as any)[campo] = id;\n });\n return resultado;\n}\n\n/** Converte para o formato de ContextoTela (campos extras geram 422 no backend). */\nexport function contextoParaApi(sistema: UinySistemaOrigem, contexto: UinyContexto): UinyContextoApi {\n const api: UinyContextoApi = { sistema };\n if (contexto.tela) api.tela = contexto.tela;\n if (contexto.idLoja) api.id_loja = contexto.idLoja;\n if (contexto.idLojaLeiaute) api.id_loja_leiaute = contexto.idLojaLeiaute;\n if (contexto.idTema) api.id_tema = contexto.idTema;\n if (contexto.idProduto) api.id_produto = contexto.idProduto;\n if (contexto.idPedido) api.id_pedido = contexto.idPedido;\n return api;\n}\n\nexport function mesmoContexto(a: UinyContexto, b: UinyContexto): boolean {\n return (a.tela ?? null) === (b.tela ?? null)\n && CAMPOS_ID.every(campo => (a[campo] ?? null) === (b[campo] ?? null));\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay, startWith } from 'rxjs/operators';\nimport { AuthAcesso, AuthService, UserAuthDTO } from 'uitec-ng-core';\n\n/**\n * Sessão vista pela Uiny. \"id\" muda a cada nova combinação usuário/empresa/token,\n * inclusive em um novo login do mesmo usuário: tudo que estiver em memória é descartado.\n */\nexport interface UinySessao {\n id: number;\n idUsuario: number;\n idEmpresa: number;\n}\n\n/**\n * Deriva a sessão do AuthService do uitec-ng-core (mesma fonte do JwtInterceptor).\n * Não lê cookies nem localStorage diretamente e não guarda o token.\n */\n@Injectable({ providedIn: 'root' })\nexport class UinySessionService {\n\n /** Chave recusada pela API (401). Fica sem sessão até o AuthService mudar. */\n private readonly chaveRecusada$ = new BehaviorSubject<string | null>(null);\n private sequencia = 0;\n private ultimaChave: string | null = null;\n private ultimaSessao: UinySessao | null = null;\n\n readonly sessao$: Observable<UinySessao | null>;\n readonly online$: Observable<boolean>;\n\n constructor(\n private authService: AuthService,\n private zone: NgZone\n ) {\n const usuario$ = this.authService.currentUser.pipe(startWith(this.authService.currentUserValue));\n const acesso$ = this.authService.currentAccess.pipe(startWith(this.authService.currentAccessValue));\n\n this.sessao$ = combineLatest([usuario$, acesso$, this.chaveRecusada$]).pipe(\n map(([usuario, acesso, recusada]) => {\n const chave = this.chave(usuario, acesso);\n if (!chave || chave === recusada) return null;\n return this.sessaoDaChave(chave, usuario, acesso);\n }),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n this.online$ = typeof window === 'undefined'\n ? of(true)\n : merge(\n fromEvent(window, 'online').pipe(map(() => true)),\n fromEvent(window, 'offline').pipe(map(() => false))\n ).pipe(\n startWith(typeof navigator === 'undefined' ? true : navigator.onLine !== false),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n }\n\n /** Token da sessão atual, lido do AuthService no momento da requisição. */\n token(): string | null {\n const usuario = this.authService.currentUserValue;\n return usuario?.token || null;\n }\n\n /** A API recusou a sessão (401): esconde a Uiny até o usuário autenticar de novo. */\n recusarSessaoAtual(): void {\n const chave = this.chave(this.authService.currentUserValue, this.acessoAtual(this.authService.currentUserValue, this.authService.currentAccessValue));\n if (chave) this.zone.run(() => this.chaveRecusada$.next(chave));\n }\n\n private acessoAtual(usuario: UserAuthDTO | null, acesso: AuthAcesso | null): AuthAcesso | null {\n if (!usuario) return null;\n return acesso || usuario.acessos?.find(a => a.in_atual) || null;\n }\n\n private chave(usuario: UserAuthDTO | null, acesso: AuthAcesso | null): string | null {\n const atual = this.acessoAtual(usuario, acesso);\n const idUsuario = usuario?.usuario?.id_usuario;\n if (!usuario?.token || !idUsuario || !atual?.id_empresa) return null;\n return `${idUsuario}|${atual.id_empresa}|${usuario.token}`;\n }\n\n private sessaoDaChave(chave: string, usuario: UserAuthDTO, acesso: AuthAcesso | null): UinySessao {\n if (chave === this.ultimaChave && this.ultimaSessao) return this.ultimaSessao;\n const atual = this.acessoAtual(usuario, acesso);\n this.ultimaChave = chave;\n this.ultimaSessao = {\n id: ++this.sequencia,\n idUsuario: Number(usuario.usuario.id_usuario),\n idEmpresa: Number(atual.id_empresa),\n };\n return this.ultimaSessao;\n }\n}\n","import { UinyAcaoApi, UinyConversaApi, UinyMensagemApi } from '../models/uiny-api.models';\nimport { UinyAcao, UinyConversaResumo, UinyEstadoAcao, UinyEvento, UinyMensagem } from '../models/uiny.models';\n\n/** Situação da API (Constants::ACAO_*) -> estado da tela. */\nconst ESTADOS: { [api: string]: UinyEstadoAcao } = {\n pendente: 'pendente',\n executando: 'executando',\n executada: 'concluida',\n cancelada: 'cancelada',\n expirada: 'expirada',\n invalidada: 'invalidada',\n falhou: 'falha',\n indeterminada: 'indeterminada',\n};\nconst UUID = /^[0-9a-f-]{36}$/i;\nconst MAX_DETALHES = 12;\nconst MAX_VALOR = 200;\n\n/** Datas do backend: \"Y-m-d H:i:s\" (America/Sao_Paulo) ou ISO. */\nexport function lerData(valor: unknown): Date | null {\n if (typeof valor !== 'string' || !valor) return null;\n const iso = /^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}(:\\d{2})?$/.test(valor) ? valor.replace(' ', 'T') + '-03:00' : valor;\n const data = new Date(iso);\n return isNaN(data.getTime()) ? null : data;\n}\n\nexport function idValido(valor: unknown): string | null {\n return typeof valor === 'string' && UUID.test(valor) ? valor : null;\n}\n\nfunction inteiro(valor: unknown): number | null {\n const n = typeof valor === 'string' && valor.trim() !== '' ? Number(valor) : valor;\n return typeof n === 'number' && Number.isInteger(n) && n > 0 ? n : null;\n}\n\nfunction texto(valor: unknown, max = 20000): string {\n if (typeof valor !== 'string') return '';\n return valor.length > max ? valor.slice(0, max) : valor;\n}\n\nexport function adaptarConversa(api: UinyConversaApi): UinyConversaResumo | null {\n const id = idValido(api?.id);\n if (!id) return null;\n return {\n id,\n titulo: texto(api.titulo, 120) || null,\n sistemaOrigem: api.sistema_origem,\n idLoja: inteiro(api.id_loja),\n atualizadaEm: lerData(api.dt_alteracao),\n };\n}\n\nexport function adaptarMensagem(api: UinyMensagemApi): UinyMensagem | null {\n const id = idValido(api?.id);\n if (!id || (api.papel !== 'usuario' && api.papel !== 'assistente')) return null;\n return {\n id,\n papel: api.papel,\n estado: typeof api.estado === 'string' ? api.estado : null,\n texto: texto(api.texto),\n idAcao: idValido(api.acao_pendente?.id),\n opcoes: adaptarOpcoes(api.apresentacao),\n criadaEm: lerData(api.dt_criacao),\n };\n}\n\n/** Bloco \"opcoes\" do esclarecimento: só strings curtas. */\nfunction adaptarOpcoes(apresentacao: unknown): string[] {\n if (!Array.isArray(apresentacao)) return [];\n const bloco: any = apresentacao.find(b => b && typeof b === 'object' && (b as any).tipo === 'opcoes');\n const opcoes = bloco?.dados?.opcoes;\n if (!Array.isArray(opcoes)) return [];\n return opcoes.filter(o => typeof o === 'string' && o.trim()).map(o => o.trim().slice(0, 80)).slice(0, 6);\n}\n\nexport function adaptarAcao(api: UinyAcaoApi): UinyAcao | null {\n const id = idValido(api?.id);\n if (!id) return null;\n return {\n id,\n ferramenta: texto(api.ferramenta, 80),\n resumo: texto(api.resumo, 2000),\n detalhes: adaptarDetalhes(api.detalhes),\n // situação desconhecida: não afirmamos sucesso nem falha\n estado: ESTADOS[api.situacao] ?? 'indeterminada',\n expiraEm: lerData(api.dt_expiracao),\n };\n}\n\n/**\n * \"detalhes\" vem da PropostaAlteracao da ferramenta. Só aproveitamos pares rótulo/valor\n * com valores primitivos; nada é interpretado como HTML. Identificadores internos\n * (tipo, id_*) não são exibidos.\n */\nexport function adaptarDetalhes(detalhes: unknown): { rotulo: string; valor: string }[] {\n const itens: { rotulo: string; valor: string }[] = [];\n const adicionar = (rotulo: unknown, valor: unknown) => {\n if (itens.length >= MAX_DETALHES) return;\n if (typeof rotulo !== 'string' || !rotulo.trim()) return;\n if (typeof valor !== 'string' && typeof valor !== 'number' && typeof valor !== 'boolean') return;\n const v = typeof valor === 'boolean' ? (valor ? 'Sim' : 'Não') : String(valor);\n if (!v.trim()) return;\n itens.push({ rotulo: humanizar(rotulo).slice(0, 80), valor: v.slice(0, MAX_VALOR) });\n };\n\n if (Array.isArray(detalhes)) {\n detalhes.forEach(item => {\n if (item && typeof item === 'object') adicionar((item as any).rotulo ?? (item as any).campo, (item as any).valor);\n });\n return itens;\n }\n if (!detalhes || typeof detalhes !== 'object') return itens;\n\n const d: any = detalhes;\n if (d.tipo === 'alteracao_cor') {\n // tools/studio/AlterarCorTemaStudio.php\n adicionar('Tema', d.tema);\n adicionar('Loja', d.loja);\n adicionar('Cor', d.rotulo);\n adicionar('Valor atual', d.valor_atual ?? 'sem valor definido');\n adicionar('Novo valor', d.valor_novo);\n return itens;\n }\n Object.keys(d)\n .filter(chave => chave !== 'tipo' && !/^id(_|$)/.test(chave))\n .forEach(chave => adicionar(chave, d[chave]));\n return itens;\n}\n\nfunction humanizar(chave: string): string {\n if (/[A-Z ]/.test(chave)) return chave;\n const t = chave.replace(/[_-]+/g, ' ').trim();\n return t.charAt(0).toUpperCase() + t.slice(1);\n}\n\n/**\n * Converte instrucoes_interface (Constants::INSTRUCOES_INTERFACE) em eventos tipados.\n * Tipos fora da lista e campos inesperados são descartados. Nada é executado nem navegado aqui.\n */\nexport function adaptarInstrucoes(instrucoes: unknown): UinyEvento[] {\n if (!Array.isArray(instrucoes)) return [];\n const eventos: UinyEvento[] = [];\n for (const item of instrucoes.slice(0, 10)) {\n if (!item || typeof item !== 'object') continue;\n const bruto: any = item;\n if (bruto.tipo === 'atualizar_preview_tema') {\n const idLojaLeiaute = inteiro(bruto.id_loja_leiaute);\n if (idLojaLeiaute) eventos.push({ tipo: 'tema_atualizado', idLojaLeiaute });\n }\n }\n return eventos;\n}\n","import { HttpBackend, HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { defer, Observable, throwError, TimeoutError } from 'rxjs';\nimport { catchError, timeout } from 'rxjs/operators';\nimport {\n UinyContextoApi,\n UinyCriarConversaResponse,\n UinyHistoricoResponse,\n UinyListaConversasResponse,\n UinyRespostaApi\n} from '../models/uiny-api.models';\nimport { UinyConfig, UinyErro } from '../models/uiny.models';\nimport {\n resolverUrlUiny,\n UINY_CONFIG,\n UINY_TIMEOUT_ACAO_MS,\n UINY_TIMEOUT_CONSULTA_MS,\n UINY_TIMEOUT_MENSAGEM_MS\n} from '../uiny.config';\nimport { idValido } from '../utils/uiny-api.adapter';\nimport { UinySessionService } from './uiny-session.service';\n\nconst MENSAGENS_PADRAO: Record<UinyErro['tipo'], string> = {\n sessao: 'Sua sessão expirou. Entre novamente na Uishop para continuar com a Uiny.',\n rede: 'Não foi possível conectar à Uiny. Verifique sua internet e tente de novo.',\n timeout: 'A Uiny demorou demais para responder. Tente de novo em instantes.',\n conflito: 'Não foi possível concluir agora. Atualize e tente de novo.',\n nao_encontrado: 'Não encontramos o que você pediu. Ele pode ter sido removido.',\n invalido: 'Não foi possível processar esse pedido.',\n limite: 'Você enviou muitas mensagens em pouco tempo. Aguarde um pouco e tente de novo.',\n servidor: 'A Uiny está com instabilidade no momento. Tente de novo em instantes.',\n configuracao: 'A Uiny não está configurada neste sistema.',\n};\n\n/**\n * Cliente HTTP da API da Uiny (uishop-ia, /api/v1).\n *\n * Usa um HttpClient sobre o HttpBackend, sem os interceptors da aplicação:\n * - o ErrorInterceptor do uitec-ng-core troca o erro por uma string (perde status e o corpo,\n * necessários para sessão expirada, ação expirada/invalidada e conflitos) e abre um toast global;\n * - o SpinnerInterceptor cobriria a tela a cada mensagem.\n * O token é o mesmo usado pelo JwtInterceptor (AuthService.currentUserValue.token) e só é\n * anexado a requisições cuja URL começa com a URL-base configurada da Uiny.\n */\n@Injectable({ providedIn: 'root' })\nexport class UinyApiService {\n\n readonly baseUrl: string | null;\n private readonly http: HttpClient;\n\n constructor(\n httpBackend: HttpBackend,\n private session: UinySessionService,\n @Optional() @Inject(UINY_CONFIG) config: UinyConfig | null,\n @Optional() @Inject('APP_ENVIRONMENT') env: any\n ) {\n this.http = new HttpClient(httpBackend);\n this.baseUrl = resolverUrlUiny(config, env);\n }\n\n get configurada(): boolean {\n return !!this.baseUrl;\n }\n\n listarConversas(): Observable<UinyListaConversasResponse> {\n return defer(() => this.request<UinyListaConversasResponse>('GET', '/conversas', null, UINY_TIMEOUT_CONSULTA_MS,\n new HttpParams().set('page', 1).set('per_page', 20)));\n }\n\n criarConversa(contexto: UinyContextoApi): Observable<UinyCriarConversaResponse> {\n return defer(() => this.request<UinyCriarConversaResponse>('POST', '/conversas', { contexto }, UINY_TIMEOUT_CONSULTA_MS));\n }\n\n /** Página mais recente do histórico (até 100 mensagens), em ordem cronológica. */\n historico(idConversa: string): Observable<UinyHistoricoResponse> {\n return defer(() => this.request<UinyHistoricoResponse>('GET', `/conversas/${this.id(idConversa)}`, null, UINY_TIMEOUT_CONSULTA_MS,\n new HttpParams().set('page', 1).set('per_page', 100)));\n }\n\n enviarMensagem(idConversa: string, texto: string, contexto: UinyContextoApi): Observable<UinyRespostaApi> {\n return defer(() => this.request<UinyRespostaApi>('POST', `/conversas/${this.id(idConversa)}/mensagens`, { texto, contexto }, UINY_TIMEOUT_MENSAGEM_MS));\n }\n\n /** Confirma pelo id da ação persistida. Nenhum argumento é enviado. Nunca é repetida automaticamente. */\n confirmarAcao(idAcao: string): Observable<UinyRespostaApi> {\n return defer(() => this.request<UinyRespostaApi>('POST', `/acoes/${this.id(idAcao)}/confirmar`, {}, UINY_TIMEOUT_ACAO_MS));\n }\n\n cancelarAcao(idAcao: string): Observable<UinyRespostaApi> {\n return defer(() => this.request<UinyRespostaApi>('POST', `/acoes/${this.id(idAcao)}/cancelar`, {}, UINY_TIMEOUT_CONSULTA_MS));\n }\n\n private id(valor: string): string {\n const id = idValido(valor);\n if (!id) throw this.erro('invalido', 0);\n return id;\n }\n\n private request<T>(method: 'GET' | 'POST', path: string, body: any, timeoutMs: number, params?: HttpParams): Observable<T> {\n if (!this.baseUrl) {\n return throwError(() => this.erro('configuracao', 0));\n }\n const url = this.baseUrl + path;\n const token = this.session.token();\n if (!token) {\n return throwError(() => this.erro('sessao', 401));\n }\n\n let headers = new HttpHeaders({ 'Accept': 'application/json' });\n // Garantia explícita: o token só segue para a URL-base da Uiny.\n if (url.startsWith(this.baseUrl + '/')) {\n headers = headers.set('Authorization', `Bearer ${token}`);\n }\n if (method === 'POST') {\n headers = headers.set('Content-Type', 'application/json');\n }\n\n return this.http.request<T>(method, url, { body: body ?? undefined, headers, params, responseType: 'json' }).pipe(\n timeout(timeoutMs),\n catchError(err => throwError(() => this.normalizarErro(err)))\n );\n }\n\n private normalizarErro(err: any): UinyErro {\n if (err instanceof TimeoutError) {\n return this.erro('timeout', 0);\n }\n if (!(err instanceof HttpErrorResponse)) {\n return this.erro('servidor', 0);\n }\n\n const corpo: UinyRespostaApi = err.error && typeof err.error === 'object' ? err.error : null;\n const correlacao = this.textoSeguro(corpo?.id_correlacao, 64) || this.textoSeguro(err.headers?.get('X-Correlation-Id'), 64);\n const codigo = this.textoSeguro(corpo?.erro?.codigo, 60);\n const mensagemApi = this.textoSeguro(corpo?.erro?.mensagem, 300);\n\n let tipo: UinyErro['tipo'];\n if (err.status === 0) tipo = 'rede';\n else if (err.status === 401) tipo = 'sessao';\n else if (err.status === 404) tipo = 'nao_encontrado';\n else if (err.status === 409) tipo = 'conflito';\n else if (err.status === 429) tipo = 'limite';\n else if (err.status === 400 || err.status === 403 || err.status === 422) tipo = 'invalido';\n else tipo = 'servidor';\n\n if (tipo === 'sessao') {\n this.session.recusarSessaoAtual();\n }\n\n // 502/503/504 trazem mensagens próprias e seguras (INTEGRACAO_*, PROVEDOR_IA_INDISPONIVEL).\n // 500 (INTERNO) e falhas de rede usam sempre o texto padrão.\n const usarMensagemApi = tipo !== 'rede' && tipo !== 'sessao' && err.status !== 500;\n const mensagem = (usarMensagemApi && mensagemApi) || MENSAGENS_PADRAO[tipo];\n\n return { tipo, status: err.status, codigo, mensagem, correlacao, corpo };\n }\n\n private erro(tipo: UinyErro['tipo'], status: number): UinyErro {\n return { tipo, status, codigo: null, mensagem: MENSAGENS_PADRAO[tipo], correlacao: null };\n }\n\n private textoSeguro(valor: any, max: number): string | null {\n if (typeof valor !== 'string') return null;\n const texto = valor.trim();\n if (!texto || /bearer\\s/i.test(texto)) return null;\n return texto.length > max ? texto.slice(0, max) + '…' : texto;\n }\n}\n","import { Inject, Injectable, isDevMode, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map, shareReplay } from 'rxjs/operators';\nimport { UinyConfig, UinyContexto, UinyEvento } from '../models/uiny.models';\nimport { UINY_CONFIG } from '../uiny.config';\nimport { normalizarContexto, mesmoContexto } from '../utils/uiny-contexto';\nimport { UinyApiService } from './uiny-api.service';\nimport { UinySessionService } from './uiny-session.service';\n\n/**\n * Estado compartilhado da Uiny: quem habilitou (o header), quem hospeda o painel\n * (o ui-assistant-layout), se está aberto, o contexto da tela e os eventos de saída.\n *\n * O painel só fica disponível quando TODAS as condições valem:\n * - algum ui-header está com [showAssistant]=\"true\";\n * - existe um ui-assistant-layout na página para receber o painel;\n * - há sessão autenticada no AuthService (e a API não a recusou);\n * - a URL da API está configurada.\n */\n@Injectable({ providedIn: 'root' })\nexport class UiAssistantService {\n\n private readonly habilitadores$ = new BehaviorSubject<ReadonlySet<object>>(new Set());\n private readonly hosts$ = new BehaviorSubject<number>(0);\n private readonly abertoInterno$ = new BehaviorSubject<boolean>(false);\n private readonly contextoInterno$ = new BehaviorSubject<UinyContexto>({});\n private readonly eventosInternos$ = new Subject<UinyEvento>();\n private gatilho: HTMLElement | null = null;\n private avisouSemHost = false;\n\n /** Header habilitou e há usuário autenticado (controla o botão). */\n readonly disponivel$: Observable<boolean>;\n /** Painel aberto (sempre false quando indisponível). */\n readonly aberto$: Observable<boolean>;\n readonly contexto$: Observable<UinyContexto> = this.contextoInterno$.pipe(distinctUntilChanged(mesmoContexto));\n /** Ações concluídas e instruções de interface vindas da API, já validadas. */\n readonly eventos$: Observable<UinyEvento> = this.eventosInternos$.asObservable();\n\n constructor(\n private session: UinySessionService,\n private api: UinyApiService,\n @Optional() @Inject(UINY_CONFIG) private config: UinyConfig | null\n ) {\n this.disponivel$ = combineLatest([this.habilitadores$, this.hosts$, this.session.sessao$]).pipe(\n map(([habilitadores, hosts, sessao]) => habilitadores.size > 0 && hosts > 0 && !!sessao && this.api.configurada && !!this.config),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n this.aberto$ = combineLatest([this.abertoInterno$, this.disponivel$]).pipe(\n map(([aberto, disponivel]) => aberto && disponivel),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: false })\n );\n\n // Indisponível (logout, sessão recusada, header sem a flag): fecha sem devolver foco.\n this.disponivel$.subscribe(disponivel => {\n if (!disponivel && this.abertoInterno$.value) {\n this.gatilho = null;\n this.abertoInterno$.next(false);\n }\n });\n\n combineLatest([this.habilitadores$, this.hosts$]).subscribe(([habilitadores, hosts]) => this.diagnosticar(habilitadores.size > 0, hosts));\n }\n\n get aberto(): boolean {\n return this.abertoInterno$.value;\n }\n\n get sistemaOrigem() {\n return this.config?.sistemaOrigem ?? null;\n }\n\n abrir(gatilho?: HTMLElement | null): void {\n if (gatilho) this.gatilho = gatilho;\n this.abertoInterno$.next(true);\n }\n\n /** Fecha o painel e devolve o foco ao botão que o abriu, se ele ainda existir. */\n fechar(devolverFoco = true): void {\n if (!this.abertoInterno$.value) return;\n this.abertoInterno$.next(false);\n const gatilho = this.gatilho;\n this.gatilho = null;\n if (devolverFoco && gatilho) {\n // espera o layout reexibir a aplicação (no celular ela fica recolhida)\n setTimeout(() => gatilho.isConnected && gatilho.focus());\n }\n }\n\n alternar(gatilho?: HTMLElement | null): void {\n this.abertoInterno$.value ? this.fechar() : this.abrir(gatilho);\n }\n\n /** Substitui o contexto da tela atual. Campos fora do tipo UinyContexto são ignorados. */\n definirContexto(contexto: UinyContexto | null): void {\n this.contextoInterno$.next(normalizarContexto(contexto));\n }\n\n /** Altera apenas os campos informados do contexto. */\n atualizarContexto(parcial: Partial<UinyContexto>): void {\n this.contextoInterno$.next(normalizarContexto({ ...this.contextoInterno$.value, ...parcial }));\n }\n\n get contexto(): UinyContexto {\n return this.contextoInterno$.value;\n }\n\n /** @internal usado pelo ui-header */\n definirHabilitado(origem: object, habilitado: boolean): void {\n const atual = new Set(this.habilitadores$.value);\n habilitado ? atual.add(origem) : atual.delete(origem);\n if (atual.size !== this.habilitadores$.value.size) this.habilitadores$.next(atual);\n }\n\n /** @internal usado pelo ui-assistant-layout */\n registrarHost(): () => void {\n this.hosts$.next(this.hosts$.value + 1);\n let removido = false;\n return () => {\n if (removido) return;\n removido = true;\n this.hosts$.next(Math.max(0, this.hosts$.value - 1));\n };\n }\n\n /** @internal usado pelo serviço de conversa */\n emitir(evento: UinyEvento): void {\n this.eventosInternos$.next(evento);\n }\n\n private diagnosticar(habilitado: boolean, hosts: number): void {\n if (!isDevMode() || !habilitado) return;\n if (!this.config) {\n console.error('[Uiny] showAssistant está ativo, mas UiAssistantModule.forRoot({ sistemaOrigem }) não foi importado.');\n } else if (!this.api.configurada) {\n console.error('[Uiny] URL da API não configurada. Informe APP_ENVIRONMENT.domain.uiny ou forRoot({ apiUrl }).');\n } else if (hosts === 0 && !this.avisouSemHost) {\n // o layout pode ser criado logo depois do header; avisa só se continuar faltando\n this.avisouSemHost = true;\n setTimeout(() => {\n if (this.hosts$.value === 0) {\n console.warn('[Uiny] showAssistant está ativo, mas nenhum <ui-assistant-layout> envolve a aplicação. O botão fica oculto.');\n }\n }, 2000);\n }\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { UiAssistantService } from '../../services/ui-assistant.service';\n\n/** Botão que abre/fecha a Uiny. Só aparece quando a assistente está disponível. */\n@Component({\n selector: 'ui-assistant-button',\n templateUrl: './ui-assistant-button.component.html',\n styleUrls: ['./ui-assistant-button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UiAssistantButtonComponent {\n constructor(public assistant: UiAssistantService) { }\n}\n","<button *ngIf=\"assistant.disponivel$ | async\" #botao type=\"button\" class=\"uiny-trigger\"\n [class.is-open]=\"assistant.aberto$ | async\"\n [attr.aria-expanded]=\"(assistant.aberto$ | async) ? 'true' : 'false'\"\n aria-controls=\"uiny-painel\"\n [attr.aria-label]=\"(assistant.aberto$ | async) ? 'Fechar a Uiny, assistente da Uishop' : 'Abrir a Uiny, assistente da Uishop'\"\n [title]=\"(assistant.aberto$ | async) ? 'Fechar a Uiny' : 'Falar com a Uiny'\"\n (click)=\"assistant.alternar(botao)\">\n <svg class=\"uiny-trigger__mark\" viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" aria-hidden=\"true\" focusable=\"false\">\n <path d=\"M12 2.5c.5 3.9 2.6 6.9 6.4 8.2.5.2.5.9 0 1.1-3.8 1.3-5.9 4.3-6.4 8.2-.1.6-.9.6-1 0-.5-3.9-2.6-6.9-6.4-8.2-.5-.2-.5-.9 0-1.1 3.8-1.3 5.9-4.3 6.4-8.2.1-.6.9-.6 1 0Z\" fill=\"currentColor\"/>\n <path d=\"M19 2.8c.2 1.3.9 2.2 2.1 2.6.2.1.2.3 0 .4-1.2.4-1.9 1.3-2.1 2.6 0 .2-.3.2-.3 0-.2-1.3-.9-2.2-2.1-2.6-.2-.1-.2-.3 0-.4 1.2-.4 1.9-1.3 2.1-2.6 0-.2.3-.2.3 0Z\" fill=\"currentColor\" opacity=\".7\"/>\n </svg>\n <span class=\"uiny-trigger__label\">Uiny</span>\n</button>\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { AuthAcesso, BaseUrlService, UserAuthDTO, UsuarioMenuDTO } from 'uitec-ng-core';\r\nimport { AuthService } from 'uitec-ng-core';\r\n\r\n@Component({\r\n selector: 'my-account',\r\n templateUrl: './my-account.component.html',\r\n styleUrls: ['./my-account.component.scss']\r\n})\r\nexport class MyAccountComponent implements OnInit {\r\n\r\n @Input() menus: UsuarioMenuDTO[];\r\n\r\n @Output() onNavigate = new EventEmitter<UsuarioMenuDTO>();\r\n\r\n public userObs: UserAuthDTO;\r\n public accessObs: AuthAcesso;\r\n\r\n constructor(\r\n public authService: AuthService,\r\n public urlService: BaseUrlService\r\n ) {\r\n this.userObs = this.authService.currentUserValue;\r\n this.accessObs = this.authService.currentAccessValue;\r\n\r\n this.authService.currentUser.subscribe((data) => {\r\n this.userObs = data;\r\n });\r\n\r\n this.authService.currentAccess.subscribe((data) => {\r\n this.accessObs = data;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n logout() {\r\n this.authService.logout();\r\n }\r\n\r\n clickMenu(menu: UsuarioMenuDTO) {\r\n this.onNavigate.emit(menu);\r\n }\r\n}\r\n","<ui-user-top [urlImage]=\"urlService.imagemUsuario({model: userObs?.usuario})\" [usuario]=\"userObs?.usuario\"\r\n [acesso]=\"accessObs\"></ui-user-top>\r\n\r\n<ul class=\"profile-dropdown onhover-show-div\">\r\n <li *ngFor=\"let col of menus\">\r\n <a (click)=\"clickMenu(col)\">\r\n <ui-icon [icon]=\"col.ds_icone\" size=\"20\"></ui-icon>\r\n <span>{{col.no_funcionalidade}}</span>\r\n </a>\r\n </li>\r\n <li>\r\n <a href=\"javascript:void(0)\" (click)=\"logout()\" class=\"text-danger\">\r\n <ui-icon icon=\"login\" size=\"20\"></ui-icon>\r\n <span>Sair</span>\r\n </a>\r\n </li>\r\n</ul>\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Component, ContentChild, EventEmitter, HostListener, Inject, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport { AuthAcesso, AuthService, BaseUrlService, IframeService, LayoutService, UserAuthDTO, UsuarioMenuDTO } from 'uitec-ng-core';\r\nimport { UiAssistantService } from './assistant/services/ui-assistant.service';\r\n\r\n@Component({\r\n selector: 'ui-header',\r\n templateUrl: './ui-header.component.html',\r\n styleUrls: ['./ui-header.component.scss']\r\n})\r\nexport class UiHeaderComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n @Input() collapseSidebar: boolean;\r\n @Input() fullScreen: boolean;\r\n @Input() headerBackdrop: string;\r\n @Input() isFree: string;\r\n @Input() menus: UsuarioMenuDTO[];\r\n @Input() sidebar: boolean = true;\r\n @Input() redirectHome: boolean = true;\r\n @Input() darkDefault: string = \"light\";\r\n /** Exibe o botão da Uiny (assistente virtual). Exige um <ui-assistant-layout> envolvendo a aplicação. */\r\n @Input() showAssistant: boolean = false;\r\n\r\n @Output() collapseSidebarChange = new EventEmitter<boolean>();\r\n @Output() fullScreenChange = new EventEmitter<boolean>();\r\n @Output() headerBackdropChange = new EventEmitter<boolean>();\r\n @Output() onNavigate = new EventEmitter<UsuarioMenuDTO>();\r\n\r\n @ContentChild('left') left: TemplateRef<any>;\r\n @ContentChild('center') center: TemplateRef<any>;\r\n @ContentChild('right') right: TemplateRef<any>;\r\n\r\n public statuSidebar;\r\n public dark: boolean;\r\n public elem: any;\r\n public userObs: UserAuthDTO;\r\n public accessObs: AuthAcesso;\r\n\r\n constructor(\r\n public authService: AuthService,\r\n public urlService: BaseUrlService,\r\n public layoutService: LayoutService,\r\n public iframeService: IframeService,\r\n public assistantService: UiAssistantService,\r\n @Inject(DOCUMENT) private document: any\r\n ) { }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['showAssistant']) {\r\n this.assistantService.definirHabilitado(this, !!this.showAssistant);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.assistantService.definirHabilitado(this, false);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.elem = document.documentElement;\r\n\r\n this.userObs = this.authService.currentUserValue;\r\n this.accessObs = this.authService.currentAccessValue;\r\n\r\n this.authService.currentUser.subscribe((data) => {\r\n this.userObs = data;\r\n });\r\n\r\n this.authService.currentAccess.subscribe((data) => {\r\n this.accessObs = data;\r\n });\r\n\r\n this.dark = localStorage.getItem('darkMode') == 'enabled';\r\n setTimeout(() => {\r\n this.layoutService.config.settings.layout_version = this.dark ? \"dark-only\" : this.darkDefault;\r\n });\r\n this.document.body.classList.add(this.dark ? \"dark-only\" : \"light\");\r\n this.document.documentElement.classList.add(this.dark ? \"dark-only\" : \"light\");\r\n\r\n this.addEventListenerOnIframe();\r\n this.buildAmbiente();\r\n }\r\n\r\n layoutToggle() {\r\n this.dark = !this.dark;\r\n localStorage.setItem('darkMode', this.dark ? 'enabled' : 'disabled');\r\n this.layoutService.config.settings.layout_version = this.dark ? \"dark-only\" : \"light\";\r\n const classColor = this.dark ? \"dark-only\" : \"light\";\r\n this.document.body.classList.remove('dark-only');\r\n this.document.body.classList.remove('light');\r\n this.document.body.classList.add(classColor);\r\n this.document.documentElement.classList.remove('dark-only');\r\n this.document.documentElement.classList.remove('light');\r\n this.document.documentElement.classList.add(classColor);\r\n\r\n this.updateIframeTheme();\r\n }\r\n\r\n updateIframeTheme() {\r\n const iframe = document.querySelector('iframe');\r\n if (!iframe || !iframe.contentWindow) return;\r\n\r\n const theme = this.dark ? \"dark-only\" : \"light\";\r\n const iframeSrc = iframe.getAttribute('src');\r\n\r\n let origin = \"*\"; // Usa \"*\" por padrão para evitar erro\r\n\r\n if (iframeSrc) {\r\n try {\r\n const url = new URL(iframeSrc, window.location.origin);\r\n origin = url.origin; // Extrai o domínio corretamente\r\n } catch (error) {\r\n console.error(\"Erro ao extrair o origin do iframe:\", error);\r\n }\r\n }\r\n\r\n iframe.contentWindow.postMessage({ theme }, origin);\r\n }\r\n\r\n addEventListenerOnIframe() {\r\n const frame = document.querySelector('iframe');\r\n if (!frame) {\r\n return;\r\n }\r\n\r\n frame.addEventListener('load', () => {\r\n this.updateIframeTheme();\r\n });\r\n }\r\n\r\n //recebe o valor inicial do collapseSidebar e grava no localstorage\r\n setStatusSideBar() {\r\n this.statuSidebar = this.collapseSidebar;\r\n localStorage.setItem('local', this.statuSidebar);\r\n }\r\n\r\n sidebarToggle() {\r\n this.collapseSidebar = !this.collapseSidebar;\r\n this.setStatusSideBar();\r\n this.collapseSidebarChange.emit(this.collapseSidebar);\r\n }\r\n\r\n home() {\r\n if (!this.redirectHome) return;\r\n\r\n let menu = new UsuarioMenuDTO();\r\n menu.ds_rota = '/';\r\n menu.ds_tipo = 'link';\r\n this.onNavigate.emit(menu);\r\n }\r\n\r\n logout() {\r\n\r\n this.authService.logout();\r\n }\r\n\r\n clickMenu(menu: UsuarioMenuDTO) {\r\n this.onNavigate.emit(menu);\r\n }\r\n\r\n buildAmbiente() {\r\n let textContent = null;\r\n\r\n if (location.host.search('hom-') == 0) {\r\n textContent = 'Homolog';\r\n } else if (location.host.search('localhost') == 0) {\r\n textContent = 'Develop';\r\n }\r\n\r\n if (!textContent) return;\r\n\r\n const div = document.createElement('div');\r\n const span = document.createElement('span');\r\n div.className = `ambiente ambiente-${textContent.toLowerCase()}`;\r\n span.textContent = textContent;\r\n div.appendChild(span);\r\n document.body.appendChild(div);\r\n }\r\n\r\n toggleFullScreen() {\r\n this.fullScreen = !this.fullScreen;\r\n if (this.fullScreen) {\r\n if (this.elem.requestFullscreen) {\r\n this.elem.requestFullscreen();\r\n } else if (this.elem.mozRequestFullScreen) {\r\n /* Firefox */\r\n this.elem.mozRequestFullScreen();\r\n } else if (this.elem.webkitRequestFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n this.elem.webkitRequestFullscreen();\r\n } else if (this.elem.msRequestFullscreen) {\r\n /* IE/Edge */\r\n this.elem.msRequestFullscreen();\r\n }\r\n } else {\r\n if (!this.document.exitFullscreen) {\r\n this.document.exitFullscreen();\r\n } else if (this.document.mozCancelFullScreen) {\r\n /* Firefox */\r\n this.document.mozCancelFullScreen();\r\n } else if (this.document.webkitExitFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n this.document.webkitExitFullscreen();\r\n } else if (this.document.msExitFullscreen) {\r\n /* IE/Edge */\r\n this.document.msExitFullscreen();\r\n }\r\n }\r\n }\r\n}\r\n","<!-- Page Header Backdrop -->\r\n<div *ngIf=\"headerBackdrop\" (click)=\"navService.hideAllPopUps()\" class=\"header-backgrop\"></div>\r\n\r\n<!-- Page Header Start -->\r\n<div class=\"page-header\" [class.close_icon]=\"collapseSidebar\" [class.not-sidebar]=\"!sidebar\">\r\n <div class=\"header-wrapper d-flex m-0 justify-content-between\">\r\n <div class=\"header-logo-wrapper col-auto d-lg-none px-0\">\r\n <div *ngIf=\"sidebar\" class=\"toggle-sidebar\" (click)=\"sidebarToggle()\">\r\n <ui-icon icon=\"menu\" class=\"status_toggle middle\"></ui-icon>\r\n </div>\r\n <a (click)=\"home()\" [class.cursor-pointer]=\"redirectHome\">\r\n <img class=\"img-fluid for-dark image-logo d-md-none\" src=\"assets/images/logo/logo_dark.png\" alt=\"\" />\r\n </a>\r\n </div>\r\n\r\n <div class=\"left-header horizontal-wrapper ps-0\">\r\n <ng-container [ngTemplateOutlet]=\"left\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nav-center\">\r\n <ng-container [ngTemplateOutlet]=\"center\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nav-right p-0\">\r\n <ul class=\"nav-menus\">\r\n <!-- <li class=\"language-nav\" (click)=\"languageToggle()\">\r\n <header-languages></header-languages>\r\n </li> -->\r\n <ng-container *ngIf=\"isFree; then liUpgrade; else liEmpty\"></ng-container>\r\n\r\n <ng-template #liUpgrade>\r\n <li>\r\n <button\r\n class=\"d-flex align-items-center justify-content-center border-0 rounded-pill gap-2 b-color\"\r\n (click)=\"openModal()\">\r\n <img src=\"assets/images/coroa.svg\" class=\"w-auto\" alt=\"icone-coroa\" />\r\n Faça Upgrade\r\n </button>\r\n </li>\r\n </ng-template>\r\n <ng-template #liEmpty>\r\n <li></li>\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"right\"></ng-container>\r\n\r\n <li *ngIf=\"showAssistant && (assistantService.disponivel$ | async)\" class=\"uiny-nav\">\r\n <ui-assistant-button></ui-assistant-button>\r\n </li>\r\n\r\n <li>\r\n <div class=\"mode cursor-pointer\" (click)=\"layoutToggle()\">\r\n <ui-icon pTooltip=\"Ativar Modo Escuro\" tooltipPosition=\"bottom\" icon=\"dark_mode\" size=\"24\"\r\n *ngIf=\"!dark\"></ui-icon>\r\n <ui-icon pTooltip=\"Ativar Modo Claro\" tooltipPosition=\"bottom\" icon=\"sunny\" size=\"24\"\r\n *ngIf=\"dark\"></ui-icon>\r\n\r\n </div>\r\n </li>\r\n\r\n <li class=\"maximize\">\r\n <a pTooltip=\"Maximizar\" tooltipPosition=\"bottom\" class=\"text-dark cursor-pointer\"\r\n href=\"javascript:void(0)\" (click)=\"toggleFullScreen()\">\r\n <ui-icon icon=\"fullscreen\" size=\"24\"></ui-icon>\r\n </a>\r\n </li>\r\n <li class=\"profile-nav onhover-dropdown p-0 ps-2\">\r\n <my-account [menus]=\"menus\" (onNavigate)=\"onNavigate.emit($event)\"></my-account>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n<!-- Page Header Ends -->\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n Output\r\n} from '@angular/core';\r\nimport { UinyAcao, UinyEstadoAcao } from '../../models/uiny.models';\r\n\r\nconst ROTULOS: Record<UinyEstadoAcao, string> = {\r\n pendente: 'Aguardando sua confirmação',\r\n executando: 'Executando…',\r\n concluida: 'Concluída',\r\n cancelada: 'Cancelada',\r\n expirada: 'Expirada',\r\n invalidada: 'Precisa de nova confirmação',\r\n falha: 'Não concluída',\r\n indeterminada: 'Resultado a verificar',\r\n};\r\n\r\nconst DESCRICOES: Partial<Record<UinyEstadoAcao, string>> = {\r\n concluida: 'A alteração foi aplicada.',\r\n cancelada: 'Nada foi alterado.',\r\n expirada: 'O prazo para confirmar terminou. Nada foi alterado; peça de novo se ainda quiser.',\r\n invalidada: 'Os dados mudaram desde a proposta. Peça a alteração de novo para revisar.',\r\n falha: 'A alteração não foi aplicada.',\r\n};\r\n\r\n/**\r\n * Card de ação pendente. A confirmação só acontece pelo clique em \"Confirmar\":\r\n * o card emite apenas o id da ação persistida, sem argumentos.\r\n */\r\n@Component({\r\n selector: 'ui-assistant-action-card',\r\n templateUrl: './ui-assistant-action-card.component.html',\r\n styleUrls: ['./ui-assistant-action-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UiAssistantActionCardComponent implements OnChanges, OnDestroy {\r\n\r\n @Input() acao: UinyAcao;\r\n\r\n @Output() confirmar = new EventEmitter<string>();\r\n @Output() cancelar = new EventEmitter<string>();\r\n @Output() verificar = new EventEmitter<string>();\r\n\r\n public agora = Date.now();\r\n private timer: any;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private zone: NgZone) { }\r\n\r\n ngOnChanges(): void {\r\n this.agendar();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n clearInterval(this.timer);\r\n }\r\n\r\n /** O servidor decide a expiração; aqui só evitamos oferecer um clique que já vai falhar. */\r\n get expiradaLocalmente(): boolean {\r\n return this.acao?.estado === 'pendente' && !!this.acao.expiraEm && this.acao.expiraEm.getTime() <= this.agora;\r\n }\r\n\r\n get estado(): UinyEstadoAcao {\r\n return this.expiradaLocalmente ? 'expirada' : this.acao?.estado;\r\n }\r\n\r\n get rotulo(): string {\r\n return ROTULOS[this.estado] ?? '';\r\n }\r\n\r\n get descricao(): string | null {\r\n return this.acao?.aviso || DESCRICOES[this.estado] || null;\r\n }\r\n\r\n get podeDecidir(): boolean {\r\n return this.estado === 'pendente' && !this.acao.enviando;\r\n }\r\n\r\n get minutosRestantes(): number | null {\r\n if (this.estado !== 'pendente' || !this.acao.expiraEm) return null;\r\n return Math.max(1, Math.ceil((this.acao.expiraEm.getTime() - this.agora) / 60000));\r\n }\r\n\r\n ehCor(valor: string): boolean {\r\n return /^#(?:[0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(valor);\r\n }\r\n\r\n aoConfirmar(): void {\r\n if (this.podeDecidir) this.confirmar.emit(this.acao.id);\r\n }\r\n\r\n aoCancelar(): void {\r\n if (this.podeDecidir) this.cancelar.emit(this.acao.id);\r\n }\r\n\r\n private agendar(): void {\r\n clearInterval(this.timer);\r\n this.agora = Date.now();\r\n if (this.acao?.estado !== 'pendente' || !this.acao.expiraEm) return;\r\n this.zone.runOutsideAngular(() => {\r\n this.timer = setInterval(() => this.zone.run(() => {\r\n this.agora = Date.now();\r\n if (this.expiradaLocalmente) clearInterval(this.timer);\r\n this.cdr.markForCheck();\r\n }), 15000);\r\n });\r\n }\r\n}\r\n","<article class=\"uiny-acao\" [ngClass]=\"'uiny-acao--' + estado\" [attr.aria-busy]=\"acao.enviando ? 'true' : null\"\n [attr.aria-labelledby]=\"'uiny-acao-' + acao.id\">\n <header class=\"uiny-acao__topo\">\n <span class=\"uiny-acao__selo\">\n <span *ngIf=\"estado === 'executando' || acao.enviando\" class=\"uiny-acao__spinner\" aria-hidden=\"true\"></span>\n <ui-icon *ngIf=\"estado === 'concluida'\" icon=\"check_circle\" size=\"16\"></ui-icon>\n <ui-icon *ngIf=\"estado === 'falha' || estado === 'indeterminada'\" icon=\"error\" size=\"16\"></ui-icon>\n <ui-icon *ngIf=\"estado === 'pendente' && !acao.enviando\" icon=\"pending_actions\" size=\"16\"></ui-icon>\n {{ rotulo }}\n </span>\n <span *ngIf=\"minutosRestantes\" class=\"uiny-acao__prazo\">expira em {{ minutosRestantes }} min</span>\n </header>\n\n <p class=\"uiny-acao__resumo\" [id]=\"'uiny-acao-' + acao.id\">{{ acao.resumo }}</p>\n\n <dl *ngIf=\"acao.detalhes?.length\" class=\"uiny-acao__detalhes\">\n <div *ngFor=\"let d of acao.detalhes\" class=\"uiny-acao__item\">\n <dt>{{ d.rotulo }}</dt>\n <dd>\n <span *ngIf=\"ehCor(d.valor)\" class=\"uiny-acao__cor\" [style.background-color]=\"d.valor\" aria-hidden=\"true\"></span>\n {{ d.valor }}\n </dd>\n </div>\n </dl>\n\n <p *ngIf=\"descricao\" class=\"uiny-acao__descricao\" role=\"status\">{{ descricao }}</p>\n\n <div *ngIf=\"estado === 'pendente'\" class=\"uiny-acao__botoes\">\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--secundario\" [disabled]=\"!podeDecidir\" (click)=\"aoCancelar()\">\n Cancelar\n </button>\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--primario\" [disabled]=\"!podeDecidir\" (click)=\"aoConfirmar()\">\n Confirmar\n </button>\n </div>\n\n <div *ngIf=\"estado === 'indeterminada'\" class=\"uiny-acao__botoes\">\n <button type=\"button\" class=\"uiny-acao__botao uiny-acao__botao--secundario\" [disabled]=\"acao.enviando\" (click)=\"verificar.emit(acao.id)\">\n Verificar resultado\n </button>\n </div>\n</article>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { UINY_MENSAGEM_MAX_CARACTERES } from '../../uiny.config';\n\nconst ALTURA_MAXIMA = 160;\n\n/** Campo de mensagem: Enter envia, Shift+Enter quebra linha, cresce até ALTURA_MAXIMA. */\n@Component({\n selector: 'ui-assistant-composer',\n templateUrl: './ui-assistant-composer.component.html',\n styleUrls: ['./ui-assistant-composer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UiAssistantComposerComponent {\n\n @Input() desabilitado = false;\n @Input() enviando = false;\n /** Explica por que o envio está bloqueado (sem internet, carregando...). */\n @Input() motivo: string | null = null;\n\n @Output() enviar = new EventEmitter<string>();\n\n @ViewChild('campo', { static: true }) campo: ElementRef<HTMLTextAreaElement>;\n\n public readonly max = UINY_MENSAGEM_MAX_CARACTERES;\n public texto = '';\n\n get vazio(): boolean {\n return !this.texto.trim();\n }\n\n get bloqueado(): boolean {\n return this.desabilitado || this.enviando || this.vazio || this.texto.length > this.max;\n }\n\n get mostrarContador(): boolean {\n return this.texto.length > this.max - 400;\n }\n\n focar(): void {\n this.campo?.nativeElement.focus({ preventScroll: true });\n }\n\n limpar(): void {\n this.texto = '';\n if (this.campo) {\n this.campo.nativeElement.value = '';\n this.ajustarAltura();\n }\n }\n\n aoDigitar(valor: string): void {\n this.texto = valor;\n this.ajustarAltura();\n }\n\n aoTeclar(evento: KeyboardEvent): void {\n if (evento.key !== 'Enter' || evento.shiftKey) return;\n // durante a composição (IME, acentos em alguns teclados) Enter confirma o caractere\n if (evento.isComposing || evento.keyCode === 229) return;\n evento.preventDefault();\n this.submeter();\n }\n\n submeter(): void {\n if (this.bloqueado) return;\n this.enviar.emit(this.texto.trim());\n }\n\n private ajustarAltura(): void {\n const el = this.campo.nativeElement;\n el.style.height = 'auto';\n el.style.height = Math.min(el.scrollHeight, ALTURA_MAXIMA) + 'px';\n el.style.overflowY = el.scrollHeight > ALTURA_MAXIMA ? 'auto' : 'hidden';\n }\n}\n","<form class=\"uiny-composer\" (submit)=\"$event.preventDefault(); submeter()\">\n <label for=\"uiny-campo\" class=\"uiny-sr\">Mensagem para a Uiny</label>\n <div class=\"uiny-composer__caixa\" [class.is-desabilitado]=\"desabilitado\">\n <textarea #campo id=\"uiny-campo\" class=\"uiny-composer__campo\" rows=\"1\"\n placeholder=\"Pergunte algo para a Uiny\"\n [value]=\"texto\"\n [attr.aria-describedby]=\"motivo ? 'uiny-campo-motivo' : 'uiny-campo-dica'\"\n [attr.maxlength]=\"max + 200\"\n (input)=\"aoDigitar(campo.value)\"\n (keydown)=\"aoTeclar($event)\"></textarea>\n\n <button type=\"submit\" class=\"uiny-composer__enviar\" [disabled]=\"bloqueado\"\n [attr.aria-label]=\"enviando ? 'Aguardando a resposta da Uiny' : 'Enviar mensagem'\"\n [title]=\"enviando ? 'Aguardando a resposta' : 'Enviar (Enter)'\">\n <span *ngIf=\"enviando\" class=\"uiny-composer__spinner\" aria-hidden=\"true\"></span>\n <ui-icon *ngIf=\"!enviando\" icon=\"arrow_upward\" size=\"20\"></ui-icon>\n </button>\n </div>\n\n <div class=\"uiny-composer__rodape\">\n <span *ngIf=\"motivo\" id=\"uiny-campo-motivo\" class=\"uiny-composer__motivo\">{{ motivo }}</span>\n <span *ngIf=\"!motivo\" id=\"uiny-campo-dica\">Enter envia · Shift+Enter quebra a linha</span>\n <span *ngIf=\"mostrarContador\" class=\"uiny-composer__contador\" [class.is-excedido]=\"texto.length > max\">\n {{ texto.length }}/{{ max }}\n </span>\n </div>\n</form>\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, of, Subject, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, finalize, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { UinyAcaoApi, UinyMensagemApi, UinyRespostaApi, UinySistemaOrigem } from '../models/uiny-api.models';\nimport { UinyAcao, UinyConversaResumo, UinyErro, UinyMensagem } from '../models/uiny.models';\nimport { UINY_MENSAGEM_MAX_CARACTERES } from '../uiny.config';\nimport { adaptarAcao, adaptarConversa, adaptarInstrucoes, adaptarMensagem } from '../utils/uiny-api.adapter';\nimport { contextoParaApi } from '../utils/uiny-contexto';\nimport { UiAssistantService } from './ui-assistant.service';\nimport { UinyApiService } from './uiny-api.service';\nimport { UinySessao, UinySessionService } from './uiny-session.service';\n\nexport interface UinyChatEstado {\n conversa: UinyConversaResumo | null;\n mensagens: UinyMensagem[];\n acoes: { [id: string]: UinyAcao };\n enviando: boolean;\n carregandoConversa: boolean;\n erro: UinyErro | null;\n /** Aviso informativo (ex.: troca de loja encerrou a conversa). */\n aviso: string | null;\n conversas: UinyConversaResumo[] | null;\n carregandoConversas: boolean;\n /** Texto da última mensagem que falhou, para \"tentar de novo\". */\n textoComFalha: string | null;\n}\n\nconst ESTADO_INICIAL: UinyChatEstado = {\n conversa: null,\n mensagens: [],\n acoes: {},\n enviando: false,\n carregandoConversa: false,\n erro: null,\n aviso: null,\n conversas: null,\n carregandoConversas: false,\n textoComFalha: null,\n};\n\n/**\n * Estado da conversa, só em memória. Nada vai para localStorage/sessionStorage.\n *\n * Limpeza: qualquer mudança de sessão (logout, outro usuário, outra empresa, novo token,\n * 401 da API) ou a Uiny ficar indisponível cancela as requisições em andamento e\n * descarta todo o estado.\n */\n@Injectable({ providedIn: 'root' })\nexport class UinyChatService implements OnDestroy {\n\n private readonly estado$ = new BehaviorSubject<UinyChatEstado>(ESTADO_INICIAL);\n /** Emite para abortar as requisições da sessão/conversa atual. */\n private readonly cancelarConversa$ = new Subject<void>();\n private readonly cancelarSessao$ = new Subject<void>();\n private readonly anuncios$ = new Subject<string>();\n private readonly subs = new Subscription();\n private sessao: UinySessao | null = null;\n private idLocal = 0;\n /** Loja usada ao criar a conversa atual: o backend restringe a conversa a ela. */\n private escopoLoja: number | null = null;\n\n readonly estado: Observable<UinyChatEstado> = this.estado$.asObservable();\n /** Textos curtos para a região aria-live do painel. */\n readonly anuncios: Observable<string> = this.anuncios$.asObservable();\n\n constructor(\n private api: UinyApiService,\n private session: UinySessionService,\n private assistant: UiAssistantService\n ) {\n this.subs.add(this.session.sessao$.subscribe(sessao => {\n if (sessao?.id !== this.sessao?.id) {\n this.sessao = sessao;\n this.limparTudo();\n }\n }));\n\n this.subs.add(this.assistant.disponivel$.pipe(filter(d => !d)).subscribe(() => this.limparTudo()));\n\n // Trocar de loja muda o escopo da conversa: não reaproveitamos a anterior.\n this.subs.add(this.assistant.contexto$.pipe(\n map(c => c.idLoja ?? null),\n distinctUntilChanged()\n ).subscribe(idLoja => {\n if (this.valor.conversa && this.escopoLoja !== idLoja) {\n this.encerrarConversa('Você mudou de loja. Começamos uma nova conversa para manter os assuntos separados.');\n }\n }));\n }\n\n ngOnDestroy(): void {\n this.cancelarSessao$.next();\n this.subs.unsubscribe();\n }\n\n get valor(): UinyChatEstado {\n return this.estado$.value;\n }\n\n get ocupado(): boolean {\n const v = this.valor;\n return v.enviando || Object.values(v.acoes).some(a => a.enviando || a.estado === 'executando');\n }\n\n enviar(textoBruto: string): boolean {\n const texto = (textoBruto || '').trim();\n const sistema = this.assistant.sistemaOrigem;\n if (!texto || !sistema || !this.sessao || this.valor.enviando) return false;\n if (texto.length > UINY_MENSAGEM_MAX_CARACTERES) {\n this.patch({ erro: this.erroLocal('invalido', `A mensagem pode ter até ${UINY_MENSAGEM_MAX_CARACTERES} caracteres.`) });\n return false;\n }\n\n const contexto = contextoParaApi(sistema, this.assistant.contexto);\n const local: UinyMensagem = {\n id: this.novoIdLocal(), papel: 'usuario', estado: null, texto, idAcao: null, opcoes: [], criadaEm: new Date(),\n };\n this.patch({\n mensagens: [...this.valor.mensagens.filter(m => !m.erro), local],\n enviando: true,\n erro: null,\n aviso: null,\n textoComFalha: null,\n });\n this.anuncios$.next('A Uiny está respondendo…');\n\n const conversa$ = this.valor.conversa\n ? of(this.valor.conversa)\n : this.api.criarConversa(contexto).pipe(map(r => {\n const conversa = adaptarConversa(r?.conversa);\n if (!conversa) throw this.erroLocal('servidor', 'Não foi possível iniciar a conversa.');\n this.escopoLoja = contexto.id_loja ?? null;\n this.patch({ conversa, conversas: null });\n return conversa;\n }));\n\n conversa$.pipe(\n switchMap(conversa => this.api.enviarMensagem(conversa.id, texto, contexto)),\n takeUntil(this.cancelarConversa$),\n finalize(() => this.valor.enviando && this.patch({ enviando: false }))\n ).subscribe({\n next: resposta => {\n this.aplicarResposta(resposta, true);\n this.patch({ enviando: false });\n this.anuncios$.next(resposta?.mensagem ? 'Nova resposta da Uiny.' : '');\n },\n error: err => {\n const erro = this.normalizar(err);\n // erros da API podem trazer a mensagem da Uiny (ex.: falha do provedor registrada)\n if (erro.corpo?.mensagem) this.aplicarResposta(erro.corpo, false);\n this.patch({\n mensagens: this.valor.mensagens.map(m => m.id === local.id ? { ...m, erro: true } : m),\n enviando: false,\n erro,\n textoComFalha: erro.tipo === 'sessao' ? null : texto,\n });\n this.anuncios$.next(erro.mensagem);\n },\n });\n return true;\n }\n\n /** Começa do zero. Bloqueado enquanto há envio ou ação em execução. */\n novaConversa(): boolean {\n if (this.ocupado) return false;\n this.encerrarConversa(null);\n return true;\n }\n\n listarConversas(): void {\n if (!this.sessao || this.valor.carregandoConversas) return;\n this.patch({ carregandoConversas: true, erro: null });\n this.api.listarConversas().pipe(\n takeUntil(this.cancelarSessao$),\n finalize(() => this.patch({ carregandoConversas: false }))\n ).subscribe({\n next: r => this.patch({\n conversas: (Array.isArray(r?.data) ? r.data : []).map(adaptarConversa).filter(c => !!c && this.doContextoAtual(c)),\n }),\n error: err => this.patch({ erro: this.normalizar(err), conversas: [] }),\n });\n }\n\n abrirConversa(id: string): void {\n const resumo = this.valor.conversas?.find(c => c.id === id);\n if (!resumo || this.ocupado || !this.doContextoAtual(resumo)) return;\n this.encerrarConversa(null);\n this.patch({ carregandoConversa: true });\n this.api.historico(id).pipe(\n takeUntil(this.cancelarConversa$),\n finalize(() => this.patch({ carregandoConversa: false }))\n ).subscribe({\n next: r => {\n const conversa = adaptarConversa(r?.conversa) ?? resumo;\n if (!this.doContextoAtual(conversa)) {\n this.patch({ aviso: 'Essa conversa pertence a outro contexto e não pode ser continuada aqui.' });\n return;\n }\n this.escopoLoja = conversa.idLoja;\n const mensagensApi: UinyMensagemApi[] = Array.isArray(r?.data) ? r.data : [];\n this.patch({\n conversa,\n mensagens: mensagensApi.map(adaptarMensagem).filter(Boolean),\n acoes: this.mesclarAcoes(mensagensApi.map(m => m?.acao_pendente)),\n });\n // Histórico não reemite instruções de interface: elas já foram tratadas quando chegaram.\n },\n error: err => this.patch({ erro: this.normalizar(err) }),\n });\n }\n\n /**\n * Confirma pelo id da ação persistida no backend. Só é chamado pelo clique no card;\n * nenhum texto da conversa dispara isto. Nunca há repetição automática.\n */\n confirmar(idAcao: string): void {\n const acao = this.valor.acoes[idAcao];\n if (!acao || acao.enviando || acao.estado !== 'pendente') return;\n if (acao.expiraEm && acao.expiraEm.getTime() <= Date.now()) {\n this.atualizarAcao(idAcao, { estado: 'expirada', aviso: 'O prazo para confirmar terminou. Peça a alteração de novo.' });\n return;\n }\n this.atualizarAcao(idAcao, { enviando: true, estado: 'executando', aviso: null });\n this.anuncios$.next('Executando a alteração…');\n\n this.api.confirmarAcao(idAcao).pipe(takeUntil(this.cancelarSessao$)).subscribe({\n next: resposta => this.concluirDecisao(idAcao, resposta, null, true),\n error: err => {\n const erro = this.normalizar(err);\n if (erro.corpo?.acao_pendente || erro.corpo?.acao_anterior) {\n // 409 (expirada, invalidada com nova proposta, em execução) ou 502/504: o corpo traz o estado real\n this.concluirDecisao(idAcao, erro.corpo, erro, true);\n } else if (erro.tipo === 'timeout' || erro.tipo === 'rede' || erro.tipo === 'servidor') {\n // A operação pode ter sido executada. Não repetimos: o usuário verifica o estado.\n this.atualizarAcao(idAcao, {\n enviando: false,\n estado: 'indeterminada',\n aviso: 'Não recebemos a resposta da confirmação. Verifique o resultado antes de pedir de novo.',\n });\n } else if (erro.tipo === 'conflito' || erro.tipo === 'nao_encontrado') {\n this.atualizarAcao(idAcao, { enviando: false, estado: 'indeterminada', aviso: erro.mensagem });\n this.verificarAcao(idAcao);\n } else {\n this.atualizarAcao(idAcao, { enviando: false, estado: 'pendente', aviso: erro.mensagem });\n }\n this.anuncios$.next(erro.mensagem);\n },\n });\n }\n\n cancelar(idAcao: string): void {\n const acao = this.valor.acoes[idAcao];\n if (!acao || acao.enviando || acao.estado !== 'pendente') return;\n this.atualizarAcao(idAcao, { enviando: true, aviso: null });\n this.api.cancelarAcao(idAcao).pipe(takeUntil(this.cancelarSessao$)).subscribe({\n next: resposta => this.concluirDecisao(idAcao, resposta, null, false),\n error: err => {\n const erro = this.normalizar(err);\n if (erro.corpo?.acao_pendente) {\n this.concluirDecisao(idAcao, erro.corpo, erro, false);\n } else {\n this.atualizarAcao(idAcao, { enviando: false, aviso: erro.mensagem });\n }\n },\n });\n }\n\n /** Consulta a situação real da ação relendo o histórico da conversa. */\n verificarAcao(idAcao: string): void {\n const acao = this.valor.acoes[idAcao];\n const idConversa = this.valor.conversa?.id;\n if (!acao || !idConversa) return;\n this.atualizarAcao(idAcao, { enviando: true });\n this.api.historico(idConversa).pipe(takeUntil(this.cancelarSessao$)).subscribe({\n next: r => {\n const mensagens: UinyMensagemApi[] = Array.isArray(r?.data) ? r.data : [];\n const atual = mensagens.map(m => adaptarAcao(m?.acao_pendente)).find(a => a?.id === idAcao);\n if (atual) {\n this.atualizarAcao(idAcao, { ...atual, enviando: false, aviso: atual.estado === 'indeterminada' ? 'Confira no sistema se a alteração foi aplicada.' : null });\n this.patch({ mensagens: this.mesclar(this.valor.mensagens, mensagens.map(adaptarMensagem).filter(Boolean)) });\n } else {\n this.atualizarAcao(idAcao, {\n enviando: false,\n aviso: 'Não foi possível consultar o estado desta ação. Confira na tela correspondente se a alteração foi aplicada.',\n });\n }\n },\n error: err => this.atualizarAcao(idAcao, { enviando: false, aviso: this.normalizar(err).mensagem }),\n });\n }\n\n limparErro(): void {\n this.patch({ erro: null, aviso: null });\n }\n\n /* ---------------- internos ---------------- */\n\n /** Aplica uma resposta de confirmar/cancelar (de sucesso ou de erro com corpo). */\n private concluirDecisao(idAcao: string, resposta: UinyRespostaApi, erro: UinyErro | null, confirmacao: boolean): void {\n const anterior = this.valor.acoes[idAcao];\n this.aplicarResposta(resposta, !erro);\n\n const atual = this.valor.acoes[idAcao];\n // sem a ação na resposta, o resultado é desconhecido\n if (!atual || atual === anterior) {\n this.atualizarAcao(idAcao, {\n enviando: false,\n estado: confirmacao ? 'indeterminada' : anterior?.estado,\n aviso: erro?.mensagem ?? 'A API não informou o resultado. Confira se a alteração foi aplicada.',\n });\n } else {\n this.atualizarAcao(idAcao, { enviando: false, aviso: erro?.mensagem ?? null });\n }\n\n const final = this.valor.acoes[idAcao];\n // Sucesso só quando a API devolve a ação como executada.\n if (confirmacao && final?.estado === 'concluida') {\n this.assistant.emitir({ tipo: 'acao_concluida', idAcao, ferramenta: final.ferramenta });\n this.anuncios$.next('Alteração concluída.');\n } else if (final?.estado === 'falha') {\n this.anuncios$.next('A alteração não foi concluída.');\n }\n }\n\n /** Resposta padrão (ApresentadorConversa::resposta): conversa, mensagem e ação pendente. */\n private aplicarResposta(resposta: UinyRespostaApi, emitirInstrucoes: boolean): void {\n if (!resposta || typeof resposta !== 'object') return;\n const mensagem = adaptarMensagem(resposta.mensagem);\n this.patch({\n conversa: adaptarConversa(resposta.conversa) ?? this.valor.conversa,\n mensagens: mensagem ? this.mesclar(this.valor.mensagens, [mensagem]) : this.valor.mensagens,\n acoes: this.mesclarAcoes([resposta.acao_anterior, resposta.mensagem?.acao_pendente, resposta.acao_pendente]),\n });\n if (emitirInstrucoes && resposta.mensagem?.papel === 'assistente') {\n adaptarInstrucoes(resposta.mensagem.instrucoes_interface).forEach(e => this.assistant.emitir(e));\n }\n }\n\n private mesclar(atuais: UinyMensagem[], novas: UinyMensagem[]): UinyMensagem[] {\n const ids = new Set(atuais.map(m => m.id));\n return [...atuais, ...novas.filter(m => !ids.has(m.id))];\n }\n\n private mesclarAcoes(novas: UinyAcaoApi[]): { [id: string]: UinyAcao } {\n const acoes = { ...this.valor.acoes };\n novas.map(adaptarAcao).filter(Boolean).forEach(a => {\n // uma ação já resolvida localmente não volta a \"pendente\" por uma resposta antiga\n const anterior = acoes[a.id];\n acoes[a.id] = anterior && anterior.estado !== 'pendente' && anterior.estado !== 'executando' && a.estado === 'pendente'\n ? anterior\n : { ...a, enviando: anterior?.enviando, aviso: anterior?.aviso };\n });\n return acoes;\n }\n\n private atualizarAcao(id: string, parcial: Partial<UinyAcao>): void {\n const atual = this.valor.acoes[id];\n if (!atual) return;\n this.patch({ acoes: { ...this.valor.acoes, [id]: { ...atual, ...parcial, id } } });\n }\n\n private doContextoAtual(conversa: UinyConversaResumo): boolean {\n const sistema: UinySistemaOrigem | null = this.assistant.sistemaOrigem;\n const idLoja = this.assistant.contexto.idLoja ?? null;\n return conversa.sistemaOrigem === sistema && (conversa.idLoja ?? null) === idLoja;\n }\n\n private encerrarConversa(aviso: string | null): void {\n this.cancelarConversa$.next();\n this.escopoLoja = null;\n this.patch({\n conversa: null,\n mensagens: [],\n acoes: {},\n enviando: false,\n carregandoConversa: false,\n erro: null,\n aviso,\n conversas: null,\n textoComFalha: null,\n });\n }\n\n private limparTudo(): void {\n this.cancelarConversa$.next();\n this.cancelarSessao$.next();\n this.escopoLoja = null;\n this.estado$.next(ESTADO_INICIAL);\n }\n\n private patch(parcial: Partial<UinyChatEstado>): void {\n this.estado$.next({ ...this.estado$.value, ...parcial });\n }\n\n private novoIdLocal(): string {\n return 'local-' + (++this.idLocal);\n }\n\n private normalizar(err: any): UinyErro {\n if (err && typeof err === 'object' && typeof err.tipo === 'string' && typeof err.mensagem === 'string') return err;\n return this.erroLocal('servidor', 'Algo deu errado ao falar com a Uiny. Tente de novo.');\n }\n\n private erroLocal(tipo: UinyErro['tipo'], mensagem: string): UinyErro {\n return { tipo, status: 0, codigo: null, mensagem, correlacao: null };\n }\n}\n","/*\n * Subconjunto seguro de Markdown para as respostas da Uiny.\n *\n * O texto vira uma árvore de tokens renderizada pelo template com interpolação\n * ({{ }}), sem innerHTML e sem bypass do sanitizador do Angular. HTML presente no\n * texto aparece literalmente. Links só com http, https ou mailto.\n *\n * Suporta: parágrafos, quebras de linha, listas (- * 1.), títulos (#, ##, ###),\n * blocos de código (```), `código`, **negrito**, *itálico*, [texto](url) e URLs soltas.\n */\n\nexport type UinyInline =\n | { t: 'text'; v: string }\n | { t: 'strong'; v: string }\n | { t: 'em'; v: string }\n | { t: 'code'; v: string }\n | { t: 'link'; v: string; href: string };\n\nexport type UinyBloco =\n | { t: 'p'; linhas: UinyInline[][] }\n | { t: 'h'; inlines: UinyInline[] }\n | { t: 'ul'; itens: UinyInline[][] }\n | { t: 'ol'; itens: UinyInline[][]; inicio: number }\n | { t: 'code'; v: string };\n\nconst PROTOCOLOS = ['http:', 'https:', 'mailto:'];\n\nexport function urlPermitida(url: string): string | null {\n const bruto = (url || '').trim();\n if (!bruto || bruto.length > 2000) return null;\n try {\n const u = new URL(bruto);\n return PROTOCOLOS.includes(u.protocol) ? u.href : null;\n } catch {\n return null;\n }\n}\n\nconst INLINE = /(`[^`\\n]+`)|(\\*\\*[^*\\n]+\\*\\*)|(\\[[^\\]\\n]{1,300}\\]\\([^()\\s]{1,2000}\\))|(\\bhttps?:\\/\\/[^\\s<>()]*[^\\s<>().,;:!?'\"])|(\\*[^*\\s][^*\\n]*\\*)/g;\n\nexport function parseInline(texto: string): UinyInline[] {\n const saida: UinyInline[] = [];\n let ultimo = 0;\n INLINE.lastIndex = 0;\n let m: RegExpExecArray | null;\n while ((m = INLINE.exec(texto)) !== null) {\n if (m.index > ultimo) saida.push({ t: 'text', v: texto.slice(ultimo, m.index) });\n const token = m[0];\n if (m[1]) {\n saida.push({ t: 'code', v: token.slice(1, -1) });\n } else if (m[2]) {\n saida.push({ t: 'strong', v: token.slice(2, -2) });\n } else if (m[3]) {\n const fim = token.indexOf('](');\n const rotulo = token.slice(1, fim);\n const href = urlPermitida(token.slice(fim + 2, -1));\n saida.push(href ? { t: 'link', v: rotulo, href } : { t: 'text', v: rotulo });\n } else if (m[4]) {\n const href = urlPermitida(token);\n saida.push(href ? { t: 'link', v: token, href } : { t: 'text', v: token });\n } else {\n saida.push({ t: 'em', v: token.slice(1, -1) });\n }\n ultimo = m.index + token.length;\n }\n if (ultimo < texto.length) saida.push({ t: 'text', v: texto.slice(ultimo) });\n return saida;\n}\n\nexport function parseMarkdown(texto: string): UinyBloco[] {\n const linhas = (texto || '').replace(/\\r\\n?/g, '\\n').split('\\n');\n const blocos: UinyBloco[] = [];\n let paragrafo: UinyInline[][] = [];\n let lista: { t: 'ul' | 'ol'; itens: UinyInline[][]; inicio: number } | null = null;\n\n const fecharParagrafo = () => {\n if (paragrafo.length) blocos.push({ t: 'p', linhas: paragrafo });\n paragrafo = [];\n };\n const fecharLista = () => {\n if (lista) blocos.push(lista.t === 'ul' ? { t: 'ul', itens: lista.itens } : { t: 'ol', itens: lista.itens, inicio: lista.inicio });\n lista = null;\n };\n\n for (let i = 0; i < linhas.length; i++) {\n const linha = linhas[i];\n\n if (/^\\s*```/.test(linha)) {\n fecharParagrafo();\n fecharLista();\n const codigo: string[] = [];\n i++;\n while (i < linhas.length && !/^\\s*```/.test(linhas[i])) codigo.push(linhas[i++]);\n blocos.push({ t: 'code', v: codigo.join('\\n') });\n continue;\n }\n\n if (!linha.trim()) {\n fecharParagrafo();\n fecharLista();\n continue;\n }\n\n const titulo = /^\\s{0,3}#{1,3}\\s+(.*)$/.exec(linha);\n if (titulo) {\n fecharParagrafo();\n fecharLista();\n blocos.push({ t: 'h', inlines: parseInline(titulo[1]) });\n continue;\n }\n\n const ul = /^\\s*[-*•]\\s+(.*)$/.exec(linha);\n const ol = /^\\s*(\\d{1,3})[.)]\\s+(.*)$/.exec(linha);\n if (ul || ol) {\n fecharParagrafo();\n const tipo = ul ? 'ul' : 'ol';\n if (!lista || lista.t !== tipo) {\n fecharLista();\n lista = { t: tipo, itens: [], inicio: ol ? Number(ol[1]) : 1 };\n }\n lista.itens.push(parseInline(ul ? ul[1] : ol[2]));\n continue;\n }\n\n if (lista && /^\\s{2,}\\S/.test(linha)) {\n // continuação do último item da lista\n lista.itens[lista.itens.length - 1].push({ t: 'text', v: ' ' }, ...parseInline(linha.trim()));\n continue;\n }\n\n fecharLista();\n paragrafo.push(parseInline(linha));\n }\n fecharParagrafo();\n fecharLista();\n return blocos;\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\nimport { parseMarkdown, UinyBloco } from '../../utils/uiny-markdown';\n\n/**\n * Exibe o texto da Uiny com um subconjunto de Markdown. Tudo é renderizado por\n * interpolação: HTML vindo da API aparece como texto, nunca é interpretado.\n */\n@Component({\n selector: 'ui-assistant-text',\n templateUrl: './ui-assistant-text.component.html',\n styleUrls: ['./ui-assistant-text.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class UiAssistantTextComponent implements OnChanges {\n @Input() texto = '';\n\n public blocos: UinyBloco[] = [];\n\n ngOnChanges(): void {\n this.blocos = parseMarkdown(this.texto || '');\n }\n}\n","<ng-template #inlines let-lista>\n <ng-container *ngFor=\"let i of lista\" [ngSwitch]=\"i.t\">\n <strong *ngSwitchCase=\"'strong'\">{{ i.v }}</strong>\n <em *ngSwitchCase=\"'em'\">{{ i.v }}</em>\n <code *ngSwitchCase=\"'code'\">{{ i.v }}</code>\n <a *ngSwitchCase=\"'link'\" [href]=\"i.href\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">{{ i.v }}</a>\n <ng-container *ngSwitchDefault>{{ i.v }}</ng-container>\n </ng-container>\n</ng-template>\n\n<ng-container *ngFor=\"let b of blocos\" [ngSwitch]=\"b.t\">\n <p *ngSwitchCase=\"'p'\">\n <ng-container *ngFor=\"let linha of $any(b).linhas; let ultima = last\">\n <ng-container *ngTemplateOutlet=\"inlines; context: { $implicit: linha }\"></ng-container><br *ngIf=\"!ultima\">\n </ng-container>\n </p>\n <p *ngSwitchCase=\"'h'\" class=\"uiny-texto__titulo\">\n <ng-container *ngTemplateOutlet=\"inlines; context: { $implicit: $any(b).inlines }\"></ng-container>\n </p>\n <ul *ngSwitchCase=\"'ul'\">\n <li *ngFor=\"let item of $any(b).itens\">\n <ng-container *ngTemplateOutlet=\"inlines; context: { $implicit: item }\"></ng-container>\n </li>\n </ul>\n <ol *ngSwitchCase=\"'ol'\" [attr.start]=\"$any(b).inicio !== 1 ? $any(b).inicio : null\">\n <li *ngFor=\"let item of $any(b).itens\">\n <ng-container *ngTemplateOutlet=\"inlines; context: { $implicit: item }\"></ng-container>\n </li>\n </ol>\n <pre *ngSwitchCase=\"'code'\"><code>{{ $any(b).v }}</code></pre>\n</ng-container>\n","import {\r\n AfterViewChecked,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { UinyAcao, UinyMensagem } from '../../models/uiny.models';\r\n\r\n/** Distância do fim (px) até onde ainda consideramos que o usuário está \"no fim\". */\r\nconst PERTO_DO_FIM = 96;\r\n\r\n@Component({\r\n selector: 'ui-assistant-messages',\r\n templateUrl: './ui-assistant-messages.component.html',\r\n styleUrls: ['./ui-assistant-messages.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UiAssistantMessagesComponent implements OnChanges, AfterViewChecked, OnDestroy {\r\n\r\n @Input() mensagens: UinyMensagem[] = [];\r\n @Input() acoes: { [id: string]: UinyAcao } = {};\r\n @Input() enviando = false;\r\n @Input() carregando = false;\r\n @Input() sugestoes: string[] = [];\r\n @Input() capacidades: string[] = [];\r\n @Input() temAlteracoes = false;\r\n @Input() podeEnviar = true;\r\n\r\n @Output() sugestao = new EventEmitter<string>();\r\n @Output() confirmar = new EventEmitter<string>();\r\n @Output() cancelar = new EventEmitter<string>();\r\n @Output() verificar = new EventEmitter<string>();\r\n\r\n @ViewChild('area', { static: true }) area: ElementRef<HTMLElement>;\r\n\r\n public novas = false;\r\n private pertoDoFim = true;\r\n private rolarPendente = true;\r\n private removerScroll: () => void;\r\n\r\n constructor(private cdr: ChangeDetectorRef, zone: NgZone) {\r\n // o listener roda fora da zona: só reentra quando o indicador muda\r\n zone.runOutsideAngular(() => setTimeout(() => {\r\n const el = this.area?.nativeElement;\r\n if (!el) return;\r\n const aoRolar = () => {\r\n const perto = this.calcularPertoDoFim();\r\n if (perto === this.pertoDoFim) return;\r\n this.pertoDoFim = perto;\r\n if (perto && this.novas) zone.run(() => {\r\n this.novas = false;\r\n this.cdr.markForCheck();\r\n });\r\n };\r\n el.addEventListener('scroll', aoRolar, { passive: true });\r\n this.removerScroll = () => el.removeEventListener('scroll', aoRolar);\r\n }));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const mudou = changes['mensagens'] || changes['enviando'] || changes['acoes'];\r\n if (!mudou) return;\r\n\r\n const mensagensMudaram = !!changes['mensagens'];\r\n const anterior: UinyMensagem[] = changes['mensagens']?.previousValue || [];\r\n const atual = this.mensagens || [];\r\n const conversaTrocada = mensagensMudaram && (!anterior.length || !atual.length || anterior[0]?.id !== atual[0]?.id);\r\n const ultima = atual[atual.length - 1];\r\n // quem acabou de enviar quer ver a própria mensagem\r\n const ultimaDoUsuario = mensagensMudaram && ultima?.papel === 'usuario' && ultima.id.startsWith('local-');\r\n\r\n if (conversaTrocada || ultimaDoUsuario || this.pertoDoFim) {\r\n this.rolarPendente = true;\r\n } else if (mensagensMudaram && atual.length > anterior.length) {\r\n // o usuário está lendo mensagens antigas: preserva a posição\r\n this.novas = true;\r\n }\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n if (!this.rolarPendente) return;\r\n this.rolarPendente = false;\r\n this.irParaOFim(false);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removerScroll?.();\r\n }\r\n\r\n irParaOFim(suave = true): void {\r\n const el = this.area?.nativeElement;\r\n if (!el) return;\r\n const reduzir = typeof window !== 'undefined' && window.matchMedia?.('(prefers-reduced-motion: reduce)').matches;\r\n if (suave && !reduzir && el.scrollTo) {\r\n el.scrollTo({ top: el.scrollHeight, behavior: 'smooth' });\r\n } else {\r\n el.scrollTop = el.scrollHeight;\r\n }\r\n this.pertoDoFim = true;\r\n if (this.novas) {\r\n this.novas = false;\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n acaoDa(mensagem: UinyMensagem): UinyAcao | null {\r\n return mensagem.idAcao ? this.acoes?.[mensagem.idAcao] ?? null : null;\r\n }\r\n\r\n /** Ações devolvidas pela API sem mensagem que as referencie: aparecem no fim. */\r\n get acoesSemMensagem(): UinyAcao[] {\r\n const referenciadas = new Set((this.mensagens || []).map(m => m.idAcao).filter(Boolean));\r\n return Object.values(this.acoes || {}).filter(a => !referenciadas.has(a.id));\r\n }\r\n\r\n trackMensagem(_: number, m: UinyMensagem) {\r\n return m.id;\r\n }\r\n\r\n trackAcao(_: number, a: UinyAcao) {\r\n return a.id;\r\n }\r\n\r\n private calcularPertoDoFim(): boolean {\r\n const el = this.area.nativeElement;\r\n return el.scrollHeight - el.scrollTop - el.clientHeight <= PERTO_DO_FIM;\r\n }\r\n}\r\n","<div #area class=\"uiny-msgs\" role=\"log\" aria-live=\"off\" aria-label=\"Mensagens da conversa com a Uiny\" tabindex=\"0\">\r\n\r\n <div *ngIf=\"carregando\" class=\"uiny-msgs__carregando\" role=\"status\">\r\n <span class=\"uiny-spinner\" aria-hidden=\"true\"></span> Carregando a conversa…\r\n </div>\r\n\r\n <div *ngIf=\"!carregando && !mensagens?.length\" class=\"uiny-boas-vindas\">\r\n <p class=\"uiny-boas-vindas__titulo\">Olá! Eu sou a Uiny.</p>\r\n <p class=\"uiny-boas-vindas__texto\">Sou a assistente virtual da Uishop. Conte o que você precisa e eu ajudo por aqui.</p>\r\n <p *ngIf=\"temAlteracoes\" class=\"uiny-boas-vindas__nota\">\r\n <ui-icon icon=\"verified_user\" size=\"16\"></ui-icon>\r\n <span>Antes de alterar qualquer informação, eu mostro o que vai mudar e só sigo com a sua confirmação.</span>\r\n </p>\r\n\r\n <div *ngIf=\"sugestoes?.length\" class=\"uiny-sugestoes\" aria-label=\"Sugestões\">\r\n <button *ngFor=\"let s of sugestoes\" type=\"button\" class=\"uiny-sugestao\" [disabled]=\"!podeEnviar\" (click)=\"sugestao.emit(s)\">\r\n {{ s }}\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"capacidades?.length\" class=\"uiny-capacidades\">\r\n <p class=\"uiny-capacidades__titulo\">Posso ajudar com:</p>\r\n <ul>\r\n <li *ngFor=\"let c of capacidades\">{{ c }}</li>\r\n </ul>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let m of mensagens; trackBy: trackMensagem\" class=\"uiny-msg\"\r\n [class.uiny-msg--usuario]=\"m.papel === 'usuario'\"\r\n [class.uiny-msg--assistente]=\"m.papel !== 'usuario'\"\r\n [class.uiny-msg--falha]=\"m.erro\">\r\n <span class=\"uiny-sr\">{{ m.papel === 'usuario' ? 'Você:' : 'Uiny:' }}</span>\r\n <div class=\"uiny-msg__balao\">\r\n <p *ngIf=\"m.papel === 'usuario'\" class=\"uiny-msg__simples\">{{ m.texto }}</p>\r\n <ui-assistant-text *ngIf=\"m.papel !== 'usuario'\" [texto]=\"m.texto\"></ui-assistant-text>\r\n </div>\r\n\r\n <ui-assistant-action-card *ngIf=\"acaoDa(m) as acao\" [acao]=\"acao\"\r\n (confirmar)=\"confirmar.emit($event)\" (cancelar)=\"cancelar.emit($event)\" (verificar)=\"verificar.emit($event)\">\r\n </ui-assistant-action-card>\r\n\r\n <!-- esclarecimento: opções só na última mensagem, enviadas como texto -->\r\n <div *ngIf=\"m.opcoes?.length && m === mensagens[mensagens.length - 1]\" class=\"uiny-sugestoes uiny-msg__opcoes\" aria-label=\"Opções de resposta\">\r\n <button *ngFor=\"let o of m.opcoes\" type=\"button\" class=\"uiny-sugestao\" [disabled]=\"!podeEnviar || enviando\" (click)=\"sugestao.emit(o)\">\r\n {{ o }}\r\n </button>\r\n </div>\r\n\r\n <div class=\"uiny-msg__meta\">\r\n <span *ngIf=\"m.erro\" class=\"uiny-msg__nao-enviada\">\r\n <ui-icon icon=\"error\" size=\"14\"></ui-icon> Não enviada\r\n </span>\r\n <time *ngIf=\"m.criadaEm && !m.erro\" [attr.datetime]=\"m.criadaEm.toISOString()\">{{ m.criadaEm | date:'HH:mm' }}</time>\r\n </div>\r\n </div>\r\n\r\n <ui-assistant-action-card *ngFor=\"let acao of acoesSemMensagem; trackBy: trackAcao\" class=\"uiny-msgs__acao-solta\" [acao]=\"acao\"\r\n (confirmar)=\"confirmar.emit($event)\" (cancelar)=\"cancelar.emit($event)\" (verificar)=\"verificar.emit($event)\">\r\n </ui-assistant-action-card>\r\n\r\n <div *ngIf=\"enviando\" class=\"uiny-digitando\">\r\n <span class=\"uiny-digitando__pontos\" aria-hidden=\"true\"><i></i><i></i><i></i></span>\r\n <span class=\"uiny-digitando__texto\">A Uiny está pensando…</span>\r\n </div>\r\n</div>\r\n\r\n<button *ngIf=\"novas\" type=\"button\" class=\"uiny-novas\" (click)=\"irParaOFim()\">\r\n <ui-icon icon=\"arrow_downward\" size=\"16\"></ui-icon> Novas mensagens\r\n</button>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostListener,\r\n Inject,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { UinyAcao, UinyConfig, UinyMensagem } from '../../models/uiny.models';\r\nimport { UINY_AVATAR_PADRAO, UINY_CONFIG, UINY_SUGESTOES } from '../../uiny.config';\r\nimport { UiAssistantService } from '../../services/ui-assistant.service';\r\nimport { UinyChatEstado, UinyChatService } from '../../services/uiny-chat.service';\r\nimport { UinySessionService } from '../../services/uiny-session.service';\r\nimport { UiAssistantComposerComponent } from '../assistant-composer/ui-assistant-composer.component';\r\n\r\n@Component({\r\n selector: 'ui-assistant-panel',\r\n templateUrl: './ui-assistant-panel.component.html',\r\n styleUrls: ['./ui-assistant-panel.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UiAssistantPanelComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n /** Painel em largura total (celular/tablet): o botão de fechar vira \"Voltar\". */\r\n @Input() empilhado = false;\r\n\r\n @ViewChild(UiAssistantComposerComponent) composer: UiAssistantComposerComponent;\r\n\r\n public estado: UinyChatEstado;\r\n public online = true;\r\n public anuncio = '';\r\n public vendoHistorico = false;\r\n public mensagens: UinyMensagem[] = [];\r\n public acoes: { [id: string]: UinyAcao } = {};\r\n public sugestoes: string[] = [];\r\n public capacidades: string[] = [];\r\n public temAlteracoes = false;\r\n public readonly avatarUrl: string;\r\n /** A imagem não carregou: usa o ícone padrão. */\r\n public avatarFalhou = false;\r\n\r\n private subs = new Subscription();\r\n private timerAnuncio: any;\r\n\r\n constructor(\r\n public chat: UinyChatService,\r\n public assistant: UiAssistantService,\r\n private session: UinySessionService,\r\n private cdr: ChangeDetectorRef,\r\n @Optional() @Inject(UINY_CONFIG) config: UinyConfig | null\r\n ) {\r\n this.avatarUrl = config?.avatarUrl || UINY_AVATAR_PADRAO;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subs.add(this.chat.estado.subscribe(estado => {\r\n this.estado = estado;\r\n this.mensagens = estado.mensagens;\r\n this.acoes = estado.acoes;\r\n this.cdr.markForCheck();\r\n }));\r\n this.subs.add(this.session.online$.subscribe(online => {\r\n this.online = online;\r\n this.cdr.markForCheck();\r\n }));\r\n this.subs.add(this.chat.anuncios.subscribe(texto => this.anunciar(texto)));\r\n this.montarBoasVindas();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n // espera a transição começar para não rolar a página no focus\r\n setTimeout(() => this.composer?.focar(), 60);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n clearTimeout(this.timerAnuncio);\r\n this.subs.unsubscribe();\r\n }\r\n\r\n @HostListener('keydown.escape', ['$event'])\r\n aoEscape(evento: KeyboardEvent): void {\r\n if (evento.defaultPrevented) return;\r\n if (this.vendoHistorico) {\r\n this.vendoHistorico = false;\r\n return;\r\n }\r\n evento.preventDefault();\r\n this.assistant.fechar();\r\n }\r\n\r\n get podeEnviar(): boolean {\r\n return this.online && !this.estado?.enviando && !this.estado?.carregandoConversa;\r\n }\r\n\r\n get motivoBloqueio(): string | null {\r\n if (!this.online) return 'Sem conexão com a internet.';\r\n if (this.estado?.carregandoConversa) return 'Carregando a conversa…';\r\n return null;\r\n }\r\n\r\n fechar(): void {\r\n this.assistant.fechar();\r\n }\r\n\r\n enviar(texto: string): void {\r\n if (!this.podeEnviar) return;\r\n if (this.chat.enviar(texto)) {\r\n this.composer?.limpar();\r\n this.vendoHistorico = false;\r\n }\r\n }\r\n\r\n reenviar(): void {\r\n const texto = this.estado?.textoComFalha;\r\n if (texto && this.podeEnviar) this.chat.enviar(texto);\r\n }\r\n\r\n usarSugestao(texto: string): void {\r\n this.enviar(texto);\r\n }\r\n\r\n novaConversa(): void {\r\n if (this.chat.novaConversa()) {\r\n this.vendoHistorico = false;\r\n this.anunciar('Nova conversa iniciada.');\r\n setTimeout(() => this.composer?.focar());\r\n }\r\n }\r\n\r\n alternarHistorico(): void {\r\n this.vendoHistorico = !this.vendoHistorico;\r\n if (this.vendoHistorico) this.chat.listarConversas();\r\n }\r\n\r\n abrirConversa(id: string): void {\r\n this.vendoHistorico = false;\r\n this.chat.abrirConversa(id);\r\n setTimeout(() => this.composer?.focar());\r\n }\r\n\r\n trackConversa(_: number, c: { id: string }) {\r\n return c.id;\r\n }\r\n\r\n private montarBoasVindas(): void {\r\n const sugestoes = UINY_SUGESTOES[this.assistant.sistemaOrigem] ?? { textos: [], alteracoes: false };\r\n this.sugestoes = sugestoes.textos;\r\n this.capacidades = [];\r\n this.temAlteracoes = sugestoes.alteracoes;\r\n }\r\n\r\n private anunciar(texto: string): void {\r\n // limpa antes para leitores de tela repetirem anúncios iguais\r\n this.anuncio = '';\r\n this.cdr.markForCheck();\r\n clearTimeout(this.timerAnuncio);\r\n if (!texto) return;\r\n this.timerAnuncio = setTimeout(() => {\r\n this.anuncio = texto;\r\n this.cdr.markForCheck();\r\n }, 50);\r\n }\r\n}\r\n","<section class=\"uiny\" aria-labelledby=\"uiny-titulo\">\r\n <header class=\"uiny__topo\">\r\n <div class=\"uiny__marca\">\r\n <img *ngIf=\"!avatarFalhou\" class=\"uiny__avatar uiny__avatar--imagem\" [src]=\"avatarUrl\" alt=\"\"\r\n width=\"34\" height=\"34\" (error)=\"avatarFalhou = true\">\r\n <span *ngIf=\"avatarFalhou\" class=\"uiny__avatar\" aria-hidden=\"true\">\r\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" focusable=\"false\">\r\n <path d=\"M12 2.5c.5 3.9 2.6 6.9 6.4 8.2.5.2.5.9 0 1.1-3.8 1.3-5.9 4.3-6.4 8.2-.1.6-.9.6-1 0-.5-3.9-2.6-6.9-6.4-8.2-.5-.2-.5-.9 0-1.1 3.8-1.3 5.9-4.3 6.4-8.2.1-.6.9-.6 1 0Z\" fill=\"currentColor\"/>\r\n </svg>\r\n </span>\r\n <div class=\"uiny__identidade\">\r\n <h2 id=\"uiny-titulo\" class=\"uiny__nome\">Uiny</h2>\r\n <p class=\"uiny__sub\">Assistente da Uishop</p>\r\n </div>\r\n </div>\r\n\r\n <div class=\"uiny__comandos\">\r\n <button type=\"button\" class=\"uiny__icone\" [class.is-ativo]=\"vendoHistorico\"\r\n [attr.aria-pressed]=\"vendoHistorico ? 'true' : 'false'\"\r\n aria-label=\"Conversas anteriores\" title=\"Conversas anteriores\"\r\n (click)=\"alternarHistorico()\">\r\n <ui-icon icon=\"history\" size=\"20\"></ui-icon>\r\n </button>\r\n <button type=\"button\" class=\"uiny__icone\" aria-label=\"Nova conversa\" title=\"Nova conversa\"\r\n [disabled]=\"chat.ocupado\" (click)=\"novaConversa()\">\r\n <ui-icon icon=\"edit_square\" size=\"20\"></ui-icon>\r\n </button>\r\n <button type=\"button\" class=\"uiny__icone\" (click)=\"fechar()\"\r\n [attr.aria-label]=\"empilhado ? 'Voltar para a aplicação' : 'Fechar a Uiny'\"\r\n [title]=\"empilhado ? 'Voltar para a aplicação' : 'Fechar (Esc)'\">\r\n <ui-icon [icon]=\"empilhado ? 'arrow_back' : 'close'\" size=\"20\"></ui-icon>\r\n </button>\r\n </div>\r\n </header>\r\n\r\n <div *ngIf=\"!online\" class=\"uiny__faixa uiny__faixa--offline\" role=\"status\">\r\n <ui-icon icon=\"wifi_off\" size=\"18\"></ui-icon>\r\n <span>Sem conexão com a internet. Você poderá enviar mensagens quando ela voltar.</span>\r\n </div>\r\n\r\n <div *ngIf=\"estado?.aviso\" class=\"uiny__faixa uiny__faixa--info\" role=\"status\">\r\n <ui-icon icon=\"info\" size=\"18\"></ui-icon>\r\n <span>{{ estado.aviso }}</span>\r\n <button type=\"button\" class=\"uiny__faixa-fechar\" aria-label=\"Dispensar aviso\" (click)=\"chat.limparErro()\">\r\n <ui-icon icon=\"close\" size=\"16\"></ui-icon>\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"vendoHistorico; else conversaAtual\" class=\"uiny__historico\">\r\n <div class=\"uiny__historico-topo\">\r\n <h3 class=\"uiny__historico-titulo\">Conversas anteriores</h3>\r\n <button type=\"button\" class=\"uiny__link\" (click)=\"vendoHistorico = false\">Voltar à conversa</button>\r\n </div>\r\n\r\n <div *ngIf=\"estado?.carregandoConversas\" class=\"uiny__vazio\" role=\"status\">\r\n <span class=\"uiny__spinner\" aria-hidden=\"true\"></span> Carregando conversas…\r\n </div>\r\n\r\n <p *ngIf=\"!estado?.carregandoConversas && estado?.conversas?.length === 0\" class=\"uiny__vazio\">\r\n Nenhuma conversa anterior neste contexto.\r\n </p>\r\n\r\n <ul *ngIf=\"estado?.conversas?.length\" class=\"uiny__lista-conversas\">\r\n <li *ngFor=\"let c of estado.conversas; trackBy: trackConversa\">\r\n <button type=\"button\" class=\"uiny__conversa\" [class.is-atual]=\"c.id === estado.conversa?.id\"\r\n [attr.aria-current]=\"c.id === estado.conversa?.id ? 'true' : null\"\r\n [disabled]=\"chat.ocupado\" (click)=\"abrirConversa(c.id)\">\r\n <span class=\"uiny__conversa-titulo\">{{ c.titulo || 'Conversa sem título' }}</span>\r\n <span *ngIf=\"c.atualizadaEm\" class=\"uiny__conversa-data\">{{ c.atualizadaEm | date:'dd/MM/yyyy HH:mm' }}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <ng-template #conversaAtual>\r\n <ui-assistant-messages class=\"uiny__mensagens\"\r\n [mensagens]=\"mensagens\"\r\n [acoes]=\"acoes\"\r\n [enviando]=\"estado?.enviando\"\r\n [carregando]=\"estado?.carregandoConversa\"\r\n [sugestoes]=\"sugestoes\"\r\n [capacidades]=\"capacidades\"\r\n [temAlteracoes]=\"temAlteracoes\"\r\n [podeEnviar]=\"podeEnviar\"\r\n (sugestao)=\"usarSugestao($event)\"\r\n (confirmar)=\"chat.confirmar($event)\"\r\n (cancelar)=\"chat.cancelar($event)\"\r\n (verificar)=\"chat.verificarAcao($event)\">\r\n </ui-assistant-messages>\r\n </ng-template>\r\n\r\n <div *ngIf=\"estado?.erro\" class=\"uiny__erro\" role=\"alert\">\r\n <ui-icon icon=\"error\" size=\"18\"></ui-icon>\r\n <div class=\"uiny__erro-texto\">\r\n <span>{{ estado.erro.mensagem }}</span>\r\n <small *ngIf=\"estado.erro.correlacao\">Código para o suporte: {{ estado.erro.correlacao }}</small>\r\n </div>\r\n <button *ngIf=\"estado.textoComFalha && podeEnviar\" type=\"button\" class=\"uiny__link\" (click)=\"reenviar()\">\r\n Tentar de novo\r\n </button>\r\n <button type=\"button\" class=\"uiny__faixa-fechar\" aria-label=\"Dispensar erro\" (click)=\"chat.limparErro()\">\r\n <ui-icon icon=\"close\" size=\"16\"></ui-icon>\r\n </button>\r\n </div>\r\n\r\n <ui-assistant-composer class=\"uiny__composer\"\r\n [desabilitado]=\"!podeEnviar\"\r\n [enviando]=\"estado?.enviando\"\r\n [motivo]=\"motivoBloqueio\"\r\n (enviar)=\"enviar($event)\">\r\n </ui-assistant-composer>\r\n\r\n <div class=\"uiny-sr\" aria-live=\"polite\" aria-atomic=\"true\">{{ anuncio }}</div>\r\n</section>\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Inject,\r\n NgZone,\r\n OnDestroy,\r\n OnInit,\r\n Optional,\r\n Output,\r\n ViewChild\r\n} from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { UinyConfig, UinyEvento } from '../../models/uiny.models';\r\nimport { UiAssistantService } from '../../services/ui-assistant.service';\r\nimport { larguraPainel, UINY_CONFIG, UINY_LADO_A_LADO_PADRAO } from '../../uiny.config';\r\n\r\nconst DURACAO_TRANSICAO_MS = 240;\r\n\r\n/**\r\n * Contêiner que hospeda a Uiny ao lado da aplicação.\r\n *\r\n * Envolve TODO o layout da aplicação (inclusive o header e a sidebar fixos):\r\n *\r\n * <ui-assistant-layout (assistantEvent)=\"...\">\r\n * <div class=\"page-wrapper\">...</div>\r\n * </ui-assistant-layout>\r\n *\r\n * Fechado, não altera nada: a página rola normalmente pela janela.\r\n * Aberto no desktop, vira uma linha flex [aplicação | painel]: a coluna da aplicação passa\r\n * a ser o bloco de contenção dos elementos position:fixed (contain: layout) e ganha rolagem\r\n * própria. Assim o header e a sidebar fixos ocupam a coluna da esquerda, sem serem cobertos.\r\n * Em telas estreitas o painel ocupa a largura toda e a aplicação fica recolhida até voltar.\r\n */\r\n@Component({\r\n selector: 'ui-assistant-layout',\r\n templateUrl: './ui-assistant-layout.component.html',\r\n styleUrls: ['./ui-assistant-layout.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UiAssistantLayoutComponent implements OnInit, OnDestroy {\r\n\r\n /** Ações concluídas e instruções de interface (tema atualizado, atualizar listagem, abrir prévia). */\r\n @Output() assistantEvent = new EventEmitter<UinyEvento>();\r\n\r\n @ViewChild('rolagem', { static: true }) rolagem: ElementRef<HTMLElement>;\r\n\r\n /** Painel montado e layout em modo contido (inclui a animação de fechamento). */\r\n public contido = false;\r\n /** Painel com a largura final (classe que dispara a transição). */\r\n public expandido = false;\r\n /** Tela estreita: painel em largura total, aplicação recolhida. */\r\n public empilhado = false;\r\n public disponivel = false;\r\n public readonly largura: number;\r\n\r\n private removerHost: () => void;\r\n private subs = new Subscription();\r\n private midia: MediaQueryList | null = null;\r\n private timerFechamento: any;\r\n private scrollJanela = 0;\r\n\r\n constructor(\r\n public assistant: UiAssistantService,\r\n private cdr: ChangeDetectorRef,\r\n private zone: NgZone,\r\n @Optional() @Inject(UINY_CONFIG) config: UinyConfig | null,\r\n @Optional() private router: Router\r\n ) {\r\n this.largura = larguraPainel(config);\r\n const ladoALado = config?.larguraMinimaLadoALado || UINY_LADO_A_LADO_PADRAO;\r\n if (typeof window !== 'undefined' && window.matchMedia) {\r\n this.midia = window.matchMedia(`(max-width: ${ladoALado - 0.02}px)`);\r\n this.empilhado = this.midia.matches;\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.removerHost = this.assistant.registrarHost();\r\n\r\n this.subs.add(this.assistant.disponivel$.subscribe(d => {\r\n this.disponivel = d;\r\n this.cdr.markForCheck();\r\n }));\r\n this.subs.add(this.assistant.aberto$.subscribe(aberto => aberto ? this.abrir() : this.fechar()));\r\n this.subs.add(this.assistant.eventos$.subscribe(e => this.assistantEvent.emit(e)));\r\n\r\n // Com o layout contido a janela não rola: replica o scroll ao topo da navegação.\r\n if (this.router) {\r\n this.subs.add(this.router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe(() => {\r\n if (this.contido && this.rolagem) this.rolagem.nativeElement.scrollTop = 0;\r\n }));\r\n }\r\n\r\n if (this.midia) {\r\n const aoMudar = (e: MediaQueryListEvent) => this.zone.run(() => {\r\n this.empilhado = e.matches;\r\n this.cdr.markForCheck();\r\n });\r\n this.midia.addEventListener ? this.midia.addEventListener('change', aoMudar) : this.midia.addListener(aoMudar);\r\n this.subs.add(() => this.midia.removeEventListener\r\n ? this.midia.removeEventListener('change', aoMudar)\r\n : this.midia.removeListener(aoMudar));\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n clearTimeout(this.timerFechamento);\r\n this.subs.unsubscribe();\r\n this.removerHost?.();\r\n if (this.contido) this.restaurarJanela();\r\n }\r\n\r\n private abrir(): void {\r\n clearTimeout(this.timerFechamento);\r\n if (!this.contido) {\r\n this.scrollJanela = window.scrollY || 0;\r\n this.contido = true;\r\n this.cdr.detectChanges();\r\n // a rolagem passa da janela para a coluna da aplicação, na mesma posição\r\n this.rolagem.nativeElement.scrollTop = this.scrollJanela;\r\n }\r\n // próximo frame: a largura sai de 0 e a transição acontece\r\n requestAnimationFrame(() => {\r\n this.expandido = true;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n private fechar(): void {\r\n if (!this.contido) return;\r\n this.expandido = false;\r\n this.cdr.detectChanges();\r\n clearTimeout(this.timerFechamento);\r\n this.timerFechamento = setTimeout(() => {\r\n this.restaurarJanela();\r\n this.cdr.detectChanges();\r\n }, this.semAnimacao() ? 0 : DURACAO_TRANSICAO_MS);\r\n }\r\n\r\n private restaurarJanela(): void {\r\n const topo = this.empilhado ? this.scrollJanela : (this.rolagem?.nativeElement.scrollTop ?? 0);\r\n this.contido = false;\r\n this.cdr.detectChanges();\r\n window.scrollTo(0, topo);\r\n }\r\n\r\n private semAnimacao(): boolean {\r\n return typeof window !== 'undefined' && !!window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n }\r\n}\r\n","<div class=\"uiny-layout\"\n [class.uiny-layout--contido]=\"contido\"\n [class.uiny-layout--expandido]=\"expandido\"\n [class.uiny-layout--empilhado]=\"empilhado\"\n [style.--uiny-largura]=\"largura + 'px'\">\n\n <div class=\"uiny-layout__app\"\n [attr.inert]=\"contido && expandido && empilhado ? '' : null\"\n [attr.aria-hidden]=\"contido && expandido && empilhado ? 'true' : null\">\n <div #rolagem class=\"uiny-layout__rolagem\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <aside *ngIf=\"disponivel && contido\" id=\"uiny-painel\" class=\"uiny-layout__painel\"\n aria-label=\"Uiny, assistente da Uishop\"\n [attr.aria-hidden]=\"expandido ? null : 'true'\"\n [attr.inert]=\"expandido ? null : ''\">\n <div class=\"uiny-layout__painel-conteudo\">\n <ui-assistant-panel [empilhado]=\"empilhado\"></ui-assistant-panel>\n </div>\n </aside>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { UiIconModule } from 'uitec-ng-icon';\nimport { UiAssistantActionCardComponent } from './components/assistant-action-card/ui-assistant-action-card.component';\nimport { UiAssistantButtonComponent } from './components/assistant-button/ui-assistant-button.component';\nimport { UiAssistantComposerComponent } from './components/assistant-composer/ui-assistant-composer.component';\nimport { UiAssistantLayoutComponent } from './components/assistant-layout/ui-assistant-layout.component';\nimport { UiAssistantMessagesComponent } from './components/assistant-messages/ui-assistant-messages.component';\nimport { UiAssistantPanelComponent } from './components/assistant-panel/ui-assistant-panel.component';\nimport { UiAssistantTextComponent } from './components/assistant-text/ui-assistant-text.component';\nimport { UinyConfig } from './models/uiny.models';\nimport { UINY_CONFIG } from './uiny.config';\n\nconst COMPONENTES = [\n UiAssistantButtonComponent,\n UiAssistantLayoutComponent,\n UiAssistantPanelComponent,\n UiAssistantMessagesComponent,\n UiAssistantTextComponent,\n UiAssistantComposerComponent,\n UiAssistantActionCardComponent,\n];\n\n@NgModule({\n declarations: COMPONENTES,\n imports: [\n CommonModule,\n UiIconModule\n ],\n exports: COMPONENTES\n})\nexport class UiAssistantModule {\n /** Importe uma vez no AppModule do consumidor. */\n static forRoot(config: UinyConfig): ModuleWithProviders<UiAssistantModule> {\n return {\n ngModule: UiAssistantModule,\n providers: [{ provide: UINY_CONFIG, useValue: config }]\n };\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { UiHeaderComponent } from './ui-header.component';\r\nimport { UiIconModule } from 'uitec-ng-icon';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { UiUserTopModule } from 'uitec-ng-user-top';\r\nimport { MyAccountComponent } from './my-account/my-account.component';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { UiAssistantModule } from './assistant/ui-assistant.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n UiHeaderComponent,\r\n MyAccountComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n UiIconModule,\r\n UiUserTopModule,\r\n TooltipModule,\r\n UiAssistantModule\r\n ],\r\n exports: [\r\n UiHeaderComponent,\r\n UiAssistantModule,\r\n ]\r\n})\r\nexport class UiHeaderModule { }\r\n","/*\r\n * Public API Surface of ui-header\r\n */\r\n\r\nexport * from './lib/ui-header.service';\r\nexport * from './lib/ui-header.component';\r\nexport * from './lib/ui-header.module';\r\n\r\n// Uiny (assistente virtual)\r\nexport * from './lib/assistant/ui-assistant.module';\r\nexport * from './lib/assistant/uiny.config';\r\nexport * from './lib/assistant/models/uiny.models';\r\nexport * from './lib/assistant/models/uiny-api.models';\r\nexport * from './lib/assistant/services/ui-assistant.service';\r\nexport * from './lib/assistant/services/uiny-api.service';\r\nexport * from './lib/assistant/services/uiny-chat.service';\r\nexport * from './lib/assistant/services/uiny-session.service';\r\nexport * from './lib/assistant/components/assistant-button/ui-assistant-button.component';\r\nexport * from './lib/assistant/components/assistant-layout/ui-assistant-layout.component';\r\nexport * from './lib/assistant/components/assistant-panel/ui-assistant-panel.component';\r\nexport * from './lib/assistant/components/assistant-messages/ui-assistant-messages.component';\r\nexport * from './lib/assistant/components/assistant-text/ui-assistant-text.component';\r\nexport * from './lib/assistant/components/assistant-composer/ui-assistant-composer.component';\r\nexport * from './lib/assistant/components/assistant-action-card/ui-assistant-action-card.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.UinySessionService","i1.UiAssistantService","i2","i3","i4","i6.UiAssistantButtonComponent","i7.MyAccountComponent","i1.UinyApiService","i3.UiAssistantService","i3.UiAssistantTextComponent","i4.UiAssistantActionCardComponent","i5","i6.UiAssistantMessagesComponent","i7.UiAssistantComposerComponent","i4.UiAssistantPanelComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;MAKa,eAAe,CAAA;AAE1B,IAAA,WAAA,GAAA,GAAiB;;6GAFN,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCDY,WAAW,GAAG,IAAI,cAAc,CAAa,aAAa,EAAE;AAElE,MAAM,kBAAkB,GAAG,gCAAgC;AAC3D,MAAM,mBAAmB,GAAG,IAAI;AAChC,MAAM,gBAAgB,GAAG,IAAI;AAC7B,MAAM,gBAAgB,GAAG,IAAI;AAC7B,MAAM,uBAAuB,GAAG,KAAK;AAE5C;AACO,MAAM,4BAA4B,GAAG,KAAK;AAEjD;AACO,MAAM,wBAAwB,GAAG,OAAO;AACxC,MAAM,oBAAoB,GAAG,MAAM;AACnC,MAAM,wBAAwB,GAAG,MAAM;AAE9C;;;AAGG;AACa,SAAA,eAAe,CAAC,MAAyB,EAAE,GAAQ,EAAA;;IAC/D,MAAM,GAAG,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,MAAM,MAAI,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,KAAH,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,GAAG,CAAE,MAAM,0CAAE,IAAI,CAAA,IAAI,IAAI,CAAC;AACxD,IAAA,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;AAAE,QAAA,OAAO,IAAI,CAAC;AACjD,IAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAEK,SAAU,aAAa,CAAC,MAAyB,EAAA;AACnD,IAAA,MAAM,OAAO,GAAG,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,aAAa,KAAI,mBAAmB,CAAC;AAC7D,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;AAIG;AACU,MAAA,cAAc,GAAqE;AAC5F,IAAA,MAAM,EAAE;AACJ,QAAA,MAAM,EAAE;YACJ,+BAA+B;YAC/B,iCAAiC;YACjC,6CAA6C;AAChD,SAAA;;AAED,QAAA,UAAU,EAAE,IAAI;AACnB,KAAA;AACD,IAAA,GAAG,EAAE;AACD,QAAA,MAAM,EAAE;YACJ,mCAAmC;YACnC,qCAAqC;AACxC,SAAA;AACD,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA;;;ACrDL;AACA,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAC9C,MAAM,SAAS,GAA2B,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAEzG,SAAS,UAAU,CAAC,KAAc,EAAA;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;AACnH,CAAC;AAED;AACM,SAAU,kBAAkB,CAAC,QAAyC,EAAA;IACxE,MAAM,SAAS,GAAiB,EAAE,CAAC;AACnC,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,SAAS,CAAC;IAEhC,MAAM,IAAI,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AAC3E,IAAA,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAAE,QAAA,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAE1D,IAAA,SAAS,CAAC,OAAO,CAAC,KAAK,IAAG;QACtB,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,EAAE;AAAG,YAAA,SAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC3C,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC;AAED;AACgB,SAAA,eAAe,CAAC,OAA0B,EAAE,QAAsB,EAAA;AAC9E,IAAA,MAAM,GAAG,GAAoB,EAAE,OAAO,EAAE,CAAC;IACzC,IAAI,QAAQ,CAAC,IAAI;AAAE,QAAA,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM;AAAE,QAAA,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IACnD,IAAI,QAAQ,CAAC,aAAa;AAAE,QAAA,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC;IACzE,IAAI,QAAQ,CAAC,MAAM;AAAE,QAAA,GAAG,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;IACnD,IAAI,QAAQ,CAAC,SAAS;AAAE,QAAA,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;IAC5D,IAAI,QAAQ,CAAC,QAAQ;AAAE,QAAA,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACzD,IAAA,OAAO,GAAG,CAAC;AACf,CAAC;AAEe,SAAA,aAAa,CAAC,CAAe,EAAE,CAAe,EAAA;;AAC1D,IAAA,OAAO,CAAC,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,mCAAI,IAAI,OAAO,MAAA,CAAC,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC;AACrC,WAAA,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,OAAA,CAAC,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,OAAO,CAAA,EAAA,GAAA,CAAC,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,CAAC,CAAA,EAAA,CAAC,CAAC;AAC/E;;AC1BA;;;AAGG;MAEU,kBAAkB,CAAA;IAW3B,WACY,CAAA,WAAwB,EACxB,IAAY,EAAA;AADZ,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;;QAVP,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC,CAAC;AACnE,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AACd,QAAA,IAAW,CAAA,WAAA,GAAkB,IAAI,CAAC;AAClC,QAAA,IAAY,CAAA,YAAA,GAAsB,IAAI,CAAC;AAS3C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjG,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEpG,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAI;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC1C,YAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ;AAAE,gBAAA,OAAO,IAAI,CAAC;YAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACtD,SAAC,CAAC,EACF,oBAAoB,EAAE,EACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAClD,CAAC;AAEF,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW;AACxC,cAAE,EAAE,CAAC,IAAI,CAAC;AACV,cAAE,KAAK,CACH,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EACjD,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CACtD,CAAC,IAAI,CACF,SAAS,CAAC,OAAO,SAAS,KAAK,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,MAAM,KAAK,KAAK,CAAC,EAC/E,oBAAoB,EAAE,EACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAClD,CAAC;KACT;;IAGD,KAAK,GAAA;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;QAClD,OAAO,CAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,KAAK,KAAI,IAAI,CAAC;KACjC;;IAGD,kBAAkB,GAAA;AACd,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACtJ,QAAA,IAAI,KAAK;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KACnE;IAEO,WAAW,CAAC,OAA2B,EAAE,MAAyB,EAAA;;AACtE,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC;QAC1B,OAAO,MAAM,KAAI,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAA,IAAI,IAAI,CAAC;KACnE;IAEO,KAAK,CAAC,OAA2B,EAAE,MAAyB,EAAA;;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAChD,QAAA,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;QAC/C,IAAI,EAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,KAAK,CAAA,IAAI,CAAC,SAAS,IAAI,EAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,UAAU,CAAA;AAAE,YAAA,OAAO,IAAI,CAAC;QACrE,OAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAC,UAAU,CAAA,CAAA,EAAI,OAAO,CAAC,KAAK,CAAA,CAAE,CAAC;KAC9D;AAEO,IAAA,aAAa,CAAC,KAAa,EAAE,OAAoB,EAAE,MAAyB,EAAA;QAChF,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG;AAChB,YAAA,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS;YACpB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7C,YAAA,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;SACtC,CAAC;QACF,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;;gHA1EQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;AChBlC;AACA,MAAM,OAAO,GAAsC;AAC/C,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,aAAa,EAAE,eAAe;CACjC,CAAC;AACF,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAChC,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,SAAS,GAAG,GAAG,CAAC;AAEtB;AACM,SAAU,OAAO,CAAC,KAAc,EAAA;AAClC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,IAAI,CAAC;IACrD,MAAM,GAAG,GAAG,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAChH,IAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,CAAC;AAEK,SAAU,QAAQ,CAAC,KAAc,EAAA;AACnC,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACxE,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAA;IAC3B,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACnF,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,KAAK,CAAC,KAAc,EAAE,GAAG,GAAG,KAAK,EAAA;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,QAAA,OAAO,EAAE,CAAC;IACzC,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAC5D,CAAC;AAEK,SAAU,eAAe,CAAC,GAAoB,EAAA;AAChD,IAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,CAAC,CAAC;AAC7B,IAAA,IAAI,CAAC,EAAE;AAAE,QAAA,OAAO,IAAI,CAAC;IACrB,OAAO;QACH,EAAE;QACF,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI;QACtC,aAAa,EAAE,GAAG,CAAC,cAAc;AACjC,QAAA,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AAC5B,QAAA,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;KAC1C,CAAC;AACN,CAAC;AAEK,SAAU,eAAe,CAAC,GAAoB,EAAA;;AAChD,IAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,CAAC,CAAC;AAC7B,IAAA,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAChF,OAAO;QACH,EAAE;QACF,KAAK,EAAE,GAAG,CAAC,KAAK;AAChB,QAAA,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI;AAC1D,QAAA,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,MAAM,EAAE,QAAQ,CAAC,CAAA,EAAA,GAAA,GAAG,CAAC,aAAa,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC;AACvC,QAAA,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC;AACvC,QAAA,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;KACpC,CAAC;AACN,CAAC;AAED;AACA,SAAS,aAAa,CAAC,YAAqB,EAAA;;AACxC,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAQ,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAK,CAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACtG,IAAA,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;AACpC,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7G,CAAC;AAEK,SAAU,WAAW,CAAC,GAAgB,EAAA;;AACxC,IAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,KAAA,IAAA,IAAH,GAAG,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAH,GAAG,CAAE,EAAE,CAAC,CAAC;AAC7B,IAAA,IAAI,CAAC,EAAE;AAAE,QAAA,OAAO,IAAI,CAAC;IACrB,OAAO;QACH,EAAE;QACF,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/B,QAAA,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;;QAEvC,MAAM,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,eAAe;AAChD,QAAA,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;KACtC,CAAC;AACN,CAAC;AAED;;;;AAIG;AACG,SAAU,eAAe,CAAC,QAAiB,EAAA;;IAC7C,MAAM,KAAK,GAAwC,EAAE,CAAC;AACtD,IAAA,MAAM,SAAS,GAAG,CAAC,MAAe,EAAE,KAAc,KAAI;AAClD,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,YAAY;YAAE,OAAO;QACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,OAAO;AACzD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;YAAE,OAAO;QACjG,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO;AACtB,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;AACzF,KAAC,CAAC;AAEF,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACzB,QAAA,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAG;;AACpB,YAAA,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,gBAAA,SAAS,CAAE,CAAA,EAAA,GAAA,IAAY,CAAC,MAAM,MAAK,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAY,CAAC,KAAK,EAAG,IAAY,CAAC,KAAK,CAAC,CAAC;AACtH,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACD,IAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;AAAE,QAAA,OAAO,KAAK,CAAC;IAE5D,MAAM,CAAC,GAAQ,QAAQ,CAAC;AACxB,IAAA,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE;;AAE5B,QAAA,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1B,QAAA,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3B,SAAS,CAAC,aAAa,EAAE,CAAA,EAAA,GAAA,CAAC,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,oBAAoB,CAAC,CAAC;AAChE,QAAA,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;AACtC,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AACD,IAAA,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACT,SAAA,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5D,SAAA,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAA;AAC5B,IAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC;AACvC,IAAA,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9C,IAAA,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;AAGG;AACG,SAAU,iBAAiB,CAAC,UAAmB,EAAA;AACjD,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;AAAE,QAAA,OAAO,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;AACxC,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,SAAS;QAChD,MAAM,KAAK,GAAQ,IAAI,CAAC;AACxB,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE;YACzC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AACrD,YAAA,IAAI,aAAa;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC;AAC/E,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,OAAO,CAAC;AACnB;;ACjIA,MAAM,gBAAgB,GAAqC;AACvD,IAAA,MAAM,EAAE,0EAA0E;AAClF,IAAA,IAAI,EAAE,2EAA2E;AACjF,IAAA,OAAO,EAAE,mEAAmE;AAC5E,IAAA,QAAQ,EAAE,4DAA4D;AACtE,IAAA,cAAc,EAAE,+DAA+D;AAC/E,IAAA,QAAQ,EAAE,yCAAyC;AACnD,IAAA,MAAM,EAAE,gFAAgF;AACxF,IAAA,QAAQ,EAAE,uEAAuE;AACjF,IAAA,YAAY,EAAE,4CAA4C;CAC7D,CAAC;AAEF;;;;;;;;;AASG;MAEU,cAAc,CAAA;AAKvB,IAAA,WAAA,CACI,WAAwB,EAChB,OAA2B,EACF,MAAyB,EACnB,GAAQ,EAAA;AAFvC,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;QAInC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC/C;AAED,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KACzB;IAED,eAAe,GAAA;AACX,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAA6B,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,wBAAwB,EAC3G,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAC7D;AAED,IAAA,aAAa,CAAC,QAAyB,EAAA;QACnC,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAA4B,MAAM,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;KAC7H;;AAGD,IAAA,SAAS,CAAC,UAAkB,EAAA;AACxB,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAwB,KAAK,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAC7H,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9D;AAED,IAAA,cAAc,CAAC,UAAkB,EAAE,KAAa,EAAE,QAAyB,EAAA;AACvE,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAkB,MAAM,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAY,UAAA,CAAA,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;KAC3J;;AAGD,IAAA,aAAa,CAAC,MAAc,EAAA;QACxB,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAkB,MAAM,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA,UAAA,CAAY,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;KAC9H;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;QACvB,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAkB,MAAM,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA,SAAA,CAAW,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;KACjI;AAEO,IAAA,EAAE,CAAC,KAAa,EAAA;AACpB,QAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACxC,QAAA,OAAO,EAAE,CAAC;KACb;IAEO,OAAO,CAAI,MAAsB,EAAE,IAAY,EAAE,IAAS,EAAE,SAAiB,EAAE,MAAmB,EAAA;AACtG,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,YAAA,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,SAAA;AACD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD,SAAA;QAED,IAAI,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;;QAEhE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE;YACpC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAC7D,SAAA;QACD,IAAI,MAAM,KAAK,MAAM,EAAE;YACnB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;AAC7D,SAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAJ,IAAI,GAAI,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAC7G,OAAO,CAAC,SAAS,CAAC,EAClB,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAChE,CAAC;KACL;AAEO,IAAA,cAAc,CAAC,GAAQ,EAAA;;QAC3B,IAAI,GAAG,YAAY,YAAY,EAAE;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,EAAE,GAAG,YAAY,iBAAiB,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACnC,SAAA;QAED,MAAM,KAAK,GAAoB,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7F,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,GAAG,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5H,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,EAAE,CAAC,CAAC;AACzD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAEjE,QAAA,IAAI,IAAsB,CAAC;AAC3B,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,GAAG,MAAM,CAAC;AAC/B,aAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,QAAQ,CAAC;AACxC,aAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,gBAAgB,CAAC;AAChD,aAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,UAAU,CAAC;AAC1C,aAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,QAAQ,CAAC;AACxC,aAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,IAAI,GAAG,UAAU,CAAC;;YACtF,IAAI,GAAG,UAAU,CAAC;QAEvB,IAAI,IAAI,KAAK,QAAQ,EAAE;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACrC,SAAA;;;AAID,QAAA,MAAM,eAAe,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC;AACnF,QAAA,MAAM,QAAQ,GAAG,CAAC,eAAe,IAAI,WAAW,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAE5E,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;KAC5E;IAEO,IAAI,CAAC,IAAsB,EAAE,MAAc,EAAA;QAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KAC7F;IAEO,WAAW,CAAC,KAAU,EAAE,GAAW,EAAA;QACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;AAC3C,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QACnD,OAAO,KAAK,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;KACjE;;4GAzHQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAQC,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EACX,iBAAiB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAThC,cAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cADD,MAAM,EAAA,CAAA,CAAA;4FACnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;8BASzB,QAAQ;;8BAAI,MAAM;+BAAC,WAAW,CAAA;;8BAC9B,QAAQ;;8BAAI,MAAM;+BAAC,iBAAiB,CAAA;;;;AC7C7C;;;;;;;;;AASG;MAEU,kBAAkB,CAAA;AAkB3B,IAAA,WAAA,CACY,OAA2B,EAC3B,GAAmB,EACc,MAAyB,EAAA;AAF1D,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;AAC3B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAgB;AACc,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAmB;QAnBrD,IAAc,CAAA,cAAA,GAAG,IAAI,eAAe,CAAsB,IAAI,GAAG,EAAE,CAAC,CAAC;QACrE,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAS,CAAC,CAAC,CAAC;QACxC,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACrD,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAc,CAAC;AACtD,QAAA,IAAO,CAAA,OAAA,GAAuB,IAAI,CAAC;AACnC,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAMrB,QAAA,IAAA,CAAA,SAAS,GAA6B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC;;QAEtG,IAAA,CAAA,QAAQ,GAA2B,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;AAO7E,QAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC3F,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EACjI,oBAAoB,EAAE,EACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAClD,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACtE,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,MAAM,IAAI,UAAU,CAAC,EACnD,oBAAoB,EAAE,EACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAClD,CAAC;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,IAAG;YACpC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;AAC1C,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,aAAa,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;KAC7I;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;KACpC;AAED,IAAA,IAAI,aAAa,GAAA;;QACb,OAAO,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;KAC7C;AAED,IAAA,KAAK,CAAC,OAA4B,EAAA;AAC9B,QAAA,IAAI,OAAO;AAAE,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC;;IAGD,MAAM,CAAC,YAAY,GAAG,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK;YAAE,OAAO;AACvC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,YAAY,IAAI,OAAO,EAAE;;AAEzB,YAAA,UAAU,CAAC,MAAM,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,SAAA;KACJ;AAED,IAAA,QAAQ,CAAC,OAA4B,EAAA;QACjC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACnE;;AAGD,IAAA,eAAe,CAAC,QAA6B,EAAA;QACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC5D;;AAGD,IAAA,iBAAiB,CAAC,OAA8B,EAAA;AAC5C,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAA,EAAK,OAAO,CAAA,CAAG,CAAC,CAAC;KAClG;AAED,IAAA,IAAI,QAAQ,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;KACtC;;IAGD,iBAAiB,CAAC,MAAc,EAAE,UAAmB,EAAA;QACjD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACjD,QAAA,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;AAAE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtF;;IAGD,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;AACrB,QAAA,OAAO,MAAK;AACR,YAAA,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,SAAC,CAAC;KACL;;AAGD,IAAA,MAAM,CAAC,MAAkB,EAAA;AACrB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtC;IAEO,YAAY,CAAC,UAAmB,EAAE,KAAa,EAAA;AACnD,QAAA,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU;YAAE,OAAO;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,sGAAsG,CAAC,CAAC;AACzH,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;AAC9B,YAAA,OAAO,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;AACnH,SAAA;aAAM,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;;AAE3C,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,UAAU,CAAC,MAAK;AACZ,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,EAAE;AACzB,oBAAA,OAAO,CAAC,IAAI,CAAC,6GAA6G,CAAC,CAAC;AAC/H,iBAAA;aACJ,EAAE,IAAI,CAAC,CAAC;AACZ,SAAA;KACJ;;AA/HQ,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,4EAqBH,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AArB1B,kBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cADL,MAAM,EAAA,CAAA,CAAA;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;8BAsBzB,QAAQ;;8BAAI,MAAM;+BAAC,WAAW,CAAA;;;;ACtCvC;MAOa,0BAA0B,CAAA;AACnC,IAAA,WAAA,CAAmB,SAA6B,EAAA;AAA7B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;KAAK;;wHAD5C,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,2DCVvC,goCAaA,EAAA,MAAA,EAAA,CAAA,y9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDHa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,goCAAA,EAAA,MAAA,EAAA,CAAA,y9BAAA,CAAA,EAAA,CAAA;;;MECtC,kBAAkB,CAAA;IAS3B,WACW,CAAA,WAAwB,EACxB,UAA0B,EAAA;AAD1B,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;AAP3B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAkB,CAAC;QAStD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;QAErD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC5C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,SAAC,CAAC,CAAC;KACN;IAED,QAAQ,GAAA;KACP;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;KAC7B;AAED,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;;gHAlCQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,qHCT/B,4qBAiBA,EAAA,MAAA,EAAA,CAAA,0HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDRa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACI,YAAY,EAAA,QAAA,EAAA,4qBAAA,EAAA,MAAA,EAAA,CAAA,0HAAA,CAAA,EAAA,CAAA;+HAMb,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAEI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEHE,iBAAiB,CAAA;IA4B1B,WACW,CAAA,WAAwB,EACxB,UAA0B,EAC1B,aAA4B,EAC5B,aAA4B,EAC5B,gBAAoC,EACjB,QAAa,EAAA;AALhC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACxB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAgB;AAC1B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAoB;AACjB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;AA3BlC,QAAA,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;AACxB,QAAA,IAAY,CAAA,YAAA,GAAY,IAAI,CAAC;AAC7B,QAAA,IAAW,CAAA,WAAA,GAAW,OAAO,CAAC;;AAE9B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAE9B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAW,CAAC;AACpD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW,CAAC;AAC/C,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW,CAAC;AACnD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAkB,CAAC;KAmBrD;AAEL,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvE,SAAA;KACJ;IAED,WAAW,GAAA;QACP,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxD;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,eAAe,CAAC;QAErC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC;QAErD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC5C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC9C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AAC1B,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC;QAC1D,UAAU,CAAC,MAAK;YACZ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACnG,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC;QAE/E,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC;AACtF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAExD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC5B;IAED,iBAAiB,GAAA;QACb,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,OAAO;AAE7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,OAAO,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAE7C,QAAA,IAAI,MAAM,GAAG,GAAG,CAAC;AAEjB,QAAA,IAAI,SAAS,EAAE;YACX,IAAI;AACA,gBAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvD,gBAAA,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;AACvB,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;AAC/D,aAAA;AACJ,SAAA;QAED,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;KACvD;IAED,wBAAwB,GAAA;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;AACV,SAAA;AAED,QAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;YAChC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;;IAGD,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC;QACzC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;KACpD;IAED,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KACzD;IAED,IAAI,GAAA;QACA,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;AAE/B,QAAA,IAAI,IAAI,GAAG,IAAI,cAAc,EAAE,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,MAAM,GAAA;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;KAC7B;AAED,IAAA,SAAS,CAAC,IAAoB,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,aAAa,GAAA;QACT,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACnC,WAAW,GAAG,SAAS,CAAC;AAC3B,SAAA;aAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC/C,WAAW,GAAG,SAAS,CAAC;AAC3B,SAAA;AAED,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,GAAG,CAAC,SAAS,GAAG,CAAA,kBAAA,EAAqB,WAAW,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;AACjE,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;KAClC;IAED,gBAAgB,GAAA;AACZ,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AAC7B,gBAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACjC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;;AAEvC,gBAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;AACpC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;;AAE1C,gBAAA,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACvC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;;AAEtC,gBAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;AACnC,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC/B,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;AAClC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE;;AAE1C,gBAAA,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACvC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE;;AAE3C,gBAAA,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC;AACxC,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;;AAEvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AACpC,aAAA;AACJ,SAAA;KACJ;;AArMQ,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,oKAkCd,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlCX,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,2uBCV9B,8kHA0EA,EAAA,MAAA,EAAA,CAAA,+qEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,aAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,0BAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDhEa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,WAAW,EAAA,QAAA,EAAA,8kHAAA,EAAA,MAAA,EAAA,CAAA,+qEAAA,CAAA,EAAA,CAAA;;;8BAsChB,MAAM;+BAAC,QAAQ,CAAA;;yBAhCX,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAEG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEI,qBAAqB,EAAA,CAAA;sBAA9B,MAAM;gBACG,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBACG,oBAAoB,EAAA,CAAA;sBAA7B,MAAM;gBACG,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAEe,IAAI,EAAA,CAAA;sBAAzB,YAAY;uBAAC,MAAM,CAAA;gBACI,MAAM,EAAA,CAAA;sBAA7B,YAAY;uBAAC,QAAQ,CAAA;gBACC,KAAK,EAAA,CAAA;sBAA3B,YAAY;uBAAC,OAAO,CAAA;;;AEjBzB,MAAM,OAAO,GAAmC;AAC5C,IAAA,QAAQ,EAAE,4BAA4B;AACtC,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,SAAS,EAAE,WAAW;AACtB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,UAAU,EAAE,6BAA6B;AACzC,IAAA,KAAK,EAAE,eAAe;AACtB,IAAA,aAAa,EAAE,uBAAuB;CACzC,CAAC;AAEF,MAAM,UAAU,GAA4C;AACxD,IAAA,SAAS,EAAE,2BAA2B;AACtC,IAAA,SAAS,EAAE,oBAAoB;AAC/B,IAAA,QAAQ,EAAE,mFAAmF;AAC7F,IAAA,UAAU,EAAE,2EAA2E;AACvF,IAAA,KAAK,EAAE,+BAA+B;CACzC,CAAC;AAEF;;;AAGG;MAOU,8BAA8B,CAAA;IAWvC,WAAoB,CAAA,GAAsB,EAAU,IAAY,EAAA;AAA5C,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AAAU,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAPtD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;AAE1C,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;KAG2C;IAErE,WAAW,GAAA;QACP,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IAED,WAAW,GAAA;AACP,QAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;;AAGD,IAAA,IAAI,kBAAkB,GAAA;;AAClB,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,MAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC;KACjH;AAED,IAAA,IAAI,MAAM,GAAA;;AACN,QAAA,OAAO,IAAI,CAAC,kBAAkB,GAAG,UAAU,GAAG,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,CAAC;KACnE;AAED,IAAA,IAAI,MAAM,GAAA;;QACN,OAAO,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,SAAS,GAAA;;AACT,QAAA,OAAO,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,KAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;KAC9D;AAED,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC5D;AAED,IAAA,IAAI,gBAAgB,GAAA;QAChB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC;KACtF;AAED,IAAA,KAAK,CAAC,KAAa,EAAA;AACf,QAAA,OAAO,6CAA6C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpE;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC3D;IAED,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC1D;IAEO,OAAO,GAAA;;AACX,QAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;AACpE,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAC9C,gBAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,kBAAkB;AAAE,oBAAA,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,aAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACf,SAAC,CAAC,CAAC;KACN;;4HAtEQ,8BAA8B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA9B,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,kMC1C3C,2tEA0CA,EAAA,MAAA,EAAA,CAAA,qyFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDAa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACI,0BAA0B,EAAA,eAAA,EAGnB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2tEAAA,EAAA,MAAA,EAAA,CAAA,qyFAAA,CAAA,EAAA,CAAA;6HAItC,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBAEI,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;;;AE7CX,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B;MAOa,4BAA4B,CAAA;AANzC,IAAA,WAAA,GAAA;AAQa,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AACrB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAEjB,QAAA,IAAM,CAAA,MAAA,GAAkB,IAAI,CAAC;AAE5B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAU,CAAC;AAI9B,QAAA,IAAG,CAAA,GAAA,GAAG,4BAA4B,CAAC;AAC5C,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;KAkDrB;AAhDG,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;KAC3F;AAED,IAAA,IAAI,eAAe,GAAA;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAC7C;IAED,KAAK,GAAA;;AACD,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;KAC5D;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED,IAAA,QAAQ,CAAC,MAAqB,EAAA;QAC1B,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO;;QAEtD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,KAAK,GAAG;YAAE,OAAO;QACzD,MAAM,CAAC,cAAc,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;IAED,QAAQ,GAAA;QACJ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KACvC;IAEO,aAAa,GAAA;AACjB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AACpC,QAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,QAAA,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC;AAClE,QAAA,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC5E;;0HA7DQ,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,4RCZzC,okDA2BA,EAAA,MAAA,EAAA,CAAA,2/DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDfa,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,okDAAA,EAAA,MAAA,EAAA,CAAA,2/DAAA,CAAA,EAAA,CAAA;8BAItC,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAEI,MAAM,EAAA,CAAA;sBAAf,MAAM;gBAE+B,KAAK,EAAA,CAAA;sBAA1C,SAAS;gBAAC,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEMxC,MAAM,cAAc,GAAmB;AACnC,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,QAAQ,EAAE,KAAK;AACf,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,mBAAmB,EAAE,KAAK;AAC1B,IAAA,aAAa,EAAE,IAAI;CACtB,CAAC;AAEF;;;;;;AAMG;MAEU,eAAe,CAAA;AAiBxB,IAAA,WAAA,CACY,GAAmB,EACnB,OAA2B,EAC3B,SAA6B,EAAA;AAF7B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAgB;AACnB,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;AAC3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;QAlBxB,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAiB,cAAc,CAAC,CAAC;;AAE9D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAU,CAAC;AAClC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AACnC,QAAA,IAAM,CAAA,MAAA,GAAsB,IAAI,CAAC;AACjC,QAAA,IAAO,CAAA,OAAA,GAAG,CAAC,CAAC;;AAEZ,QAAA,IAAU,CAAA,UAAA,GAAkB,IAAI,CAAC;QAEhC,IAAA,CAAA,MAAM,GAA+B,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;;QAEjE,IAAA,CAAA,QAAQ,GAAuB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;AAOlE,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAG;;AAClD,YAAA,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,EAAE,OAAK,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAA,EAAE;AAChC,gBAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,aAAA;SACJ,CAAC,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;;AAGnG,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CACvC,GAAG,CAAC,CAAC,IAAG,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAA,EAAA,CAAC,EAC1B,oBAAoB,EAAE,CACzB,CAAC,SAAS,CAAC,MAAM,IAAG;YACjB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;AACnD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,oFAAoF,CAAC,CAAC;AAC/G,aAAA;SACJ,CAAC,CAAC,CAAC;KACP;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KAC3B;AAED,IAAA,IAAI,KAAK,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;KAC7B;AAED,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;AACrB,QAAA,OAAO,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;KAClG;AAED,IAAA,MAAM,CAAC,UAAkB,EAAA;QACrB,MAAM,KAAK,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AACxC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ;AAAE,YAAA,OAAO,KAAK,CAAC;AAC5E,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,4BAA4B,EAAE;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAA2B,wBAAA,EAAA,4BAA4B,cAAc,CAAC,EAAE,CAAC,CAAC;AACxH,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAA,MAAM,KAAK,GAAiB;AACxB,YAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE;SAChH,CAAC;QACF,IAAI,CAAC,KAAK,CAAC;YACP,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;AAChE,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEhD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;cAC/B,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzB,cAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAG;;AAC5C,gBAAA,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,QAAQ,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,sCAAsC,CAAC,CAAC;gBACxF,IAAI,CAAC,UAAU,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,gBAAA,OAAO,QAAQ,CAAC;aACnB,CAAC,CAAC,CAAC;QAER,SAAS,CAAC,IAAI,CACV,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,EAC5E,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACjC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CACzE,CAAC,SAAS,CAAC;YACR,IAAI,EAAE,QAAQ,IAAG;AACb,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,QAAQ,IAAG,wBAAwB,GAAG,EAAE,CAAC,CAAC;aAC3E;YACD,KAAK,EAAE,GAAG,IAAG;;gBACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;;AAElC,gBAAA,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;oBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAClE,IAAI,CAAC,KAAK,CAAC;AACP,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,mCAAQ,CAAC,CAAA,EAAA,EAAE,IAAI,EAAE,IAAI,EAAA,CAAA,GAAK,CAAC,CAAC;AACtF,oBAAA,QAAQ,EAAE,KAAK;oBACf,IAAI;AACJ,oBAAA,aAAa,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,IAAI,GAAG,KAAK;AACvD,iBAAA,CAAC,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtC;AACJ,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACf;;IAGD,YAAY,GAAA;QACR,IAAI,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACf;IAED,eAAe,GAAA;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB;YAAE,OAAO;AAC3D,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,CAC3B,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAC/B,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC,CAC7D,CAAC,SAAS,CAAC;YACR,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;gBAClB,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aACrH,CAAC;YACF,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAC1E,SAAA,CAAC,CAAC;KACN;AAED,IAAA,aAAa,CAAC,EAAU,EAAA;;QACpB,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,SAAS,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAAE,OAAO;AACrE,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CACvB,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACjC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC,CAC5D,CAAC,SAAS,CAAC;YACR,IAAI,EAAE,CAAC,IAAG;;AACN,gBAAA,MAAM,QAAQ,GAAG,CAAA,EAAA,GAAA,eAAe,CAAC,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,QAAQ,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,CAAC;AACxD,gBAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;oBACjC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,yEAAyE,EAAE,CAAC,CAAC;oBACjG,OAAO;AACV,iBAAA;AACD,gBAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAClC,MAAM,YAAY,GAAsB,KAAK,CAAC,OAAO,CAAC,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;gBAC7E,IAAI,CAAC,KAAK,CAAC;oBACP,QAAQ;oBACR,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC5D,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,aAAa,CAAC,CAAC;AACpE,iBAAA,CAAC,CAAC;;aAEN;AACD,YAAA,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AAC3D,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,MAAc,EAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO;AACjE,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;AACxD,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,4DAA4D,EAAE,CAAC,CAAC;YACxH,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AAE/C,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,YAAA,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;YACpE,KAAK,EAAE,GAAG,IAAG;;gBACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,CAAA,EAAE;;AAExD,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxD,iBAAA;AAAM,qBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;;AAEpF,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACvB,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,MAAM,EAAE,eAAe;AACvB,wBAAA,KAAK,EAAE,wFAAwF;AAClG,qBAAA,CAAC,CAAC;AACN,iBAAA;qBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE;oBACnE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/F,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9B,iBAAA;AAAM,qBAAA;oBACH,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC7F,iBAAA;gBACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtC;AACJ,SAAA,CAAC,CAAC;KACN;AAED,IAAA,QAAQ,CAAC,MAAc,EAAA;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;YAAE,OAAO;AACjE,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,YAAA,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;YACrE,KAAK,EAAE,GAAG,IAAG;;gBACT,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAClC,gBAAA,IAAI,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,EAAE;AAC3B,oBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACzD,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzE,iBAAA;aACJ;AACJ,SAAA,CAAC,CAAC;KACN;;AAGD,IAAA,aAAa,CAAC,MAAc,EAAA;;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO;QACjC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,IAAI,EAAE,CAAC,IAAG;gBACN,MAAM,SAAS,GAAsB,KAAK,CAAC,OAAO,CAAC,CAAC,KAAA,IAAA,IAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;AAC1E,gBAAA,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA,CAAC,KAAD,IAAA,IAAA,CAAC,uBAAD,CAAC,CAAE,EAAE,MAAK,MAAM,CAAC,CAAC;AAC5F,gBAAA,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,aAAa,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,KAAK,CAAA,EAAA,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,eAAe,GAAG,iDAAiD,GAAG,IAAI,EAAA,CAAA,CAAG,CAAC;AAC9J,oBAAA,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACjH,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACvB,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,KAAK,EAAE,6GAA6G;AACvH,qBAAA,CAAC,CAAC;AACN,iBAAA;aACJ;YACD,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtG,SAAA,CAAC,CAAC;KACN;IAED,UAAU,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;KAC3C;;;AAKO,IAAA,eAAe,CAAC,MAAc,EAAE,QAAyB,EAAE,IAAqB,EAAE,WAAoB,EAAA;;QAC1G,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AAEvC,QAAA,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACvB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,QAAQ,KAAR,IAAA,IAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,QAAQ,CAAE,MAAM;gBACxD,KAAK,EAAE,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,sEAAsE;AAClG,aAAA,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAA,IAAI,KAAA,IAAA,IAAJ,IAAI,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAJ,IAAI,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,EAAE,CAAC,CAAC;AAClF,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;AAEvC,QAAA,IAAI,WAAW,IAAI,CAAA,KAAK,KAAL,IAAA,IAAA,KAAK,KAAL,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAK,CAAE,MAAM,MAAK,WAAW,EAAE;AAC9C,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC/C,SAAA;aAAM,IAAI,CAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,MAAM,MAAK,OAAO,EAAE;AAClC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;AACzD,SAAA;KACJ;;IAGO,eAAe,CAAC,QAAyB,EAAE,gBAAyB,EAAA;;AACxE,QAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,OAAO;QACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC;AACP,YAAA,QAAQ,EAAE,CAAA,EAAA,GAAA,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,QAAQ;YACnE,SAAS,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;YAC3F,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAA,QAAQ,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC/G,SAAA,CAAC,CAAC;QACH,IAAI,gBAAgB,IAAI,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,MAAK,YAAY,EAAE;YAC/D,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG,SAAA;KACJ;IAEO,OAAO,CAAC,MAAsB,EAAE,KAAqB,EAAA;AACzD,QAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5D;AAEO,IAAA,YAAY,CAAC,KAAoB,EAAA;QACrC,MAAM,KAAK,qBAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC;AACtC,QAAA,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;;YAE/C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU;AACnH,kBAAE,QAAQ;kBACT,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,CAAC,CAAE,EAAA,EAAA,QAAQ,EAAE,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAR,QAAQ,CAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAA,CAAE,CAAC;AACzE,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,KAAK,CAAC;KAChB;IAEO,aAAa,CAAC,EAAU,EAAE,OAA0B,EAAA;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,kCAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA,EAAA,EAAE,CAAC,EAAE,GAAQ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,CAAK,EAAA,OAAO,KAAE,EAAE,EAAA,CAAA,EAAA,CAAI,EAAE,CAAC,CAAC;KACtF;AAEO,IAAA,eAAe,CAAC,QAA4B,EAAA;;AAChD,QAAA,MAAM,OAAO,GAA6B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AACvE,QAAA,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,CAAC;AACtD,QAAA,OAAO,QAAQ,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,CAAA,EAAA,GAAA,QAAQ,CAAC,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,IAAI,MAAM,MAAM,CAAC;KACrF;AAEO,IAAA,gBAAgB,CAAC,KAAoB,EAAA;AACzC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC;AACP,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,kBAAkB,EAAE,KAAK;AACzB,YAAA,IAAI,EAAE,IAAI;YACV,KAAK;AACL,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA,CAAC,CAAC;KACN;IAEO,UAAU,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KACrC;AAEO,IAAA,KAAK,CAAC,OAAgC,EAAA;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAM,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAK,EAAA,OAAO,EAAG,CAAC;KAC5D;IAEO,WAAW,GAAA;QACf,OAAO,QAAQ,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACtC;AAEO,IAAA,UAAU,CAAC,GAAQ,EAAA;AACvB,QAAA,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ;AAAE,YAAA,OAAO,GAAG,CAAC;QACnH,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,qDAAqD,CAAC,CAAC;KAC5F;IAEO,SAAS,CAAC,IAAsB,EAAE,QAAgB,EAAA;AACtD,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KACxE;;6GArWQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAQ,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cADF,MAAM,EAAA,CAAA,CAAA;4FACnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;AC/ClC;;;;;;;;;AASG;AAgBH,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAE5C,SAAU,YAAY,CAAC,GAAW,EAAA;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;AACjC,IAAA,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;AAAE,QAAA,OAAO,IAAI,CAAC;IAC/C,IAAI;AACA,QAAA,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACzB,QAAA,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AAC1D,KAAA;IAAC,OAAM,EAAA,EAAA;AACJ,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACL,CAAC;AAED,MAAM,MAAM,GAAG,uIAAuI,CAAC;AAEjJ,SAAU,WAAW,CAAC,KAAa,EAAA;IACrC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAA,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;AACrB,IAAA,IAAI,CAAyB,CAAC;AAC9B,IAAA,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE;AACtC,QAAA,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACjF,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,QAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACb,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACb,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnC,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChF,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACb,YAAA,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;AACjC,YAAA,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9E,SAAA;AAAM,aAAA;YACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClD,SAAA;QACD,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;AACnC,KAAA;AACD,IAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM;AAAE,QAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7E,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,aAAa,CAAC,KAAa,EAAA;AACvC,IAAA,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,SAAS,GAAmB,EAAE,CAAC;IACnC,IAAI,KAAK,GAAqE,IAAI,CAAC;IAEnF,MAAM,eAAe,GAAG,MAAK;QACzB,IAAI,SAAS,CAAC,MAAM;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACjE,SAAS,GAAG,EAAE,CAAC;AACnB,KAAC,CAAC;IACF,MAAM,WAAW,GAAG,MAAK;AACrB,QAAA,IAAI,KAAK;AAAE,YAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACnI,KAAK,GAAG,IAAI,CAAC;AACjB,KAAC,CAAC;AAEF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvB,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,WAAW,EAAE,CAAC;YACd,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,YAAA,CAAC,EAAE,CAAC;AACJ,YAAA,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjF,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjD,SAAS;AACZ,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE;AACf,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,WAAW,EAAE,CAAC;YACd,SAAS;AACZ,SAAA;QAED,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,MAAM,EAAE;AACR,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzD,SAAS;AACZ,SAAA;QAED,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,EAAE,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,EAAE,IAAI,EAAE,EAAE;AACV,YAAA,eAAe,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE;AAC5B,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,KAAK,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAClE,aAAA;YACD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,SAAS;AACZ,SAAA;QAED,IAAI,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;AAElC,YAAA,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9F,SAAS;AACZ,SAAA;AAED,QAAA,WAAW,EAAE,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACtC,KAAA;AACD,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,OAAO,MAAM,CAAC;AAClB;;ACrIA;;;AAGG;MAOU,wBAAwB,CAAA;AANrC,IAAA,WAAA,GAAA;AAOa,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AAEb,QAAA,IAAM,CAAA,MAAA,GAAgB,EAAE,CAAC;KAKnC;IAHG,WAAW,GAAA;QACP,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;KACjD;;sHAPQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,0GCbrC,ujDA+BA,EAAA,MAAA,EAAA,CAAA,gnBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDlBa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,ujDAAA,EAAA,MAAA,EAAA,CAAA,gnBAAA,CAAA,EAAA,CAAA;8BAGtC,KAAK,EAAA,CAAA;sBAAb,KAAK;;;AEGV;AACA,MAAM,YAAY,GAAG,EAAE,CAAC;MAQX,4BAA4B,CAAA;IAuBrC,WAAoB,CAAA,GAAsB,EAAE,IAAY,EAAA;AAApC,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AArBjC,QAAA,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAC/B,QAAA,IAAK,CAAA,KAAA,GAA+B,EAAE,CAAC;AACvC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;AACzB,QAAA,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AACtB,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAEjB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAU,CAAC;AAI1C,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AACb,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;AAClB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;;QAKzB,IAAI,CAAC,iBAAiB,CAAC,MAAM,UAAU,CAAC,MAAK;;YACzC,MAAM,EAAE,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;AACpC,YAAA,IAAI,CAAC,EAAE;gBAAE,OAAO;YAChB,MAAM,OAAO,GAAG,MAAK;AACjB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AACxC,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU;oBAAE,OAAO;AACtC,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,gBAAA,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK;AAAE,oBAAA,IAAI,CAAC,GAAG,CAAC,MAAK;AACnC,wBAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,wBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,qBAAC,CAAC,CAAC;AACP,aAAC,CAAC;AACF,YAAA,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1D,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACxE,CAAC,CAAC,CAAC;KACP;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;;AAC9B,QAAA,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9E,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAChD,QAAA,MAAM,QAAQ,GAAmB,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,WAAW,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,KAAI,EAAE,CAAC;AAC3E,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;AACnC,QAAA,MAAM,eAAe,GAAG,gBAAgB,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,OAAK,CAAA,EAAA,GAAA,KAAK,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,EAAE,CAAA,CAAC,CAAC;QACpH,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;QAEvC,MAAM,eAAe,GAAG,gBAAgB,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,KAAK,MAAK,SAAS,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE1G,QAAA,IAAI,eAAe,IAAI,eAAe,IAAI,IAAI,CAAC,UAAU,EAAE;AACvD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC7B,SAAA;aAAM,IAAI,gBAAgB,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE;;AAE3D,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACrB,SAAA;KACJ;IAED,kBAAkB,GAAA;QACd,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;KAC1B;IAED,WAAW,GAAA;;AACP,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAC;KAC1B;IAED,UAAU,CAAC,KAAK,GAAG,IAAI,EAAA;;QACnB,MAAM,EAAE,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,EAAE;YAAE,OAAO;AAChB,QAAA,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,WAAW,KAAI,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,MAAG,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAAA,kCAAkC,CAAE,CAAA,OAAO,CAAA,CAAC;QACjH,IAAI,KAAK,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE;AAClC,YAAA,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7D,SAAA;AAAM,aAAA;AACH,YAAA,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC3B,SAAA;KACJ;AAED,IAAA,MAAM,CAAC,QAAsB,EAAA;;QACzB,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,0CAAG,QAAQ,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,IAAI,GAAG,IAAI,CAAC;KACzE;;AAGD,IAAA,IAAI,gBAAgB,GAAA;AAChB,QAAA,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACzF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChF;IAED,aAAa,CAAC,CAAS,EAAE,CAAe,EAAA;QACpC,OAAO,CAAC,CAAC,EAAE,CAAC;KACf;IAED,SAAS,CAAC,CAAS,EAAE,CAAW,EAAA;QAC5B,OAAO,CAAC,CAAC,EAAE,CAAC;KACf;IAEO,kBAAkB,GAAA;AACtB,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACnC,QAAA,OAAO,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,YAAY,IAAI,YAAY,CAAC;KAC3E;;0HA7GQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,yfC1BzC,4gIAsEA,EAAA,MAAA,EAAA,CAAA,qlIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,8BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAX,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FD5Ca,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBANxC,SAAS;+BACI,uBAAuB,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4gIAAA,EAAA,MAAA,EAAA,CAAA,qlIAAA,CAAA,EAAA,CAAA;6HAItC,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAEI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBAE8B,IAAI,EAAA,CAAA;sBAAxC,SAAS;gBAAC,IAAA,EAAA,CAAA,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;MEf1B,yBAAyB,CAAA;IAuBlC,WACW,CAAA,IAAqB,EACrB,SAA6B,EAC5B,OAA2B,EAC3B,GAAsB,EACG,MAAyB,EAAA;AAJnD,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAiB;AACrB,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;AAC5B,QAAA,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;AAC3B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;;AAxBzB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAKpB,QAAA,IAAM,CAAA,MAAA,GAAG,IAAI,CAAC;AACd,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;AAC/B,QAAA,IAAK,CAAA,KAAA,GAA+B,EAAE,CAAC;AACvC,QAAA,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;AACzB,QAAA,IAAW,CAAA,WAAA,GAAa,EAAE,CAAC;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;;AAGtB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAEpB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAU9B,QAAA,IAAI,CAAC,SAAS,GAAG,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,SAAS,KAAI,kBAAkB,CAAC;KAC5D;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAG;AAC9C,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SAC3B,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAG;AAClD,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SAC3B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;KAC3B;IAED,eAAe,GAAA;;AAEX,QAAA,UAAU,CAAC,MAAM,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,MAAA,IAAI,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA,EAAA,EAAE,EAAE,CAAC,CAAC;KAChD;IAED,WAAW,GAAA;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KAC3B;AAGD,IAAA,QAAQ,CAAC,MAAqB,EAAA;QAC1B,IAAI,MAAM,CAAC,gBAAgB;YAAE,OAAO;QACpC,IAAI,IAAI,CAAC,cAAc,EAAE;AACrB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,OAAO;AACV,SAAA;QACD,MAAM,CAAC,cAAc,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;KAC3B;AAED,IAAA,IAAI,UAAU,GAAA;;QACV,OAAO,IAAI,CAAC,MAAM,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,CAAA,IAAI,EAAC,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,CAAA,CAAC;KACpF;AAED,IAAA,IAAI,cAAc,GAAA;;QACd,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,6BAA6B,CAAC;AACvD,QAAA,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,0CAAE,kBAAkB;AAAE,YAAA,OAAO,wBAAwB,CAAC;AACrE,QAAA,OAAO,IAAI,CAAC;KACf;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;KAC3B;AAED,IAAA,MAAM,CAAC,KAAa,EAAA;;QAChB,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO;QAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACzB,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC/B,SAAA;KACJ;IAED,QAAQ,GAAA;;QACJ,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC;AACzC,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACzD;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtB;IAED,YAAY,GAAA;AACR,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AACzC,YAAA,UAAU,CAAC,MAAK,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,EAAE,CAAA,EAAA,CAAC,CAAC;AAC5C,SAAA;KACJ;IAED,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;QAC3C,IAAI,IAAI,CAAC,cAAc;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxD;AAED,IAAA,aAAa,CAAC,EAAU,EAAA;AACpB,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAC5B,QAAA,UAAU,CAAC,MAAK,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,0CAAE,KAAK,EAAE,CAAA,EAAA,CAAC,CAAC;KAC5C;IAED,aAAa,CAAC,CAAS,EAAE,CAAiB,EAAA;QACtC,OAAO,CAAC,CAAC,EAAE,CAAC;KACf;IAEO,gBAAgB,GAAA;;QACpB,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACpG,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC;KAC7C;AAEO,IAAA,QAAQ,CAAC,KAAa,EAAA;;AAE1B,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AACxB,QAAA,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SAC3B,EAAE,EAAE,CAAC,CAAC;KACV;;AA5IQ,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,6IA4BV,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GA5B1B,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKvB,4BAA4B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChC3C,orMAkHA,EAAA,MAAA,EAAA,CAAA,4sJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAO,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,4BAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,IAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDvFa,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACI,oBAAoB,EAAA,eAAA,EAGb,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,orMAAA,EAAA,MAAA,EAAA,CAAA,4sJAAA,CAAA,EAAA,CAAA;;;8BA8B1C,QAAQ;;8BAAI,MAAM;+BAAC,WAAW,CAAA;;yBAzB1B,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAEmC,QAAQ,EAAA,CAAA;sBAAhD,SAAS;uBAAC,4BAA4B,CAAA;gBAsDvC,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEhE9C,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC;;;;;;;;;;;;;;AAcG;MAOU,0BAA0B,CAAA;IAsBnC,WACW,CAAA,SAA6B,EAC5B,GAAsB,EACtB,IAAY,EACa,MAAyB,EACtC,MAAc,EAAA;AAJ3B,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;AAC5B,QAAA,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;AACtB,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;AAEA,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;;AAxB5B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAc,CAAC;;AAKnD,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;AAEhB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;;AAElB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAIlB,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAC1B,QAAA,IAAK,CAAA,KAAA,GAA0B,IAAI,CAAC;AAEpC,QAAA,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;AASrB,QAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AACrC,QAAA,MAAM,SAAS,GAAG,CAAA,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,sBAAsB,KAAI,uBAAuB,CAAC;QAC5E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,EAAE;AACpD,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA,YAAA,EAAe,SAAS,GAAG,IAAI,CAAA,GAAA,CAAK,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACvC,SAAA;KACJ;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;AAElD,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAG;AACnD,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;SAC3B,CAAC,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;QAGnF,IAAI,IAAI,CAAC,MAAM,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC1F,gBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;oBAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;aAC9E,CAAC,CAAC,CAAC;AACP,SAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;AACZ,YAAA,MAAM,OAAO,GAAG,CAAC,CAAsB,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAK;AAC3D,gBAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC;AAC3B,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/G,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,mBAAmB;kBAC5C,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC;kBACjD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7C,SAAA;KACJ;IAED,WAAW,GAAA;;AACP,QAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACxB,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,eAAe,EAAE,CAAC;KAC5C;IAEO,KAAK,GAAA;AACT,QAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;;YAEzB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;AAC5D,SAAA;;QAED,qBAAqB,CAAC,MAAK;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACN;IAEO,MAAM,GAAA;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,QAAA,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,MAAK;YACnC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC7B,SAAC,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAAC,CAAC;KACrD;IAEO,eAAe,GAAA;;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAC,SAAS,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,CAAC,CAAC;AAC/F,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AACzB,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KAC5B;IAEO,WAAW,GAAA;AACf,QAAA,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;KAChI;;AA7GQ,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,wGA0BX,WAAW,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,IAAA,CAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1B1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,4NC5CvC,s8BAuBA,EAAA,MAAA,EAAA,CAAA,8vCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,yBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;4FDqBa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACI,qBAAqB,EAAA,eAAA,EAGd,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s8BAAA,EAAA,MAAA,EAAA,CAAA,8vCAAA,CAAA,EAAA,CAAA;;;8BA4B1C,QAAQ;;8BAAI,MAAM;+BAAC,WAAW,CAAA;;8BAC9B,QAAQ;;yBAxBH,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBAEiC,OAAO,EAAA,CAAA;sBAA9C,SAAS;gBAAC,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AEpC1C,MAAM,WAAW,GAAG;IAChB,0BAA0B;IAC1B,0BAA0B;IAC1B,yBAAyB;IACzB,4BAA4B;IAC5B,wBAAwB;IACxB,4BAA4B;IAC5B,8BAA8B;CACjC,CAAC;MAUW,iBAAiB,CAAA;;IAE1B,OAAO,OAAO,CAAC,MAAkB,EAAA;QAC7B,OAAO;AACH,YAAA,QAAQ,EAAE,iBAAiB;YAC3B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;SAC1D,CAAC;KACL;;+GAPQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAjB1B,0BAA0B;QAC1B,0BAA0B;QAC1B,yBAAyB;QACzB,4BAA4B;QAC5B,wBAAwB;QACxB,4BAA4B;AAC5B,QAAA,8BAA8B,aAM1B,YAAY;AACZ,QAAA,YAAY,aAbhB,0BAA0B;QAC1B,0BAA0B;QAC1B,yBAAyB;QACzB,4BAA4B;QAC5B,wBAAwB;QACxB,4BAA4B;QAC5B,8BAA8B,CAAA,EAAA,CAAA,CAAA;AAWrB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YALtB,YAAY;QACZ,YAAY,CAAA,EAAA,CAAA,CAAA;4FAIP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,WAAW;AACzB,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE,WAAW;iBACvB,CAAA;;;MCFY,cAAc,CAAA;;4GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAhBnB,iBAAiB;AACjB,QAAA,kBAAkB,aAGlB,YAAY;QACZ,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,aAAa;AACb,QAAA,iBAAiB,aAGjB,iBAAiB;QACjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGZ,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAZnB,YAAY;QACZ,mBAAmB;QACnB,YAAY;QACZ,eAAe;QACf,aAAa;AACb,QAAA,iBAAiB,EAIjB,iBAAiB,CAAA,EAAA,CAAA,CAAA;4FAGZ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,iBAAiB;wBACjB,kBAAkB;AACrB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,mBAAmB;wBACnB,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,iBAAiB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,iBAAiB;AACpB,qBAAA;iBACJ,CAAA;;;AC3BD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"uitec-ng-header.mjs","sources":["../../../projects/ui-header/src/lib/ui-header.service.ts","../../../projects/ui-header/src/lib/my-account/my-account.component.ts","../../../projects/ui-header/src/lib/my-account/my-account.component.html","../../../projects/ui-header/src/lib/ui-header.component.ts","../../../projects/ui-header/src/lib/ui-header.component.html","../../../projects/ui-header/src/lib/ui-header.module.ts","../../../projects/ui-header/src/public-api.ts","../../../projects/ui-header/src/uitec-ng-header.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UiHeaderService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { AuthAcesso, BaseUrlService, UserAuthDTO, UsuarioMenuDTO } from 'uitec-ng-core';\r\nimport { AuthService } from 'uitec-ng-core';\r\n\r\n@Component({\r\n selector: 'my-account',\r\n templateUrl: './my-account.component.html',\r\n styleUrls: ['./my-account.component.scss']\r\n})\r\nexport class MyAccountComponent implements OnInit {\r\n\r\n @Input() menus: UsuarioMenuDTO[];\r\n\r\n @Output() onNavigate = new EventEmitter<UsuarioMenuDTO>();\r\n\r\n public userObs: UserAuthDTO;\r\n public accessObs: AuthAcesso;\r\n\r\n constructor(\r\n public authService: AuthService,\r\n public urlService: BaseUrlService\r\n ) {\r\n this.userObs = this.authService.currentUserValue;\r\n this.accessObs = this.authService.currentAccessValue;\r\n\r\n this.authService.currentUser.subscribe((data) => {\r\n this.userObs = data;\r\n });\r\n\r\n this.authService.currentAccess.subscribe((data) => {\r\n this.accessObs = data;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n logout() {\r\n this.authService.logout();\r\n }\r\n\r\n clickMenu(menu: UsuarioMenuDTO) {\r\n this.onNavigate.emit(menu);\r\n }\r\n}\r\n","<ui-user-top [urlImage]=\"urlService.imagemUsuario({model: userObs?.usuario})\" [usuario]=\"userObs?.usuario\"\r\n [acesso]=\"accessObs\"></ui-user-top>\r\n\r\n<ul class=\"profile-dropdown onhover-show-div\">\r\n <li *ngFor=\"let col of menus\">\r\n <a (click)=\"clickMenu(col)\">\r\n <ui-icon [icon]=\"col.ds_icone\" size=\"20\"></ui-icon>\r\n <span>{{col.no_funcionalidade}}</span>\r\n </a>\r\n </li>\r\n <li>\r\n <a href=\"javascript:void(0)\" (click)=\"logout()\" class=\"text-danger\">\r\n <ui-icon icon=\"login\" size=\"20\"></ui-icon>\r\n <span>Sair</span>\r\n </a>\r\n </li>\r\n</ul>\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Component, ContentChild, EventEmitter, HostListener, Inject, Input, OnChanges, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { AuthAcesso, AuthService, BaseUrlService, IframeService, LayoutService, UserAuthDTO, UsuarioMenuDTO } from 'uitec-ng-core';\r\n\r\n@Component({\r\n selector: 'ui-header',\r\n templateUrl: './ui-header.component.html',\r\n styleUrls: ['./ui-header.component.scss']\r\n})\r\nexport class UiHeaderComponent implements OnInit {\r\n\r\n @Input() collapseSidebar: boolean;\r\n @Input() fullScreen: boolean;\r\n @Input() headerBackdrop: string;\r\n @Input() isFree: boolean;\r\n @Input() menus: UsuarioMenuDTO[];\r\n @Input() sidebar: boolean = true;\r\n @Input() fullWidth: boolean = false;\r\n @Input() redirectHome: boolean = true;\r\n @Input() darkDefault: string = \"light\";\r\n\r\n @Output() collapseSidebarChange = new EventEmitter<boolean>();\r\n @Output() fullScreenChange = new EventEmitter<boolean>();\r\n @Output() headerBackdropChange = new EventEmitter<boolean>();\r\n @Output() onNavigate = new EventEmitter<UsuarioMenuDTO>();\r\n @Output() onUpgrade = new EventEmitter<void>();\r\n\r\n @ContentChild('left') left: TemplateRef<any>;\r\n @ContentChild('center') center: TemplateRef<any>;\r\n @ContentChild('right') right: TemplateRef<any>;\r\n\r\n public statuSidebar;\r\n public dark: boolean;\r\n public elem: any;\r\n public userObs: UserAuthDTO;\r\n public accessObs: AuthAcesso;\r\n\r\n constructor(\r\n public authService: AuthService,\r\n public urlService: BaseUrlService,\r\n public layoutService: LayoutService,\r\n public iframeService: IframeService,\r\n @Inject(DOCUMENT) private document: any\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.elem = document.documentElement;\r\n\r\n this.userObs = this.authService.currentUserValue;\r\n this.accessObs = this.authService.currentAccessValue;\r\n\r\n this.authService.currentUser.subscribe((data) => {\r\n this.userObs = data;\r\n });\r\n\r\n this.authService.currentAccess.subscribe((data) => {\r\n this.accessObs = data;\r\n });\r\n\r\n this.dark = localStorage.getItem('darkMode') == 'enabled';\r\n setTimeout(() => {\r\n this.layoutService.config.settings.layout_version = this.dark ? \"dark-only\" : this.darkDefault;\r\n });\r\n this.document.body.classList.add(this.dark ? \"dark-only\" : \"light\");\r\n this.document.documentElement.classList.add(this.dark ? \"dark-only\" : \"light\");\r\n\r\n this.addEventListenerOnIframe();\r\n this.buildAmbiente();\r\n }\r\n\r\n layoutToggle() {\r\n this.dark = !this.dark;\r\n localStorage.setItem('darkMode', this.dark ? 'enabled' : 'disabled');\r\n this.layoutService.config.settings.layout_version = this.dark ? \"dark-only\" : \"light\";\r\n const classColor = this.dark ? \"dark-only\" : \"light\";\r\n this.document.body.classList.remove('dark-only');\r\n this.document.body.classList.remove('light');\r\n this.document.body.classList.add(classColor);\r\n this.document.documentElement.classList.remove('dark-only');\r\n this.document.documentElement.classList.remove('light');\r\n this.document.documentElement.classList.add(classColor);\r\n\r\n this.updateIframeTheme();\r\n }\r\n\r\n updateIframeTheme() {\r\n const iframe = document.querySelector('iframe');\r\n if (!iframe || !iframe.contentWindow) return;\r\n\r\n const theme = this.dark ? \"dark-only\" : \"light\";\r\n const iframeSrc = iframe.getAttribute('src');\r\n\r\n let origin = \"*\"; // Usa \"*\" por padrão para evitar erro\r\n\r\n if (iframeSrc) {\r\n try {\r\n const url = new URL(iframeSrc, window.location.origin);\r\n origin = url.origin; // Extrai o domínio corretamente\r\n } catch (error) {\r\n console.error(\"Erro ao extrair o origin do iframe:\", error);\r\n }\r\n }\r\n\r\n iframe.contentWindow.postMessage({ theme }, origin);\r\n }\r\n\r\n addEventListenerOnIframe() {\r\n const frame = document.querySelector('iframe');\r\n if (!frame) {\r\n return;\r\n }\r\n\r\n frame.addEventListener('load', () => {\r\n this.updateIframeTheme();\r\n });\r\n }\r\n\r\n //recebe o valor inicial do collapseSidebar e grava no localstorage\r\n setStatusSideBar() {\r\n this.statuSidebar = this.collapseSidebar;\r\n localStorage.setItem('local', this.statuSidebar);\r\n }\r\n\r\n fecharBackdrop() {\r\n this.headerBackdrop = null;\r\n this.headerBackdropChange.emit(false);\r\n }\r\n\r\n sidebarToggle() {\r\n this.collapseSidebar = !this.collapseSidebar;\r\n this.setStatusSideBar();\r\n this.collapseSidebarChange.emit(this.collapseSidebar);\r\n }\r\n\r\n home() {\r\n if (!this.redirectHome) return;\r\n\r\n let menu = new UsuarioMenuDTO();\r\n menu.ds_rota = '/';\r\n menu.ds_tipo = 'link';\r\n this.onNavigate.emit(menu);\r\n }\r\n\r\n logout() {\r\n\r\n this.authService.logout();\r\n }\r\n\r\n clickMenu(menu: UsuarioMenuDTO) {\r\n this.onNavigate.emit(menu);\r\n }\r\n\r\n buildAmbiente() {\r\n let textContent = null;\r\n\r\n if (location.host.search('hom-') == 0) {\r\n textContent = 'Homolog';\r\n } else if (location.host.search('localhost') == 0) {\r\n textContent = 'Develop';\r\n }\r\n\r\n if (!textContent) return;\r\n\r\n const div = document.createElement('div');\r\n const span = document.createElement('span');\r\n div.className = `ambiente ambiente-${textContent.toLowerCase()}`;\r\n span.textContent = textContent;\r\n div.appendChild(span);\r\n document.body.appendChild(div);\r\n }\r\n\r\n toggleFullScreen() {\r\n this.fullScreen = !this.fullScreen;\r\n if (this.fullScreen) {\r\n if (this.elem.requestFullscreen) {\r\n this.elem.requestFullscreen();\r\n } else if (this.elem.mozRequestFullScreen) {\r\n /* Firefox */\r\n this.elem.mozRequestFullScreen();\r\n } else if (this.elem.webkitRequestFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n this.elem.webkitRequestFullscreen();\r\n } else if (this.elem.msRequestFullscreen) {\r\n /* IE/Edge */\r\n this.elem.msRequestFullscreen();\r\n }\r\n } else {\r\n if (!this.document.exitFullscreen) {\r\n this.document.exitFullscreen();\r\n } else if (this.document.mozCancelFullScreen) {\r\n /* Firefox */\r\n this.document.mozCancelFullScreen();\r\n } else if (this.document.webkitExitFullscreen) {\r\n /* Chrome, Safari and Opera */\r\n this.document.webkitExitFullscreen();\r\n } else if (this.document.msExitFullscreen) {\r\n /* IE/Edge */\r\n this.document.msExitFullscreen();\r\n }\r\n }\r\n }\r\n}\r\n","<!-- Page Header Backdrop -->\r\n<div *ngIf=\"headerBackdrop\" (click)=\"fecharBackdrop()\" class=\"header-backgrop\"></div>\r\n\r\n<!-- Page Header Start -->\r\n<div class=\"page-header\" [class.close_icon]=\"collapseSidebar\" [class.not-sidebar]=\"!sidebar\"\r\n [class.full-width]=\"fullWidth\">\r\n <div class=\"header-wrapper d-flex m-0 justify-content-between\">\r\n <div class=\"header-logo-wrapper col-auto d-lg-none px-0\">\r\n <div *ngIf=\"sidebar\" class=\"toggle-sidebar\" (click)=\"sidebarToggle()\">\r\n <ui-icon icon=\"menu\" class=\"status_toggle middle\"></ui-icon>\r\n </div>\r\n <a (click)=\"home()\" [class.cursor-pointer]=\"redirectHome\">\r\n <img class=\"img-fluid for-dark image-logo d-md-none\" src=\"assets/images/logo/logo_dark.png\" alt=\"\" />\r\n </a>\r\n </div>\r\n\r\n <div class=\"left-header horizontal-wrapper ps-0\">\r\n <ng-container [ngTemplateOutlet]=\"left\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nav-center\">\r\n <ng-container [ngTemplateOutlet]=\"center\"></ng-container>\r\n </div>\r\n\r\n <div class=\"nav-right p-0\">\r\n <ul class=\"nav-menus\">\r\n <!-- <li class=\"language-nav\" (click)=\"languageToggle()\">\r\n <header-languages></header-languages>\r\n </li> -->\r\n <ng-container *ngIf=\"isFree; then liUpgrade; else liEmpty\"></ng-container>\r\n\r\n <ng-template #liUpgrade>\r\n <li>\r\n <button\r\n class=\"d-flex align-items-center justify-content-center border-0 rounded-pill gap-2 b-color\"\r\n (click)=\"onUpgrade.emit()\">\r\n <img src=\"assets/images/coroa.svg\" class=\"w-auto\" alt=\"icone-coroa\" />\r\n Faça Upgrade\r\n </button>\r\n </li>\r\n </ng-template>\r\n <ng-template #liEmpty>\r\n <li></li>\r\n </ng-template>\r\n\r\n <ng-container [ngTemplateOutlet]=\"right\"></ng-container>\r\n\r\n <li>\r\n <div class=\"mode cursor-pointer\" (click)=\"layoutToggle()\">\r\n <ui-icon pTooltip=\"Ativar Modo Escuro\" tooltipPosition=\"bottom\" icon=\"dark_mode\" size=\"24\"\r\n *ngIf=\"!dark\"></ui-icon>\r\n <ui-icon pTooltip=\"Ativar Modo Claro\" tooltipPosition=\"bottom\" icon=\"sunny\" size=\"24\"\r\n *ngIf=\"dark\"></ui-icon>\r\n\r\n </div>\r\n </li>\r\n\r\n <li class=\"maximize\">\r\n <a pTooltip=\"Maximizar\" tooltipPosition=\"bottom\" class=\"text-dark cursor-pointer\"\r\n href=\"javascript:void(0)\" (click)=\"toggleFullScreen()\">\r\n <ui-icon icon=\"fullscreen\" size=\"24\"></ui-icon>\r\n </a>\r\n </li>\r\n <li class=\"profile-nav onhover-dropdown p-0 ps-2\">\r\n <my-account [menus]=\"menus\" (onNavigate)=\"onNavigate.emit($event)\"></my-account>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n<!-- Page Header Ends -->\r\n","import { NgModule } from '@angular/core';\r\nimport { UiHeaderComponent } from './ui-header.component';\r\nimport { UiIconModule } from 'uitec-ng-icon';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { UiUserTopModule } from 'uitec-ng-user-top';\r\nimport { MyAccountComponent } from './my-account/my-account.component';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\n@NgModule({\r\n declarations: [\r\n UiHeaderComponent,\r\n MyAccountComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n UiIconModule,\r\n UiUserTopModule,\r\n TooltipModule\r\n ],\r\n exports: [\r\n UiHeaderComponent,\r\n ]\r\n})\r\nexport class UiHeaderModule { }\r\n","/*\r\n * Public API Surface of ui-header\r\n */\r\n\r\nexport * from './lib/ui-header.service';\r\nexport * from './lib/ui-header.component';\r\nexport * from './lib/ui-header.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i5.MyAccountComponent"],"mappings":"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"}