@rededor/site-front-end-lib 20.0.0-alpha.2 → 20.0.0-alpha.3
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.
- package/core/index.d.ts +38 -1
- package/fesm2022/rededor-site-front-end-lib-components-header-components-side.mjs +2 -2
- package/fesm2022/rededor-site-front-end-lib-components-header-components-side.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-core.mjs +137 -4
- package/fesm2022/rededor-site-front-end-lib-core.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-cura-badges-cura-badge-pill.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-cura-cards-cura-card.mjs +2 -2
- package/fesm2022/rededor-site-front-end-lib-cura-cards-cura-card.mjs.map +1 -1
- package/fesm2022/rededor-site-front-end-lib-cura-forms-cura-label.mjs.map +1 -1
- package/package.json +1 -1
package/core/index.d.ts
CHANGED
|
@@ -43,6 +43,9 @@ interface LibConfig {
|
|
|
43
43
|
customPhoneModalCondition?: (element: ElementRef<any>) => boolean;
|
|
44
44
|
customInternalLinkNavigation?: (noBaseHref: string) => boolean;
|
|
45
45
|
forcePageReload?: boolean;
|
|
46
|
+
transferState?: {
|
|
47
|
+
includeHeaders?: string[];
|
|
48
|
+
};
|
|
46
49
|
}
|
|
47
50
|
declare const LIB_CONFIG: InjectionToken<LibConfig>;
|
|
48
51
|
|
|
@@ -140,6 +143,14 @@ declare const formatPhone: (phone: string) => string;
|
|
|
140
143
|
*/
|
|
141
144
|
declare function executeWithRetry<T extends any[]>(fn: (...args: T) => void, condition: () => boolean, maxTries?: number, delay?: number, currentTry?: number, ...args: T): void;
|
|
142
145
|
|
|
146
|
+
/**
|
|
147
|
+
* Função de hash djb2 para gerar chaves numéricas únicas
|
|
148
|
+
*
|
|
149
|
+
* @param str - String para gerar hash
|
|
150
|
+
* @returns Número hash único e positivo
|
|
151
|
+
*/
|
|
152
|
+
declare const djb2Hash: (str: string) => number;
|
|
153
|
+
|
|
143
154
|
declare class ErrorInterceptor implements HttpInterceptor {
|
|
144
155
|
private logService;
|
|
145
156
|
private siteBackendService;
|
|
@@ -156,6 +167,32 @@ declare class LogInterceptor implements HttpInterceptor {
|
|
|
156
167
|
static ɵprov: i0.ɵɵInjectableDeclaration<LogInterceptor>;
|
|
157
168
|
}
|
|
158
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Interceptor para resolver o problema de TransferState com urls diferentes
|
|
172
|
+
*
|
|
173
|
+
* Problema: O SiteBackendService usa urls diferentes no server (baseInternal) e no client (base), fazendo com que o TransferState nativo do Angular não funcione corretamente.
|
|
174
|
+
*
|
|
175
|
+
* Solução:
|
|
176
|
+
* - Server: Usa url interna, mas salva no TransferState baseado na url externa
|
|
177
|
+
* - Client: Verifica TransferState usando url externa antes de fazer alguma requisição
|
|
178
|
+
*
|
|
179
|
+
* Dessa forma é possivel fazer o uso do TransferState mesmo com urls diferentes ("baseInternal" no server e "base" no client).
|
|
180
|
+
*/
|
|
181
|
+
declare class TransferStateUrlInterceptor implements HttpInterceptor {
|
|
182
|
+
private platformId;
|
|
183
|
+
private transferState;
|
|
184
|
+
private libConfig;
|
|
185
|
+
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
186
|
+
/**
|
|
187
|
+
* Filtra headers da resposta baseado na configuração no LibConfig
|
|
188
|
+
*/
|
|
189
|
+
private filterHeaders;
|
|
190
|
+
private handleServerRequest;
|
|
191
|
+
private handleClientRequest;
|
|
192
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TransferStateUrlInterceptor, never>;
|
|
193
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TransferStateUrlInterceptor>;
|
|
194
|
+
}
|
|
195
|
+
|
|
159
196
|
interface BreadcrumbsItems {
|
|
160
197
|
label: string;
|
|
161
198
|
url?: string[];
|
|
@@ -1980,5 +2017,5 @@ declare class SiteBackendService {
|
|
|
1980
2017
|
static ɵprov: i0.ɵɵInjectableDeclaration<SiteBackendService>;
|
|
1981
2018
|
}
|
|
1982
2019
|
|
|
1983
|
-
export { AbstractModalComponent, AbstractModalDrawerComponent, EnumDoencaTaxonomy, EnumDoencaTaxonomyCat, ErrorInterceptor, ErrorService, FilterType, GeolocService, GeolocationPermissions, HttpClientService, LIB_CONFIG, LogInterceptor, LogService, MapBoxService, ModalDrawerService, ModalService, PhoneService, PrivacyToolsService, REQUEST, RESPONSE, RdsiteLinkDirective, RdsiteModalComponentStyle, RdsiteModalDrawerComponentStyle, RdsitePhoneModalDirective, SeoService, ServerResponseService, SiteBackendService, checkSafariAgent, executeWithRetry, formatPhone, getCircularReplacer, getSiteUrl, removeHtmlTags };
|
|
2020
|
+
export { AbstractModalComponent, AbstractModalDrawerComponent, EnumDoencaTaxonomy, EnumDoencaTaxonomyCat, ErrorInterceptor, ErrorService, FilterType, GeolocService, GeolocationPermissions, HttpClientService, LIB_CONFIG, LogInterceptor, LogService, MapBoxService, ModalDrawerService, ModalService, PhoneService, PrivacyToolsService, REQUEST, RESPONSE, RdsiteLinkDirective, RdsiteModalComponentStyle, RdsiteModalDrawerComponentStyle, RdsitePhoneModalDirective, SeoService, ServerResponseService, SiteBackendService, TransferStateUrlInterceptor, checkSafariAgent, djb2Hash, executeWithRetry, formatPhone, getCircularReplacer, getSiteUrl, removeHtmlTags };
|
|
1984
2021
|
export type { Address, AlgoliaConfig, AlgoliaMultipleResults, AlgoliaOption, AlgoliaResult, AlgoliaSearchParams, BreadcrumbsItems, BreadcrumbsJsonItem, CentroEstudosBackendMedico, CentroMedico, CheckboxGroupFilterConfig, CheckboxGroupFilterSection, Content, ContentBanner, CtaWrapper, CustomFilterConfig, CustomFilterSection, DoencaBackend, DoencaTaxonomy, EspecialidadeBackend, EspecialidadeGrupoBackend, ExameApiDados, ExameBackend, Excerpt, FeaturedMedia, FeaturedMediaDetails, FilterAction, FilterControl, FilterControlValue, FilterEvent, FilterOption, FilterPlanosConvenios, FilterPlanosConveniosChange, FilterPlanosConveniosCobertura, FilterSection, FilterSectionBase, FlexibleContent, Geolocation, Guid, HomeSlideshow, HttpCacheDirective, IServerResponseService, InputFilterConfig, InputFilterSection, LibConfig, Links, MapBoxGeocodingParams, MapBoxReverseGeocodingParams, MedicoCv, MenuCta, MenuDeUnidade, MenuDeUnidadesItem, MenuItem, MenuItemDestaque, MenuPorEstado, MenuSocialMedia, Meta, PrivacyToolsConfigOptions, PrivacyToolsCookieBanner, RDSLCobertura, RDSLCoberturaParams, RDSLConvenio, RDSLConvenioParams, RDSLEspecialidade, RDSLEspecialidadesParams, RDSLGrupoEspecialidade, RDSLGrupoEspecialidadeParams, RDSLPlano, RDSLPlanoParams, RDSLUnidade, RDSLUnidadesParams, RadioGroupFilterConfig, RadioGroupFilterSection, RadioGroupValue, RdsiteImage, RdslAlgoliaMultipleIndex, RdslAlgoliaSearchParams, RdslPostCategory, SectionNavigationConfig, SectionNavigationData, SelectFilterConfig, SelectFilterSection, SeoData, SeoUnidade, SocialMetaProperties, TaxonomiasDoencasList, Title, UnidadeCta, UnidadeEmergencia, UnidadeEspecialidadeProcurada, UnidadeEstiloWhatsapp, UnidadeExamesProcurados, UnidadeInfo, UnidadeNossasMarcas, UnidadeOptions, UnidadePhoneModal, UnifiedMenu, WpAuthorQueryParams, WpCategory, WpCategoryQueryParams, WpCommonQueryParams, WpCommonResponse, WpCustomPost, WpDoenca, WpEnvelopeResponse, WpGlobalQueryParams, WpGlobalResponse, WpHttpParams, WpPage, WpPageQueryParams, WpPaginationQueryParams, WpPost, WpPostQueryParams, WpPublishingQueryParams, WpPublishingResponse, WpUnidadeOnco, WpUnidadeSite, WpUnidadeSiteDetalhe, WpYoastResponse, YoastData, YoastHeadJson, YoastMeta };
|
|
@@ -56,11 +56,11 @@ class HeaderSideMenuComponent {
|
|
|
56
56
|
this.headerService.toggleShowSideMenu(false);
|
|
57
57
|
}
|
|
58
58
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: HeaderSideMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: HeaderSideMenuComponent, isStandalone: true, selector: "div[sl-hdr-side]", inputs: { sideMenuGroups: { classPropertyName: "sideMenuGroups", publicName: "sideMenuGroups", isSignal: true, isRequired: false, transformFunction: null }, sideMenuGeoloc: { classPropertyName: "sideMenuGeoloc", publicName: "sideMenuGeoloc", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"sl-hdr-side\" [ngClass]=\"{ active: headerService.showSideMenu() }\">\n <div class=\"side-menu\">\n <div class=\"side-menu-close\">\n <button type=\"button\" aria-label=\"Fechar menu lateral\" (click)=\"headerService.toggleShowSideMenu()\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#close'\"></use>\n </svg>\n </button>\n </div>\n\n @if (sideMenuGeoloc()) {\n <ng-container *ngTemplateOutlet=\"sideMenuGeoloc()\"></ng-container>\n }\n\n <nav>\n <ul class=\"side-menu-content\">\n @for (sideMenuGroup of sideMenuGroups(); track $index; let
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: HeaderSideMenuComponent, isStandalone: true, selector: "div[sl-hdr-side]", inputs: { sideMenuGroups: { classPropertyName: "sideMenuGroups", publicName: "sideMenuGroups", isSignal: true, isRequired: false, transformFunction: null }, sideMenuGeoloc: { classPropertyName: "sideMenuGeoloc", publicName: "sideMenuGeoloc", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"sl-hdr-side\" [ngClass]=\"{ active: headerService.showSideMenu() }\">\n <div class=\"side-menu\">\n <div class=\"side-menu-close\">\n <button type=\"button\" aria-label=\"Fechar menu lateral\" (click)=\"headerService.toggleShowSideMenu()\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#close'\"></use>\n </svg>\n </button>\n </div>\n\n @if (sideMenuGeoloc()) {\n <ng-container *ngTemplateOutlet=\"sideMenuGeoloc()\"></ng-container>\n }\n\n <nav>\n <ul class=\"side-menu-content\">\n @for (sideMenuGroup of sideMenuGroups(); track $index; let firstGroup = $first; let lastGroup = $last) {\n @for (sideMenuItem of sideMenuGroup; track sideMenuItem.title; let lastItem = $last) {\n <li\n sl-hdr-side-item\n [item]=\"sideMenuItem\"\n [fontSize]=\"firstGroup ? 16 : 14\"\n [altStyle]=\"lastGroup\"\n [ngStyle]=\"{ 'margin-bottom': lastItem ? '12px' : '0px' }\"\n ></li>\n }\n }\n </ul>\n </nav>\n </div>\n</div>\n<rdsite-overlay class=\"side-menu-overlay\" [ngClass]=\"{ active: headerService.showSideMenu() }\" (overlayClick)=\"overlayClick()\"></rdsite-overlay>\n", styles: [".sl-hdr-side{display:block;position:absolute;top:0;right:0;z-index:-1;overflow:hidden;pointer-events:none;transition:z-index .3s ease-out}.sl-hdr-side.active{z-index:3004;pointer-events:auto}.sl-hdr-side.active .side-menu{transform:translate(0)}.side-menu{transition:transform .3s ease-out;transform:translate(100%);width:320px;height:100vh;overflow:auto;background-color:var(--hdr-side-bg-color)}.side-menu-close{display:flex;align-items:center;justify-content:flex-end;padding:8px 20px}.side-menu-close button{padding:12px;background-color:transparent;cursor:pointer}.side-menu-close button svg{cursor:pointer;stroke:var(--hdr-side-color)}.side-menu-content{display:flex;flex-direction:column;padding:2px 30px 64px 32px}.side-menu-content ul{list-style-type:none}.side-menu-overlay{top:0;right:0;z-index:-1;width:100vw;height:100vh;transition:all .3s ease-out;opacity:0;background-color:var(--hdr-over-bg-color);pointer-events:none}.side-menu-overlay.active{z-index:999;opacity:.9;pointer-events:all}@media only screen and (min-width: 361px){.side-menu{width:340px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: OverlayComponent, selector: "rdsite-overlay", outputs: ["overlayClick"] }, { kind: "component", type: HeaderSideMenuItemComponent, selector: "li[sl-hdr-side-item]", inputs: ["item", "altStyle", "fontSize"], outputs: ["headerSideMenuItemClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
60
60
|
}
|
|
61
61
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: HeaderSideMenuComponent, decorators: [{
|
|
62
62
|
type: Component,
|
|
63
|
-
args: [{ selector: 'div[sl-hdr-side]', imports: [CommonModule, OverlayComponent, HeaderSideMenuItemComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"sl-hdr-side\" [ngClass]=\"{ active: headerService.showSideMenu() }\">\n <div class=\"side-menu\">\n <div class=\"side-menu-close\">\n <button type=\"button\" aria-label=\"Fechar menu lateral\" (click)=\"headerService.toggleShowSideMenu()\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#close'\"></use>\n </svg>\n </button>\n </div>\n\n @if (sideMenuGeoloc()) {\n <ng-container *ngTemplateOutlet=\"sideMenuGeoloc()\"></ng-container>\n }\n\n <nav>\n <ul class=\"side-menu-content\">\n @for (sideMenuGroup of sideMenuGroups(); track $index; let
|
|
63
|
+
args: [{ selector: 'div[sl-hdr-side]', imports: [CommonModule, OverlayComponent, HeaderSideMenuItemComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"sl-hdr-side\" [ngClass]=\"{ active: headerService.showSideMenu() }\">\n <div class=\"side-menu\">\n <div class=\"side-menu-close\">\n <button type=\"button\" aria-label=\"Fechar menu lateral\" (click)=\"headerService.toggleShowSideMenu()\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#close'\"></use>\n </svg>\n </button>\n </div>\n\n @if (sideMenuGeoloc()) {\n <ng-container *ngTemplateOutlet=\"sideMenuGeoloc()\"></ng-container>\n }\n\n <nav>\n <ul class=\"side-menu-content\">\n @for (sideMenuGroup of sideMenuGroups(); track $index; let firstGroup = $first; let lastGroup = $last) {\n @for (sideMenuItem of sideMenuGroup; track sideMenuItem.title; let lastItem = $last) {\n <li\n sl-hdr-side-item\n [item]=\"sideMenuItem\"\n [fontSize]=\"firstGroup ? 16 : 14\"\n [altStyle]=\"lastGroup\"\n [ngStyle]=\"{ 'margin-bottom': lastItem ? '12px' : '0px' }\"\n ></li>\n }\n }\n </ul>\n </nav>\n </div>\n</div>\n<rdsite-overlay class=\"side-menu-overlay\" [ngClass]=\"{ active: headerService.showSideMenu() }\" (overlayClick)=\"overlayClick()\"></rdsite-overlay>\n", styles: [".sl-hdr-side{display:block;position:absolute;top:0;right:0;z-index:-1;overflow:hidden;pointer-events:none;transition:z-index .3s ease-out}.sl-hdr-side.active{z-index:3004;pointer-events:auto}.sl-hdr-side.active .side-menu{transform:translate(0)}.side-menu{transition:transform .3s ease-out;transform:translate(100%);width:320px;height:100vh;overflow:auto;background-color:var(--hdr-side-bg-color)}.side-menu-close{display:flex;align-items:center;justify-content:flex-end;padding:8px 20px}.side-menu-close button{padding:12px;background-color:transparent;cursor:pointer}.side-menu-close button svg{cursor:pointer;stroke:var(--hdr-side-color)}.side-menu-content{display:flex;flex-direction:column;padding:2px 30px 64px 32px}.side-menu-content ul{list-style-type:none}.side-menu-overlay{top:0;right:0;z-index:-1;width:100vw;height:100vh;transition:all .3s ease-out;opacity:0;background-color:var(--hdr-over-bg-color);pointer-events:none}.side-menu-overlay.active{z-index:999;opacity:.9;pointer-events:all}@media only screen and (min-width: 361px){.side-menu{width:340px}}\n"] }]
|
|
64
64
|
}] });
|
|
65
65
|
|
|
66
66
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rededor-site-front-end-lib-components-header-components-side.mjs","sources":["../../../projects/site-front-end-lib/components/header/components/side/header-side-menu-item/header-side-menu-item.component.ts","../../../projects/site-front-end-lib/components/header/components/side/header-side-menu-item/header-side-menu-item.component.html","../../../projects/site-front-end-lib/components/header/components/side/header-side-menu/header-side-menu.component.ts","../../../projects/site-front-end-lib/components/header/components/side/header-side-menu/header-side-menu.component.html","../../../projects/site-front-end-lib/components/header/components/side/rededor-site-front-end-lib-components-header-components-side.ts"],"sourcesContent":["import { Component, computed, HostBinding, inject, input, InputSignal, output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderService } from '@rededor/site-front-end-lib/components/header/services';\nimport { RdsiteLinkDirective, MenuItem } from '@rededor/site-front-end-lib/core';\nimport { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[sl-hdr-side-item]',\n imports: [CommonModule, RdsiteLinkDirective],\n encapsulation: ViewEncapsulation.None,\n templateUrl: './header-side-menu-item.component.html',\n styleUrl: './header-side-menu-item.component.scss',\n})\nexport class HeaderSideMenuItemComponent {\n private curaApiService = inject(CuraApiService);\n headerService = inject(HeaderService);\n\n item = input.required<MenuItem>();\n altStyle = input<boolean>(false);\n fontSize = input<number>(14);\n headerSideMenuItemClick = output<Event>();\n\n public assetsPath = computed(() => this.curaApiService.localAssetsPath());\n\n @HostBinding() get style() {\n return {\n '--side-menu-item-font-size': `${this.fontSize()}px`,\n };\n }\n\n overlayClick() {\n this.headerService.toggleShowSideMenu(false);\n }\n\n toggleList(event: Event, sideMenuItem: InputSignal<MenuItem>, canCloseSideMenu: boolean) {\n event.stopPropagation();\n sideMenuItem().active = !sideMenuItem().active;\n if (canCloseSideMenu) return this.headerService.toggleShowSideMenu(false);\n }\n\n headerSideMenuItemClicked(event: Event) {\n this.headerSideMenuItemClick.emit(event);\n }\n}\n","@if (item()) {\n <div class=\"sl-hdr-side-item\" [ngClass]=\"{ active: item().active, alt: altStyle() }\" (click)=\"toggleList($event, item, false)\">\n <a [href]=\"item().url\" rdsitelink (click)=\"toggleList($event, item, !item().children?.length || !!item().url); headerSideMenuItemClicked($event)\">\n <span>{{ item().title }}</span>\n @if (!item().children?.length) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#right'\"></use>\n </svg>\n }\n </a>\n\n @if (item().children?.length) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#' + (item().active ? 'up' : 'down')\"></use>\n </svg>\n }\n </div>\n\n @if (item().children?.length) {\n <ul class=\"sl-hdr-side-item-list\" [ngClass]=\"{ active: item().active }\">\n @for (child of item().children; track child.title) {\n <li sl-hdr-side-item [item]=\"child\" [fontSize]=\"fontSize()\" [altStyle]=\"altStyle()\" (headerSideMenuItemClick)=\"headerSideMenuItemClicked($event)\"></li>\n }\n </ul>\n }\n}\n","import { Component, computed, inject, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderService } from '@rededor/site-front-end-lib/components/header/services';\nimport { HeaderSideMenuItemComponent } from '../header-side-menu-item/header-side-menu-item.component';\nimport { MenuItem } from '@rededor/site-front-end-lib/core';\nimport { OverlayComponent } from '@rededor/site-front-end-lib/components/overlay';\nimport { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[sl-hdr-side]',\n imports: [CommonModule, OverlayComponent, HeaderSideMenuItemComponent],\n encapsulation: ViewEncapsulation.None,\n templateUrl: './header-side-menu.component.html',\n styleUrl: './header-side-menu.component.scss',\n})\nexport class HeaderSideMenuComponent {\n headerService = inject(HeaderService);\n private curaApiService = inject(CuraApiService);\n\n sideMenuGroups = input<MenuItem[][]>([]);\n sideMenuGeoloc = input<TemplateRef<any> | null>(null);\n\n public assetsPath = computed(() => this.curaApiService.localAssetsPath());\n\n overlayClick() {\n this.headerService.toggleShowSideMenu(false);\n }\n}\n","<div class=\"sl-hdr-side\" [ngClass]=\"{ active: headerService.showSideMenu() }\">\n <div class=\"side-menu\">\n <div class=\"side-menu-close\">\n <button type=\"button\" aria-label=\"Fechar menu lateral\" (click)=\"headerService.toggleShowSideMenu()\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#close'\"></use>\n </svg>\n </button>\n </div>\n\n @if (sideMenuGeoloc()) {\n <ng-container *ngTemplateOutlet=\"sideMenuGeoloc()\"></ng-container>\n }\n\n <nav>\n <ul class=\"side-menu-content\">\n @for (sideMenuGroup of sideMenuGroups(); track $index; let
|
|
1
|
+
{"version":3,"file":"rededor-site-front-end-lib-components-header-components-side.mjs","sources":["../../../projects/site-front-end-lib/components/header/components/side/header-side-menu-item/header-side-menu-item.component.ts","../../../projects/site-front-end-lib/components/header/components/side/header-side-menu-item/header-side-menu-item.component.html","../../../projects/site-front-end-lib/components/header/components/side/header-side-menu/header-side-menu.component.ts","../../../projects/site-front-end-lib/components/header/components/side/header-side-menu/header-side-menu.component.html","../../../projects/site-front-end-lib/components/header/components/side/rededor-site-front-end-lib-components-header-components-side.ts"],"sourcesContent":["import { Component, computed, HostBinding, inject, input, InputSignal, output, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderService } from '@rededor/site-front-end-lib/components/header/services';\nimport { RdsiteLinkDirective, MenuItem } from '@rededor/site-front-end-lib/core';\nimport { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[sl-hdr-side-item]',\n imports: [CommonModule, RdsiteLinkDirective],\n encapsulation: ViewEncapsulation.None,\n templateUrl: './header-side-menu-item.component.html',\n styleUrl: './header-side-menu-item.component.scss',\n})\nexport class HeaderSideMenuItemComponent {\n private curaApiService = inject(CuraApiService);\n headerService = inject(HeaderService);\n\n item = input.required<MenuItem>();\n altStyle = input<boolean>(false);\n fontSize = input<number>(14);\n headerSideMenuItemClick = output<Event>();\n\n public assetsPath = computed(() => this.curaApiService.localAssetsPath());\n\n @HostBinding() get style() {\n return {\n '--side-menu-item-font-size': `${this.fontSize()}px`,\n };\n }\n\n overlayClick() {\n this.headerService.toggleShowSideMenu(false);\n }\n\n toggleList(event: Event, sideMenuItem: InputSignal<MenuItem>, canCloseSideMenu: boolean) {\n event.stopPropagation();\n sideMenuItem().active = !sideMenuItem().active;\n if (canCloseSideMenu) return this.headerService.toggleShowSideMenu(false);\n }\n\n headerSideMenuItemClicked(event: Event) {\n this.headerSideMenuItemClick.emit(event);\n }\n}\n","@if (item()) {\n <div class=\"sl-hdr-side-item\" [ngClass]=\"{ active: item().active, alt: altStyle() }\" (click)=\"toggleList($event, item, false)\">\n <a [href]=\"item().url\" rdsitelink (click)=\"toggleList($event, item, !item().children?.length || !!item().url); headerSideMenuItemClicked($event)\">\n <span>{{ item().title }}</span>\n @if (!item().children?.length) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#right'\"></use>\n </svg>\n }\n </a>\n\n @if (item().children?.length) {\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#' + (item().active ? 'up' : 'down')\"></use>\n </svg>\n }\n </div>\n\n @if (item().children?.length) {\n <ul class=\"sl-hdr-side-item-list\" [ngClass]=\"{ active: item().active }\">\n @for (child of item().children; track child.title) {\n <li sl-hdr-side-item [item]=\"child\" [fontSize]=\"fontSize()\" [altStyle]=\"altStyle()\" (headerSideMenuItemClick)=\"headerSideMenuItemClicked($event)\"></li>\n }\n </ul>\n }\n}\n","import { Component, computed, inject, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HeaderService } from '@rededor/site-front-end-lib/components/header/services';\nimport { HeaderSideMenuItemComponent } from '../header-side-menu-item/header-side-menu-item.component';\nimport { MenuItem } from '@rededor/site-front-end-lib/core';\nimport { OverlayComponent } from '@rededor/site-front-end-lib/components/overlay';\nimport { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'div[sl-hdr-side]',\n imports: [CommonModule, OverlayComponent, HeaderSideMenuItemComponent],\n encapsulation: ViewEncapsulation.None,\n templateUrl: './header-side-menu.component.html',\n styleUrl: './header-side-menu.component.scss',\n})\nexport class HeaderSideMenuComponent {\n headerService = inject(HeaderService);\n private curaApiService = inject(CuraApiService);\n\n sideMenuGroups = input<MenuItem[][]>([]);\n sideMenuGeoloc = input<TemplateRef<any> | null>(null);\n\n public assetsPath = computed(() => this.curaApiService.localAssetsPath());\n\n overlayClick() {\n this.headerService.toggleShowSideMenu(false);\n }\n}\n","<div class=\"sl-hdr-side\" [ngClass]=\"{ active: headerService.showSideMenu() }\">\n <div class=\"side-menu\">\n <div class=\"side-menu-close\">\n <button type=\"button\" aria-label=\"Fechar menu lateral\" (click)=\"headerService.toggleShowSideMenu()\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" preserveAspectRatio=\"xMidYMid meet\">\n <use [attr.xlink:href]=\"assetsPath() + '/icons/iconset-default.svg#close'\"></use>\n </svg>\n </button>\n </div>\n\n @if (sideMenuGeoloc()) {\n <ng-container *ngTemplateOutlet=\"sideMenuGeoloc()\"></ng-container>\n }\n\n <nav>\n <ul class=\"side-menu-content\">\n @for (sideMenuGroup of sideMenuGroups(); track $index; let firstGroup = $first; let lastGroup = $last) {\n @for (sideMenuItem of sideMenuGroup; track sideMenuItem.title; let lastItem = $last) {\n <li\n sl-hdr-side-item\n [item]=\"sideMenuItem\"\n [fontSize]=\"firstGroup ? 16 : 14\"\n [altStyle]=\"lastGroup\"\n [ngStyle]=\"{ 'margin-bottom': lastItem ? '12px' : '0px' }\"\n ></li>\n }\n }\n </ul>\n </nav>\n </div>\n</div>\n<rdsite-overlay class=\"side-menu-overlay\" [ngClass]=\"{ active: headerService.showSideMenu() }\" (overlayClick)=\"overlayClick()\"></rdsite-overlay>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;MAca,2BAA2B,CAAA;AARxC,IAAA,WAAA,GAAA;AASU,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAErC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAY;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;QAC5B,IAAA,CAAA,uBAAuB,GAAG,MAAM,EAAS;AAElC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,sDAAC;AAqB1E,IAAA;AAnBC,IAAA,IAAmB,KAAK,GAAA;QACtB,OAAO;AACL,YAAA,4BAA4B,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,EAAE,CAAA,EAAA,CAAI;SACrD;IACH;IAEA,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC9C;AAEA,IAAA,UAAU,CAAC,KAAY,EAAE,YAAmC,EAAE,gBAAyB,EAAA;QACrF,KAAK,CAAC,eAAe,EAAE;QACvB,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM;AAC9C,QAAA,IAAI,gBAAgB;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC3E;AAEA,IAAA,yBAAyB,CAAC,KAAY,EAAA;AACpC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1C;8GA7BW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,okBCdxC,0wCA0BA,EAAA,MAAA,EAAA,CAAA,ikDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDZa,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAL5B,YAAY,6HAAE,mBAAmB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,uBAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAKhC,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBARvC,SAAS;+BAEE,sBAAsB,EAAA,OAAA,EACvB,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAA,aAAA,EAC7B,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,0wCAAA,EAAA,MAAA,EAAA,CAAA,ikDAAA,CAAA,EAAA;8BAelB,KAAK,EAAA,CAAA;sBAAvB;;;METU,uBAAuB,CAAA;AARpC,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC7B,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAE/C,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAe,EAAE,0DAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAA0B,IAAI,0DAAC;AAE9C,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,sDAAC;AAK1E,IAAA;IAHC,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC;IAC9C;8GAXW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,8XChBpC,s2CAgCA,EAAA,MAAA,EAAA,CAAA,gjCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDrBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,sFAAE,2BAA2B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAK1D,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;+BAEE,kBAAkB,EAAA,OAAA,EACnB,CAAC,YAAY,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,EAAA,aAAA,EACvD,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,s2CAAA,EAAA,MAAA,EAAA,CAAA,gjCAAA,CAAA,EAAA;;;AEZvC;;AAEG;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, DOCUMENT, Injectable, signal, PLATFORM_ID, ElementRef, model, HostListener, Directive, input } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, DOCUMENT, Injectable, signal, PLATFORM_ID, ElementRef, model, HostListener, Directive, input, makeStateKey, TransferState } from '@angular/core';
|
|
3
3
|
import { isPlatformBrowser, Location, isPlatformServer } from '@angular/common';
|
|
4
4
|
import { Router } from '@angular/router';
|
|
5
5
|
import { DeviceDetectorService } from 'ngx-device-detector';
|
|
6
|
-
import { catchError, throwError, tap, BehaviorSubject, Observable, map } from 'rxjs';
|
|
7
|
-
import { HttpClient, HttpHeaders } from '@angular/common/http';
|
|
6
|
+
import { catchError, throwError, tap, of, BehaviorSubject, Observable, map } from 'rxjs';
|
|
7
|
+
import { HttpClient, HttpHeaders, HttpResponse } from '@angular/common/http';
|
|
8
8
|
import { differenceInMilliseconds } from 'date-fns';
|
|
9
9
|
import { v4 } from 'uuid';
|
|
10
10
|
import { Title, Meta } from '@angular/platform-browser';
|
|
@@ -429,6 +429,24 @@ function getCircularReplacer(customOptions) {
|
|
|
429
429
|
};
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
+
/**
|
|
433
|
+
* Função de hash djb2 para gerar chaves numéricas únicas
|
|
434
|
+
*
|
|
435
|
+
* @param str - String para gerar hash
|
|
436
|
+
* @returns Número hash único e positivo
|
|
437
|
+
*/
|
|
438
|
+
const djb2Hash = (str) => {
|
|
439
|
+
let hash = 5381; // Valor inicial do djb2 original
|
|
440
|
+
if (str.length === 0)
|
|
441
|
+
return hash;
|
|
442
|
+
for (let i = 0; i < str.length; i++) {
|
|
443
|
+
const char = str.charCodeAt(i);
|
|
444
|
+
hash = (hash << 5) + hash + char; // hash * 33 + char
|
|
445
|
+
hash = hash & hash; // Converte para 32bit integer
|
|
446
|
+
}
|
|
447
|
+
return Math.abs(hash);
|
|
448
|
+
};
|
|
449
|
+
|
|
432
450
|
class LogService {
|
|
433
451
|
constructor() {
|
|
434
452
|
this.libConfig = inject(LIB_CONFIG);
|
|
@@ -616,6 +634,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImpor
|
|
|
616
634
|
}]
|
|
617
635
|
}] });
|
|
618
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Cria uma chave numérica única para o cache
|
|
639
|
+
* Gera um hash baseado em método + URL + parâmetros
|
|
640
|
+
*/
|
|
641
|
+
function createCacheKey(req, url) {
|
|
642
|
+
const method = req.method;
|
|
643
|
+
const params = req.params.toString();
|
|
644
|
+
// Combina método, URL e parâmetros
|
|
645
|
+
const keyString = [method, url, params].filter((part) => part.length > 0).join('::');
|
|
646
|
+
// Gera hash numérico único
|
|
647
|
+
const hashNumber = djb2Hash(keyString);
|
|
648
|
+
return hashNumber.toString();
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Cria StateKey para o TransferState
|
|
652
|
+
*/
|
|
653
|
+
function getTransferStateKey(req, url) {
|
|
654
|
+
const cacheKey = createCacheKey(req, url);
|
|
655
|
+
return makeStateKey(cacheKey);
|
|
656
|
+
}
|
|
657
|
+
/**
|
|
658
|
+
* Interceptor para resolver o problema de TransferState com urls diferentes
|
|
659
|
+
*
|
|
660
|
+
* Problema: O SiteBackendService usa urls diferentes no server (baseInternal) e no client (base), fazendo com que o TransferState nativo do Angular não funcione corretamente.
|
|
661
|
+
*
|
|
662
|
+
* Solução:
|
|
663
|
+
* - Server: Usa url interna, mas salva no TransferState baseado na url externa
|
|
664
|
+
* - Client: Verifica TransferState usando url externa antes de fazer alguma requisição
|
|
665
|
+
*
|
|
666
|
+
* Dessa forma é possivel fazer o uso do TransferState mesmo com urls diferentes ("baseInternal" no server e "base" no client).
|
|
667
|
+
*/
|
|
668
|
+
class TransferStateUrlInterceptor {
|
|
669
|
+
constructor() {
|
|
670
|
+
this.platformId = inject(PLATFORM_ID);
|
|
671
|
+
this.transferState = inject(TransferState);
|
|
672
|
+
this.libConfig = inject(LIB_CONFIG);
|
|
673
|
+
}
|
|
674
|
+
intercept(req, next) {
|
|
675
|
+
if (isPlatformServer(this.platformId)) {
|
|
676
|
+
return this.handleServerRequest(req, next);
|
|
677
|
+
}
|
|
678
|
+
else if (isPlatformBrowser(this.platformId)) {
|
|
679
|
+
return this.handleClientRequest(req, next);
|
|
680
|
+
}
|
|
681
|
+
return next.handle(req);
|
|
682
|
+
}
|
|
683
|
+
/**
|
|
684
|
+
* Filtra headers da resposta baseado na configuração no LibConfig
|
|
685
|
+
*/
|
|
686
|
+
filterHeaders(responseHeaders) {
|
|
687
|
+
const includeHeaders = this.libConfig.transferState?.includeHeaders;
|
|
688
|
+
// Se não há configuração, não salva nenhum header
|
|
689
|
+
if (!includeHeaders || includeHeaders.length === 0) {
|
|
690
|
+
return {};
|
|
691
|
+
}
|
|
692
|
+
// Filtra apenas os headers configurados
|
|
693
|
+
const filteredHeaders = {};
|
|
694
|
+
includeHeaders.forEach(headerName => {
|
|
695
|
+
const headerValue = responseHeaders.get(headerName.toLowerCase());
|
|
696
|
+
if (headerValue) {
|
|
697
|
+
filteredHeaders[headerName.toLowerCase()] = headerValue;
|
|
698
|
+
}
|
|
699
|
+
});
|
|
700
|
+
return filteredHeaders;
|
|
701
|
+
}
|
|
702
|
+
handleServerRequest(req, next) {
|
|
703
|
+
const siteApi = this.libConfig.siteApi;
|
|
704
|
+
// Para urls internas
|
|
705
|
+
if (req.url.startsWith(siteApi.baseInternal)) {
|
|
706
|
+
const externalUrl = req.url.replace(siteApi.baseInternal, siteApi.base);
|
|
707
|
+
const stateKey = getTransferStateKey(req, externalUrl);
|
|
708
|
+
return next.handle(req).pipe(tap((event) => {
|
|
709
|
+
if (event instanceof HttpResponse) {
|
|
710
|
+
const filteredHeaders = this.filterHeaders(event.headers);
|
|
711
|
+
// Salva no TransferState baseado na url externa
|
|
712
|
+
this.transferState.set(stateKey, {
|
|
713
|
+
body: event.body,
|
|
714
|
+
status: event.status,
|
|
715
|
+
statusText: event.statusText,
|
|
716
|
+
headers: filteredHeaders,
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
}));
|
|
720
|
+
}
|
|
721
|
+
return next.handle(req);
|
|
722
|
+
}
|
|
723
|
+
handleClientRequest(req, next) {
|
|
724
|
+
const siteApi = this.libConfig.siteApi;
|
|
725
|
+
// Para urls externas
|
|
726
|
+
if (req.url.startsWith(siteApi.base)) {
|
|
727
|
+
const stateKey = getTransferStateKey(req, req.url);
|
|
728
|
+
const cachedResponse = this.transferState.get(stateKey, null);
|
|
729
|
+
if (cachedResponse) {
|
|
730
|
+
this.transferState.remove(stateKey);
|
|
731
|
+
// Retorna resposta do TransferState
|
|
732
|
+
return of(new HttpResponse({
|
|
733
|
+
body: cachedResponse.body,
|
|
734
|
+
status: cachedResponse.status,
|
|
735
|
+
statusText: cachedResponse.statusText,
|
|
736
|
+
headers: cachedResponse.headers,
|
|
737
|
+
}));
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
return next.handle(req);
|
|
741
|
+
}
|
|
742
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TransferStateUrlInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
743
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TransferStateUrlInterceptor, providedIn: 'root' }); }
|
|
744
|
+
}
|
|
745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TransferStateUrlInterceptor, decorators: [{
|
|
746
|
+
type: Injectable,
|
|
747
|
+
args: [{
|
|
748
|
+
providedIn: 'root',
|
|
749
|
+
}]
|
|
750
|
+
}] });
|
|
751
|
+
|
|
619
752
|
var EnumDoencaTaxonomy;
|
|
620
753
|
(function (EnumDoencaTaxonomy) {
|
|
621
754
|
EnumDoencaTaxonomy["DOENCAS_CAT"] = "doencas_cat";
|
|
@@ -1596,5 +1729,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImpor
|
|
|
1596
1729
|
* Generated bundle index. Do not edit.
|
|
1597
1730
|
*/
|
|
1598
1731
|
|
|
1599
|
-
export { AbstractModalComponent, AbstractModalDrawerComponent, EnumDoencaTaxonomy, EnumDoencaTaxonomyCat, ErrorInterceptor, ErrorService, FilterType, GeolocService, GeolocationPermissions, HttpClientService, LIB_CONFIG, LogInterceptor, LogService, MapBoxService, ModalDrawerService, ModalService, PhoneService, PrivacyToolsService, REQUEST, RESPONSE, RdsiteLinkDirective, RdsiteModalComponentStyle, RdsiteModalDrawerComponentStyle, RdsitePhoneModalDirective, SeoService, ServerResponseService, SiteBackendService, checkSafariAgent, executeWithRetry, formatPhone, getCircularReplacer, getSiteUrl, removeHtmlTags };
|
|
1732
|
+
export { AbstractModalComponent, AbstractModalDrawerComponent, EnumDoencaTaxonomy, EnumDoencaTaxonomyCat, ErrorInterceptor, ErrorService, FilterType, GeolocService, GeolocationPermissions, HttpClientService, LIB_CONFIG, LogInterceptor, LogService, MapBoxService, ModalDrawerService, ModalService, PhoneService, PrivacyToolsService, REQUEST, RESPONSE, RdsiteLinkDirective, RdsiteModalComponentStyle, RdsiteModalDrawerComponentStyle, RdsitePhoneModalDirective, SeoService, ServerResponseService, SiteBackendService, TransferStateUrlInterceptor, checkSafariAgent, djb2Hash, executeWithRetry, formatPhone, getCircularReplacer, getSiteUrl, removeHtmlTags };
|
|
1600
1733
|
//# sourceMappingURL=rededor-site-front-end-lib-core.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rededor-site-front-end-lib-core.mjs","sources":["../../../projects/site-front-end-lib/core/tokens/LibConfig.ts","../../../projects/site-front-end-lib/core/tokens/express.tokens.ts","../../../projects/site-front-end-lib/core/services/phone/phone.service.ts","../../../projects/site-front-end-lib/core/helpers/executeWithRetry.func.ts","../../../projects/site-front-end-lib/core/services/modal/modal.service.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/formatPhone.func.ts","../../../projects/site-front-end-lib/core/directives/rdsite-phone-modal/rdsite-phone-modal.directive.ts","../../../projects/site-front-end-lib/core/directives/rdsite-link/rdsite-link.directive.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalDrawerComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/getSiteUrl.func.ts","../../../projects/site-front-end-lib/core/helpers/removeHtmlTags.func.ts","../../../projects/site-front-end-lib/core/helpers/check-safari-agent.func.ts","../../../projects/site-front-end-lib/core/helpers/getCircularReplacer.func.ts","../../../projects/site-front-end-lib/core/services/log/log.service.ts","../../../projects/site-front-end-lib/core/helpers/toQueryParams.func.ts","../../../projects/site-front-end-lib/core/services/http-client/http-client.service.ts","../../../projects/site-front-end-lib/core/services/site-back-end/site-back-end.service.ts","../../../projects/site-front-end-lib/core/interceptors/error.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/log.interceptor.ts","../../../projects/site-front-end-lib/core/models/doenca-taxonomy.model.ts","../../../projects/site-front-end-lib/core/models/filters/filter-sections.model.ts","../../../projects/site-front-end-lib/core/services/error/error.service.ts","../../../projects/site-front-end-lib/core/services/mapbox/mapbox.service.ts","../../../projects/site-front-end-lib/core/services/geoloc/geoloc.service.ts","../../../projects/site-front-end-lib/core/services/modal-drawer/modal-drawer.service.ts","../../../projects/site-front-end-lib/core/services/privacy-tools/privacy-tools.service.ts","../../../projects/site-front-end-lib/core/services/seo/seo.service.ts","../../../projects/site-front-end-lib/core/services/server-response/server-response.service.ts","../../../projects/site-front-end-lib/core/rededor-site-front-end-lib-core.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\r\n\r\nexport interface LibConfig {\r\n production: boolean;\r\n environmentName: string;\r\n siteProject: string;\r\n server: boolean;\r\n siteName: string;\r\n siteUrl: string;\r\n siteSufix?: string;\r\n client_id: string;\r\n xOriginApplication: string;\r\n searchApiEnv: string;\r\n fallbackImgSrc: string;\r\n\r\n // Cura iconset\r\n iconsetDefaultList: string[];\r\n\r\n // site-back-end (SNF)\r\n siteApi: {\r\n auth: {\r\n user: string;\r\n password: string;\r\n };\r\n base: string;\r\n baseInternal: string;\r\n recaptcha: string;\r\n centroEstudos: string;\r\n };\r\n\r\n // Algolia Search\r\n algoliaConfig: {\r\n id: string;\r\n key: string;\r\n };\r\n\r\n // Wordpress\r\n wpUrl: string;\r\n\r\n // SEO\r\n keywords: string;\r\n logoPath?: string;\r\n\r\n // Mapbox\r\n mapboxAccessToken: string;\r\n mapboxSSRAccessToken: string;\r\n\r\n // rdsitelink custom anchor adjustment\r\n customAnchorAdjustment?: (document: Document) => number;\r\n customPhoneModalCondition?: (element: ElementRef<any>) => boolean;\r\n customInternalLinkNavigation?: (noBaseHref: string) => boolean;\r\n\r\n // rdsitelink navigation behavior\r\n forcePageReload?: boolean;\r\n}\r\n\r\n// Configura a lib com informações especificas de cada projeto.\r\nexport const LIB_CONFIG = new InjectionToken<LibConfig>('libConfig');\r\n","import { InjectionToken } from '@angular/core';\r\nimport { Request, Response } from 'express';\r\n\r\nexport const REQUEST = new InjectionToken<Request>('REQUEST');\r\nexport const RESPONSE = new InjectionToken<Response>('RESPONSE');\r\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PhoneService {\r\n private document = inject<Document>(DOCUMENT);\r\n\r\n private telRegex = /tel:/;\r\n\r\n public phoneModalIsAllowed: boolean = true; // variavel utilizada para permitir/bloquear o modal de telefone\r\n\r\n /** Verifica se o 'href' é de telefone e se a janela está em tamanho desktop */\r\n public isPhoneModal(href: string) {\r\n const width = this.document.defaultView?.innerWidth ?? 0;\r\n const SMALL_BREAKPOINT = 718;\r\n return this.telRegex.test(href) && width > SMALL_BREAKPOINT;\r\n }\r\n}\r\n","/**\r\n * Executa uma função recursivamente até que uma condição seja atendida ou atinja o máximo de tentativas\r\n * @param fn - Função a ser executada quando a condição for atendida\r\n * @param condition - Função que retorna true quando a condição for satisfeita\r\n * @param maxTries - Número máximo de tentativas (padrão: 10)\r\n * @param delay - Delay entre tentativas em ms (padrão: 200)\r\n * @param currentTry - Contador interno de tentativas (padrão: 0)\r\n * @param args - Argumentos que serão passados para a função fn\r\n */\r\nexport function executeWithRetry<T extends any[]>(\r\n fn: (...args: T) => void,\r\n condition: () => boolean,\r\n maxTries: number = 10,\r\n delay: number = 200,\r\n currentTry: number = 0,\r\n ...args: T\r\n): void {\r\n if (!condition() && currentTry < maxTries) {\r\n setTimeout(() => {\r\n executeWithRetry(fn, condition, maxTries, delay, currentTry + 1, ...args);\r\n }, delay);\r\n } else {\r\n fn(...args);\r\n }\r\n}\r\n","import { Injectable, signal, TemplateRef } from '@angular/core';\r\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\r\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\r\n\r\nexport abstract class AbstractModalComponent {\r\n abstract id?: string;\r\n abstract modalTitle?: string | null;\r\n abstract modalHeader?: TemplateRef<any> | null;\r\n abstract modalContent: TemplateRef<any> | null;\r\n abstract modalContentContext: Record<string, any> | null;\r\n abstract modalActions?: TemplateRef<any> | null;\r\n abstract componentStyle?: any;\r\n abstract modal: HTMLDialogElement;\r\n abstract open(): void;\r\n abstract close(): void;\r\n abstract reset?(): void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalService {\r\n reference: AbstractModalComponent | null = null;\r\n defaultPhoneModal!: TemplateRef<any>;\r\n\r\n firstInteraction = signal(false);\r\n maxTries = 10;\r\n delay = 200;\r\n\r\n open() {\r\n this.firstInteraction.set(true);\r\n executeWithRetry(\r\n () => {\r\n this.reference?.open();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setReference(element: AbstractModalComponent) {\r\n this.reference = element;\r\n }\r\n\r\n setHeader(header: TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalHeader = header;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setTitle(title: string) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalTitle = title;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setContent(content: TemplateRef<any>, context: Record<string, any> = {}) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalContent = content;\r\n this.reference.modalContentContext = context;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setActions(actions: TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalActions = actions;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setStyle(style: RdsiteModalComponentStyle) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.componentStyle = style;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setDefaultPhoneModal(modal: TemplateRef<any>) {\r\n this.defaultPhoneModal = modal;\r\n }\r\n\r\n close() {\r\n executeWithRetry(\r\n () => this.reference?.close(),\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n}\r\n","export enum RdsiteModalComponentStyle {\r\n DEFAULT = 'default',\r\n ALERT = 'alert',\r\n LIGHT = 'light',\r\n DOCTORCARD = 'doctor-card',\r\n HOMESLIDE = 'home-slide',\r\n BASIC = 'basic',\r\n SHARING = 'sharing',\r\n FORMFALLBACK = 'form-fallback',\r\n FILTER = 'filter',\r\n FILTERDOENCAS = 'filter-doencas',\r\n}\r\n","export const formatPhone = (phone: string): string => {\r\n if (!phone) return '';\r\n\r\n const cleanPhone = phone.replace(/[^0-9]/gi, '');\r\n let formatedPhone = '';\r\n if (cleanPhone.length === 12) {\r\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 11) {\r\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 10) {\r\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{4})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 9) {\r\n formatedPhone = cleanPhone.replace(/(\\d{5})?(\\d{4})/, '$1-$2');\r\n } else if (cleanPhone.length === 8) {\r\n formatedPhone = cleanPhone.replace(/(\\d{4})?(\\d{4})/, '$1-$2');\r\n } else if (cleanPhone.length === 7) {\r\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{4})/, '$1-$2');\r\n } else {\r\n formatedPhone = cleanPhone;\r\n }\r\n return formatedPhone;\r\n};\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, inject, model, PLATFORM_ID, TemplateRef } from '@angular/core';\r\nimport { PhoneService } from '../../services/phone/phone.service';\r\nimport { ModalService } from '../../services/modal/modal.service';\r\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\r\nimport { formatPhone } from '../../helpers/formatPhone.func';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[rdsitephonemodal]',\r\n})\r\nexport class RdsitePhoneModalDirective {\r\n private modalService = inject(ModalService);\r\n private platformId = inject(PLATFORM_ID);\r\n private element = inject(ElementRef<Element>);\r\n private phoneService = inject(PhoneService);\r\n\r\n rdsitephonemodal = model<TemplateRef<HTMLElement> | null>(null);\r\n\r\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\r\n\r\n // Intercepta cliques em telefones e aplica comportamentos diferentes em tamanho desktop.\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event) {\r\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName) || !this.phoneService.phoneModalIsAllowed)\r\n return;\r\n\r\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\r\n if (this.phoneService.isPhoneModal(href)) {\r\n this.openPhoneModal(event, href);\r\n }\r\n }\r\n\r\n public openPhoneModal(event: Event, href: string) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.modalService.setContent(this.rdsitephonemodal() || this.modalService.defaultPhoneModal, { phone: formatPhone(href) });\r\n this.modalService.setStyle(RdsiteModalComponentStyle.DEFAULT);\r\n this.modalService.open();\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID, TemplateRef, DOCUMENT, input, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { PhoneService } from '../../services/phone/phone.service';\r\nimport { RdsitePhoneModalDirective } from '../rdsite-phone-modal/rdsite-phone-modal.directive';\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[rdsitelink]',\r\n providers: [RdsitePhoneModalDirective],\r\n})\r\nexport class RdsiteLinkDirective {\r\n private router = inject(Router);\r\n private platformId = inject(PLATFORM_ID);\r\n private document = inject(DOCUMENT);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private element = inject(ElementRef<any>);\r\n private phoneService = inject(PhoneService);\r\n private rdsitePhoneModalDirective = inject(RdsitePhoneModalDirective);\r\n private deviceDetectorService = inject(DeviceDetectorService);\r\n\r\n anchorAdjustment = input<number | null>(null);\r\n anchorExtraAdjustment = input<number | null>(null);\r\n phonemodal = input<TemplateRef<HTMLElement> | null>(null);\r\n\r\n private externalRegex = /^http:|https:|tel:|www\\.|mailto:/;\r\n private telRegex = /tel:/;\r\n private mailRegex = /mailto:/;\r\n private siteUrlList = ['rededorsaoluiz', 'rededorlabs'];\r\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event) {\r\n event.preventDefault();\r\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName)) return;\r\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\r\n if (!href) return;\r\n\r\n if (this.isPhone(href)) {\r\n this.phoneClicked({\r\n href,\r\n event,\r\n element: this.element,\r\n phonemodal: this.phonemodal(),\r\n });\r\n return;\r\n }\r\n\r\n const isMobile = this.deviceDetectorService.isMobile();\r\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\r\n\r\n if (this.isMail(href)) {\r\n const target = isMobile || deviceInfo.browser !== 'Chrome' ? '_self' : '_blank';\r\n window.open(href, target);\r\n return;\r\n }\r\n\r\n if (this.isExternalUrl(href)) {\r\n const target = this.isSiteUrl(href) ? '_self' : '_blank';\r\n window.open(href, target);\r\n return;\r\n }\r\n\r\n if (this.isAnchor(href)) {\r\n this.scrollToAnchor(href);\r\n return;\r\n }\r\n\r\n this.navigateTo(href);\r\n }\r\n\r\n private isPhone(href: string) {\r\n return this.telRegex.test(href);\r\n }\r\n\r\n private isMail(href: string) {\r\n return this.mailRegex.test(href);\r\n }\r\n\r\n private phoneClicked(value: { href: string; event: Event; element: ElementRef<any>; phonemodal: TemplateRef<HTMLElement> | null }) {\r\n const { href, event, element, phonemodal } = value;\r\n if (this.phoneService.isPhoneModal(href)) {\r\n this.setPhoneModal(element, phonemodal);\r\n this.rdsitePhoneModalDirective.openPhoneModal(event, href);\r\n } else {\r\n window.open(href, '_self');\r\n }\r\n }\r\n\r\n private setPhoneModal(element: ElementRef<any>, phonemodal: TemplateRef<HTMLElement> | null) {\r\n if (!this.phonemodal()) return;\r\n if (!this.libConfig?.customPhoneModalCondition) {\r\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\r\n return;\r\n }\r\n if (this.libConfig?.customPhoneModalCondition(element)) {\r\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\r\n }\r\n }\r\n\r\n private isExternalUrl(href: string) {\r\n return this.externalRegex.test(href);\r\n }\r\n\r\n private isSiteUrl(href: string) {\r\n const exception = '/paciente';\r\n return this.siteUrlList.find((url) => href.includes(url) && !href.includes(exception));\r\n }\r\n\r\n private isAnchor(href: string) {\r\n return href.startsWith('#');\r\n }\r\n\r\n private scrollToAnchor(href: string) {\r\n if (href === '#') return;\r\n if (isPlatformBrowser(this.platformId)) {\r\n const docElement = this.document.documentElement;\r\n let adjustment = 0;\r\n\r\n if (this.libConfig.customAnchorAdjustment) {\r\n adjustment = this.libConfig.customAnchorAdjustment(this.document);\r\n }\r\n\r\n if (this.anchorAdjustment()) {\r\n adjustment = this.anchorAdjustment()!;\r\n }\r\n\r\n if (this.anchorExtraAdjustment()) {\r\n adjustment += this.anchorExtraAdjustment()!;\r\n }\r\n\r\n const bodyTop = this.document?.body?.getBoundingClientRect()?.top ?? 0;\r\n const hrefTop = this.document?.querySelector<HTMLElement>(href)?.getBoundingClientRect()?.top ?? 0;\r\n const scrollTop = bodyTop * -1 + hrefTop - adjustment;\r\n docElement.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n }\r\n }\r\n\r\n private navigateTo(href: string) {\r\n const siteBasePath = this.libConfig.siteSufix ?? '';\r\n const siteBasePathNoSlash = siteBasePath.replace(/\\//g, '');\r\n let noBaseHref = href;\r\n if (href.startsWith(siteBasePathNoSlash)) {\r\n noBaseHref = href.replace(siteBasePathNoSlash, '');\r\n } else if (href.startsWith(siteBasePath)) {\r\n noBaseHref = href.replace(siteBasePath, '');\r\n }\r\n if (this.libConfig?.customInternalLinkNavigation && this.libConfig.customInternalLinkNavigation(noBaseHref)) {\r\n return;\r\n }\r\n\r\n const [path, query] = noBaseHref.split('?');\r\n const queryParams: Record<string, any> = {};\r\n if (query) {\r\n const queryArray = query.split('&');\r\n queryArray.forEach((q) => {\r\n const arr = q.split('=');\r\n queryParams[arr[0]] = arr[1];\r\n });\r\n }\r\n // Força reload da pagina\r\n if (this.libConfig?.forcePageReload) {\r\n const fullUrl = path + (query ? '?' + query : '');\r\n window.location.href = fullUrl;\r\n return;\r\n }\r\n\r\n this.router.navigate([path], { queryParams: queryParams });\r\n }\r\n}\r\n","export enum RdsiteModalDrawerComponentStyle {\r\n DEFAULT = 'default',\r\n DRAWERDOCTOR = 'doctor-card',\r\n FORMFALLBACK = 'form-fallback',\r\n FILTERDOENCAS = 'filter-doencas',\r\n}\r\n","const getSiteUrl = (siteUrl: string = '', siteSufix: string = ''): string => {\r\n const baseUrl = siteUrl.endsWith('/') ? siteUrl.substring(0, siteUrl.length - 1) : siteUrl;\r\n const baseSufix = siteSufix.endsWith('/') ? siteSufix.substring(0, siteSufix.length - 1) : siteSufix;\r\n return `${baseUrl}${baseSufix}`;\r\n};\r\n\r\nexport { getSiteUrl };\r\n","function removeHtmlTags(content: string): string {\r\n content = content.replace(/<.*?>/g, '');\r\n return content;\r\n}\r\n\r\nexport { removeHtmlTags };\r\n","const checkSafariAgent = (): boolean => {\r\n const safariAgent = navigator.userAgent.includes('Safari');\r\n const chromeAgent = navigator.userAgent.includes('Chrome');\r\n return !chromeAgent && safariAgent;\r\n};\r\nexport { checkSafariAgent };\r\n","/**\r\n * Função que retorna um replacer personalizado para o JSON.stringify que resolve problemas de estruturas circulares durante a serialização.\r\n */\r\nexport function getCircularReplacer(customOptions?: {\r\n ignoreKeys?: string[]; // Chaves específicas a serem sempre ignoradas (ex: ['_request', 'parent'])\r\n maxDepth?: number; // Profundidade máxima de objetos aninhados (opcional)\r\n}) {\r\n const seen = new WeakSet();\r\n const options = {\r\n ignoreKeys: customOptions?.ignoreKeys || [],\r\n maxDepth: customOptions?.maxDepth || 100,\r\n };\r\n\r\n let depth = 0;\r\n\r\n return (key: string, value: any) => {\r\n // Ignora chaves específicas configuradas\r\n if (options.ignoreKeys.includes(key)) {\r\n return undefined;\r\n }\r\n\r\n // Controle de profundidade (opcional)\r\n if (key === '') {\r\n depth = 0; // Reinicia a profundidade na raiz\r\n } else {\r\n depth += 1; // Incrementa apenas quando descer na hierarquia\r\n }\r\n\r\n if (depth > options.maxDepth) {\r\n return typeof value === 'object' ? '[Object]' : value;\r\n }\r\n\r\n // Lida com referências circulares\r\n if (typeof value === 'object' && value !== null) {\r\n // Se já vimos este objeto, é uma referência circular\r\n if (seen.has(value)) {\r\n return undefined; // Exclui valores circulares\r\n }\r\n // Adiciona o objeto ao conjunto de objetos vistos\r\n seen.add(value);\r\n }\r\n\r\n return value;\r\n };\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformBrowser, Location } from '@angular/common';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LogService {\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private platformId = inject(PLATFORM_ID);\r\n private location = inject(Location);\r\n\r\n logMsg(msg: any, label?: string) {\r\n label = label ? `${label} ` : '';\r\n if (!isPlatformBrowser(this.platformId) || (isPlatformBrowser(this.platformId) && !this.libConfig?.production)) {\r\n console.log(`${label}${msg}`);\r\n }\r\n }\r\n\r\n logLoad(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, 'LOAD');\r\n }\r\n\r\n log404(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '404');\r\n }\r\n\r\n log500(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '500');\r\n }\r\n\r\n getPageURL() {\r\n return `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`;\r\n }\r\n}\r\n","/**\r\n * Converte JSON para query string.\r\n * @param params JSON\r\n */\r\nexport function toQueryParams(params: any): string {\r\n return params\r\n ? `?${Object.keys(params)\r\n .map((key) => key + '=' + params[key])\r\n .join('&')}`\r\n : '';\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { Observable } from 'rxjs';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\n/* Adiciona os Headers necessários para funcionamento do site back-end */\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpClientService {\r\n private platformId = inject(PLATFORM_ID);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private http = inject(HttpClient);\r\n private deviceService = inject(DeviceDetectorService);\r\n\r\n get<T = any>(url: string): Observable<T> {\r\n const headers = this.getHeaders();\r\n return this.http.get<T>(url, { headers });\r\n }\r\n\r\n post<T = any>(url: string, data?: any): Observable<T> {\r\n const headers = this.getHeaders();\r\n return this.http.post<T>(url, data, { headers });\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n const baseHeaders = new HttpHeaders()\r\n .set('x-origin-application', this.libConfig.xOriginApplication)\r\n .set('x-origin-channel', this.getOriginChannel())\r\n .set('x-origin-device', this.getOriginDevice());\r\n\r\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\r\n return baseHeaders.append(\r\n 'authorization',\r\n 'Basic ' + Buffer.from(`${this.libConfig.siteApi.auth.user}:${this.libConfig.siteApi.auth.password}`).toString('base64'),\r\n );\r\n } else {\r\n return baseHeaders.append('client_id', this.libConfig.client_id);\r\n }\r\n }\r\n\r\n private getOriginChannel(): string {\r\n return this.deviceService.isDesktop() ? 'desktop' : 'mobile';\r\n }\r\n\r\n private getOriginDevice(): string {\r\n return `app-${this.deviceService.getDeviceInfo().os}`;\r\n }\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { toQueryParams } from '../../helpers/toQueryParams.func';\r\nimport { HttpClientService } from '../http-client/http-client.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SiteBackendService {\r\n private httpClientService = inject(HttpClientService);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n siteApiUrl: string;\r\n\r\n constructor() {\r\n this.siteApiUrl = this.getApiUrl();\r\n }\r\n\r\n private getApiUrl(): string {\r\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\r\n return this.libConfig.siteApi.baseInternal;\r\n }\r\n return this.libConfig.siteApi.base;\r\n }\r\n\r\n /**\r\n * GET para qualquer endpoint do back-end do site.\r\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\r\n * @param params - Parâmetros opcionais para a requisição.\r\n * @returns Observable que emite os dados retornados pelo back-end.\r\n */\r\n get<T = any>(path: string, params?: any): Observable<T> {\r\n return this.httpClientService.get<T>(`${this.siteApiUrl}${path}${toQueryParams(params)}`);\r\n }\r\n\r\n /**\r\n * POST para qualquer endpoint do back-end do site.\r\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\r\n * @param params - Parâmetros opcionais para a requisição.\r\n * @returns Observable que emite os dados retornados pelo back-end.\r\n */\r\n post<T = any>(path: string, params?: any): Observable<T> {\r\n return this.httpClientService.post<T>(`${this.siteApiUrl}${path}`, params);\r\n }\r\n}\r\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { LogService } from '../services/log/log.service';\r\nimport { SiteBackendService } from '../services/site-back-end/site-back-end.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n private logService = inject(LogService);\r\n private siteBackendService = inject(SiteBackendService);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(req).pipe(\r\n catchError((error) => {\r\n this.logService.logMsg(`REQUEST ERROR => ${req.method} ${req.url}`, 'ERROR_INTERCEPTOR');\r\n\r\n if (isPlatformBrowser(this.platformId) && !req.url.includes('/log/error')) {\r\n const errorMessage = typeof error === 'string' ? error : error instanceof Error ? error.message : JSON.stringify(error);\r\n\r\n this.siteBackendService\r\n .post('log/error', {\r\n error: errorMessage,\r\n origin: window.location.href,\r\n url: req.urlWithParams,\r\n })\r\n .subscribe();\r\n }\r\n\r\n return throwError(() => error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { differenceInMilliseconds } from 'date-fns';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { LogService } from '../services/log/log.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LogInterceptor implements HttpInterceptor {\r\n private logService = inject(LogService);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const requestId = uuidv4();\r\n const startTime = Date.now();\r\n this.logService.logMsg(`REQUEST ${requestId} => ${req.method} ${req.url}`, 'INTERCEPTOR');\r\n\r\n return next.handle(req).pipe(\r\n tap((response) => {\r\n const res = response as HttpResponse<any>;\r\n if (res?.status) {\r\n const elapsedTime = differenceInMilliseconds(Date.now(), startTime);\r\n this.logService.logMsg(\r\n `RESPONSE ${requestId} => ${req.method} ${req.url} | Duração: ${elapsedTime}ms | Status: ${res.status} - ${res.statusText} | Body: ${!!res.body}`,\r\n 'INTERCEPTOR',\r\n );\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","export enum EnumDoencaTaxonomy {\r\n DOENCAS_CAT = 'doencas_cat',\r\n DOENCAS_TAG = 'doencas_tag',\r\n}\r\n\r\nexport enum EnumDoencaTaxonomyCat {\r\n DOENCA = 'doencas',\r\n SINTOMA = 'sintomas',\r\n}\r\n\r\nexport interface DoencaTaxonomy {\r\n id: number;\r\n name: string;\r\n slug: string;\r\n taxonomy: EnumDoencaTaxonomy;\r\n}\r\n\r\nexport interface TaxonomiasDoencasList {\r\n doencas_cat: DoencaTaxonomy[];\r\n doencas_tag: DoencaTaxonomy[];\r\n}\r\n","import { TemplateRef } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { FilterOption, FilterSectionBase } from './filter-planos-convenios.model';\r\nimport { FilterControl } from './filter-section.type';\r\n\r\nexport enum FilterType {\r\n INPUT = 'input',\r\n SELECT = 'select',\r\n CHECKBOX_GROUP = 'checkbox-group',\r\n RADIO_GROUP = 'radio-group',\r\n CUSTOM = 'custom',\r\n}\r\n\r\n// Input\r\nexport interface InputFilterConfig {\r\n name: string;\r\n placeholder?: string;\r\n iconName?: string;\r\n control: FilterControl;\r\n options?: FilterOption[];\r\n}\r\n\r\n// Select\r\nexport interface SelectFilterConfig {\r\n name: string;\r\n label?: string;\r\n placeholder?: string;\r\n includeDefaultOption?: boolean;\r\n defaultOptionText?: string;\r\n control: FilterControl;\r\n options?: FilterOption[];\r\n}\r\n\r\n// Checkbox Group\r\nexport interface CheckboxGroupFilterConfig {\r\n name: string;\r\n title?: string;\r\n subtitle?: string;\r\n description?: string;\r\n control: FormControl<any[]>;\r\n options: FilterOption[];\r\n}\r\n\r\n// Radio Group\r\nexport interface RadioGroupFilterConfig {\r\n name: string;\r\n title?: string;\r\n control: FilterControl;\r\n options: FilterOption[];\r\n}\r\n\r\n// Custom\r\nexport interface CustomFilterConfig {\r\n template: TemplateRef<any>;\r\n control?: any;\r\n context?: any;\r\n options?: FilterOption[];\r\n count?: number;\r\n}\r\n\r\n// Interfaces completas por tipo\r\nexport interface InputFilterSection extends FilterSectionBase<FilterType.INPUT, InputFilterConfig> {}\r\nexport interface SelectFilterSection extends FilterSectionBase<FilterType.SELECT, SelectFilterConfig> {}\r\nexport interface CheckboxGroupFilterSection extends FilterSectionBase<FilterType.CHECKBOX_GROUP, CheckboxGroupFilterConfig> {}\r\nexport interface RadioGroupFilterSection extends FilterSectionBase<FilterType.RADIO_GROUP, RadioGroupFilterConfig> {}\r\nexport interface CustomFilterSection extends FilterSectionBase<FilterType.CUSTOM, CustomFilterConfig> {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CtaWrapper } from '../../models/cta-wrapper.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorService {\r\n ctas = new BehaviorSubject<CtaWrapper>({});\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { LogService } from '../log/log.service';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\nexport interface MapBoxGeocodingParams {\r\n autocomplete?: boolean;\r\n bbox?: string; // minLon, minLat, maxLon, maxLat\r\n country?: string; // country codes separated by commas\r\n fuzzyMatch?: boolean;\r\n language?: string;\r\n limit?: number; // default: 5, max: 10\r\n proximity?: string; // longitude, latitude\r\n routing?: boolean;\r\n // Types can be comma separated\r\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\r\n [propName: string]: any;\r\n}\r\n\r\nexport interface MapBoxReverseGeocodingParams {\r\n country?: string; // country codes separated by commas\r\n language?: string;\r\n limit?: number; // default: 5, max: 10\r\n reverseMode?: 'distance' | 'score';\r\n routing?: boolean;\r\n // Types can be comma separated\r\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\r\n [propName: string]: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapBoxService {\r\n private readonly http = inject(HttpClient);\r\n private readonly logService = inject(LogService);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n private mapboxAccessToken = this.libConfig.mapboxAccessToken;\r\n private mapboxSSRAccessToken = this.libConfig.mapboxSSRAccessToken;\r\n private mapboxApiUrl = 'https://api.mapbox.com';\r\n private geocodingEp = 'search/geocode/v6';\r\n\r\n /**\r\n * Busca geocalizada por nome do local.\r\n * Ex.: barra da tijuca, rio de janeiro - rio de janeiro, brasil\r\n * @param query nome de local para a busca\r\n * @param params parâmetros opcionais de busca e filtro\r\n */\r\n forwardGeocoding(query: string, params: MapBoxGeocodingParams = {}, logContext?: string): Observable<any> {\r\n this.logMapbox('forwardGeocoding', logContext);\r\n if (query.length >= 256) {\r\n return throwError(() => 'Query length exceeds 255 characters.');\r\n }\r\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/forward?q=${query}`;\r\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\r\n return this.http.get(url, { params, headers: this.getHeaders() });\r\n }\r\n\r\n /**\r\n * Busca local por longitude e latitude\r\n * @param lng formato longitude\r\n * @param lat formato latitude\r\n * @param params parâmetros opcionais de busca e filtro\r\n */\r\n reverseGeocoding(lng: string, lat: string, params: MapBoxReverseGeocodingParams = {}, logContext?: string): Observable<any> {\r\n this.logMapbox('reverseGeocoding', logContext);\r\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/reverse?longitude=${lng}&latitude=${lat}`;\r\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\r\n return this.http.get(url, { params });\r\n }\r\n\r\n private logMapbox(callerFunction: string, context = 'no-context') {\r\n const platform = isPlatformServer(this.platformId) ? 'server' : 'browser';\r\n this.logService.logMsg(`${platform} - ${callerFunction} - ${context}`, 'MAPBOX');\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('Referrer-Policy', 'origin');\r\n }\r\n}\r\n","import { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { BehaviorSubject, map, Observable } from 'rxjs';\r\nimport { MapBoxReverseGeocodingParams, MapBoxService } from '../mapbox/mapbox.service';\r\nimport { LogService } from '../log/log.service';\r\nimport { checkSafariAgent } from '../../helpers/check-safari-agent.func';\r\nimport { getCircularReplacer } from '../../helpers/getCircularReplacer.func';\r\n\r\nexport enum GeolocationPermissions {\r\n GRANTED = 'granted',\r\n PROMPT = 'prompt',\r\n DENIED = 'denied',\r\n}\r\n\r\nexport interface Geolocation {\r\n lat: number;\r\n lng: number;\r\n}\r\n\r\nexport interface Address {\r\n city: string;\r\n state: {\r\n name: string;\r\n shortCode: string;\r\n };\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GeolocService {\r\n private readonly document = inject<Document>(DOCUMENT);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private mapboxService = inject(MapBoxService);\r\n private readonly logService = inject(LogService);\r\n\r\n private _mapboxGeocodingParams: MapBoxReverseGeocodingParams = {\r\n types: 'place',\r\n limit: 1,\r\n language: 'pt-BR',\r\n country: 'BR',\r\n };\r\n\r\n private _hasConsent = false;\r\n private _switchStatus = false;\r\n public get switchStatus(): boolean {\r\n return this._switchStatus;\r\n }\r\n private _address: Address | null = null;\r\n public get address(): Address | null {\r\n return this._address;\r\n }\r\n\r\n private _permission: PermissionState = GeolocationPermissions.PROMPT;\r\n public get permission(): PermissionState {\r\n return this._permission;\r\n }\r\n\r\n public geolocation: BehaviorSubject<Geolocation | null> = new BehaviorSubject<Geolocation | null>(null);\r\n public isChecked: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); // Emite true quando o geoloc está estável\r\n\r\n private _isSafariAgent: boolean = false;\r\n private _disableSwitch = false;\r\n public get disableSwitch(): boolean {\r\n return this._disableSwitch;\r\n }\r\n\r\n constructor() {\r\n if (isPlatformServer(this.platformId)) {\r\n this.isChecked.next(true);\r\n return;\r\n }\r\n\r\n this._isSafariAgent = checkSafariAgent();\r\n if (this._isSafariAgent) {\r\n this._hasConsent = this.checkACookieExists('geolocation_consent');\r\n this.initGeolocation(this._hasConsent);\r\n return;\r\n }\r\n\r\n navigator?.permissions\r\n ?.query({ name: 'geolocation' })\r\n .then((permission) => {\r\n this._permission = permission.state;\r\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\r\n\r\n permission.onchange = () => {\r\n this._permission = permission.state;\r\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\r\n };\r\n })\r\n .catch((error) => {\r\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\r\n this._permission = GeolocationPermissions.DENIED;\r\n this._disableSwitch = true;\r\n this.initGeolocation(false);\r\n });\r\n }\r\n\r\n initGeolocation(geolocAllowed = false): void {\r\n this._switchStatus = true;\r\n if (geolocAllowed) {\r\n this.getCurrentPosition().subscribe({\r\n next: (position) => {\r\n this._disableSwitch = false;\r\n this.setGeolocation(position);\r\n this.setConsentCookie(true, 3650);\r\n this._hasConsent = true;\r\n this._permission = GeolocationPermissions.GRANTED;\r\n },\r\n error: () => {\r\n if (this._permission === GeolocationPermissions.DENIED) {\r\n this._disableSwitch = true;\r\n this.setConsentCookie(false, 15);\r\n }\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._hasConsent = false;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n },\r\n });\r\n } else {\r\n if (this.permission === GeolocationPermissions.DENIED) {\r\n this._disableSwitch = true;\r\n this.setConsentCookie(false, 15);\r\n }\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._hasConsent = false;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n }\r\n }\r\n\r\n private getCurrentPosition(): Observable<GeolocationPosition> {\r\n return new Observable((observer) => {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n observer.next(position);\r\n observer.complete();\r\n },\r\n (error) => observer.error(error),\r\n { enableHighAccuracy: true },\r\n );\r\n });\r\n }\r\n\r\n private setGeolocation(position: GeolocationPosition): void {\r\n if (position) {\r\n if (position.coords.latitude === this.geolocation.value?.lat && position.coords.longitude === this.geolocation.value?.lng) return;\r\n\r\n this.geolocation.next({\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n });\r\n\r\n this.getMapboxAdress()\r\n .pipe(\r\n map((response) => {\r\n const city = response?.features[0]?.properties?.name;\r\n const state = {\r\n name: response?.features[0]?.properties?.context?.region?.name,\r\n shortCode: response?.features[0]?.properties?.context?.region?.region_code,\r\n };\r\n return { city, state };\r\n }),\r\n )\r\n .subscribe({\r\n next: (response) => {\r\n this._address = response;\r\n this._switchStatus = true;\r\n this.isChecked.next(true);\r\n },\r\n error: (error) => {\r\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\r\n this._switchStatus = false;\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this.isChecked.next(true);\r\n },\r\n });\r\n } else {\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n }\r\n }\r\n\r\n private getMapboxAdress(): Observable<any> {\r\n const lng = `${this.geolocation.value?.lng}`;\r\n const lat = `${this.geolocation.value?.lat}`;\r\n return this.mapboxService.reverseGeocoding(lng, lat, this._mapboxGeocodingParams, 'geolocalizacao.service getMapboxAdress');\r\n }\r\n\r\n checkACookieExists(name: string): boolean {\r\n if (isPlatformServer(this.platformId) || typeof this.document === 'undefined' || !this.document?.cookie) {\r\n return false;\r\n }\r\n return this.document.cookie\r\n .split(';')\r\n .map((item) => item.trim())\r\n .some((item) => item.trim().startsWith(name));\r\n }\r\n\r\n private setConsentCookie(status: boolean, days: number): void {\r\n if (this.getCookieValue('geolocation_consent') !== status.toString()) {\r\n const lifetime = new Date(Date.now() + days * 86400000).toUTCString();\r\n this.document.cookie = `geolocation_consent=${status}; path=/; expires=${lifetime}; SameSite=None; Secure`;\r\n }\r\n }\r\n\r\n private getCookieValue(prop: string): string {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const value = this.document.cookie\r\n .split(';')\r\n .map((item) => item.trim())\r\n .find((item) => item.startsWith(`${prop}=`));\r\n\r\n return value ? value.slice(prop.length + 1) : '';\r\n }\r\n return '';\r\n }\r\n}\r\n","import { ElementRef, Injectable, ModelSignal, signal } from '@angular/core';\r\nimport { RdsiteModalDrawerComponentStyle } from '../../enums/RdsiteModalDrawerComponentStyle.enum';\r\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\r\n\r\nexport abstract class AbstractModalDrawerComponent {\r\n abstract sheet: HTMLElement;\r\n abstract sheetContents: HTMLElement;\r\n abstract draggableArea: HTMLElement;\r\n abstract sheetHeight: number;\r\n abstract dragPosition: number;\r\n abstract maxHeight: number;\r\n abstract closeHeight: number;\r\n abstract rdsiteModalComponentStyle: any;\r\n abstract id: ModelSignal<string>;\r\n abstract modalContent: ModelSignal<ElementRef>;\r\n abstract componentStyle: ModelSignal<any>;\r\n abstract modal: HTMLDialogElement;\r\n abstract setSheetHeight(value: number): void;\r\n abstract setIsSheetShown(isShown: boolean): void;\r\n abstract openSheet(): void;\r\n abstract closeSheet(): void;\r\n abstract touchPosition(event: any): void;\r\n abstract onDragStart(event: any): void;\r\n abstract onDragMove(event: any): void;\r\n abstract onDragEnd(): void;\r\n abstract reset(): void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalDrawerService {\r\n reference: AbstractModalDrawerComponent | null = null;\r\n\r\n firstInteraction = signal(false);\r\n maxTries = 10;\r\n delay = 200;\r\n\r\n open() {\r\n this.firstInteraction.set(true);\r\n executeWithRetry(\r\n () => {\r\n this.reference?.openSheet();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setReference(element: AbstractModalDrawerComponent) {\r\n this.reference = element;\r\n }\r\n\r\n setContent(content: ElementRef) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalContent.set(content);\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setStyle(style: RdsiteModalDrawerComponentStyle) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.componentStyle.set(style);\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setHeight(value: number) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.maxHeight = value;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n close() {\r\n executeWithRetry(\r\n () => {\r\n this.reference?.closeSheet();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n}\r\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\r\nimport { PrivacyToolsConfigOptions, PrivacyToolsCookieBanner } from '../../models/privacy-tools/privacy-tools.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PrivacyToolsService {\r\n document = inject<Document>(DOCUMENT);\r\n platformId = inject(PLATFORM_ID);\r\n\r\n cookieBannerScriptId = 'PrivacyToolsScript';\r\n cookieBannerStyleId = 'PrivacyToolsStyle';\r\n cookieBannerScriptElement: HTMLScriptElement | null = null;\r\n configOptions: PrivacyToolsConfigOptions = {};\r\n cookieConsent: any = null;\r\n\r\n /* Config */\r\n public config(options: PrivacyToolsConfigOptions) {\r\n this.configOptions = options;\r\n }\r\n\r\n /* Setup cookie Banner */\r\n public setupCookieBanner(unidadeBasePath: string) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const banner = this.configOptions?.cookieBanners?.find((banner) => banner.basePath.includes(unidadeBasePath));\r\n\r\n if (banner) {\r\n this.addCookieBanner(banner);\r\n }\r\n }\r\n }\r\n\r\n public openCookieBanner() {\r\n if (this.cookieConsent && this.cookieBannerScriptElement) {\r\n this.cookieConsent.privacyToolsShowCookieNotice();\r\n }\r\n }\r\n\r\n /* Add cookie banner style and script */\r\n private addCookieBanner(banner: PrivacyToolsCookieBanner) {\r\n this.cookieBannerScriptElement = null;\r\n this.addCookieBannerStyle(banner.styleSrc);\r\n this.addCookieBannerScript(banner.scriptSrc);\r\n }\r\n\r\n /* Add cookie banner style. */\r\n public addCookieBannerStyle(src: string) {\r\n if (isPlatformServer(this.platformId)) return;\r\n\r\n this.document.getElementById('byRemovePortal')?.remove();\r\n\r\n const oldStyle = this.document.getElementById(this.cookieBannerStyleId);\r\n\r\n if (oldStyle) {\r\n oldStyle.remove();\r\n }\r\n\r\n const style = this.document.createElement('link');\r\n style.id = this.cookieBannerStyleId;\r\n style.rel = 'stylesheet';\r\n style.type = 'text/css';\r\n style.href = src;\r\n style.media = 'none';\r\n\r\n style.addEventListener('load', () => {\r\n style.media = 'all';\r\n });\r\n\r\n this.document.body.appendChild(style);\r\n }\r\n\r\n /* Add cookie banner script. */\r\n public addCookieBannerScript(src: string) {\r\n if (isPlatformServer(this.platformId) || typeof window === 'undefined') return;\r\n\r\n (window as any)['cookieconsent'] = null;\r\n\r\n const oldScript = this.document.getElementById(this.cookieBannerScriptId);\r\n\r\n if (oldScript) {\r\n oldScript.remove();\r\n }\r\n const script = this.document.createElement('script');\r\n script.id = this.cookieBannerScriptId;\r\n script.src = src;\r\n\r\n script.addEventListener('load', () => {\r\n this.cookieBannerScriptElement = script;\r\n this.cookieConsent = (window as any)['cookieconsent'];\r\n (window as any)['portalBanner']?.call();\r\n });\r\n\r\n this.document.body.appendChild(script);\r\n }\r\n}\r\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { Location } from '@angular/common';\r\n\r\nimport * as he from 'he';\r\n\r\nimport { SocialMetaProperties } from '../../models/social-meta-properties.model';\r\nimport { BreadcrumbsItems } from '../../models/breadcrumbs/breadcrumbs-items.model';\r\nimport { BreadcrumbsJsonItem } from '../../models/breadcrumbs/breadcrumbs-json-item.model';\r\nimport { SeoData } from '../../models/seo/seo-data.model';\r\nimport { SeoUnidade } from '../../models/seo/seo-unidade.model';\r\nimport { WpPost } from '../../models/wordpress/post/post.model';\r\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\r\nimport { removeHtmlTags } from '../../helpers/removeHtmlTags.func';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SeoService {\r\n private title = inject(Title);\r\n private meta = inject(Meta);\r\n private location = inject(Location);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private document = inject<Document>(DOCUMENT);\r\n\r\n public separator = ' - ';\r\n public defaultTitle = 'Rede D’Or';\r\n public activeDescription!: string;\r\n public sameAs = [\r\n 'https://www.facebook.com/rededor/',\r\n 'https://www.instagram.com/rededor_oficial/',\r\n 'https://www.linkedin.com/company/rededor-saoluiz',\r\n 'https://twitter.com/rededor',\r\n ];\r\n public twitterUser = '@rededor';\r\n\r\n private canonicalTag!: HTMLLinkElement;\r\n private jsonTag!: HTMLScriptElement;\r\n private jsonTagId = 'seoJSON';\r\n private breadcrumbsJsonTag!: HTMLScriptElement;\r\n private breadcrumbsJsonTagId = 'breadcrumbsJSON';\r\n\r\n public unidade: any = null;\r\n public unidadeName: string = '';\r\n public unidadePath: string = '';\r\n public unidadeSlug: string = '';\r\n\r\n public customJsonType: any[] = [];\r\n\r\n public setFullSeo(data: SeoData) {\r\n this.setTitle(data.title.text, !!data.title.sub);\r\n this.setDescription(data.description);\r\n this.setCanonicalHref(data.canonical);\r\n this.setPageJson();\r\n this.setSocialTags(data.socialTags);\r\n }\r\n\r\n /**\r\n * Define tag description da página\r\n * @param content conteúdo da descrição <string>\r\n */\r\n public setDescription(content: string): SeoService {\r\n const descTag = this.meta.getTag(\"name='description'\");\r\n if (content) {\r\n content = he.decode(content);\r\n content = removeHtmlTags(content);\r\n } else {\r\n content = '';\r\n }\r\n this.activeDescription = content;\r\n const tagContent = { name: 'description', content };\r\n if (descTag) {\r\n this.meta.updateTag(tagContent);\r\n } else {\r\n this.meta.addTag(tagContent);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Define meta tags para a página\r\n * @param tag nome da tag meta\r\n * @param content conteúdo da tag meta\r\n * @param type tipo de tag meta\r\n */\r\n public setMetaTag(tag: string, content: string, type = 'name') {\r\n const metatag = this.meta.getTag(`${type}='${tag}'`);\r\n content = he.decode(content);\r\n content = removeHtmlTags(content);\r\n const tagContent = {\r\n [type]: tag,\r\n content,\r\n };\r\n if (!metatag) {\r\n this.meta.addTag(tagContent);\r\n } else {\r\n this.meta.updateTag(tagContent);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove meta tags da página\r\n * @param tag nome da tag meta\r\n * @param content conteúdo da tag meta\r\n * @param attr atributo da tag meta\r\n * @param type tipo de tag meta\r\n */\r\n public removeTag(tag: string, content: string, attr: string, type = 'name') {\r\n const metatag = this.meta.getTag(`${type}='${tag}'`);\r\n if (metatag) {\r\n this.meta.removeTag(`${attr}=${content}`);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Define meta tags para Facebook\r\n * @param title título para o facebook\r\n * @param description descrição para o facebook\r\n * @param url url para definição do facebook\r\n * @param img imagem para definição no facebook\r\n */\r\n public setMetaFacebook(title: string, description: string, url: string, img: string | null = null) {\r\n this.setMetaTag('og:url', url, 'property');\r\n this.setMetaTag('og:title', title, 'property');\r\n this.setMetaTag('og:description', description, 'property');\r\n this.setMetaTag('og:type', 'website', 'property');\r\n this.setMetaTag('og:image', img ?? '', 'property');\r\n }\r\n\r\n /**\r\n * Define meta tags para Twitter\r\n * @param title título para o twitter\r\n * @param description descrição para o twitter\r\n * @param url url para o twitter\r\n * @param img imagem para definição no twitter\r\n */\r\n public setMetaTwitter(title: string, description: string, url: string, img: string | null = null) {\r\n this.setMetaTag('twitter:site', url, 'name');\r\n this.setMetaTag('twitter:title', title, 'name');\r\n this.setMetaTag('twitter:description', description, 'name');\r\n this.setMetaTag('twitter:image', img ?? '', 'name');\r\n }\r\n\r\n /**\r\n * Define tags de redes sociais (Twitter e Open Graph)\r\n * @param properties\r\n */\r\n setSocialTags(properties?: SocialMetaProperties) {\r\n const pagePath = this.location.path();\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n let defaultProperties: SocialMetaProperties = {\r\n twitterCard: 'summary',\r\n twitterSite: this.twitterUser,\r\n type: 'website',\r\n title: this.getTitle(),\r\n description: this.activeDescription || '',\r\n url: `${siteurl}${pagePath}`,\r\n image: this.libConfig?.logoPath ? `${siteurl}${this.libConfig.logoPath}` : 'https://www.rededorsaoluiz.com.br/assets/imgs/logo-rededor-blue.png',\r\n };\r\n if (properties) {\r\n defaultProperties = { ...defaultProperties, ...properties };\r\n }\r\n this.setMetaTag('twitter:card', defaultProperties.twitterCard || '', 'name')\r\n .setMetaTag('twitter:site', defaultProperties.twitterSite || '', 'name')\r\n .setMetaTag('og:type', defaultProperties.type || '', 'property')\r\n .setMetaTag('og:title', defaultProperties.title || '', 'property')\r\n .setMetaTag('og:description', defaultProperties.description || '', 'property')\r\n .setMetaTag('og:url', defaultProperties.url || '', 'property')\r\n .setMetaTag('og:image', defaultProperties.image || '', 'property');\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Define título da página\r\n * @param title título da página <string>\r\n * @param sub Se é subsite acrescenta unidade <boolean>\r\n */\r\n public setTitle(title: string, sub = false) {\r\n if (title && title !== '') {\r\n title = he.decode(title);\r\n title = removeHtmlTags(title);\r\n if (sub) {\r\n title = he.decode(`${title}${this.separator}${this.unidadeName}`);\r\n }\r\n this.title.setTitle(title);\r\n }\r\n return this;\r\n }\r\n\r\n /** Obtem título atual da página */\r\n public getTitle(): string {\r\n return this.title.getTitle();\r\n }\r\n\r\n public set404Title(component: string = 'Default Component') {\r\n if (component && component !== '') {\r\n component = he.decode(component);\r\n component = removeHtmlTags(component);\r\n if (this.unidadeName) {\r\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\r\n }\r\n }\r\n const title = `Erro 404 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\r\n this.title.setTitle(title);\r\n return this;\r\n }\r\n\r\n public set500Title(component: string = 'Default Component') {\r\n if (component && component !== '') {\r\n component = he.decode(component);\r\n component = removeHtmlTags(component);\r\n if (this.unidadeName) {\r\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\r\n }\r\n }\r\n const title = `Erro 500 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\r\n this.title.setTitle(title);\r\n return this;\r\n }\r\n\r\n /** Cria tag script para JSON de breadcrumbs */\r\n private createBreadcrumbsJSONTag(): HTMLScriptElement {\r\n const tag: HTMLScriptElement = this.document.createElement('script');\r\n tag.id = this.breadcrumbsJsonTagId;\r\n tag.type = 'application/ld+json';\r\n this.document.head.appendChild(tag);\r\n this.breadcrumbsJsonTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\r\n private getBreadcrumbsJSONTag(): HTMLScriptElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLScriptElement;\r\n if (elem && elem.id === this.breadcrumbsJsonTagId) {\r\n return elem;\r\n }\r\n }\r\n return this.createBreadcrumbsJSONTag();\r\n }\r\n\r\n /** Define o JSON de breadcrumbs da página */\r\n public setBreadcrumbsJson(items: BreadcrumbsItems[]) {\r\n this.breadcrumbsJsonTag = this.getBreadcrumbsJSONTag();\r\n const json = {\r\n '@context': 'http://schema.org',\r\n '@type': 'BreadcrumbList',\r\n itemListElement: this.getJsonBreadcrumbItems(items),\r\n };\r\n this.breadcrumbsJsonTag.innerHTML = JSON.stringify(json);\r\n return this;\r\n }\r\n\r\n /** Converte itens do breadcrumb em itens do JSON */\r\n private getJsonBreadcrumbItems(items: BreadcrumbsItems[]): BreadcrumbsJsonItem[] {\r\n const jsonItems = [\r\n {\r\n '@type': 'ListItem',\r\n position: 1,\r\n item: { '@id': this.getBreadcrumbItemUrl(['/']), name: he.encode('Página Inicial') },\r\n } as BreadcrumbsJsonItem,\r\n ];\r\n items.forEach((item, i) => {\r\n const jsonItem: BreadcrumbsJsonItem = {\r\n '@type': 'ListItem',\r\n position: i + 2,\r\n item: { '@id': this.getBreadcrumbItemUrl(item?.url || []), name: he.encode(item.label) },\r\n };\r\n jsonItems.push(jsonItem);\r\n });\r\n return jsonItems;\r\n }\r\n\r\n /**\r\n * Monta a url do item de breadcrumb proveniente do array de urls\r\n * ou do caminho da própria página, conforme caso do último item.\r\n */\r\n private getBreadcrumbItemUrl(url: string[]): string {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n if (!url || url.length <= 0) {\r\n const pagePath = this.location.path();\r\n return `${siteurl}${pagePath}`;\r\n }\r\n url = url.filter((u) => u !== this.unidadePath);\r\n const unidadePath = this.getUnidadePath();\r\n const fullPath = `${unidadePath}/${url.join('/').replace(/^\\/?/, '')}`;\r\n return `${siteurl}${fullPath}`.replace(/\\/$/, '');\r\n }\r\n\r\n /** Cria tag script para o JSON de SEO */\r\n private createJSONTag(): HTMLScriptElement {\r\n const tag: HTMLScriptElement = this.document.createElement('script');\r\n tag.id = this.jsonTagId;\r\n tag.type = 'application/ld+json';\r\n this.document.head.appendChild(tag);\r\n this.jsonTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\r\n private getJSONTag(): HTMLScriptElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLScriptElement;\r\n if (elem && elem.id === this.jsonTagId) {\r\n return elem;\r\n }\r\n }\r\n return this.createJSONTag();\r\n }\r\n\r\n /** Define JSON para SEO somente quando no servidor */\r\n public setPageJson() {\r\n this.jsonTag = this.getJSONTag();\r\n\r\n const baseGraph = [this.getOrgJson(), this.getWebsiteJson(), this.getWebpageJson()];\r\n\r\n const extendedGraph = this.customJsonType.length ? [...baseGraph, ...this.customJsonType] : baseGraph;\r\n\r\n this.customJsonType = [];\r\n\r\n const json = {\r\n '@context': 'http://schema.org',\r\n '@graph': extendedGraph,\r\n };\r\n\r\n this.jsonTag.innerHTML = JSON.stringify(json);\r\n\r\n return this;\r\n }\r\n\r\n /** Obtem JSON da Organização */\r\n private getOrgJson() {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return {\r\n '@type': 'Organization',\r\n '@id': `${siteurl}#organization`,\r\n name: this.defaultTitle,\r\n keywords: this.libConfig?.keywords,\r\n url: `${siteurl}`,\r\n sameAs: this.sameAs,\r\n };\r\n }\r\n\r\n /** Obtem JSON do Website (portal, unidades, etc) */\r\n private getWebsiteJson() {\r\n const unidadePath = this.getUnidadePath();\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return {\r\n '@type': 'WebSite',\r\n '@id': `${siteurl}${unidadePath}#website`,\r\n url: `${siteurl}${unidadePath}`,\r\n name: this.unidadeName,\r\n keywords: this.libConfig?.keywords,\r\n };\r\n }\r\n\r\n /** Obtem Json da página */\r\n private getWebpageJson() {\r\n const unidadePath = this.getUnidadePath();\r\n const siteURL = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n const pagePath = `${siteURL}${this.location.path()}`;\r\n const desc = this.activeDescription ? this.activeDescription : '';\r\n return {\r\n '@type': 'WebPage',\r\n '@id': `${pagePath}#webpage`,\r\n url: pagePath,\r\n inLanguage: 'pt-BR',\r\n name: this.getTitle(),\r\n isPartOf: { '@id': `${siteURL}${unidadePath}#website` },\r\n about: { '@id': `${siteURL}#organization` },\r\n description: desc,\r\n };\r\n }\r\n\r\n private getUnidadePath() {\r\n let unidadePath = '';\r\n if (this.unidade && this.unidadePath) {\r\n unidadePath = this.unidade?.path === '/' ? '' : this.unidadePath?.substring(0, this.unidadePath?.length - 1);\r\n }\r\n return unidadePath;\r\n }\r\n\r\n /**\r\n * Obtém a URL canônica da página.\r\n * @returns A URL canônica da página.\r\n */\r\n public getCanonicalHref(): string {\r\n if (!this.canonicalTag) {\r\n this.canonicalTag = this.getCanonicalTag();\r\n }\r\n return this.canonicalTag.href;\r\n }\r\n\r\n /** Cria tag para links canonicals no head */\r\n private createCanonicalTag(): HTMLLinkElement {\r\n const tag = this.document.createElement('link');\r\n tag.setAttribute('rel', 'canonical');\r\n this.document.head.appendChild(tag);\r\n tag.setAttribute('href', this.document.URL);\r\n this.canonicalTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para link canonical existe ou cria se não houver. */\r\n private getCanonicalTag(): HTMLLinkElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLLinkElement;\r\n if (elem && elem.tagName === 'LINK' && elem.rel === 'canonical') {\r\n return elem;\r\n }\r\n }\r\n return this.createCanonicalTag();\r\n }\r\n\r\n /**\r\n * Define link canonical da página\r\n * @param url url canonical\r\n */\r\n public setCanonicalHref(url?: string) {\r\n if (!this.canonicalTag) {\r\n this.canonicalTag = this.getCanonicalTag();\r\n }\r\n\r\n let path = this.document.location.pathname;\r\n\r\n if (this.libConfig?.siteSufix && path.includes(this.libConfig?.siteSufix)) {\r\n path = path.replace(this.libConfig?.siteSufix, '');\r\n }\r\n\r\n if (!path.startsWith('/')) {\r\n path = `/${path}`;\r\n }\r\n\r\n const canonicalUrl = url && this.isCustomCanonical(url) ? url : `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${path}`;\r\n\r\n this.canonicalTag.setAttribute('href', canonicalUrl);\r\n return this;\r\n }\r\n\r\n /**\r\n * Verifica se a URL fornecida é um link canonical personalizado\r\n * @param url URL fornecida\r\n */\r\n public isCustomCanonical(url: string): boolean {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return url.startsWith(siteurl);\r\n }\r\n\r\n /**\r\n * Obtém uma url válida na aplicação proveniente de uma URL gerada\r\n * pelo plugin Yoast para canonical automático.\r\n * Ex.: https://wp.rededorsaoluiz.com.br/brasil/especialidades/cardiologia/\r\n * @param urlFromWpApi URL canonica gerada pelo Yoast Plugin.\r\n */\r\n toLocalCanonical(urlFromWpApi: string): string {\r\n const apiUrl = this.libConfig?.wpUrl ?? '';\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n const unidadeSlug = this.unidadeSlug;\r\n let converted = urlFromWpApi.replace(apiUrl, siteurl);\r\n if (unidadeSlug !== '/' && converted.includes(`/${unidadeSlug}/`)) {\r\n converted = converted.replace(`/${unidadeSlug}/`, `${this.unidadePath}`);\r\n }\r\n return converted;\r\n }\r\n\r\n getPostContent(post: WpPost): string {\r\n const content = post?.acf?.['rdsl_post_content'] ? post?.acf?.rdsl_post_content?.find((content: any) => content.acf_fc_layout === 'text_html') : null;\r\n return content?.content || post.content.rendered || '';\r\n }\r\n\r\n addArticleScript(post: WpPost, scriptName: string): void {\r\n const postContent = this.getPostContent(post);\r\n const postHeaderImage = post?.acf?.['rdsl_post_header_img']\r\n ? {\r\n url: post?.acf?.['rdsl_post_header_img'].url,\r\n width: post?.acf?.['rdsl_post_header_img'].width,\r\n height: post?.acf?.['rdsl_post_header_img'].height,\r\n }\r\n : null;\r\n\r\n const structuredData = {\r\n '@context': 'https://schema.org',\r\n '@type': 'Article',\r\n mainEntityOfPage: `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`,\r\n headline: post.title?.rendered,\r\n datePublished: post.date_gmt,\r\n publisher: {\r\n '@type': 'Organization',\r\n name: 'Rede D’Or',\r\n },\r\n description: post.title?.rendered,\r\n articleBody: removeHtmlTags(he.decode(postContent)),\r\n dateModified: post.modified_gmt,\r\n image: {\r\n '@type': 'ImageObject',\r\n url: postHeaderImage?.url || post.featured_media_path || '',\r\n height: postHeaderImage?.height || '',\r\n width: postHeaderImage?.width || '',\r\n },\r\n author: {\r\n '@type': 'Organization',\r\n name: 'Rede D’Or',\r\n },\r\n wordcount: postContent.split(' ').length,\r\n };\r\n\r\n const script = this.document.createElement('script');\r\n\r\n script.type = 'application/ld+json';\r\n script.id = scriptName;\r\n script.innerHTML = JSON.stringify(structuredData);\r\n\r\n this.document.head.appendChild(script);\r\n }\r\n\r\n removeArticleScript(scriptName: string): void {\r\n const script = this.document.getElementById(scriptName);\r\n script?.remove();\r\n }\r\n\r\n public setUnidade({ unidade = null, unidadeName = '', unidadePath = '', unidadeSlug = '' }: SeoUnidade) {\r\n this.unidade = unidade;\r\n this.unidadeName = unidadeName;\r\n this.unidadePath = unidadePath;\r\n this.unidadeSlug = unidadeSlug;\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Response } from 'express';\r\nimport { RESPONSE } from '../../tokens/express.tokens';\r\n\r\nexport interface IServerResponseService {\r\n getHeader(key: string): string;\r\n setHeader(key: string, value: string): this;\r\n setHeaders(dictionary: { [key: string]: string }): this;\r\n appendHeader(key: string, value: string, delimiter?: string): this;\r\n setStatus(code: number, message?: string): this;\r\n setNotFound(message?: string): this;\r\n setError(message?: string): this;\r\n setRedirect(redirectParams?: { statusCode: number; message: string; url?: string }): this;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ServerResponseService implements IServerResponseService {\r\n private response = inject(RESPONSE, { optional: true });\r\n\r\n getHeader(key: string): string {\r\n if (this.response) {\r\n return this.response.getHeader(key) as string;\r\n }\r\n return '';\r\n }\r\n\r\n setHeader(key: string, value: string): this {\r\n if (this.response) {\r\n this.response.header(key, value);\r\n }\r\n return this;\r\n }\r\n\r\n appendHeader(key: string, value: string, delimiter = ','): this {\r\n if (this.response) {\r\n const current = this.getHeader(key);\r\n if (!current) {\r\n return this.setHeader(key, value);\r\n }\r\n const newValue = [...current.split(delimiter), value].filter((el, i, a) => i === a.indexOf(el)).join(delimiter);\r\n this.response.header(key, newValue);\r\n }\r\n return this;\r\n }\r\n\r\n setHeaders(dictionary: { [key: string]: string }): this {\r\n if (this.response) {\r\n Object.keys(dictionary).forEach((key) => this.setHeader(key, dictionary[key]));\r\n }\r\n return this;\r\n }\r\n\r\n setStatus(code: number, message?: string): this {\r\n if (this.response) {\r\n this.response.statusCode = code;\r\n if (message) {\r\n this.response.statusMessage = message;\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n setNotFound(message = 'Não encontrado'): this {\r\n if (this.response) {\r\n this.response.statusCode = 404;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setUnauthorized(message = 'Não autorizado'): this {\r\n if (this.response) {\r\n this.response.statusCode = 401;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setError(message = 'Erro interno de servidor'): this {\r\n if (this.response) {\r\n this.response.statusCode = 500;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setRedirect(\r\n { statusCode, message, url }: { statusCode?: number; message?: string; url?: string } = {\r\n statusCode: 301,\r\n message: 'Redirecionado permanentemente',\r\n url: undefined,\r\n },\r\n ): this {\r\n if (this.response) {\r\n this.response.statusCode = statusCode || 301;\r\n this.response.statusMessage = message || 'Redirecionado permanentemente';\r\n if (url) {\r\n this.response.locals['redirectUrl'] = url; // Utilizado no ssr para redirect\r\n }\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nexport type HttpCacheDirective = 'public' | 'private' | 'no-store' | 'no-cache' | 'must-revalidate' | 'no-transform' | 'proxy-revalidate';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":";;;;;;;;;;;;AAwDA;MACa,UAAU,GAAG,IAAI,cAAc,CAAY,WAAW;;MCtDtD,OAAO,GAAG,IAAI,cAAc,CAAU,SAAS;MAC/C,QAAQ,GAAG,IAAI,cAAc,CAAW,UAAU;;MCClD,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;QAErC,IAAA,CAAA,QAAQ,GAAG,MAAM;AAElB,QAAA,IAAA,CAAA,mBAAmB,GAAY,IAAI,CAAC;AAQ5C,IAAA;;AALQ,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,IAAI,CAAC;QACxD,MAAM,gBAAgB,GAAG,GAAG;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,gBAAgB;IAC7D;8GAZW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACJD;;;;;;;;AAQG;SACa,gBAAgB,CAC9B,EAAwB,EACxB,SAAwB,EACxB,QAAA,GAAmB,EAAE,EACrB,QAAgB,GAAG,EACnB,aAAqB,CAAC,EACtB,GAAG,IAAO,EAAA;IAEV,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,GAAG,QAAQ,EAAE;QACzC,UAAU,CAAC,MAAK;AACd,YAAA,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;QAC3E,CAAC,EAAE,KAAK,CAAC;IACX;SAAO;AACL,QAAA,EAAE,CAAC,GAAG,IAAI,CAAC;IACb;AACF;;MCpBsB,sBAAsB,CAAA;AAY3C;MAKY,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,SAAS,GAAkC,IAAI;AAG/C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC;QAChC,IAAA,CAAA,QAAQ,GAAG,EAAE;QACb,IAAA,CAAA,KAAK,GAAG,GAAG;AAgGZ,IAAA;IA9FC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACxB,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,YAAY,CAAC,OAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;IAC1B;AAEA,IAAA,SAAS,CAAC,MAAwB,EAAA;QAChC,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,MAAM;YACrC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK;YACnC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,UAAU,CAAC,OAAyB,EAAE,OAAA,GAA+B,EAAE,EAAA;QACrE,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO;AACrC,gBAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,OAAO;YAC9C;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,UAAU,CAAC,OAAyB,EAAA;QAClC,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO;YACvC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,QAAQ,CAAC,KAAgC,EAAA;QACvC,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK;YACvC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,oBAAoB,CAAC,KAAuB,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;IAChC;IAEA,KAAK,GAAA;AACH,QAAA,gBAAgB,CACd,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;8GArGW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ICpBW;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,yBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,yBAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,yBAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAClC,CAAC,EAXW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;;ACA9B,MAAM,WAAW,GAAG,CAAC,KAAa,KAAY;AACnD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IAErB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAChD,IAAI,aAAa,GAAG,EAAE;AACtB,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QAC5B,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,CAAC;IAC7E;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QACnC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,CAAC;IAC7E;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QACnC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,CAAC;IAC7E;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChE;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChE;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChE;SAAO;QACL,aAAa,GAAG,UAAU;IAC5B;AACA,IAAA,OAAO,aAAa;AACtB;;MCVa,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAmB,EAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAE3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAkC,IAAI,4DAAC;QAEvD,IAAA,CAAA,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AAqB7F,IAAA;;AAjBQ,IAAA,OAAO,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB;YACnJ;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;QACpE,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;QAClC;IACF;IAEO,cAAc,CAAC,KAAY,EAAE,IAAY,EAAA;QAC9C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1H,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GA5BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;8BAaQ,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCVtB,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAe,EAAC;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC7D,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAgB,IAAI,4DAAC;AAC7C,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAgB,IAAI,iEAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkC,IAAI,sDAAC;QAEjD,IAAA,CAAA,aAAa,GAAG,kCAAkC;QAClD,IAAA,CAAA,QAAQ,GAAG,MAAM;QACjB,IAAA,CAAA,SAAS,GAAG,SAAS;AACrB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC;QAC/C,IAAA,CAAA,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AA4I7F,IAAA;AAzIQ,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC;YAAE;AAC7G,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;AACpE,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC;gBAChB,IAAI;gBACJ,KAAK;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,aAAA,CAAC;YACF;QACF;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAE7D,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,MAAM,MAAM,GAAG,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ;AAC/E,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,QAAQ;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB;AAEQ,IAAA,OAAO,CAAC,IAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;AAEQ,IAAA,MAAM,CAAC,IAAY,EAAA;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEQ,IAAA,YAAY,CAAC,KAA4G,EAAA;QAC/H,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK;QAClD,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC;YACvC,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;QAC5D;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QAC5B;IACF;IAEQ,aAAa,CAAC,OAAwB,EAAE,UAA2C,EAAA;AACzF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,EAAE;YAC9C,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;YAC/D;QACF;QACA,IAAI,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,OAAO,CAAC,EAAE;YACtD,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QACjE;IACF;AAEQ,IAAA,aAAa,CAAC,IAAY,EAAA;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IACtC;AAEQ,IAAA,SAAS,CAAC,IAAY,EAAA;QAC5B,MAAM,SAAS,GAAG,WAAW;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxF;AAEQ,IAAA,QAAQ,CAAC,IAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7B;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;QACjC,IAAI,IAAI,KAAK,GAAG;YAAE;AAClB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;YAChD,IAAI,UAAU,GAAG,CAAC;AAElB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;gBACzC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnE;AAEA,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC3B,gBAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAG;YACvC;AAEA,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,gBAAA,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAG;YAC7C;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,GAAG,IAAI,CAAC;AACtE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAc,IAAI,CAAC,EAAE,qBAAqB,EAAE,EAAE,GAAG,IAAI,CAAC;YAClG,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,UAAU;AACrD,YAAA,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC7D;IACF;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE;QACnD,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3D,IAAI,UAAU,GAAG,IAAI;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;YACxC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACpD;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACxC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7C;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,4BAA4B,IAAI,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,UAAU,CAAC,EAAE;YAC3G;QACF;AAEA,QAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,MAAM,WAAW,GAAwB,EAAE;QAC3C,IAAI,KAAK,EAAE;YACT,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACvB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBACxB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC,CAAC;QACJ;;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE;AACnC,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;AACjD,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IAC5D;8GA7JW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE3B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,yBAAyB,CAAC;AACvC,iBAAA;8BAsBQ,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;IChCvB;AAAZ,CAAA,UAAY,+BAA+B,EAAA;AACzC,IAAA,+BAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,+BAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,+BAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,+BAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAClC,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,GAAA,EAAA,CAAA,CAAA;;ACA3C,MAAM,UAAU,GAAG,CAAC,OAAA,GAAkB,EAAE,EAAE,SAAA,GAAoB,EAAE,KAAY;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO;IAC1F,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS;AACpG,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,SAAS,EAAE;AACjC;;ACJA,SAAS,cAAc,CAAC,OAAe,EAAA;IACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvC,IAAA,OAAO,OAAO;AAChB;;ACHA,MAAM,gBAAgB,GAAG,MAAc;IACrC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1D,IAAA,OAAO,CAAC,WAAW,IAAI,WAAW;AACpC;;ACJA;;AAEG;AACG,SAAU,mBAAmB,CAAC,aAGnC,EAAA;AACC,IAAA,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE;AAC1B,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,UAAU,EAAE,aAAa,EAAE,UAAU,IAAI,EAAE;AAC3C,QAAA,QAAQ,EAAE,aAAa,EAAE,QAAQ,IAAI,GAAG;KACzC;IAED,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,OAAO,CAAC,GAAW,EAAE,KAAU,KAAI;;QAEjC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpC,YAAA,OAAO,SAAS;QAClB;;AAGA,QAAA,IAAI,GAAG,KAAK,EAAE,EAAE;AACd,YAAA,KAAK,GAAG,CAAC,CAAC;QACZ;aAAO;AACL,YAAA,KAAK,IAAI,CAAC,CAAC;QACb;AAEA,QAAA,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;AAC5B,YAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,GAAG,KAAK;QACvD;;QAGA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;;AAE/C,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnB,OAAO,SAAS,CAAC;YACnB;;AAEA,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACjB;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC;AACH;;MCpCa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAwBpC,IAAA;IAtBC,MAAM,CAAC,GAAQ,EAAE,KAAc,EAAA;AAC7B,QAAA,KAAK,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG,GAAG,EAAE;QAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,KAAK,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;QAC/B;IACF;AAEA,IAAA,OAAO,CAAC,SAAkB,EAAA;QACxB,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EAAE,MAAM,CAAC;IAClF;AAEA,IAAA,MAAM,CAAC,SAAkB,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EAAE,KAAK,CAAC;IACjF;AAEA,IAAA,MAAM,CAAC,SAAkB,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EAAE,KAAK,CAAC;IACjF;IAEA,UAAU,GAAA;QACR,OAAO,CAAA,EAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAE;IACnG;8GA1BW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPD;;;AAGG;AACG,SAAU,aAAa,CAAC,MAAW,EAAA;AACvC,IAAA,OAAO;AACL,UAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,MAAM;AACnB,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;aACpC,IAAI,CAAC,GAAG,CAAC,CAAA;UACZ,EAAE;AACR;;ACHA;MAEa,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAmCtD,IAAA;AAjCC,IAAA,GAAG,CAAU,GAAW,EAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;IAC3C;IAEA,IAAI,CAAU,GAAW,EAAE,IAAU,EAAA;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;IAClD;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW;aAChC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;AAC7D,aAAA,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,EAAE;aAC/C,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAEjD,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,WAAW,CAAC,MAAM,CACvB,eAAe,EACf,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACzH;QACH;aAAO;AACL,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAClE;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,SAAS,GAAG,QAAQ;IAC9D;IAEQ,eAAe,GAAA;QACrB,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,EAAE,CAAA,CAAE;IACvD;8GAtCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,kBAAkB,CAAA;AAO7B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAKtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;IACpC;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY;QAC5C;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;IACpC;AAEA;;;;;AAKG;IACH,GAAG,CAAU,IAAY,EAAE,MAAY,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAI,GAAG,IAAI,CAAC,UAAU,CAAA,EAAG,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;IAC3F;AAEA;;;;;AAKG;IACH,IAAI,CAAU,IAAY,EAAE,MAAY,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAI,CAAA,EAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA,CAAE,EAAE,MAAM,CAAC;IAC5E;8GApCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,gBAAgB,CAAA;AAH7B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAuBzC,IAAA;IArBC,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC;AAExF,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACzE,gBAAA,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAEvH,gBAAA,IAAI,CAAC;qBACF,IAAI,CAAC,WAAW,EAAE;AACjB,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;oBAC5B,GAAG,EAAE,GAAG,CAAC,aAAa;iBACvB;AACA,qBAAA,SAAS,EAAE;YAChB;AAEA,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;QAChC,CAAC,CAAC,CACH;IACH;8GAzBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAoBxC,IAAA;IAlBC,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,MAAM,SAAS,GAAGA,EAAM,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,QAAA,EAAW,SAAS,CAAA,IAAA,EAAO,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;AAEzF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,QAAQ,KAAI;YACf,MAAM,GAAG,GAAG,QAA6B;AACzC,YAAA,IAAI,GAAG,EAAE,MAAM,EAAE;gBACf,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;AACnE,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,CAAA,SAAA,EAAY,SAAS,CAAA,IAAA,EAAO,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,CAAA,YAAA,EAAe,WAAW,CAAA,aAAA,EAAgB,GAAG,CAAC,MAAM,CAAA,GAAA,EAAM,GAAG,CAAC,UAAU,CAAA,SAAA,EAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,EACjJ,aAAa,CACd;YACH;QACF,CAAC,CAAC,CACH;IACH;8GApBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ICTW;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;IAKlB;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACtB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAAA,EAAA,CAAA,CAAA;;ICArB;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EANW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCET,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC;AAC3C,IAAA;8GAFY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC6BY,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAEzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB;AACpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB;QAC1D,IAAA,CAAA,YAAY,GAAG,wBAAwB;QACvC,IAAA,CAAA,WAAW,GAAG,mBAAmB;AAuC1C,IAAA;AArCC;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,KAAa,EAAE,MAAA,GAAgC,EAAE,EAAE,UAAmB,EAAA;AACrF,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC9C,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;AACvB,YAAA,OAAO,UAAU,CAAC,MAAM,sCAAsC,CAAC;QACjE;AACA,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,WAAA,EAAc,KAAK,EAAE;QACzE,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB;AAChH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;IACnE;AAEA;;;;;AAKG;IACH,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,MAAA,GAAuC,EAAE,EAAE,UAAmB,EAAA;AACvG,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,mBAAA,EAAsB,GAAG,CAAA,UAAA,EAAa,GAAG,EAAE;QAC/F,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB;AAChH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;IACvC;AAEQ,IAAA,SAAS,CAAC,cAAsB,EAAE,OAAO,GAAG,YAAY,EAAA;AAC9D,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,SAAS;AACzE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,cAAc,MAAM,OAAO,CAAA,CAAE,EAAE,QAAQ,CAAC;IAClF;IAEQ,UAAU,GAAA;QAChB,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC3D;8GA/CW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;IC1BW;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;MAsBrB,aAAa,CAAA;AAexB,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;IACtB;AAGA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;AAOA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA,IAAA,WAAA,GAAA;AApCiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC,QAAA,IAAA,CAAA,sBAAsB,GAAiC;AAC7D,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,OAAO,EAAE,IAAI;SACd;QAEO,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,aAAa,GAAG,KAAK;QAIrB,IAAA,CAAA,QAAQ,GAAmB,IAAI;AAK/B,QAAA,IAAA,CAAA,WAAW,GAAoB,sBAAsB,CAAC,MAAM;AAK7D,QAAA,IAAA,CAAA,WAAW,GAAwC,IAAI,eAAe,CAAqB,IAAI,CAAC;QAChG,IAAA,CAAA,SAAS,GAA6B,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAEzE,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,cAAc,GAAG,KAAK;AAM5B,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,gBAAgB,EAAE;AACxC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;AACjE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;YACtC;QACF;AAEA,QAAA,SAAS,EAAE;AACT,cAAE,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;AAC9B,aAAA,IAAI,CAAC,CAAC,UAAU,KAAI;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK;YACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAEzE,YAAA,UAAU,CAAC,QAAQ,GAAG,MAAK;AACzB,gBAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAC3E,YAAA,CAAC;AACH,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC;AAC7E,YAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,MAAM;AAChD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,CAAC,aAAa,GAAG,KAAK,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC;AAClC,gBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,oBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,OAAO;gBACnD,CAAC;gBACD,KAAK,EAAE,MAAK;oBACV,IAAI,IAAI,CAAC,WAAW,KAAK,sBAAsB,CAAC,MAAM,EAAE;AACtD,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;oBAClC;AACA,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;AACF,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,IAAI,CAAC,UAAU,KAAK,sBAAsB,CAAC,MAAM,EAAE;AACrD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;YACjC,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACtC,CAAC,QAAQ,KAAI;AACX,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACvB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,EACD,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAChC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAC7B;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,cAAc,CAAC,QAA6B,EAAA;QAClD,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG;gBAAE;AAE3H,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAC7B,gBAAA,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;AAC/B,aAAA,CAAC;YAEF,IAAI,CAAC,eAAe;AACjB,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,gBAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI;AACpD,gBAAA,MAAM,KAAK,GAAG;AACZ,oBAAA,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;AAC9D,oBAAA,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW;iBAC3E;AACD,gBAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACxB,YAAA,CAAC,CAAC;AAEH,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC;AAC7E,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;AACF,aAAA,CAAC;QACN;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B;IACF;IAEQ,eAAe,GAAA;QACrB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAA,CAAE;QAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAA,CAAE;AAC5C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;IAC7H;AAEA,IAAA,kBAAkB,CAAC,IAAY,EAAA;QAC7B,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACvG,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC;aAClB,KAAK,CAAC,GAAG;aACT,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACzB,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD;IAEQ,gBAAgB,CAAC,MAAe,EAAE,IAAY,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE;AACpE,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;YACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,uBAAuB,MAAM,CAAA,kBAAA,EAAqB,QAAQ,CAAA,uBAAA,CAAyB;QAC5G;IACF;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;iBACzB,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACzB,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;AAE9C,YAAA,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;QAClD;AACA,QAAA,OAAO,EAAE;IACX;8GAjMW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCzBqB,4BAA4B,CAAA;AAsBjD;MAKY,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,SAAS,GAAwC,IAAI;AAErD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC;QAChC,IAAA,CAAA,QAAQ,GAAG,EAAE;QACb,IAAA,CAAA,KAAK,GAAG,GAAG;AAmEZ,IAAA;IAjEC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE;AAC7B,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,YAAY,CAAC,OAAqC,EAAA;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;IAC1B;AAEA,IAAA,UAAU,CAAC,OAAmB,EAAA;QAC5B,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;YAC1C;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,QAAQ,CAAC,KAAsC,EAAA;QAC7C,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1C;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK;YAClC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;IAEA,KAAK,GAAA;QACH,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC9B,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;8GAvEW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCvBY,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAEhC,IAAA,CAAA,oBAAoB,GAAG,oBAAoB;QAC3C,IAAA,CAAA,mBAAmB,GAAG,mBAAmB;QACzC,IAAA,CAAA,yBAAyB,GAA6B,IAAI;QAC1D,IAAA,CAAA,aAAa,GAA8B,EAAE;QAC7C,IAAA,CAAA,aAAa,GAAQ,IAAI;AAgF1B,IAAA;;AA7EQ,IAAA,MAAM,CAAC,OAAkC,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO;IAC9B;;AAGO,IAAA,iBAAiB,CAAC,eAAuB,EAAA;AAC9C,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAE7G,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC9B;QACF;IACF;IAEO,gBAAgB,GAAA;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACxD,YAAA,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE;QACnD;IACF;;AAGQ,IAAA,eAAe,CAAC,MAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC;IAC9C;;AAGO,IAAA,oBAAoB,CAAC,GAAW,EAAA;AACrC,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE;AAExD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAEvE,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,MAAM,EAAE;QACnB;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACjD,QAAA,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB;AACnC,QAAA,KAAK,CAAC,GAAG,GAAG,YAAY;AACxB,QAAA,KAAK,CAAC,IAAI,GAAG,UAAU;AACvB,QAAA,KAAK,CAAC,IAAI,GAAG,GAAG;AAChB,QAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AAEpB,QAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAClC,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK;AACrB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC;;AAGO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACtC,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAEvE,QAAA,MAAc,CAAC,eAAe,CAAC,GAAG,IAAI;AAEvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAEzE,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,MAAM,EAAE;QACpB;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpD,QAAA,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB;AACrC,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AAEhB,QAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AACnC,YAAA,IAAI,CAAC,yBAAyB,GAAG,MAAM;AACvC,YAAA,IAAI,CAAC,aAAa,GAAI,MAAc,CAAC,eAAe,CAAC;AACpD,YAAA,MAAc,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE;AACzC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC;8GAvFW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCaY,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;QAEtC,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,YAAY,GAAG,WAAW;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAG;YACd,mCAAmC;YACnC,4CAA4C;YAC5C,kDAAkD;YAClD,6BAA6B;SAC9B;QACM,IAAA,CAAA,WAAW,GAAG,UAAU;QAIvB,IAAA,CAAA,SAAS,GAAG,SAAS;QAErB,IAAA,CAAA,oBAAoB,GAAG,iBAAiB;QAEzC,IAAA,CAAA,OAAO,GAAQ,IAAI;QACnB,IAAA,CAAA,WAAW,GAAW,EAAE;QACxB,IAAA,CAAA,WAAW,GAAW,EAAE;QACxB,IAAA,CAAA,WAAW,GAAW,EAAE;QAExB,IAAA,CAAA,cAAc,GAAU,EAAE;AAwelC,IAAA;AAteQ,IAAA,UAAU,CAAC,IAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC;AAEA;;;AAGG;AACI,IAAA,cAAc,CAAC,OAAe,EAAA;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACtD,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,YAAA,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACnC;aAAO;YACL,OAAO,GAAG,EAAE;QACd;AACA,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO;QAChC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;QACnD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;AACI,IAAA,UAAU,CAAC,GAAW,EAAE,OAAe,EAAE,IAAI,GAAG,MAAM,EAAA;AAC3D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAC;AACpD,QAAA,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,QAAA,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG;YACjB,CAAC,IAAI,GAAG,GAAG;YACX,OAAO;SACR;QACD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACjC;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;AAMG;IACI,SAAS,CAAC,GAAW,EAAE,OAAe,EAAE,IAAY,EAAE,IAAI,GAAG,MAAM,EAAA;AACxE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAC;QACpD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;QAC3C;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;AAMG;IACI,eAAe,CAAC,KAAa,EAAE,WAAmB,EAAE,GAAW,EAAE,MAAqB,IAAI,EAAA;QAC/F,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC;IACpD;AAEA;;;;;;AAMG;IACI,cAAc,CAAC,KAAa,EAAE,WAAmB,EAAE,GAAW,EAAE,MAAqB,IAAI,EAAA;QAC9F,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,IAAI,EAAE,EAAE,MAAM,CAAC;IACrD;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,UAAiC,EAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,IAAI,iBAAiB,GAAyB;AAC5C,YAAA,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,WAAW,EAAE,IAAI,CAAC,iBAAiB,IAAI,EAAE;AACzC,YAAA,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE;YAC5B,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA,CAAE,GAAG,qEAAqE;SACjJ;QACD,IAAI,UAAU,EAAE;YACd,iBAAiB,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,UAAU,EAAE;QAC7D;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM;aACxE,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM;aACtE,UAAU,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,IAAI,EAAE,EAAE,UAAU;aAC9D,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU;aAChE,UAAU,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,WAAW,IAAI,EAAE,EAAE,UAAU;aAC5E,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,IAAI,EAAE,EAAE,UAAU;aAC5D,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,CAAC;AAEpE,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAAa,EAAE,GAAG,GAAG,KAAK,EAAA;AACxC,QAAA,IAAI,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE;AACzB,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AACxB,YAAA,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;YAC7B,IAAI,GAAG,EAAE;AACP,gBAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YACnE;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B;AACA,QAAA,OAAO,IAAI;IACb;;IAGO,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IAC9B;IAEO,WAAW,CAAC,YAAoB,mBAAmB,EAAA;AACxD,QAAA,IAAI,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE;AACjC,YAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,YAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YAC3E;QACF;AACA,QAAA,MAAM,KAAK,GAAG,CAAA,WAAA,EAAc,SAAS,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AAC/F,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1B,QAAA,OAAO,IAAI;IACb;IAEO,WAAW,CAAC,YAAoB,mBAAmB,EAAA;AACxD,QAAA,IAAI,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE;AACjC,YAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,YAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YAC3E;QACF;AACA,QAAA,MAAM,KAAK,GAAG,CAAA,WAAA,EAAc,SAAS,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AAC/F,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1B,QAAA,OAAO,IAAI;IACb;;IAGQ,wBAAwB,GAAA;QAC9B,MAAM,GAAG,GAAsB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpE,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB;AAClC,QAAA,GAAG,CAAC,IAAI,GAAG,qBAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG;AAC7B,QAAA,OAAO,GAAG;IACZ;;IAGQ,qBAAqB,GAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAsB;YAC7C,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACjD,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE;IACxC;;AAGO,IAAA,kBAAkB,CAAC,KAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACtD,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;SACpD;QACD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACxD,QAAA,OAAO,IAAI;IACb;;AAGQ,IAAA,sBAAsB,CAAC,KAAyB,EAAA;AACtD,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;AAC9D,aAAA;SACzB;QACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACxB,YAAA,MAAM,QAAQ,GAAwB;AACpC,gBAAA,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,CAAC,GAAG,CAAC;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aACzF;AACD,YAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,SAAS;IAClB;AAEA;;;AAGG;AACK,IAAA,oBAAoB,CAAC,GAAa,EAAA;AACxC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9E,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,YAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,EAAE;QAChC;AACA,QAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtE,QAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACnD;;IAGQ,aAAa,GAAA;QACnB,MAAM,GAAG,GAAsB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpE,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS;AACvB,QAAA,GAAG,CAAC,IAAI,GAAG,qBAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,QAAA,OAAO,GAAG;IACZ;;IAGQ,UAAU,GAAA;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAsB;YAC7C,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE;AACtC,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC7B;;IAGO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAEhC,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAEnF,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS;AAErG,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AAExB,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,QAAQ,EAAE,aAAa;SACxB;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAE7C,QAAA,OAAO,IAAI;IACb;;IAGQ,UAAU,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9E,OAAO;AACL,YAAA,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,CAAA,EAAG,OAAO,CAAA,aAAA,CAAe;YAChC,IAAI,EAAE,IAAI,CAAC,YAAY;AACvB,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ;YAClC,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,CAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB;IACH;;IAGQ,cAAc,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9E,OAAO;AACL,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;AACzC,YAAA,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,WAAW,CAAA,CAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ;SACnC;IACH;;IAGQ,cAAc,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAE;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE;QACjE,OAAO;AACL,YAAA,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,CAAA,EAAG,QAAQ,CAAA,QAAA,CAAU;AAC5B,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU,EAAE;AACvD,YAAA,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,OAAO,eAAe,EAAE;AAC3C,YAAA,WAAW,EAAE,IAAI;SAClB;IACH;IAEQ,cAAc,GAAA;QACpB,IAAI,WAAW,GAAG,EAAE;QACpB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC;QAC9G;AACA,QAAA,OAAO,WAAW;IACpB;AAEA;;;AAGG;IACI,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI;IAC/B;;IAGQ,kBAAkB,GAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/C,QAAA,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACnC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACvB,QAAA,OAAO,GAAG;IACZ;;IAGQ,eAAe,GAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAoB;AAC3C,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AAC/D,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;IAClC;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C;QAEA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;AAE1C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;AACzE,YAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC;QACpD;QAEA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;QACnB;AAEA,QAAA,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA,EAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA,EAAG,IAAI,EAAE;QAE1I,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC;AACpD,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;IAChC;AAEA;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,YAAoB,EAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAC1C,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;QACpC,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AACrD,QAAA,IAAI,WAAW,KAAK,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,CAAC,EAAE;AACjE,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;QAC1E;AACA,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,EAAE,GAAG,GAAG,mBAAmB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,OAAY,KAAK,OAAO,CAAC,aAAa,KAAK,WAAW,CAAC,GAAG,IAAI;QACrJ,OAAO,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;IACxD;IAEA,gBAAgB,CAAC,IAAY,EAAE,UAAkB,EAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAI,EAAE,GAAG,GAAG,sBAAsB;AACxD,cAAE;gBACE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC,GAAG;gBAC5C,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC,KAAK;gBAChD,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC,MAAM;AACnD;cACD,IAAI;AAER,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAE;AAC5G,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ;YAC9B,aAAa,EAAE,IAAI,CAAC,QAAQ;AAC5B,YAAA,SAAS,EAAE;AACT,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA;AACD,YAAA,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ;YACjC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnD,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,aAAa;gBACtB,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,mBAAmB,IAAI,EAAE;AAC3D,gBAAA,MAAM,EAAE,eAAe,EAAE,MAAM,IAAI,EAAE;AACrC,gBAAA,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,EAAE;AACpC,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA;YACD,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM;SACzC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAEpD,QAAA,MAAM,CAAC,IAAI,GAAG,qBAAqB;AACnC,QAAA,MAAM,CAAC,EAAE,GAAG,UAAU;QACtB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC;AAEA,IAAA,mBAAmB,CAAC,UAAkB,EAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE;IAClB;AAEO,IAAA,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAc,EAAA;AACpG,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;IAChC;8GApgBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;QAIU,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAqFxD,IAAA;AAnFC,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAW;QAC/C;AACA,QAAA,OAAO,EAAE;IACX;IAEA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;QAClC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,SAAS,GAAG,GAAG,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;YACnC;AACA,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/G,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QACrC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,UAAU,CAAC,UAAqC,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI;YAC/B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;YACvC;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,WAAW,CAAC,OAAO,GAAG,gBAAgB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;QACvC;AACA,QAAA,OAAO,IAAI;IACb;IAEA,eAAe,CAAC,OAAO,GAAG,gBAAgB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;QACvC;AACA,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,CAAC,OAAO,GAAG,0BAA0B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;QACvC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,WAAW,CACT,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAA,GAA8D;AACtF,QAAA,UAAU,EAAE,GAAG;AACf,QAAA,OAAO,EAAE,+BAA+B;AACxC,QAAA,GAAG,EAAE,SAAS;AACf,KAAA,EAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,IAAI,GAAG;YAC5C,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO,IAAI,+BAA+B;YACxE,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAC5C;QACF;AACA,QAAA,OAAO,IAAI;IACb;8GArFW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACjBD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"rededor-site-front-end-lib-core.mjs","sources":["../../../projects/site-front-end-lib/core/tokens/LibConfig.ts","../../../projects/site-front-end-lib/core/tokens/express.tokens.ts","../../../projects/site-front-end-lib/core/services/phone/phone.service.ts","../../../projects/site-front-end-lib/core/helpers/executeWithRetry.func.ts","../../../projects/site-front-end-lib/core/services/modal/modal.service.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/formatPhone.func.ts","../../../projects/site-front-end-lib/core/directives/rdsite-phone-modal/rdsite-phone-modal.directive.ts","../../../projects/site-front-end-lib/core/directives/rdsite-link/rdsite-link.directive.ts","../../../projects/site-front-end-lib/core/enums/RdsiteModalDrawerComponentStyle.enum.ts","../../../projects/site-front-end-lib/core/helpers/getSiteUrl.func.ts","../../../projects/site-front-end-lib/core/helpers/removeHtmlTags.func.ts","../../../projects/site-front-end-lib/core/helpers/check-safari-agent.func.ts","../../../projects/site-front-end-lib/core/helpers/getCircularReplacer.func.ts","../../../projects/site-front-end-lib/core/helpers/djb2Hash.func.ts","../../../projects/site-front-end-lib/core/services/log/log.service.ts","../../../projects/site-front-end-lib/core/helpers/toQueryParams.func.ts","../../../projects/site-front-end-lib/core/services/http-client/http-client.service.ts","../../../projects/site-front-end-lib/core/services/site-back-end/site-back-end.service.ts","../../../projects/site-front-end-lib/core/interceptors/error.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/log.interceptor.ts","../../../projects/site-front-end-lib/core/interceptors/transfer-state-url.interceptor.ts","../../../projects/site-front-end-lib/core/models/doenca-taxonomy.model.ts","../../../projects/site-front-end-lib/core/models/filters/filter-sections.model.ts","../../../projects/site-front-end-lib/core/services/error/error.service.ts","../../../projects/site-front-end-lib/core/services/mapbox/mapbox.service.ts","../../../projects/site-front-end-lib/core/services/geoloc/geoloc.service.ts","../../../projects/site-front-end-lib/core/services/modal-drawer/modal-drawer.service.ts","../../../projects/site-front-end-lib/core/services/privacy-tools/privacy-tools.service.ts","../../../projects/site-front-end-lib/core/services/seo/seo.service.ts","../../../projects/site-front-end-lib/core/services/server-response/server-response.service.ts","../../../projects/site-front-end-lib/core/rededor-site-front-end-lib-core.ts"],"sourcesContent":["import { ElementRef, InjectionToken } from '@angular/core';\r\n\r\nexport interface LibConfig {\r\n production: boolean;\r\n environmentName: string;\r\n siteProject: string;\r\n server: boolean;\r\n siteName: string;\r\n siteUrl: string;\r\n siteSufix?: string;\r\n client_id: string;\r\n xOriginApplication: string;\r\n searchApiEnv: string;\r\n fallbackImgSrc: string;\r\n\r\n // Cura iconset\r\n iconsetDefaultList: string[];\r\n\r\n // site-back-end (SNF)\r\n siteApi: {\r\n auth: {\r\n user: string;\r\n password: string;\r\n };\r\n base: string;\r\n baseInternal: string;\r\n recaptcha: string;\r\n centroEstudos: string;\r\n };\r\n\r\n // Algolia Search\r\n algoliaConfig: {\r\n id: string;\r\n key: string;\r\n };\r\n\r\n // Wordpress\r\n wpUrl: string;\r\n\r\n // SEO\r\n keywords: string;\r\n logoPath?: string;\r\n\r\n // Mapbox\r\n mapboxAccessToken: string;\r\n mapboxSSRAccessToken: string;\r\n\r\n // rdsitelink custom anchor adjustment\r\n customAnchorAdjustment?: (document: Document) => number;\r\n customPhoneModalCondition?: (element: ElementRef<any>) => boolean;\r\n customInternalLinkNavigation?: (noBaseHref: string) => boolean;\r\n\r\n // rdsitelink navigation behavior\r\n forcePageReload?: boolean;\r\n\r\n // TransferState configuration\r\n transferState?: {\r\n includeHeaders?: string[];\r\n };\r\n}\r\n\r\n// Configura a lib com informações especificas de cada projeto.\r\nexport const LIB_CONFIG = new InjectionToken<LibConfig>('libConfig');\r\n","import { InjectionToken } from '@angular/core';\r\nimport { Request, Response } from 'express';\r\n\r\nexport const REQUEST = new InjectionToken<Request>('REQUEST');\r\nexport const RESPONSE = new InjectionToken<Response>('RESPONSE');\r\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PhoneService {\r\n private document = inject<Document>(DOCUMENT);\r\n\r\n private telRegex = /tel:/;\r\n\r\n public phoneModalIsAllowed: boolean = true; // variavel utilizada para permitir/bloquear o modal de telefone\r\n\r\n /** Verifica se o 'href' é de telefone e se a janela está em tamanho desktop */\r\n public isPhoneModal(href: string) {\r\n const width = this.document.defaultView?.innerWidth ?? 0;\r\n const SMALL_BREAKPOINT = 718;\r\n return this.telRegex.test(href) && width > SMALL_BREAKPOINT;\r\n }\r\n}\r\n","/**\r\n * Executa uma função recursivamente até que uma condição seja atendida ou atinja o máximo de tentativas\r\n * @param fn - Função a ser executada quando a condição for atendida\r\n * @param condition - Função que retorna true quando a condição for satisfeita\r\n * @param maxTries - Número máximo de tentativas (padrão: 10)\r\n * @param delay - Delay entre tentativas em ms (padrão: 200)\r\n * @param currentTry - Contador interno de tentativas (padrão: 0)\r\n * @param args - Argumentos que serão passados para a função fn\r\n */\r\nexport function executeWithRetry<T extends any[]>(\r\n fn: (...args: T) => void,\r\n condition: () => boolean,\r\n maxTries: number = 10,\r\n delay: number = 200,\r\n currentTry: number = 0,\r\n ...args: T\r\n): void {\r\n if (!condition() && currentTry < maxTries) {\r\n setTimeout(() => {\r\n executeWithRetry(fn, condition, maxTries, delay, currentTry + 1, ...args);\r\n }, delay);\r\n } else {\r\n fn(...args);\r\n }\r\n}\r\n","import { Injectable, signal, TemplateRef } from '@angular/core';\r\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\r\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\r\n\r\nexport abstract class AbstractModalComponent {\r\n abstract id?: string;\r\n abstract modalTitle?: string | null;\r\n abstract modalHeader?: TemplateRef<any> | null;\r\n abstract modalContent: TemplateRef<any> | null;\r\n abstract modalContentContext: Record<string, any> | null;\r\n abstract modalActions?: TemplateRef<any> | null;\r\n abstract componentStyle?: any;\r\n abstract modal: HTMLDialogElement;\r\n abstract open(): void;\r\n abstract close(): void;\r\n abstract reset?(): void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalService {\r\n reference: AbstractModalComponent | null = null;\r\n defaultPhoneModal!: TemplateRef<any>;\r\n\r\n firstInteraction = signal(false);\r\n maxTries = 10;\r\n delay = 200;\r\n\r\n open() {\r\n this.firstInteraction.set(true);\r\n executeWithRetry(\r\n () => {\r\n this.reference?.open();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setReference(element: AbstractModalComponent) {\r\n this.reference = element;\r\n }\r\n\r\n setHeader(header: TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalHeader = header;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setTitle(title: string) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalTitle = title;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setContent(content: TemplateRef<any>, context: Record<string, any> = {}) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalContent = content;\r\n this.reference.modalContentContext = context;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setActions(actions: TemplateRef<any>) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalActions = actions;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setStyle(style: RdsiteModalComponentStyle) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.componentStyle = style;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setDefaultPhoneModal(modal: TemplateRef<any>) {\r\n this.defaultPhoneModal = modal;\r\n }\r\n\r\n close() {\r\n executeWithRetry(\r\n () => this.reference?.close(),\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n}\r\n","export enum RdsiteModalComponentStyle {\r\n DEFAULT = 'default',\r\n ALERT = 'alert',\r\n LIGHT = 'light',\r\n DOCTORCARD = 'doctor-card',\r\n HOMESLIDE = 'home-slide',\r\n BASIC = 'basic',\r\n SHARING = 'sharing',\r\n FORMFALLBACK = 'form-fallback',\r\n FILTER = 'filter',\r\n FILTERDOENCAS = 'filter-doencas',\r\n}\r\n","export const formatPhone = (phone: string): string => {\r\n if (!phone) return '';\r\n\r\n const cleanPhone = phone.replace(/[^0-9]/gi, '');\r\n let formatedPhone = '';\r\n if (cleanPhone.length === 12) {\r\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 11) {\r\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{5})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 10) {\r\n formatedPhone = cleanPhone.replace(/(\\d{2})?(\\d{4})?(\\d{4})/, '($1) $2-$3');\r\n } else if (cleanPhone.length === 9) {\r\n formatedPhone = cleanPhone.replace(/(\\d{5})?(\\d{4})/, '$1-$2');\r\n } else if (cleanPhone.length === 8) {\r\n formatedPhone = cleanPhone.replace(/(\\d{4})?(\\d{4})/, '$1-$2');\r\n } else if (cleanPhone.length === 7) {\r\n formatedPhone = cleanPhone.replace(/(\\d{3})?(\\d{4})/, '$1-$2');\r\n } else {\r\n formatedPhone = cleanPhone;\r\n }\r\n return formatedPhone;\r\n};\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, inject, model, PLATFORM_ID, TemplateRef } from '@angular/core';\r\nimport { PhoneService } from '../../services/phone/phone.service';\r\nimport { ModalService } from '../../services/modal/modal.service';\r\nimport { RdsiteModalComponentStyle } from '../../enums/RdsiteModalComponentStyle.enum';\r\nimport { formatPhone } from '../../helpers/formatPhone.func';\r\n\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[rdsitephonemodal]',\r\n})\r\nexport class RdsitePhoneModalDirective {\r\n private modalService = inject(ModalService);\r\n private platformId = inject(PLATFORM_ID);\r\n private element = inject(ElementRef<Element>);\r\n private phoneService = inject(PhoneService);\r\n\r\n rdsitephonemodal = model<TemplateRef<HTMLElement> | null>(null);\r\n\r\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\r\n\r\n // Intercepta cliques em telefones e aplica comportamentos diferentes em tamanho desktop.\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event) {\r\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName) || !this.phoneService.phoneModalIsAllowed)\r\n return;\r\n\r\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\r\n if (this.phoneService.isPhoneModal(href)) {\r\n this.openPhoneModal(event, href);\r\n }\r\n }\r\n\r\n public openPhoneModal(event: Event, href: string) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.modalService.setContent(this.rdsitephonemodal() || this.modalService.defaultPhoneModal, { phone: formatPhone(href) });\r\n this.modalService.setStyle(RdsiteModalComponentStyle.DEFAULT);\r\n this.modalService.open();\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Directive, ElementRef, HostListener, Inject, Input, PLATFORM_ID, TemplateRef, DOCUMENT, input, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { PhoneService } from '../../services/phone/phone.service';\r\nimport { RdsitePhoneModalDirective } from '../rdsite-phone-modal/rdsite-phone-modal.directive';\r\n@Directive({\r\n // eslint-disable-next-line @angular-eslint/directive-selector\r\n selector: '[rdsitelink]',\r\n providers: [RdsitePhoneModalDirective],\r\n})\r\nexport class RdsiteLinkDirective {\r\n private router = inject(Router);\r\n private platformId = inject(PLATFORM_ID);\r\n private document = inject(DOCUMENT);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private element = inject(ElementRef<any>);\r\n private phoneService = inject(PhoneService);\r\n private rdsitePhoneModalDirective = inject(RdsitePhoneModalDirective);\r\n private deviceDetectorService = inject(DeviceDetectorService);\r\n\r\n anchorAdjustment = input<number | null>(null);\r\n anchorExtraAdjustment = input<number | null>(null);\r\n phonemodal = input<TemplateRef<HTMLElement> | null>(null);\r\n\r\n private externalRegex = /^http:|https:|tel:|www\\.|mailto:/;\r\n private telRegex = /tel:/;\r\n private mailRegex = /mailto:/;\r\n private siteUrlList = ['rededorsaoluiz', 'rededorlabs'];\r\n private allowedTags = ['A', 'CURA-BUTTON', 'CURA-BUTTON-OUTLINE', 'CURA-BUTTON-TRANSPARENT'];\r\n\r\n @HostListener('click', ['$event'])\r\n public onClick(event: Event) {\r\n event.preventDefault();\r\n if (!isPlatformBrowser(this.platformId) || !this.allowedTags.includes(this.element?.nativeElement?.tagName)) return;\r\n const href = this.element?.nativeElement?.getAttribute('href') ?? '';\r\n if (!href) return;\r\n\r\n if (this.isPhone(href)) {\r\n this.phoneClicked({\r\n href,\r\n event,\r\n element: this.element,\r\n phonemodal: this.phonemodal(),\r\n });\r\n return;\r\n }\r\n\r\n const isMobile = this.deviceDetectorService.isMobile();\r\n const deviceInfo = this.deviceDetectorService.getDeviceInfo();\r\n\r\n if (this.isMail(href)) {\r\n const target = isMobile || deviceInfo.browser !== 'Chrome' ? '_self' : '_blank';\r\n window.open(href, target);\r\n return;\r\n }\r\n\r\n if (this.isExternalUrl(href)) {\r\n const target = this.isSiteUrl(href) ? '_self' : '_blank';\r\n window.open(href, target);\r\n return;\r\n }\r\n\r\n if (this.isAnchor(href)) {\r\n this.scrollToAnchor(href);\r\n return;\r\n }\r\n\r\n this.navigateTo(href);\r\n }\r\n\r\n private isPhone(href: string) {\r\n return this.telRegex.test(href);\r\n }\r\n\r\n private isMail(href: string) {\r\n return this.mailRegex.test(href);\r\n }\r\n\r\n private phoneClicked(value: { href: string; event: Event; element: ElementRef<any>; phonemodal: TemplateRef<HTMLElement> | null }) {\r\n const { href, event, element, phonemodal } = value;\r\n if (this.phoneService.isPhoneModal(href)) {\r\n this.setPhoneModal(element, phonemodal);\r\n this.rdsitePhoneModalDirective.openPhoneModal(event, href);\r\n } else {\r\n window.open(href, '_self');\r\n }\r\n }\r\n\r\n private setPhoneModal(element: ElementRef<any>, phonemodal: TemplateRef<HTMLElement> | null) {\r\n if (!this.phonemodal()) return;\r\n if (!this.libConfig?.customPhoneModalCondition) {\r\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\r\n return;\r\n }\r\n if (this.libConfig?.customPhoneModalCondition(element)) {\r\n this.rdsitePhoneModalDirective.rdsitephonemodal.set(phonemodal);\r\n }\r\n }\r\n\r\n private isExternalUrl(href: string) {\r\n return this.externalRegex.test(href);\r\n }\r\n\r\n private isSiteUrl(href: string) {\r\n const exception = '/paciente';\r\n return this.siteUrlList.find((url) => href.includes(url) && !href.includes(exception));\r\n }\r\n\r\n private isAnchor(href: string) {\r\n return href.startsWith('#');\r\n }\r\n\r\n private scrollToAnchor(href: string) {\r\n if (href === '#') return;\r\n if (isPlatformBrowser(this.platformId)) {\r\n const docElement = this.document.documentElement;\r\n let adjustment = 0;\r\n\r\n if (this.libConfig.customAnchorAdjustment) {\r\n adjustment = this.libConfig.customAnchorAdjustment(this.document);\r\n }\r\n\r\n if (this.anchorAdjustment()) {\r\n adjustment = this.anchorAdjustment()!;\r\n }\r\n\r\n if (this.anchorExtraAdjustment()) {\r\n adjustment += this.anchorExtraAdjustment()!;\r\n }\r\n\r\n const bodyTop = this.document?.body?.getBoundingClientRect()?.top ?? 0;\r\n const hrefTop = this.document?.querySelector<HTMLElement>(href)?.getBoundingClientRect()?.top ?? 0;\r\n const scrollTop = bodyTop * -1 + hrefTop - adjustment;\r\n docElement.scrollTo({ top: scrollTop, behavior: 'smooth' });\r\n }\r\n }\r\n\r\n private navigateTo(href: string) {\r\n const siteBasePath = this.libConfig.siteSufix ?? '';\r\n const siteBasePathNoSlash = siteBasePath.replace(/\\//g, '');\r\n let noBaseHref = href;\r\n if (href.startsWith(siteBasePathNoSlash)) {\r\n noBaseHref = href.replace(siteBasePathNoSlash, '');\r\n } else if (href.startsWith(siteBasePath)) {\r\n noBaseHref = href.replace(siteBasePath, '');\r\n }\r\n if (this.libConfig?.customInternalLinkNavigation && this.libConfig.customInternalLinkNavigation(noBaseHref)) {\r\n return;\r\n }\r\n\r\n const [path, query] = noBaseHref.split('?');\r\n const queryParams: Record<string, any> = {};\r\n if (query) {\r\n const queryArray = query.split('&');\r\n queryArray.forEach((q) => {\r\n const arr = q.split('=');\r\n queryParams[arr[0]] = arr[1];\r\n });\r\n }\r\n // Força reload da pagina\r\n if (this.libConfig?.forcePageReload) {\r\n const fullUrl = path + (query ? '?' + query : '');\r\n window.location.href = fullUrl;\r\n return;\r\n }\r\n\r\n this.router.navigate([path], { queryParams: queryParams });\r\n }\r\n}\r\n","export enum RdsiteModalDrawerComponentStyle {\r\n DEFAULT = 'default',\r\n DRAWERDOCTOR = 'doctor-card',\r\n FORMFALLBACK = 'form-fallback',\r\n FILTERDOENCAS = 'filter-doencas',\r\n}\r\n","const getSiteUrl = (siteUrl: string = '', siteSufix: string = ''): string => {\r\n const baseUrl = siteUrl.endsWith('/') ? siteUrl.substring(0, siteUrl.length - 1) : siteUrl;\r\n const baseSufix = siteSufix.endsWith('/') ? siteSufix.substring(0, siteSufix.length - 1) : siteSufix;\r\n return `${baseUrl}${baseSufix}`;\r\n};\r\n\r\nexport { getSiteUrl };\r\n","function removeHtmlTags(content: string): string {\r\n content = content.replace(/<.*?>/g, '');\r\n return content;\r\n}\r\n\r\nexport { removeHtmlTags };\r\n","const checkSafariAgent = (): boolean => {\r\n const safariAgent = navigator.userAgent.includes('Safari');\r\n const chromeAgent = navigator.userAgent.includes('Chrome');\r\n return !chromeAgent && safariAgent;\r\n};\r\nexport { checkSafariAgent };\r\n","/**\r\n * Função que retorna um replacer personalizado para o JSON.stringify que resolve problemas de estruturas circulares durante a serialização.\r\n */\r\nexport function getCircularReplacer(customOptions?: {\r\n ignoreKeys?: string[]; // Chaves específicas a serem sempre ignoradas (ex: ['_request', 'parent'])\r\n maxDepth?: number; // Profundidade máxima de objetos aninhados (opcional)\r\n}) {\r\n const seen = new WeakSet();\r\n const options = {\r\n ignoreKeys: customOptions?.ignoreKeys || [],\r\n maxDepth: customOptions?.maxDepth || 100,\r\n };\r\n\r\n let depth = 0;\r\n\r\n return (key: string, value: any) => {\r\n // Ignora chaves específicas configuradas\r\n if (options.ignoreKeys.includes(key)) {\r\n return undefined;\r\n }\r\n\r\n // Controle de profundidade (opcional)\r\n if (key === '') {\r\n depth = 0; // Reinicia a profundidade na raiz\r\n } else {\r\n depth += 1; // Incrementa apenas quando descer na hierarquia\r\n }\r\n\r\n if (depth > options.maxDepth) {\r\n return typeof value === 'object' ? '[Object]' : value;\r\n }\r\n\r\n // Lida com referências circulares\r\n if (typeof value === 'object' && value !== null) {\r\n // Se já vimos este objeto, é uma referência circular\r\n if (seen.has(value)) {\r\n return undefined; // Exclui valores circulares\r\n }\r\n // Adiciona o objeto ao conjunto de objetos vistos\r\n seen.add(value);\r\n }\r\n\r\n return value;\r\n };\r\n}\r\n","/**\r\n * Função de hash djb2 para gerar chaves numéricas únicas\r\n * \r\n * @param str - String para gerar hash\r\n * @returns Número hash único e positivo\r\n */\r\nexport const djb2Hash = (str: string): number => {\r\n let hash = 5381; // Valor inicial do djb2 original\r\n if (str.length === 0) return hash;\r\n\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i);\r\n hash = (hash << 5) + hash + char; // hash * 33 + char\r\n hash = hash & hash; // Converte para 32bit integer\r\n }\r\n\r\n return Math.abs(hash);\r\n};\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformBrowser, Location } from '@angular/common';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LogService {\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private platformId = inject(PLATFORM_ID);\r\n private location = inject(Location);\r\n\r\n logMsg(msg: any, label?: string) {\r\n label = label ? `${label} ` : '';\r\n if (!isPlatformBrowser(this.platformId) || (isPlatformBrowser(this.platformId) && !this.libConfig?.production)) {\r\n console.log(`${label}${msg}`);\r\n }\r\n }\r\n\r\n logLoad(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, 'LOAD');\r\n }\r\n\r\n log404(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '404');\r\n }\r\n\r\n log500(component?: string) {\r\n this.logMsg(`${this.getPageURL()}${component ? ' - ' + component : ''}`, '500');\r\n }\r\n\r\n getPageURL() {\r\n return `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`;\r\n }\r\n}\r\n","/**\r\n * Converte JSON para query string.\r\n * @param params JSON\r\n */\r\nexport function toQueryParams(params: any): string {\r\n return params\r\n ? `?${Object.keys(params)\r\n .map((key) => key + '=' + params[key])\r\n .join('&')}`\r\n : '';\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport { Observable } from 'rxjs';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\n/* Adiciona os Headers necessários para funcionamento do site back-end */\r\n@Injectable({ providedIn: 'root' })\r\nexport class HttpClientService {\r\n private platformId = inject(PLATFORM_ID);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private http = inject(HttpClient);\r\n private deviceService = inject(DeviceDetectorService);\r\n\r\n get<T = any>(url: string): Observable<T> {\r\n const headers = this.getHeaders();\r\n return this.http.get<T>(url, { headers });\r\n }\r\n\r\n post<T = any>(url: string, data?: any): Observable<T> {\r\n const headers = this.getHeaders();\r\n return this.http.post<T>(url, data, { headers });\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n const baseHeaders = new HttpHeaders()\r\n .set('x-origin-application', this.libConfig.xOriginApplication)\r\n .set('x-origin-channel', this.getOriginChannel())\r\n .set('x-origin-device', this.getOriginDevice());\r\n\r\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\r\n return baseHeaders.append(\r\n 'authorization',\r\n 'Basic ' + Buffer.from(`${this.libConfig.siteApi.auth.user}:${this.libConfig.siteApi.auth.password}`).toString('base64'),\r\n );\r\n } else {\r\n return baseHeaders.append('client_id', this.libConfig.client_id);\r\n }\r\n }\r\n\r\n private getOriginChannel(): string {\r\n return this.deviceService.isDesktop() ? 'desktop' : 'mobile';\r\n }\r\n\r\n private getOriginDevice(): string {\r\n return `app-${this.deviceService.getDeviceInfo().os}`;\r\n }\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformServer } from '@angular/common';\r\nimport { Observable } from 'rxjs';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\nimport { toQueryParams } from '../../helpers/toQueryParams.func';\r\nimport { HttpClientService } from '../http-client/http-client.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SiteBackendService {\r\n private httpClientService = inject(HttpClientService);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n siteApiUrl: string;\r\n\r\n constructor() {\r\n this.siteApiUrl = this.getApiUrl();\r\n }\r\n\r\n private getApiUrl(): string {\r\n if (isPlatformServer(this.platformId) && this.libConfig.server) {\r\n return this.libConfig.siteApi.baseInternal;\r\n }\r\n return this.libConfig.siteApi.base;\r\n }\r\n\r\n /**\r\n * GET para qualquer endpoint do back-end do site.\r\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\r\n * @param params - Parâmetros opcionais para a requisição.\r\n * @returns Observable que emite os dados retornados pelo back-end.\r\n */\r\n get<T = any>(path: string, params?: any): Observable<T> {\r\n return this.httpClientService.get<T>(`${this.siteApiUrl}${path}${toQueryParams(params)}`);\r\n }\r\n\r\n /**\r\n * POST para qualquer endpoint do back-end do site.\r\n * @param path - O caminho do recurso. (Inicia sem '/'. Ex: 'unidades/wp')\r\n * @param params - Parâmetros opcionais para a requisição.\r\n * @returns Observable que emite os dados retornados pelo back-end.\r\n */\r\n post<T = any>(path: string, params?: any): Observable<T> {\r\n return this.httpClientService.post<T>(`${this.siteApiUrl}${path}`, params);\r\n }\r\n}\r\n","import { inject, Injectable, PLATFORM_ID } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Observable, catchError, throwError } from 'rxjs';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { LogService } from '../services/log/log.service';\r\nimport { SiteBackendService } from '../services/site-back-end/site-back-end.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n private logService = inject(LogService);\r\n private siteBackendService = inject(SiteBackendService);\r\n private platformId = inject(PLATFORM_ID);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(req).pipe(\r\n catchError((error) => {\r\n this.logService.logMsg(`REQUEST ERROR => ${req.method} ${req.url}`, 'ERROR_INTERCEPTOR');\r\n\r\n if (isPlatformBrowser(this.platformId) && !req.url.includes('/log/error')) {\r\n const errorMessage = typeof error === 'string' ? error : error instanceof Error ? error.message : JSON.stringify(error);\r\n\r\n this.siteBackendService\r\n .post('log/error', {\r\n error: errorMessage,\r\n origin: window.location.href,\r\n url: req.urlWithParams,\r\n })\r\n .subscribe();\r\n }\r\n\r\n return throwError(() => error);\r\n }),\r\n );\r\n }\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap } from 'rxjs';\r\nimport { differenceInMilliseconds } from 'date-fns';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { LogService } from '../services/log/log.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LogInterceptor implements HttpInterceptor {\r\n private logService = inject(LogService);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const requestId = uuidv4();\r\n const startTime = Date.now();\r\n this.logService.logMsg(`REQUEST ${requestId} => ${req.method} ${req.url}`, 'INTERCEPTOR');\r\n\r\n return next.handle(req).pipe(\r\n tap((response) => {\r\n const res = response as HttpResponse<any>;\r\n if (res?.status) {\r\n const elapsedTime = differenceInMilliseconds(Date.now(), startTime);\r\n this.logService.logMsg(\r\n `RESPONSE ${requestId} => ${req.method} ${req.url} | Duração: ${elapsedTime}ms | Status: ${res.status} - ${res.statusText} | Body: ${!!res.body}`,\r\n 'INTERCEPTOR',\r\n );\r\n }\r\n }),\r\n );\r\n }\r\n}\r\n","import { inject, Injectable, PLATFORM_ID, TransferState, makeStateKey, StateKey } from '@angular/core';\r\nimport { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Observable, tap, of } from 'rxjs';\r\nimport { isPlatformServer, isPlatformBrowser } from '@angular/common';\r\nimport { LIB_CONFIG } from '../tokens/LibConfig';\r\nimport { djb2Hash } from '../helpers/djb2Hash.func';\r\n\r\n/**\r\n * Cria uma chave numérica única para o cache\r\n * Gera um hash baseado em método + URL + parâmetros\r\n */\r\nfunction createCacheKey(req: HttpRequest<any>, url: string): string {\r\n const method = req.method;\r\n const params = req.params.toString();\r\n\r\n // Combina método, URL e parâmetros\r\n const keyString = [method, url, params].filter((part) => part.length > 0).join('::');\r\n\r\n // Gera hash numérico único\r\n const hashNumber = djb2Hash(keyString);\r\n\r\n return hashNumber.toString();\r\n}\r\n\r\n/**\r\n * Cria StateKey para o TransferState\r\n */\r\nfunction getTransferStateKey(req: HttpRequest<any>, url: string): StateKey<any> {\r\n const cacheKey = createCacheKey(req, url);\r\n return makeStateKey<any>(cacheKey);\r\n}\r\n\r\n/**\r\n * Interceptor para resolver o problema de TransferState com urls diferentes\r\n * \r\n * Problema: O SiteBackendService usa urls diferentes no server (baseInternal) e no client (base), fazendo com que o TransferState nativo do Angular não funcione corretamente.\r\n * \r\n * Solução:\r\n * - Server: Usa url interna, mas salva no TransferState baseado na url externa\r\n * - Client: Verifica TransferState usando url externa antes de fazer alguma requisição\r\n * \r\n * Dessa forma é possivel fazer o uso do TransferState mesmo com urls diferentes (\"baseInternal\" no server e \"base\" no client).\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TransferStateUrlInterceptor implements HttpInterceptor {\r\n private platformId = inject(PLATFORM_ID);\r\n private transferState = inject(TransferState);\r\n private libConfig = inject(LIB_CONFIG);\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (isPlatformServer(this.platformId)) {\r\n return this.handleServerRequest(req, next);\r\n } else if (isPlatformBrowser(this.platformId)) {\r\n return this.handleClientRequest(req, next);\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n\r\n /**\r\n * Filtra headers da resposta baseado na configuração no LibConfig\r\n */\r\n private filterHeaders(responseHeaders: any): Record<string, string> {\r\n const includeHeaders = this.libConfig.transferState?.includeHeaders;\r\n \r\n // Se não há configuração, não salva nenhum header\r\n if (!includeHeaders || includeHeaders.length === 0) {\r\n return {};\r\n }\r\n \r\n // Filtra apenas os headers configurados\r\n const filteredHeaders: Record<string, string> = {};\r\n includeHeaders.forEach(headerName => {\r\n const headerValue = responseHeaders.get(headerName.toLowerCase());\r\n if (headerValue) {\r\n filteredHeaders[headerName.toLowerCase()] = headerValue;\r\n }\r\n });\r\n \r\n return filteredHeaders;\r\n }\r\n\r\n private handleServerRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const siteApi = this.libConfig.siteApi;\r\n\r\n // Para urls internas\r\n if (req.url.startsWith(siteApi.baseInternal)) {\r\n const externalUrl = req.url.replace(siteApi.baseInternal, siteApi.base);\r\n const stateKey = getTransferStateKey(req, externalUrl);\r\n\r\n return next.handle(req).pipe(\r\n tap((event) => {\r\n if (event instanceof HttpResponse) {\r\n\r\n const filteredHeaders = this.filterHeaders(event.headers);\r\n \r\n // Salva no TransferState baseado na url externa\r\n this.transferState.set(stateKey, {\r\n body: event.body,\r\n status: event.status,\r\n statusText: event.statusText,\r\n headers: filteredHeaders,\r\n });\r\n }\r\n }),\r\n );\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n\r\n private handleClientRequest(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n const siteApi = this.libConfig.siteApi;\r\n\r\n // Para urls externas\r\n if (req.url.startsWith(siteApi.base)) {\r\n const stateKey = getTransferStateKey(req, req.url);\r\n const cachedResponse = this.transferState.get(stateKey, null);\r\n\r\n if (cachedResponse) {\r\n this.transferState.remove(stateKey);\r\n\r\n // Retorna resposta do TransferState\r\n return of(\r\n new HttpResponse({\r\n body: cachedResponse.body,\r\n status: cachedResponse.status,\r\n statusText: cachedResponse.statusText,\r\n headers: cachedResponse.headers,\r\n }),\r\n );\r\n }\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n}\r\n","export enum EnumDoencaTaxonomy {\r\n DOENCAS_CAT = 'doencas_cat',\r\n DOENCAS_TAG = 'doencas_tag',\r\n}\r\n\r\nexport enum EnumDoencaTaxonomyCat {\r\n DOENCA = 'doencas',\r\n SINTOMA = 'sintomas',\r\n}\r\n\r\nexport interface DoencaTaxonomy {\r\n id: number;\r\n name: string;\r\n slug: string;\r\n taxonomy: EnumDoencaTaxonomy;\r\n}\r\n\r\nexport interface TaxonomiasDoencasList {\r\n doencas_cat: DoencaTaxonomy[];\r\n doencas_tag: DoencaTaxonomy[];\r\n}\r\n","import { TemplateRef } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { FilterOption, FilterSectionBase } from './filter-planos-convenios.model';\r\nimport { FilterControl } from './filter-section.type';\r\n\r\nexport enum FilterType {\r\n INPUT = 'input',\r\n SELECT = 'select',\r\n CHECKBOX_GROUP = 'checkbox-group',\r\n RADIO_GROUP = 'radio-group',\r\n CUSTOM = 'custom',\r\n}\r\n\r\n// Input\r\nexport interface InputFilterConfig {\r\n name: string;\r\n placeholder?: string;\r\n iconName?: string;\r\n control: FilterControl;\r\n options?: FilterOption[];\r\n}\r\n\r\n// Select\r\nexport interface SelectFilterConfig {\r\n name: string;\r\n label?: string;\r\n placeholder?: string;\r\n includeDefaultOption?: boolean;\r\n defaultOptionText?: string;\r\n control: FilterControl;\r\n options?: FilterOption[];\r\n}\r\n\r\n// Checkbox Group\r\nexport interface CheckboxGroupFilterConfig {\r\n name: string;\r\n title?: string;\r\n subtitle?: string;\r\n description?: string;\r\n control: FormControl<any[]>;\r\n options: FilterOption[];\r\n}\r\n\r\n// Radio Group\r\nexport interface RadioGroupFilterConfig {\r\n name: string;\r\n title?: string;\r\n control: FilterControl;\r\n options: FilterOption[];\r\n}\r\n\r\n// Custom\r\nexport interface CustomFilterConfig {\r\n template: TemplateRef<any>;\r\n control?: any;\r\n context?: any;\r\n options?: FilterOption[];\r\n count?: number;\r\n}\r\n\r\n// Interfaces completas por tipo\r\nexport interface InputFilterSection extends FilterSectionBase<FilterType.INPUT, InputFilterConfig> {}\r\nexport interface SelectFilterSection extends FilterSectionBase<FilterType.SELECT, SelectFilterConfig> {}\r\nexport interface CheckboxGroupFilterSection extends FilterSectionBase<FilterType.CHECKBOX_GROUP, CheckboxGroupFilterConfig> {}\r\nexport interface RadioGroupFilterSection extends FilterSectionBase<FilterType.RADIO_GROUP, RadioGroupFilterConfig> {}\r\nexport interface CustomFilterSection extends FilterSectionBase<FilterType.CUSTOM, CustomFilterConfig> {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { CtaWrapper } from '../../models/cta-wrapper.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ErrorService {\r\n ctas = new BehaviorSubject<CtaWrapper>({});\r\n}\r\n","import { Injectable, PLATFORM_ID, inject } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { LogService } from '../log/log.service';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\nexport interface MapBoxGeocodingParams {\r\n autocomplete?: boolean;\r\n bbox?: string; // minLon, minLat, maxLon, maxLat\r\n country?: string; // country codes separated by commas\r\n fuzzyMatch?: boolean;\r\n language?: string;\r\n limit?: number; // default: 5, max: 10\r\n proximity?: string; // longitude, latitude\r\n routing?: boolean;\r\n // Types can be comma separated\r\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\r\n [propName: string]: any;\r\n}\r\n\r\nexport interface MapBoxReverseGeocodingParams {\r\n country?: string; // country codes separated by commas\r\n language?: string;\r\n limit?: number; // default: 5, max: 10\r\n reverseMode?: 'distance' | 'score';\r\n routing?: boolean;\r\n // Types can be comma separated\r\n types?: string; // \"country\" | \"region\" | \"postcode\" | \"district\" | \"place\" | \"locality\" | \"neighborhood\" | \"address\" | \"poi\"\r\n [propName: string]: any;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapBoxService {\r\n private readonly http = inject(HttpClient);\r\n private readonly logService = inject(LogService);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n\r\n private mapboxAccessToken = this.libConfig.mapboxAccessToken;\r\n private mapboxSSRAccessToken = this.libConfig.mapboxSSRAccessToken;\r\n private mapboxApiUrl = 'https://api.mapbox.com';\r\n private geocodingEp = 'search/geocode/v6';\r\n\r\n /**\r\n * Busca geocalizada por nome do local.\r\n * Ex.: barra da tijuca, rio de janeiro - rio de janeiro, brasil\r\n * @param query nome de local para a busca\r\n * @param params parâmetros opcionais de busca e filtro\r\n */\r\n forwardGeocoding(query: string, params: MapBoxGeocodingParams = {}, logContext?: string): Observable<any> {\r\n this.logMapbox('forwardGeocoding', logContext);\r\n if (query.length >= 256) {\r\n return throwError(() => 'Query length exceeds 255 characters.');\r\n }\r\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/forward?q=${query}`;\r\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\r\n return this.http.get(url, { params, headers: this.getHeaders() });\r\n }\r\n\r\n /**\r\n * Busca local por longitude e latitude\r\n * @param lng formato longitude\r\n * @param lat formato latitude\r\n * @param params parâmetros opcionais de busca e filtro\r\n */\r\n reverseGeocoding(lng: string, lat: string, params: MapBoxReverseGeocodingParams = {}, logContext?: string): Observable<any> {\r\n this.logMapbox('reverseGeocoding', logContext);\r\n const url = `${this.mapboxApiUrl}/${this.geocodingEp}/reverse?longitude=${lng}&latitude=${lat}`;\r\n params['access_token'] = isPlatformBrowser(this.platformId) ? this.mapboxAccessToken : this.mapboxSSRAccessToken;\r\n return this.http.get(url, { params });\r\n }\r\n\r\n private logMapbox(callerFunction: string, context = 'no-context') {\r\n const platform = isPlatformServer(this.platformId) ? 'server' : 'browser';\r\n this.logService.logMsg(`${platform} - ${callerFunction} - ${context}`, 'MAPBOX');\r\n }\r\n\r\n private getHeaders(): HttpHeaders {\r\n return new HttpHeaders().set('Referrer-Policy', 'origin');\r\n }\r\n}\r\n","import { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\r\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { BehaviorSubject, map, Observable } from 'rxjs';\r\nimport { MapBoxReverseGeocodingParams, MapBoxService } from '../mapbox/mapbox.service';\r\nimport { LogService } from '../log/log.service';\r\nimport { checkSafariAgent } from '../../helpers/check-safari-agent.func';\r\nimport { getCircularReplacer } from '../../helpers/getCircularReplacer.func';\r\n\r\nexport enum GeolocationPermissions {\r\n GRANTED = 'granted',\r\n PROMPT = 'prompt',\r\n DENIED = 'denied',\r\n}\r\n\r\nexport interface Geolocation {\r\n lat: number;\r\n lng: number;\r\n}\r\n\r\nexport interface Address {\r\n city: string;\r\n state: {\r\n name: string;\r\n shortCode: string;\r\n };\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GeolocService {\r\n private readonly document = inject<Document>(DOCUMENT);\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private mapboxService = inject(MapBoxService);\r\n private readonly logService = inject(LogService);\r\n\r\n private _mapboxGeocodingParams: MapBoxReverseGeocodingParams = {\r\n types: 'place',\r\n limit: 1,\r\n language: 'pt-BR',\r\n country: 'BR',\r\n };\r\n\r\n private _hasConsent = false;\r\n private _switchStatus = false;\r\n public get switchStatus(): boolean {\r\n return this._switchStatus;\r\n }\r\n private _address: Address | null = null;\r\n public get address(): Address | null {\r\n return this._address;\r\n }\r\n\r\n private _permission: PermissionState = GeolocationPermissions.PROMPT;\r\n public get permission(): PermissionState {\r\n return this._permission;\r\n }\r\n\r\n public geolocation: BehaviorSubject<Geolocation | null> = new BehaviorSubject<Geolocation | null>(null);\r\n public isChecked: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); // Emite true quando o geoloc está estável\r\n\r\n private _isSafariAgent: boolean = false;\r\n private _disableSwitch = false;\r\n public get disableSwitch(): boolean {\r\n return this._disableSwitch;\r\n }\r\n\r\n constructor() {\r\n if (isPlatformServer(this.platformId)) {\r\n this.isChecked.next(true);\r\n return;\r\n }\r\n\r\n this._isSafariAgent = checkSafariAgent();\r\n if (this._isSafariAgent) {\r\n this._hasConsent = this.checkACookieExists('geolocation_consent');\r\n this.initGeolocation(this._hasConsent);\r\n return;\r\n }\r\n\r\n navigator?.permissions\r\n ?.query({ name: 'geolocation' })\r\n .then((permission) => {\r\n this._permission = permission.state;\r\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\r\n\r\n permission.onchange = () => {\r\n this._permission = permission.state;\r\n this.initGeolocation(this._permission === GeolocationPermissions.GRANTED);\r\n };\r\n })\r\n .catch((error) => {\r\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\r\n this._permission = GeolocationPermissions.DENIED;\r\n this._disableSwitch = true;\r\n this.initGeolocation(false);\r\n });\r\n }\r\n\r\n initGeolocation(geolocAllowed = false): void {\r\n this._switchStatus = true;\r\n if (geolocAllowed) {\r\n this.getCurrentPosition().subscribe({\r\n next: (position) => {\r\n this._disableSwitch = false;\r\n this.setGeolocation(position);\r\n this.setConsentCookie(true, 3650);\r\n this._hasConsent = true;\r\n this._permission = GeolocationPermissions.GRANTED;\r\n },\r\n error: () => {\r\n if (this._permission === GeolocationPermissions.DENIED) {\r\n this._disableSwitch = true;\r\n this.setConsentCookie(false, 15);\r\n }\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._hasConsent = false;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n },\r\n });\r\n } else {\r\n if (this.permission === GeolocationPermissions.DENIED) {\r\n this._disableSwitch = true;\r\n this.setConsentCookie(false, 15);\r\n }\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._hasConsent = false;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n }\r\n }\r\n\r\n private getCurrentPosition(): Observable<GeolocationPosition> {\r\n return new Observable((observer) => {\r\n navigator.geolocation.getCurrentPosition(\r\n (position) => {\r\n observer.next(position);\r\n observer.complete();\r\n },\r\n (error) => observer.error(error),\r\n { enableHighAccuracy: true },\r\n );\r\n });\r\n }\r\n\r\n private setGeolocation(position: GeolocationPosition): void {\r\n if (position) {\r\n if (position.coords.latitude === this.geolocation.value?.lat && position.coords.longitude === this.geolocation.value?.lng) return;\r\n\r\n this.geolocation.next({\r\n lat: position.coords.latitude,\r\n lng: position.coords.longitude,\r\n });\r\n\r\n this.getMapboxAdress()\r\n .pipe(\r\n map((response) => {\r\n const city = response?.features[0]?.properties?.name;\r\n const state = {\r\n name: response?.features[0]?.properties?.context?.region?.name,\r\n shortCode: response?.features[0]?.properties?.context?.region?.region_code,\r\n };\r\n return { city, state };\r\n }),\r\n )\r\n .subscribe({\r\n next: (response) => {\r\n this._address = response;\r\n this._switchStatus = true;\r\n this.isChecked.next(true);\r\n },\r\n error: (error) => {\r\n this.logService.logMsg(JSON.stringify(error, getCircularReplacer()), 'ERROR');\r\n this._switchStatus = false;\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this.isChecked.next(true);\r\n },\r\n });\r\n } else {\r\n this.geolocation.next(null);\r\n this._address = null;\r\n this._switchStatus = false;\r\n this.isChecked.next(true);\r\n }\r\n }\r\n\r\n private getMapboxAdress(): Observable<any> {\r\n const lng = `${this.geolocation.value?.lng}`;\r\n const lat = `${this.geolocation.value?.lat}`;\r\n return this.mapboxService.reverseGeocoding(lng, lat, this._mapboxGeocodingParams, 'geolocalizacao.service getMapboxAdress');\r\n }\r\n\r\n checkACookieExists(name: string): boolean {\r\n if (isPlatformServer(this.platformId) || typeof this.document === 'undefined' || !this.document?.cookie) {\r\n return false;\r\n }\r\n return this.document.cookie\r\n .split(';')\r\n .map((item) => item.trim())\r\n .some((item) => item.trim().startsWith(name));\r\n }\r\n\r\n private setConsentCookie(status: boolean, days: number): void {\r\n if (this.getCookieValue('geolocation_consent') !== status.toString()) {\r\n const lifetime = new Date(Date.now() + days * 86400000).toUTCString();\r\n this.document.cookie = `geolocation_consent=${status}; path=/; expires=${lifetime}; SameSite=None; Secure`;\r\n }\r\n }\r\n\r\n private getCookieValue(prop: string): string {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const value = this.document.cookie\r\n .split(';')\r\n .map((item) => item.trim())\r\n .find((item) => item.startsWith(`${prop}=`));\r\n\r\n return value ? value.slice(prop.length + 1) : '';\r\n }\r\n return '';\r\n }\r\n}\r\n","import { ElementRef, Injectable, ModelSignal, signal } from '@angular/core';\r\nimport { RdsiteModalDrawerComponentStyle } from '../../enums/RdsiteModalDrawerComponentStyle.enum';\r\nimport { executeWithRetry } from '../../helpers/executeWithRetry.func';\r\n\r\nexport abstract class AbstractModalDrawerComponent {\r\n abstract sheet: HTMLElement;\r\n abstract sheetContents: HTMLElement;\r\n abstract draggableArea: HTMLElement;\r\n abstract sheetHeight: number;\r\n abstract dragPosition: number;\r\n abstract maxHeight: number;\r\n abstract closeHeight: number;\r\n abstract rdsiteModalComponentStyle: any;\r\n abstract id: ModelSignal<string>;\r\n abstract modalContent: ModelSignal<ElementRef>;\r\n abstract componentStyle: ModelSignal<any>;\r\n abstract modal: HTMLDialogElement;\r\n abstract setSheetHeight(value: number): void;\r\n abstract setIsSheetShown(isShown: boolean): void;\r\n abstract openSheet(): void;\r\n abstract closeSheet(): void;\r\n abstract touchPosition(event: any): void;\r\n abstract onDragStart(event: any): void;\r\n abstract onDragMove(event: any): void;\r\n abstract onDragEnd(): void;\r\n abstract reset(): void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ModalDrawerService {\r\n reference: AbstractModalDrawerComponent | null = null;\r\n\r\n firstInteraction = signal(false);\r\n maxTries = 10;\r\n delay = 200;\r\n\r\n open() {\r\n this.firstInteraction.set(true);\r\n executeWithRetry(\r\n () => {\r\n this.reference?.openSheet();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setReference(element: AbstractModalDrawerComponent) {\r\n this.reference = element;\r\n }\r\n\r\n setContent(content: ElementRef) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.modalContent.set(content);\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setStyle(style: RdsiteModalDrawerComponentStyle) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.componentStyle.set(style);\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n setHeight(value: number) {\r\n executeWithRetry(\r\n () => {\r\n if (this.reference) {\r\n this.reference.maxHeight = value;\r\n }\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n\r\n close() {\r\n executeWithRetry(\r\n () => {\r\n this.reference?.closeSheet();\r\n },\r\n () => !!this.reference,\r\n this.maxTries,\r\n this.delay,\r\n );\r\n }\r\n}\r\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common';\r\nimport { Injectable, PLATFORM_ID, DOCUMENT, inject } from '@angular/core';\r\nimport { PrivacyToolsConfigOptions, PrivacyToolsCookieBanner } from '../../models/privacy-tools/privacy-tools.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PrivacyToolsService {\r\n document = inject<Document>(DOCUMENT);\r\n platformId = inject(PLATFORM_ID);\r\n\r\n cookieBannerScriptId = 'PrivacyToolsScript';\r\n cookieBannerStyleId = 'PrivacyToolsStyle';\r\n cookieBannerScriptElement: HTMLScriptElement | null = null;\r\n configOptions: PrivacyToolsConfigOptions = {};\r\n cookieConsent: any = null;\r\n\r\n /* Config */\r\n public config(options: PrivacyToolsConfigOptions) {\r\n this.configOptions = options;\r\n }\r\n\r\n /* Setup cookie Banner */\r\n public setupCookieBanner(unidadeBasePath: string) {\r\n if (isPlatformBrowser(this.platformId)) {\r\n const banner = this.configOptions?.cookieBanners?.find((banner) => banner.basePath.includes(unidadeBasePath));\r\n\r\n if (banner) {\r\n this.addCookieBanner(banner);\r\n }\r\n }\r\n }\r\n\r\n public openCookieBanner() {\r\n if (this.cookieConsent && this.cookieBannerScriptElement) {\r\n this.cookieConsent.privacyToolsShowCookieNotice();\r\n }\r\n }\r\n\r\n /* Add cookie banner style and script */\r\n private addCookieBanner(banner: PrivacyToolsCookieBanner) {\r\n this.cookieBannerScriptElement = null;\r\n this.addCookieBannerStyle(banner.styleSrc);\r\n this.addCookieBannerScript(banner.scriptSrc);\r\n }\r\n\r\n /* Add cookie banner style. */\r\n public addCookieBannerStyle(src: string) {\r\n if (isPlatformServer(this.platformId)) return;\r\n\r\n this.document.getElementById('byRemovePortal')?.remove();\r\n\r\n const oldStyle = this.document.getElementById(this.cookieBannerStyleId);\r\n\r\n if (oldStyle) {\r\n oldStyle.remove();\r\n }\r\n\r\n const style = this.document.createElement('link');\r\n style.id = this.cookieBannerStyleId;\r\n style.rel = 'stylesheet';\r\n style.type = 'text/css';\r\n style.href = src;\r\n style.media = 'none';\r\n\r\n style.addEventListener('load', () => {\r\n style.media = 'all';\r\n });\r\n\r\n this.document.body.appendChild(style);\r\n }\r\n\r\n /* Add cookie banner script. */\r\n public addCookieBannerScript(src: string) {\r\n if (isPlatformServer(this.platformId) || typeof window === 'undefined') return;\r\n\r\n (window as any)['cookieconsent'] = null;\r\n\r\n const oldScript = this.document.getElementById(this.cookieBannerScriptId);\r\n\r\n if (oldScript) {\r\n oldScript.remove();\r\n }\r\n const script = this.document.createElement('script');\r\n script.id = this.cookieBannerScriptId;\r\n script.src = src;\r\n\r\n script.addEventListener('load', () => {\r\n this.cookieBannerScriptElement = script;\r\n this.cookieConsent = (window as any)['cookieconsent'];\r\n (window as any)['portalBanner']?.call();\r\n });\r\n\r\n this.document.body.appendChild(script);\r\n }\r\n}\r\n","import { Injectable, DOCUMENT, inject } from '@angular/core';\r\nimport { Meta, Title } from '@angular/platform-browser';\r\nimport { Location } from '@angular/common';\r\n\r\nimport * as he from 'he';\r\n\r\nimport { SocialMetaProperties } from '../../models/social-meta-properties.model';\r\nimport { BreadcrumbsItems } from '../../models/breadcrumbs/breadcrumbs-items.model';\r\nimport { BreadcrumbsJsonItem } from '../../models/breadcrumbs/breadcrumbs-json-item.model';\r\nimport { SeoData } from '../../models/seo/seo-data.model';\r\nimport { SeoUnidade } from '../../models/seo/seo-unidade.model';\r\nimport { WpPost } from '../../models/wordpress/post/post.model';\r\nimport { getSiteUrl } from '../../helpers/getSiteUrl.func';\r\nimport { removeHtmlTags } from '../../helpers/removeHtmlTags.func';\r\nimport { LIB_CONFIG, LibConfig } from '../../tokens/LibConfig';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SeoService {\r\n private title = inject(Title);\r\n private meta = inject(Meta);\r\n private location = inject(Location);\r\n private libConfig = inject<LibConfig>(LIB_CONFIG);\r\n private document = inject<Document>(DOCUMENT);\r\n\r\n public separator = ' - ';\r\n public defaultTitle = 'Rede D’Or';\r\n public activeDescription!: string;\r\n public sameAs = [\r\n 'https://www.facebook.com/rededor/',\r\n 'https://www.instagram.com/rededor_oficial/',\r\n 'https://www.linkedin.com/company/rededor-saoluiz',\r\n 'https://twitter.com/rededor',\r\n ];\r\n public twitterUser = '@rededor';\r\n\r\n private canonicalTag!: HTMLLinkElement;\r\n private jsonTag!: HTMLScriptElement;\r\n private jsonTagId = 'seoJSON';\r\n private breadcrumbsJsonTag!: HTMLScriptElement;\r\n private breadcrumbsJsonTagId = 'breadcrumbsJSON';\r\n\r\n public unidade: any = null;\r\n public unidadeName: string = '';\r\n public unidadePath: string = '';\r\n public unidadeSlug: string = '';\r\n\r\n public customJsonType: any[] = [];\r\n\r\n public setFullSeo(data: SeoData) {\r\n this.setTitle(data.title.text, !!data.title.sub);\r\n this.setDescription(data.description);\r\n this.setCanonicalHref(data.canonical);\r\n this.setPageJson();\r\n this.setSocialTags(data.socialTags);\r\n }\r\n\r\n /**\r\n * Define tag description da página\r\n * @param content conteúdo da descrição <string>\r\n */\r\n public setDescription(content: string): SeoService {\r\n const descTag = this.meta.getTag(\"name='description'\");\r\n if (content) {\r\n content = he.decode(content);\r\n content = removeHtmlTags(content);\r\n } else {\r\n content = '';\r\n }\r\n this.activeDescription = content;\r\n const tagContent = { name: 'description', content };\r\n if (descTag) {\r\n this.meta.updateTag(tagContent);\r\n } else {\r\n this.meta.addTag(tagContent);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Define meta tags para a página\r\n * @param tag nome da tag meta\r\n * @param content conteúdo da tag meta\r\n * @param type tipo de tag meta\r\n */\r\n public setMetaTag(tag: string, content: string, type = 'name') {\r\n const metatag = this.meta.getTag(`${type}='${tag}'`);\r\n content = he.decode(content);\r\n content = removeHtmlTags(content);\r\n const tagContent = {\r\n [type]: tag,\r\n content,\r\n };\r\n if (!metatag) {\r\n this.meta.addTag(tagContent);\r\n } else {\r\n this.meta.updateTag(tagContent);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove meta tags da página\r\n * @param tag nome da tag meta\r\n * @param content conteúdo da tag meta\r\n * @param attr atributo da tag meta\r\n * @param type tipo de tag meta\r\n */\r\n public removeTag(tag: string, content: string, attr: string, type = 'name') {\r\n const metatag = this.meta.getTag(`${type}='${tag}'`);\r\n if (metatag) {\r\n this.meta.removeTag(`${attr}=${content}`);\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Define meta tags para Facebook\r\n * @param title título para o facebook\r\n * @param description descrição para o facebook\r\n * @param url url para definição do facebook\r\n * @param img imagem para definição no facebook\r\n */\r\n public setMetaFacebook(title: string, description: string, url: string, img: string | null = null) {\r\n this.setMetaTag('og:url', url, 'property');\r\n this.setMetaTag('og:title', title, 'property');\r\n this.setMetaTag('og:description', description, 'property');\r\n this.setMetaTag('og:type', 'website', 'property');\r\n this.setMetaTag('og:image', img ?? '', 'property');\r\n }\r\n\r\n /**\r\n * Define meta tags para Twitter\r\n * @param title título para o twitter\r\n * @param description descrição para o twitter\r\n * @param url url para o twitter\r\n * @param img imagem para definição no twitter\r\n */\r\n public setMetaTwitter(title: string, description: string, url: string, img: string | null = null) {\r\n this.setMetaTag('twitter:site', url, 'name');\r\n this.setMetaTag('twitter:title', title, 'name');\r\n this.setMetaTag('twitter:description', description, 'name');\r\n this.setMetaTag('twitter:image', img ?? '', 'name');\r\n }\r\n\r\n /**\r\n * Define tags de redes sociais (Twitter e Open Graph)\r\n * @param properties\r\n */\r\n setSocialTags(properties?: SocialMetaProperties) {\r\n const pagePath = this.location.path();\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n let defaultProperties: SocialMetaProperties = {\r\n twitterCard: 'summary',\r\n twitterSite: this.twitterUser,\r\n type: 'website',\r\n title: this.getTitle(),\r\n description: this.activeDescription || '',\r\n url: `${siteurl}${pagePath}`,\r\n image: this.libConfig?.logoPath ? `${siteurl}${this.libConfig.logoPath}` : 'https://www.rededorsaoluiz.com.br/assets/imgs/logo-rededor-blue.png',\r\n };\r\n if (properties) {\r\n defaultProperties = { ...defaultProperties, ...properties };\r\n }\r\n this.setMetaTag('twitter:card', defaultProperties.twitterCard || '', 'name')\r\n .setMetaTag('twitter:site', defaultProperties.twitterSite || '', 'name')\r\n .setMetaTag('og:type', defaultProperties.type || '', 'property')\r\n .setMetaTag('og:title', defaultProperties.title || '', 'property')\r\n .setMetaTag('og:description', defaultProperties.description || '', 'property')\r\n .setMetaTag('og:url', defaultProperties.url || '', 'property')\r\n .setMetaTag('og:image', defaultProperties.image || '', 'property');\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Define título da página\r\n * @param title título da página <string>\r\n * @param sub Se é subsite acrescenta unidade <boolean>\r\n */\r\n public setTitle(title: string, sub = false) {\r\n if (title && title !== '') {\r\n title = he.decode(title);\r\n title = removeHtmlTags(title);\r\n if (sub) {\r\n title = he.decode(`${title}${this.separator}${this.unidadeName}`);\r\n }\r\n this.title.setTitle(title);\r\n }\r\n return this;\r\n }\r\n\r\n /** Obtem título atual da página */\r\n public getTitle(): string {\r\n return this.title.getTitle();\r\n }\r\n\r\n public set404Title(component: string = 'Default Component') {\r\n if (component && component !== '') {\r\n component = he.decode(component);\r\n component = removeHtmlTags(component);\r\n if (this.unidadeName) {\r\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\r\n }\r\n }\r\n const title = `Erro 404 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\r\n this.title.setTitle(title);\r\n return this;\r\n }\r\n\r\n public set500Title(component: string = 'Default Component') {\r\n if (component && component !== '') {\r\n component = he.decode(component);\r\n component = removeHtmlTags(component);\r\n if (this.unidadeName) {\r\n component = he.decode(`${component}${this.separator}${this.unidadeName}`);\r\n }\r\n }\r\n const title = `Erro 500 - ${component} - ${this.libConfig?.siteName} - ${this.location.path()}`;\r\n this.title.setTitle(title);\r\n return this;\r\n }\r\n\r\n /** Cria tag script para JSON de breadcrumbs */\r\n private createBreadcrumbsJSONTag(): HTMLScriptElement {\r\n const tag: HTMLScriptElement = this.document.createElement('script');\r\n tag.id = this.breadcrumbsJsonTagId;\r\n tag.type = 'application/ld+json';\r\n this.document.head.appendChild(tag);\r\n this.breadcrumbsJsonTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\r\n private getBreadcrumbsJSONTag(): HTMLScriptElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLScriptElement;\r\n if (elem && elem.id === this.breadcrumbsJsonTagId) {\r\n return elem;\r\n }\r\n }\r\n return this.createBreadcrumbsJSONTag();\r\n }\r\n\r\n /** Define o JSON de breadcrumbs da página */\r\n public setBreadcrumbsJson(items: BreadcrumbsItems[]) {\r\n this.breadcrumbsJsonTag = this.getBreadcrumbsJSONTag();\r\n const json = {\r\n '@context': 'http://schema.org',\r\n '@type': 'BreadcrumbList',\r\n itemListElement: this.getJsonBreadcrumbItems(items),\r\n };\r\n this.breadcrumbsJsonTag.innerHTML = JSON.stringify(json);\r\n return this;\r\n }\r\n\r\n /** Converte itens do breadcrumb em itens do JSON */\r\n private getJsonBreadcrumbItems(items: BreadcrumbsItems[]): BreadcrumbsJsonItem[] {\r\n const jsonItems = [\r\n {\r\n '@type': 'ListItem',\r\n position: 1,\r\n item: { '@id': this.getBreadcrumbItemUrl(['/']), name: he.encode('Página Inicial') },\r\n } as BreadcrumbsJsonItem,\r\n ];\r\n items.forEach((item, i) => {\r\n const jsonItem: BreadcrumbsJsonItem = {\r\n '@type': 'ListItem',\r\n position: i + 2,\r\n item: { '@id': this.getBreadcrumbItemUrl(item?.url || []), name: he.encode(item.label) },\r\n };\r\n jsonItems.push(jsonItem);\r\n });\r\n return jsonItems;\r\n }\r\n\r\n /**\r\n * Monta a url do item de breadcrumb proveniente do array de urls\r\n * ou do caminho da própria página, conforme caso do último item.\r\n */\r\n private getBreadcrumbItemUrl(url: string[]): string {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n if (!url || url.length <= 0) {\r\n const pagePath = this.location.path();\r\n return `${siteurl}${pagePath}`;\r\n }\r\n url = url.filter((u) => u !== this.unidadePath);\r\n const unidadePath = this.getUnidadePath();\r\n const fullPath = `${unidadePath}/${url.join('/').replace(/^\\/?/, '')}`;\r\n return `${siteurl}${fullPath}`.replace(/\\/$/, '');\r\n }\r\n\r\n /** Cria tag script para o JSON de SEO */\r\n private createJSONTag(): HTMLScriptElement {\r\n const tag: HTMLScriptElement = this.document.createElement('script');\r\n tag.id = this.jsonTagId;\r\n tag.type = 'application/ld+json';\r\n this.document.head.appendChild(tag);\r\n this.jsonTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para script json de breadcrumbs ou cria se não houver. */\r\n private getJSONTag(): HTMLScriptElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLScriptElement;\r\n if (elem && elem.id === this.jsonTagId) {\r\n return elem;\r\n }\r\n }\r\n return this.createJSONTag();\r\n }\r\n\r\n /** Define JSON para SEO somente quando no servidor */\r\n public setPageJson() {\r\n this.jsonTag = this.getJSONTag();\r\n\r\n const baseGraph = [this.getOrgJson(), this.getWebsiteJson(), this.getWebpageJson()];\r\n\r\n const extendedGraph = this.customJsonType.length ? [...baseGraph, ...this.customJsonType] : baseGraph;\r\n\r\n this.customJsonType = [];\r\n\r\n const json = {\r\n '@context': 'http://schema.org',\r\n '@graph': extendedGraph,\r\n };\r\n\r\n this.jsonTag.innerHTML = JSON.stringify(json);\r\n\r\n return this;\r\n }\r\n\r\n /** Obtem JSON da Organização */\r\n private getOrgJson() {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return {\r\n '@type': 'Organization',\r\n '@id': `${siteurl}#organization`,\r\n name: this.defaultTitle,\r\n keywords: this.libConfig?.keywords,\r\n url: `${siteurl}`,\r\n sameAs: this.sameAs,\r\n };\r\n }\r\n\r\n /** Obtem JSON do Website (portal, unidades, etc) */\r\n private getWebsiteJson() {\r\n const unidadePath = this.getUnidadePath();\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return {\r\n '@type': 'WebSite',\r\n '@id': `${siteurl}${unidadePath}#website`,\r\n url: `${siteurl}${unidadePath}`,\r\n name: this.unidadeName,\r\n keywords: this.libConfig?.keywords,\r\n };\r\n }\r\n\r\n /** Obtem Json da página */\r\n private getWebpageJson() {\r\n const unidadePath = this.getUnidadePath();\r\n const siteURL = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n const pagePath = `${siteURL}${this.location.path()}`;\r\n const desc = this.activeDescription ? this.activeDescription : '';\r\n return {\r\n '@type': 'WebPage',\r\n '@id': `${pagePath}#webpage`,\r\n url: pagePath,\r\n inLanguage: 'pt-BR',\r\n name: this.getTitle(),\r\n isPartOf: { '@id': `${siteURL}${unidadePath}#website` },\r\n about: { '@id': `${siteURL}#organization` },\r\n description: desc,\r\n };\r\n }\r\n\r\n private getUnidadePath() {\r\n let unidadePath = '';\r\n if (this.unidade && this.unidadePath) {\r\n unidadePath = this.unidade?.path === '/' ? '' : this.unidadePath?.substring(0, this.unidadePath?.length - 1);\r\n }\r\n return unidadePath;\r\n }\r\n\r\n /**\r\n * Obtém a URL canônica da página.\r\n * @returns A URL canônica da página.\r\n */\r\n public getCanonicalHref(): string {\r\n if (!this.canonicalTag) {\r\n this.canonicalTag = this.getCanonicalTag();\r\n }\r\n return this.canonicalTag.href;\r\n }\r\n\r\n /** Cria tag para links canonicals no head */\r\n private createCanonicalTag(): HTMLLinkElement {\r\n const tag = this.document.createElement('link');\r\n tag.setAttribute('rel', 'canonical');\r\n this.document.head.appendChild(tag);\r\n tag.setAttribute('href', this.document.URL);\r\n this.canonicalTag = tag;\r\n return tag;\r\n }\r\n\r\n /** Retorna tag para link canonical existe ou cria se não houver. */\r\n private getCanonicalTag(): HTMLLinkElement {\r\n const elements = this.document.head.children;\r\n let i: number;\r\n for (i = 0; i < elements.length; i++) {\r\n const elem = elements[i] as HTMLLinkElement;\r\n if (elem && elem.tagName === 'LINK' && elem.rel === 'canonical') {\r\n return elem;\r\n }\r\n }\r\n return this.createCanonicalTag();\r\n }\r\n\r\n /**\r\n * Define link canonical da página\r\n * @param url url canonical\r\n */\r\n public setCanonicalHref(url?: string) {\r\n if (!this.canonicalTag) {\r\n this.canonicalTag = this.getCanonicalTag();\r\n }\r\n\r\n let path = this.document.location.pathname;\r\n\r\n if (this.libConfig?.siteSufix && path.includes(this.libConfig?.siteSufix)) {\r\n path = path.replace(this.libConfig?.siteSufix, '');\r\n }\r\n\r\n if (!path.startsWith('/')) {\r\n path = `/${path}`;\r\n }\r\n\r\n const canonicalUrl = url && this.isCustomCanonical(url) ? url : `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${path}`;\r\n\r\n this.canonicalTag.setAttribute('href', canonicalUrl);\r\n return this;\r\n }\r\n\r\n /**\r\n * Verifica se a URL fornecida é um link canonical personalizado\r\n * @param url URL fornecida\r\n */\r\n public isCustomCanonical(url: string): boolean {\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n return url.startsWith(siteurl);\r\n }\r\n\r\n /**\r\n * Obtém uma url válida na aplicação proveniente de uma URL gerada\r\n * pelo plugin Yoast para canonical automático.\r\n * Ex.: https://wp.rededorsaoluiz.com.br/brasil/especialidades/cardiologia/\r\n * @param urlFromWpApi URL canonica gerada pelo Yoast Plugin.\r\n */\r\n toLocalCanonical(urlFromWpApi: string): string {\r\n const apiUrl = this.libConfig?.wpUrl ?? '';\r\n const siteurl = getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix);\r\n const unidadeSlug = this.unidadeSlug;\r\n let converted = urlFromWpApi.replace(apiUrl, siteurl);\r\n if (unidadeSlug !== '/' && converted.includes(`/${unidadeSlug}/`)) {\r\n converted = converted.replace(`/${unidadeSlug}/`, `${this.unidadePath}`);\r\n }\r\n return converted;\r\n }\r\n\r\n getPostContent(post: WpPost): string {\r\n const content = post?.acf?.['rdsl_post_content'] ? post?.acf?.rdsl_post_content?.find((content: any) => content.acf_fc_layout === 'text_html') : null;\r\n return content?.content || post.content.rendered || '';\r\n }\r\n\r\n addArticleScript(post: WpPost, scriptName: string): void {\r\n const postContent = this.getPostContent(post);\r\n const postHeaderImage = post?.acf?.['rdsl_post_header_img']\r\n ? {\r\n url: post?.acf?.['rdsl_post_header_img'].url,\r\n width: post?.acf?.['rdsl_post_header_img'].width,\r\n height: post?.acf?.['rdsl_post_header_img'].height,\r\n }\r\n : null;\r\n\r\n const structuredData = {\r\n '@context': 'https://schema.org',\r\n '@type': 'Article',\r\n mainEntityOfPage: `${getSiteUrl(this.libConfig?.siteUrl, this.libConfig?.siteSufix)}${this.location.path()}`,\r\n headline: post.title?.rendered,\r\n datePublished: post.date_gmt,\r\n publisher: {\r\n '@type': 'Organization',\r\n name: 'Rede D’Or',\r\n },\r\n description: post.title?.rendered,\r\n articleBody: removeHtmlTags(he.decode(postContent)),\r\n dateModified: post.modified_gmt,\r\n image: {\r\n '@type': 'ImageObject',\r\n url: postHeaderImage?.url || post.featured_media_path || '',\r\n height: postHeaderImage?.height || '',\r\n width: postHeaderImage?.width || '',\r\n },\r\n author: {\r\n '@type': 'Organization',\r\n name: 'Rede D’Or',\r\n },\r\n wordcount: postContent.split(' ').length,\r\n };\r\n\r\n const script = this.document.createElement('script');\r\n\r\n script.type = 'application/ld+json';\r\n script.id = scriptName;\r\n script.innerHTML = JSON.stringify(structuredData);\r\n\r\n this.document.head.appendChild(script);\r\n }\r\n\r\n removeArticleScript(scriptName: string): void {\r\n const script = this.document.getElementById(scriptName);\r\n script?.remove();\r\n }\r\n\r\n public setUnidade({ unidade = null, unidadeName = '', unidadePath = '', unidadeSlug = '' }: SeoUnidade) {\r\n this.unidade = unidade;\r\n this.unidadeName = unidadeName;\r\n this.unidadePath = unidadePath;\r\n this.unidadeSlug = unidadeSlug;\r\n }\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\nimport { Response } from 'express';\r\nimport { RESPONSE } from '../../tokens/express.tokens';\r\n\r\nexport interface IServerResponseService {\r\n getHeader(key: string): string;\r\n setHeader(key: string, value: string): this;\r\n setHeaders(dictionary: { [key: string]: string }): this;\r\n appendHeader(key: string, value: string, delimiter?: string): this;\r\n setStatus(code: number, message?: string): this;\r\n setNotFound(message?: string): this;\r\n setError(message?: string): this;\r\n setRedirect(redirectParams?: { statusCode: number; message: string; url?: string }): this;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ServerResponseService implements IServerResponseService {\r\n private response = inject(RESPONSE, { optional: true });\r\n\r\n getHeader(key: string): string {\r\n if (this.response) {\r\n return this.response.getHeader(key) as string;\r\n }\r\n return '';\r\n }\r\n\r\n setHeader(key: string, value: string): this {\r\n if (this.response) {\r\n this.response.header(key, value);\r\n }\r\n return this;\r\n }\r\n\r\n appendHeader(key: string, value: string, delimiter = ','): this {\r\n if (this.response) {\r\n const current = this.getHeader(key);\r\n if (!current) {\r\n return this.setHeader(key, value);\r\n }\r\n const newValue = [...current.split(delimiter), value].filter((el, i, a) => i === a.indexOf(el)).join(delimiter);\r\n this.response.header(key, newValue);\r\n }\r\n return this;\r\n }\r\n\r\n setHeaders(dictionary: { [key: string]: string }): this {\r\n if (this.response) {\r\n Object.keys(dictionary).forEach((key) => this.setHeader(key, dictionary[key]));\r\n }\r\n return this;\r\n }\r\n\r\n setStatus(code: number, message?: string): this {\r\n if (this.response) {\r\n this.response.statusCode = code;\r\n if (message) {\r\n this.response.statusMessage = message;\r\n }\r\n }\r\n return this;\r\n }\r\n\r\n setNotFound(message = 'Não encontrado'): this {\r\n if (this.response) {\r\n this.response.statusCode = 404;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setUnauthorized(message = 'Não autorizado'): this {\r\n if (this.response) {\r\n this.response.statusCode = 401;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setError(message = 'Erro interno de servidor'): this {\r\n if (this.response) {\r\n this.response.statusCode = 500;\r\n this.response.statusMessage = message;\r\n }\r\n return this;\r\n }\r\n\r\n setRedirect(\r\n { statusCode, message, url }: { statusCode?: number; message?: string; url?: string } = {\r\n statusCode: 301,\r\n message: 'Redirecionado permanentemente',\r\n url: undefined,\r\n },\r\n ): this {\r\n if (this.response) {\r\n this.response.statusCode = statusCode || 301;\r\n this.response.statusMessage = message || 'Redirecionado permanentemente';\r\n if (url) {\r\n this.response.locals['redirectUrl'] = url; // Utilizado no ssr para redirect\r\n }\r\n }\r\n return this;\r\n }\r\n}\r\n\r\nexport type HttpCacheDirective = 'public' | 'private' | 'no-store' | 'no-cache' | 'must-revalidate' | 'no-transform' | 'proxy-revalidate';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuidv4"],"mappings":";;;;;;;;;;;;AA6DA;MACa,UAAU,GAAG,IAAI,cAAc,CAAY,WAAW;;MC3DtD,OAAO,GAAG,IAAI,cAAc,CAAU,SAAS;MAC/C,QAAQ,GAAG,IAAI,cAAc,CAAW,UAAU;;MCClD,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;QAErC,IAAA,CAAA,QAAQ,GAAG,MAAM;AAElB,QAAA,IAAA,CAAA,mBAAmB,GAAY,IAAI,CAAC;AAQ5C,IAAA;;AALQ,IAAA,YAAY,CAAC,IAAY,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,IAAI,CAAC;QACxD,MAAM,gBAAgB,GAAG,GAAG;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,gBAAgB;IAC7D;8GAZW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACJD;;;;;;;;AAQG;SACa,gBAAgB,CAC9B,EAAwB,EACxB,SAAwB,EACxB,QAAA,GAAmB,EAAE,EACrB,QAAgB,GAAG,EACnB,aAAqB,CAAC,EACtB,GAAG,IAAO,EAAA;IAEV,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,GAAG,QAAQ,EAAE;QACzC,UAAU,CAAC,MAAK;AACd,YAAA,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;QAC3E,CAAC,EAAE,KAAK,CAAC;IACX;SAAO;AACL,QAAA,EAAE,CAAC,GAAG,IAAI,CAAC;IACb;AACF;;MCpBsB,sBAAsB,CAAA;AAY3C;MAKY,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,SAAS,GAAkC,IAAI;AAG/C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC;QAChC,IAAA,CAAA,QAAQ,GAAG,EAAE;QACb,IAAA,CAAA,KAAK,GAAG,GAAG;AAgGZ,IAAA;IA9FC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE;AACxB,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,YAAY,CAAC,OAA+B,EAAA;AAC1C,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;IAC1B;AAEA,IAAA,SAAS,CAAC,MAAwB,EAAA;QAChC,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,MAAM;YACrC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,QAAQ,CAAC,KAAa,EAAA;QACpB,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK;YACnC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,UAAU,CAAC,OAAyB,EAAE,OAAA,GAA+B,EAAE,EAAA;QACrE,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO;AACrC,gBAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,GAAG,OAAO;YAC9C;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,UAAU,CAAC,OAAyB,EAAA;QAClC,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,OAAO;YACvC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,QAAQ,CAAC,KAAgC,EAAA;QACvC,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,GAAG,KAAK;YACvC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,oBAAoB,CAAC,KAAuB,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK;IAChC;IAEA,KAAK,GAAA;AACH,QAAA,gBAAgB,CACd,MAAM,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAC7B,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;8GArGW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ICpBW;AAAZ,CAAA,UAAY,yBAAyB,EAAA;AACnC,IAAA,yBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,YAAA,CAAA,GAAA,aAA0B;AAC1B,IAAA,yBAAA,CAAA,WAAA,CAAA,GAAA,YAAwB;AACxB,IAAA,yBAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,yBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,yBAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,yBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,yBAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAClC,CAAC,EAXW,yBAAyB,KAAzB,yBAAyB,GAAA,EAAA,CAAA,CAAA;;ACA9B,MAAM,WAAW,GAAG,CAAC,KAAa,KAAY;AACnD,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;IAErB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IAChD,IAAI,aAAa,GAAG,EAAE;AACtB,IAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QAC5B,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,CAAC;IAC7E;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QACnC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,CAAC;IAC7E;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE;QACnC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,yBAAyB,EAAE,YAAY,CAAC;IAC7E;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChE;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChE;AAAO,SAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAChE;SAAO;QACL,aAAa,GAAG,UAAU;IAC5B;AACA,IAAA,OAAO,aAAa;AACtB;;MCVa,yBAAyB,CAAA;AAJtC,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAmB,EAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAE3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAkC,IAAI,4DAAC;QAEvD,IAAA,CAAA,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AAqB7F,IAAA;;AAjBQ,IAAA,OAAO,CAAC,KAAY,EAAA;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,mBAAmB;YACnJ;AAEF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;QACpE,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;QAClC;IACF;IAEO,cAAc,CAAC,KAAY,EAAE,IAAY,EAAA;QAC9C,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1H,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC,OAAO,CAAC;AAC7D,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;8GA5BW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;8BAaQ,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;MCVtB,mBAAmB,CAAA;AALhC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,EAAC,UAAe,EAAC;AACjC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,QAAA,IAAA,CAAA,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAC7D,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE7D,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAgB,IAAI,4DAAC;AAC7C,QAAA,IAAA,CAAA,qBAAqB,GAAG,KAAK,CAAgB,IAAI,iEAAC;AAClD,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkC,IAAI,sDAAC;QAEjD,IAAA,CAAA,aAAa,GAAG,kCAAkC;QAClD,IAAA,CAAA,QAAQ,GAAG,MAAM;QACjB,IAAA,CAAA,SAAS,GAAG,SAAS;AACrB,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC;QAC/C,IAAA,CAAA,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;AA4I7F,IAAA;AAzIQ,IAAA,OAAO,CAAC,KAAY,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC;YAAE;AAC7G,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;AACpE,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtB,IAAI,CAAC,YAAY,CAAC;gBAChB,IAAI;gBACJ,KAAK;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,gBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,aAAA,CAAC;YACF;QACF;QAEA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,EAAE;AAE7D,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACrB,YAAA,MAAM,MAAM,GAAG,QAAQ,IAAI,UAAU,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,QAAQ;AAC/E,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,QAAQ;AACxD,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IACvB;AAEQ,IAAA,OAAO,CAAC,IAAY,EAAA;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC;AAEQ,IAAA,MAAM,CAAC,IAAY,EAAA;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IAClC;AAEQ,IAAA,YAAY,CAAC,KAA4G,EAAA;QAC/H,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK;QAClD,IAAI,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC;YACvC,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;QAC5D;aAAO;AACL,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;QAC5B;IACF;IAEQ,aAAa,CAAC,OAAwB,EAAE,UAA2C,EAAA;AACzF,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAAE;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,EAAE;YAC9C,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;YAC/D;QACF;QACA,IAAI,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,OAAO,CAAC,EAAE;YACtD,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QACjE;IACF;AAEQ,IAAA,aAAa,CAAC,IAAY,EAAA;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;IACtC;AAEQ,IAAA,SAAS,CAAC,IAAY,EAAA;QAC5B,MAAM,SAAS,GAAG,WAAW;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACxF;AAEQ,IAAA,QAAQ,CAAC,IAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7B;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;QACjC,IAAI,IAAI,KAAK,GAAG;YAAE;AAClB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;YAChD,IAAI,UAAU,GAAG,CAAC;AAElB,YAAA,IAAI,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE;gBACzC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACnE;AAEA,YAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;AAC3B,gBAAA,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAG;YACvC;AAEA,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,gBAAA,UAAU,IAAI,IAAI,CAAC,qBAAqB,EAAG;YAC7C;AAEA,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,GAAG,IAAI,CAAC;AACtE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAc,IAAI,CAAC,EAAE,qBAAqB,EAAE,EAAE,GAAG,IAAI,CAAC;YAClG,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,UAAU;AACrD,YAAA,UAAU,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;QAC7D;IACF;AAEQ,IAAA,UAAU,CAAC,IAAY,EAAA;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE;QACnD,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC3D,IAAI,UAAU,GAAG,IAAI;AACrB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE;YACxC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACpD;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACxC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;QAC7C;AACA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,4BAA4B,IAAI,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,UAAU,CAAC,EAAE;YAC3G;QACF;AAEA,QAAA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,MAAM,WAAW,GAAwB,EAAE;QAC3C,IAAI,KAAK,EAAE;YACT,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,YAAA,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACvB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;gBACxB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC9B,YAAA,CAAC,CAAC;QACJ;;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,eAAe,EAAE;AACnC,YAAA,MAAM,OAAO,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC;AACjD,YAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO;YAC9B;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IAC5D;8GA7JW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,yBAAyB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAE3B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,cAAc;oBACxB,SAAS,EAAE,CAAC,yBAAyB,CAAC;AACvC,iBAAA;8BAsBQ,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;;IChCvB;AAAZ,CAAA,UAAY,+BAA+B,EAAA;AACzC,IAAA,+BAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,+BAAA,CAAA,cAAA,CAAA,GAAA,aAA4B;AAC5B,IAAA,+BAAA,CAAA,cAAA,CAAA,GAAA,eAA8B;AAC9B,IAAA,+BAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC;AAClC,CAAC,EALW,+BAA+B,KAA/B,+BAA+B,GAAA,EAAA,CAAA,CAAA;;ACA3C,MAAM,UAAU,GAAG,CAAC,OAAA,GAAkB,EAAE,EAAE,SAAA,GAAoB,EAAE,KAAY;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO;IAC1F,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS;AACpG,IAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,SAAS,EAAE;AACjC;;ACJA,SAAS,cAAc,CAAC,OAAe,EAAA;IACrC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AACvC,IAAA,OAAO,OAAO;AAChB;;ACHA,MAAM,gBAAgB,GAAG,MAAc;IACrC,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC1D,IAAA,OAAO,CAAC,WAAW,IAAI,WAAW;AACpC;;ACJA;;AAEG;AACG,SAAU,mBAAmB,CAAC,aAGnC,EAAA;AACC,IAAA,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE;AAC1B,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,UAAU,EAAE,aAAa,EAAE,UAAU,IAAI,EAAE;AAC3C,QAAA,QAAQ,EAAE,aAAa,EAAE,QAAQ,IAAI,GAAG;KACzC;IAED,IAAI,KAAK,GAAG,CAAC;AAEb,IAAA,OAAO,CAAC,GAAW,EAAE,KAAU,KAAI;;QAEjC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACpC,YAAA,OAAO,SAAS;QAClB;;AAGA,QAAA,IAAI,GAAG,KAAK,EAAE,EAAE;AACd,YAAA,KAAK,GAAG,CAAC,CAAC;QACZ;aAAO;AACL,YAAA,KAAK,IAAI,CAAC,CAAC;QACb;AAEA,QAAA,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE;AAC5B,YAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,GAAG,KAAK;QACvD;;QAGA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;;AAE/C,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACnB,OAAO,SAAS,CAAC;YACnB;;AAEA,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACjB;AAEA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC;AACH;;AC5CA;;;;;AAKG;AACI,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAY;AAC9C,IAAA,IAAI,IAAI,GAAG,IAAI,CAAC;AAChB,IAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI;AAEjC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC;AACjC,QAAA,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACrB;AAEA,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB;;MCTa,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAwBpC,IAAA;IAtBC,MAAM,CAAC,GAAQ,EAAE,KAAc,EAAA;AAC7B,QAAA,KAAK,GAAG,KAAK,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG,GAAG,EAAE;QAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;YAC9G,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,KAAK,CAAA,EAAG,GAAG,CAAA,CAAE,CAAC;QAC/B;IACF;AAEA,IAAA,OAAO,CAAC,SAAkB,EAAA;QACxB,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EAAE,MAAM,CAAC;IAClF;AAEA,IAAA,MAAM,CAAC,SAAkB,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EAAE,KAAK,CAAC;IACjF;AAEA,IAAA,MAAM,CAAC,SAAkB,EAAA;QACvB,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,UAAU,EAAE,CAAA,EAAG,SAAS,GAAG,KAAK,GAAG,SAAS,GAAG,EAAE,CAAA,CAAE,EAAE,KAAK,CAAC;IACjF;IAEA,UAAU,GAAA;QACR,OAAO,CAAA,EAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAE;IACnG;8GA1BW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACPD;;;AAGG;AACG,SAAU,aAAa,CAAC,MAAW,EAAA;AACvC,IAAA,OAAO;AACL,UAAE,CAAA,CAAA,EAAI,MAAM,CAAC,IAAI,CAAC,MAAM;AACnB,aAAA,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;aACpC,IAAI,CAAC,GAAG,CAAC,CAAA;UACZ,EAAE;AACR;;ACHA;MAEa,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAmCtD,IAAA;AAjCC,IAAA,GAAG,CAAU,GAAW,EAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;IAC3C;IAEA,IAAI,CAAU,GAAW,EAAE,IAAU,EAAA;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AACjC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC;IAClD;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW;aAChC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB;AAC7D,aAAA,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,EAAE;aAC/C,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;AAEjD,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,WAAW,CAAC,MAAM,CACvB,eAAe,EACf,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CACzH;QACH;aAAO;AACL,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAClE;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,SAAS,GAAG,QAAQ;IAC9D;IAEQ,eAAe,GAAA;QACrB,OAAO,CAAA,IAAA,EAAO,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC,EAAE,CAAA,CAAE;IACvD;8GAtCW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,kBAAkB,CAAA;AAO7B,IAAA,WAAA,GAAA;AANQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAC7C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAKtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE;IACpC;IAEQ,SAAS,GAAA;AACf,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC9D,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY;QAC5C;AACA,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;IACpC;AAEA;;;;;AAKG;IACH,GAAG,CAAU,IAAY,EAAE,MAAY,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAI,GAAG,IAAI,CAAC,UAAU,CAAA,EAAG,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA,CAAE,CAAC;IAC3F;AAEA;;;;;AAKG;IACH,IAAI,CAAU,IAAY,EAAE,MAAY,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAI,CAAA,EAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA,CAAE,EAAE,MAAM,CAAC;IAC5E;8GApCW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,gBAAgB,CAAA;AAH7B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAuBzC,IAAA;IArBC,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC;AAExF,YAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AACzE,gBAAA,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAEvH,gBAAA,IAAI,CAAC;qBACF,IAAI,CAAC,WAAW,EAAE;AACjB,oBAAA,KAAK,EAAE,YAAY;AACnB,oBAAA,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;oBAC5B,GAAG,EAAE,GAAG,CAAC,aAAa;iBACvB;AACA,qBAAA,SAAS,EAAE;YAChB;AAEA,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;QAChC,CAAC,CAAC,CACH;IACH;8GAzBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFf,MAAM,EAAA,CAAA,CAAA;;2FAEP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCCY,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAoBxC,IAAA;IAlBC,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,MAAM,SAAS,GAAGA,EAAM,EAAE;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAC5B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,QAAA,EAAW,SAAS,CAAA,IAAA,EAAO,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;AAEzF,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,QAAQ,KAAI;YACf,MAAM,GAAG,GAAG,QAA6B;AACzC,YAAA,IAAI,GAAG,EAAE,MAAM,EAAE;gBACf,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC;AACnE,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CACpB,CAAA,SAAA,EAAY,SAAS,CAAA,IAAA,EAAO,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,GAAG,CAAA,YAAA,EAAe,WAAW,CAAA,aAAA,EAAgB,GAAG,CAAC,MAAM,CAAA,GAAA,EAAM,GAAG,CAAC,UAAU,CAAA,SAAA,EAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAA,CAAE,EACjJ,aAAa,CACd;YACH;QACF,CAAC,CAAC,CACH;IACH;8GApBW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACFD;;;AAGG;AACH,SAAS,cAAc,CAAC,GAAqB,EAAE,GAAW,EAAA;AACxD,IAAA,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM;IACzB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE;;AAGpC,IAAA,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGpF,IAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC;AAEtC,IAAA,OAAO,UAAU,CAAC,QAAQ,EAAE;AAC9B;AAEA;;AAEG;AACH,SAAS,mBAAmB,CAAC,GAAqB,EAAE,GAAW,EAAA;IAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC;AACzC,IAAA,OAAO,YAAY,CAAM,QAAQ,CAAC;AACpC;AAEA;;;;;;;;;;AAUG;MAIU,2BAA2B,CAAA;AAHxC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AAyFvC,IAAA;IAvFC,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAChD,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC;QAC5C;AAAO,aAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC7C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC;QAC5C;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB;AAEA;;AAEG;AACK,IAAA,aAAa,CAAC,eAAoB,EAAA;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,cAAc;;QAGnE,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAClD,YAAA,OAAO,EAAE;QACX;;QAGA,MAAM,eAAe,GAA2B,EAAE;AAClD,QAAA,cAAc,CAAC,OAAO,CAAC,UAAU,IAAG;YAClC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACjE,IAAI,WAAW,EAAE;gBACf,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,GAAG,WAAW;YACzD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,eAAe;IACxB;IAEQ,mBAAmB,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAClE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;;QAGtC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC5C,YAAA,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC;YACvE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,WAAW,CAAC;AAEtD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,GAAG,CAAC,CAAC,KAAK,KAAI;AACZ,gBAAA,IAAI,KAAK,YAAY,YAAY,EAAE;oBAEjC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;;AAGzD,oBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE;wBAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;AAC5B,wBAAA,OAAO,EAAE,eAAe;AACzB,qBAAA,CAAC;gBACJ;YACF,CAAC,CAAC,CACH;QACH;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB;IAEQ,mBAAmB,CAAC,GAAqB,EAAE,IAAiB,EAAA;AAClE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO;;QAGtC,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC;AAClD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;YAE7D,IAAI,cAAc,EAAE;AAClB,gBAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;;AAGnC,gBAAA,OAAO,EAAE,CACP,IAAI,YAAY,CAAC;oBACf,IAAI,EAAE,cAAc,CAAC,IAAI;oBACzB,MAAM,EAAE,cAAc,CAAC,MAAM;oBAC7B,UAAU,EAAE,cAAc,CAAC,UAAU;oBACrC,OAAO,EAAE,cAAc,CAAC,OAAO;AAChC,iBAAA,CAAC,CACH;YACH;QACF;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB;8GA3FW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAF1B,MAAM,EAAA,CAAA,CAAA;;2FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;IC7CW;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,kBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC7B,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;IAKlB;AAAZ,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,SAAkB;AAClB,IAAA,qBAAA,CAAA,SAAA,CAAA,GAAA,UAAoB;AACtB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAAA,EAAA,CAAA,CAAA;;ICArB;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,OAAA,CAAA,GAAA,OAAe;AACf,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,UAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,UAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,UAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EANW,UAAU,KAAV,UAAU,GAAA,EAAA,CAAA,CAAA;;MCET,YAAY,CAAA;AAHzB,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,eAAe,CAAa,EAAE,CAAC;AAC3C,IAAA;8GAFY,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MC6BY,aAAa,CAAA;AAH1B,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACxC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AAEzC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB;AACpD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB;QAC1D,IAAA,CAAA,YAAY,GAAG,wBAAwB;QACvC,IAAA,CAAA,WAAW,GAAG,mBAAmB;AAuC1C,IAAA;AArCC;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,KAAa,EAAE,MAAA,GAAgC,EAAE,EAAE,UAAmB,EAAA;AACrF,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC9C,QAAA,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;AACvB,YAAA,OAAO,UAAU,CAAC,MAAM,sCAAsC,CAAC;QACjE;AACA,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,WAAA,EAAc,KAAK,EAAE;QACzE,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB;AAChH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;IACnE;AAEA;;;;;AAKG;IACH,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,MAAA,GAAuC,EAAE,EAAE,UAAmB,EAAA;AACvG,QAAA,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,UAAU,CAAC;AAC9C,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,WAAW,CAAA,mBAAA,EAAsB,GAAG,CAAA,UAAA,EAAa,GAAG,EAAE;QAC/F,MAAM,CAAC,cAAc,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB;AAChH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;IACvC;AAEQ,IAAA,SAAS,CAAC,cAAsB,EAAE,OAAO,GAAG,YAAY,EAAA;AAC9D,QAAA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,GAAG,SAAS;AACzE,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,EAAG,QAAQ,CAAA,GAAA,EAAM,cAAc,MAAM,OAAO,CAAA,CAAE,EAAE,QAAQ,CAAC;IAClF;IAEQ,UAAU,GAAA;QAChB,OAAO,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC3D;8GA/CW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;IC1BW;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,sBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACnB,CAAC,EAJW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;MAsBrB,aAAa,CAAA;AAexB,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,aAAa;IAC3B;AAEA,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ;IACtB;AAGA,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;AAOA,IAAA,IAAW,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,cAAc;IAC5B;AAEA,IAAA,WAAA,GAAA;AApCiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;AACzC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAExC,QAAA,IAAA,CAAA,sBAAsB,GAAiC;AAC7D,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,OAAO,EAAE,IAAI;SACd;QAEO,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,aAAa,GAAG,KAAK;QAIrB,IAAA,CAAA,QAAQ,GAAmB,IAAI;AAK/B,QAAA,IAAA,CAAA,WAAW,GAAoB,sBAAsB,CAAC,MAAM;AAK7D,QAAA,IAAA,CAAA,WAAW,GAAwC,IAAI,eAAe,CAAqB,IAAI,CAAC;QAChG,IAAA,CAAA,SAAS,GAA6B,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QAEzE,IAAA,CAAA,cAAc,GAAY,KAAK;QAC/B,IAAA,CAAA,cAAc,GAAG,KAAK;AAM5B,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,GAAG,gBAAgB,EAAE;AACxC,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;AACjE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;YACtC;QACF;AAEA,QAAA,SAAS,EAAE;AACT,cAAE,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;AAC9B,aAAA,IAAI,CAAC,CAAC,UAAU,KAAI;AACnB,YAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK;YACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAEzE,YAAA,UAAU,CAAC,QAAQ,GAAG,MAAK;AACzB,gBAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK;gBACnC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,sBAAsB,CAAC,OAAO,CAAC;AAC3E,YAAA,CAAC;AACH,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC;AAC7E,YAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,MAAM;AAChD,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;IACN;IAEA,eAAe,CAAC,aAAa,GAAG,KAAK,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC;AAClC,gBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,oBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;AAC3B,oBAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC7B,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC;AACjC,oBAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,oBAAA,IAAI,CAAC,WAAW,GAAG,sBAAsB,CAAC,OAAO;gBACnD,CAAC;gBACD,KAAK,EAAE,MAAK;oBACV,IAAI,IAAI,CAAC,WAAW,KAAK,sBAAsB,CAAC,MAAM,EAAE;AACtD,wBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,wBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;oBAClC;AACA,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;AACF,aAAA,CAAC;QACJ;aAAO;YACL,IAAI,IAAI,CAAC,UAAU,KAAK,sBAAsB,CAAC,MAAM,EAAE;AACrD,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B;IACF;IAEQ,kBAAkB,GAAA;AACxB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;YACjC,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACtC,CAAC,QAAQ,KAAI;AACX,gBAAA,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACvB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,EACD,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAChC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAC7B;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,cAAc,CAAC,QAA6B,EAAA;QAClD,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG;gBAAE;AAE3H,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,gBAAA,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;AAC7B,gBAAA,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;AAC/B,aAAA,CAAC;YAEF,IAAI,CAAC,eAAe;AACjB,iBAAA,IAAI,CACH,GAAG,CAAC,CAAC,QAAQ,KAAI;AACf,gBAAA,MAAM,IAAI,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI;AACpD,gBAAA,MAAM,KAAK,GAAG;AACZ,oBAAA,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI;AAC9D,oBAAA,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW;iBAC3E;AACD,gBAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;AACxB,YAAA,CAAC,CAAC;AAEH,iBAAA,SAAS,CAAC;AACT,gBAAA,IAAI,EAAE,CAAC,QAAQ,KAAI;AACjB,oBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,oBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;AACD,gBAAA,KAAK,EAAE,CAAC,KAAK,KAAI;AACf,oBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,OAAO,CAAC;AAC7E,oBAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,oBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,oBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC3B,CAAC;AACF,aAAA,CAAC;QACN;aAAO;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B;IACF;IAEQ,eAAe,GAAA;QACrB,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAA,CAAE;QAC5C,MAAM,GAAG,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAA,CAAE;AAC5C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,sBAAsB,EAAE,wCAAwC,CAAC;IAC7H;AAEA,IAAA,kBAAkB,CAAC,IAAY,EAAA;QAC7B,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;AACvG,YAAA,OAAO,KAAK;QACd;AACA,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC;aAClB,KAAK,CAAC,GAAG;aACT,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACzB,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACjD;IAEQ,gBAAgB,CAAC,MAAe,EAAE,IAAY,EAAA;AACpD,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE;AACpE,YAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;YACrE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,uBAAuB,MAAM,CAAA,kBAAA,EAAqB,QAAQ,CAAA,uBAAA,CAAyB;QAC5G;IACF;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;AACjC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;iBACzB,KAAK,CAAC,GAAG;iBACT,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACzB,iBAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,CAAG,CAAC,CAAC;AAE9C,YAAA,OAAO,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;QAClD;AACA,QAAA,OAAO,EAAE;IACX;8GAjMW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;2FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCzBqB,4BAA4B,CAAA;AAsBjD;MAKY,kBAAkB,CAAA;AAH/B,IAAA,WAAA,GAAA;QAIE,IAAA,CAAA,SAAS,GAAwC,IAAI;AAErD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,KAAK,4DAAC;QAChC,IAAA,CAAA,QAAQ,GAAG,EAAE;QACb,IAAA,CAAA,KAAK,GAAG,GAAG;AAmEZ,IAAA;IAjEC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC/B,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE;AAC7B,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,YAAY,CAAC,OAAqC,EAAA;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;IAC1B;AAEA,IAAA,UAAU,CAAC,OAAmB,EAAA;QAC5B,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;YAC1C;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,QAAQ,CAAC,KAAsC,EAAA;QAC7C,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;YAC1C;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;QACrB,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,KAAK;YAClC;AACF,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;IAEA,KAAK,GAAA;QACH,gBAAgB,CACd,MAAK;AACH,YAAA,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE;AAC9B,QAAA,CAAC,EACD,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,EACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,KAAK,CACX;IACH;8GAvEW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;2FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCvBY,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAIE,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;QAEhC,IAAA,CAAA,oBAAoB,GAAG,oBAAoB;QAC3C,IAAA,CAAA,mBAAmB,GAAG,mBAAmB;QACzC,IAAA,CAAA,yBAAyB,GAA6B,IAAI;QAC1D,IAAA,CAAA,aAAa,GAA8B,EAAE;QAC7C,IAAA,CAAA,aAAa,GAAQ,IAAI;AAgF1B,IAAA;;AA7EQ,IAAA,MAAM,CAAC,OAAkC,EAAA;AAC9C,QAAA,IAAI,CAAC,aAAa,GAAG,OAAO;IAC9B;;AAGO,IAAA,iBAAiB,CAAC,eAAuB,EAAA;AAC9C,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAE7G,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;YAC9B;QACF;IACF;IAEO,gBAAgB,GAAA;QACrB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,yBAAyB,EAAE;AACxD,YAAA,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE;QACnD;IACF;;AAGQ,IAAA,eAAe,CAAC,MAAgC,EAAA;AACtD,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI;AACrC,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC1C,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC;IAC9C;;AAGO,IAAA,oBAAoB,CAAC,GAAW,EAAA;AACrC,QAAA,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;QAEvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE;AAExD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAEvE,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,MAAM,EAAE;QACnB;QAEA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACjD,QAAA,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB;AACnC,QAAA,KAAK,CAAC,GAAG,GAAG,YAAY;AACxB,QAAA,KAAK,CAAC,IAAI,GAAG,UAAU;AACvB,QAAA,KAAK,CAAC,IAAI,GAAG,GAAG;AAChB,QAAA,KAAK,CAAC,KAAK,GAAG,MAAM;AAEpB,QAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AAClC,YAAA,KAAK,CAAC,KAAK,GAAG,KAAK;AACrB,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACvC;;AAGO,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACtC,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AAEvE,QAAA,MAAc,CAAC,eAAe,CAAC,GAAG,IAAI;AAEvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAEzE,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,MAAM,EAAE;QACpB;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpD,QAAA,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB;AACrC,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG;AAEhB,QAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK;AACnC,YAAA,IAAI,CAAC,yBAAyB,GAAG,MAAM;AACvC,YAAA,IAAI,CAAC,aAAa,GAAI,MAAc,CAAC,eAAe,CAAC;AACpD,YAAA,MAAc,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE;AACzC,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC;8GAvFW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;2FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCaY,UAAU,CAAA;AAHvB,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AACrB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACnB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAY,UAAU,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAW,QAAQ,CAAC;QAEtC,IAAA,CAAA,SAAS,GAAG,KAAK;QACjB,IAAA,CAAA,YAAY,GAAG,WAAW;AAE1B,QAAA,IAAA,CAAA,MAAM,GAAG;YACd,mCAAmC;YACnC,4CAA4C;YAC5C,kDAAkD;YAClD,6BAA6B;SAC9B;QACM,IAAA,CAAA,WAAW,GAAG,UAAU;QAIvB,IAAA,CAAA,SAAS,GAAG,SAAS;QAErB,IAAA,CAAA,oBAAoB,GAAG,iBAAiB;QAEzC,IAAA,CAAA,OAAO,GAAQ,IAAI;QACnB,IAAA,CAAA,WAAW,GAAW,EAAE;QACxB,IAAA,CAAA,WAAW,GAAW,EAAE;QACxB,IAAA,CAAA,WAAW,GAAW,EAAE;QAExB,IAAA,CAAA,cAAc,GAAU,EAAE;AAwelC,IAAA;AAteQ,IAAA,UAAU,CAAC,IAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;IACrC;AAEA;;;AAGG;AACI,IAAA,cAAc,CAAC,OAAe,EAAA;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACtD,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,YAAA,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;QACnC;aAAO;YACL,OAAO,GAAG,EAAE;QACd;AACA,QAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO;QAChC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;QACnD,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACjC;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;AAKG;AACI,IAAA,UAAU,CAAC,GAAW,EAAE,OAAe,EAAE,IAAI,GAAG,MAAM,EAAA;AAC3D,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAC;AACpD,QAAA,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;AAC5B,QAAA,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;AACjC,QAAA,MAAM,UAAU,GAAG;YACjB,CAAC,IAAI,GAAG,GAAG;YACX,OAAO;SACR;QACD,IAAI,CAAC,OAAO,EAAE;AACZ,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAC9B;aAAO;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACjC;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;AAMG;IACI,SAAS,CAAC,GAAW,EAAE,OAAe,EAAE,IAAY,EAAE,IAAI,GAAG,MAAM,EAAA;AACxE,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,GAAG,CAAA,CAAA,CAAG,CAAC;QACpD,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAC;QAC3C;AACA,QAAA,OAAO,IAAI;IACb;AAEA;;;;;;AAMG;IACI,eAAe,CAAC,KAAa,EAAE,WAAmB,EAAE,GAAW,EAAE,MAAqB,IAAI,EAAA;QAC/F,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,UAAU,CAAC;IACpD;AAEA;;;;;;AAMG;IACI,cAAc,CAAC,KAAa,EAAE,WAAmB,EAAE,GAAW,EAAE,MAAqB,IAAI,EAAA;QAC9F,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,CAAC;QAC/C,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,WAAW,EAAE,MAAM,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,IAAI,EAAE,EAAE,MAAM,CAAC;IACrD;AAEA;;;AAGG;AACH,IAAA,aAAa,CAAC,UAAiC,EAAA;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,IAAI,iBAAiB,GAAyB;AAC5C,YAAA,WAAW,EAAE,SAAS;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AACtB,YAAA,WAAW,EAAE,IAAI,CAAC,iBAAiB,IAAI,EAAE;AACzC,YAAA,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE;YAC5B,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAA,CAAE,GAAG,qEAAqE;SACjJ;QACD,IAAI,UAAU,EAAE;YACd,iBAAiB,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,UAAU,EAAE;QAC7D;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM;aACxE,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM;aACtE,UAAU,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,IAAI,EAAE,EAAE,UAAU;aAC9D,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU;aAChE,UAAU,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,WAAW,IAAI,EAAE,EAAE,UAAU;aAC5E,UAAU,CAAC,QAAQ,EAAE,iBAAiB,CAAC,GAAG,IAAI,EAAE,EAAE,UAAU;aAC5D,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,CAAC;AAEpE,QAAA,OAAO,IAAI;IACb;AAEA;;;;AAIG;AACI,IAAA,QAAQ,CAAC,KAAa,EAAE,GAAG,GAAG,KAAK,EAAA;AACxC,QAAA,IAAI,KAAK,IAAI,KAAK,KAAK,EAAE,EAAE;AACzB,YAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;AACxB,YAAA,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC;YAC7B,IAAI,GAAG,EAAE;AACP,gBAAA,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YACnE;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B;AACA,QAAA,OAAO,IAAI;IACb;;IAGO,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;IAC9B;IAEO,WAAW,CAAC,YAAoB,mBAAmB,EAAA;AACxD,QAAA,IAAI,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE;AACjC,YAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,YAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YAC3E;QACF;AACA,QAAA,MAAM,KAAK,GAAG,CAAA,WAAA,EAAc,SAAS,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AAC/F,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1B,QAAA,OAAO,IAAI;IACb;IAEO,WAAW,CAAC,YAAoB,mBAAmB,EAAA;AACxD,QAAA,IAAI,SAAS,IAAI,SAAS,KAAK,EAAE,EAAE;AACjC,YAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;AAChC,YAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,SAAS,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA,EAAG,IAAI,CAAC,SAAS,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;YAC3E;QACF;AACA,QAAA,MAAM,KAAK,GAAG,CAAA,WAAA,EAAc,SAAS,CAAA,GAAA,EAAM,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAA,GAAA,EAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;AAC/F,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC1B,QAAA,OAAO,IAAI;IACb;;IAGQ,wBAAwB,GAAA;QAC9B,MAAM,GAAG,GAAsB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpE,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB;AAClC,QAAA,GAAG,CAAC,IAAI,GAAG,qBAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,CAAC,kBAAkB,GAAG,GAAG;AAC7B,QAAA,OAAO,GAAG;IACZ;;IAGQ,qBAAqB,GAAA;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAsB;YAC7C,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,oBAAoB,EAAE;AACjD,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI,CAAC,wBAAwB,EAAE;IACxC;;AAGO,IAAA,kBAAkB,CAAC,KAAyB,EAAA;AACjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE;AACtD,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;SACpD;QACD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AACxD,QAAA,OAAO,IAAI;IACb;;AAGQ,IAAA,sBAAsB,CAAC,KAAyB,EAAA;AACtD,QAAA,MAAM,SAAS,GAAG;AAChB,YAAA;AACE,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE;AAC9D,aAAA;SACzB;QACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;AACxB,YAAA,MAAM,QAAQ,GAAwB;AACpC,gBAAA,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,CAAC,GAAG,CAAC;gBACf,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aACzF;AACD,YAAA,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,SAAS;IAClB;AAEA;;;AAGG;AACK,IAAA,oBAAoB,CAAC,GAAa,EAAA;AACxC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9E,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACrC,YAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,EAAE;QAChC;AACA,QAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC;AAC/C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtE,QAAA,OAAO,CAAA,EAAG,OAAO,CAAA,EAAG,QAAQ,CAAA,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACnD;;IAGQ,aAAa,GAAA;QACnB,MAAM,GAAG,GAAsB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AACpE,QAAA,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS;AACvB,QAAA,GAAG,CAAC,IAAI,GAAG,qBAAqB;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;AAClB,QAAA,OAAO,GAAG;IACZ;;IAGQ,UAAU,GAAA;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAsB;YAC7C,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE;AACtC,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE;IAC7B;;IAGO,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE;AAEhC,QAAA,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAEnF,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,SAAS;AAErG,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AAExB,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,UAAU,EAAE,mBAAmB;AAC/B,YAAA,QAAQ,EAAE,aAAa;SACxB;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAE7C,QAAA,OAAO,IAAI;IACb;;IAGQ,UAAU,GAAA;AAChB,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9E,OAAO;AACL,YAAA,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE,CAAA,EAAG,OAAO,CAAA,aAAA,CAAe;YAChC,IAAI,EAAE,IAAI,CAAC,YAAY;AACvB,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ;YAClC,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,CAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB;IACH;;IAGQ,cAAc,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9E,OAAO;AACL,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU;AACzC,YAAA,GAAG,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG,WAAW,CAAA,CAAE;YAC/B,IAAI,EAAE,IAAI,CAAC,WAAW;AACtB,YAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ;SACnC;IACH;;IAGQ,cAAc,GAAA;AACpB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACzC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,OAAO,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAE;AACpD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE;QACjE,OAAO;AACL,YAAA,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,CAAA,EAAG,QAAQ,CAAA,QAAA,CAAU;AAC5B,YAAA,GAAG,EAAE,QAAQ;AACb,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA,EAAG,WAAW,CAAA,QAAA,CAAU,EAAE;AACvD,YAAA,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,OAAO,eAAe,EAAE;AAC3C,YAAA,WAAW,EAAE,IAAI;SAClB;IACH;IAEQ,cAAc,GAAA;QACpB,IAAI,WAAW,GAAG,EAAE;QACpB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC;QAC9G;AACA,QAAA,OAAO,WAAW;IACpB;AAEA;;;AAGG;IACI,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI;IAC/B;;IAGQ,kBAAkB,GAAA;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/C,QAAA,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACnC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG;AACvB,QAAA,OAAO,GAAG;IACZ;;IAGQ,eAAe,GAAA;QACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ;AAC5C,QAAA,IAAI,CAAS;AACb,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAoB;AAC3C,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,EAAE;AAC/D,gBAAA,OAAO,IAAI;YACb;QACF;AACA,QAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE;IAClC;AAEA;;;AAGG;AACI,IAAA,gBAAgB,CAAC,GAAY,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE;QAC5C;QAEA,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ;AAE1C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;AACzE,YAAA,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC;QACpD;QAEA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,YAAA,IAAI,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;QACnB;AAEA,QAAA,MAAM,YAAY,GAAG,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAA,EAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA,EAAG,IAAI,EAAE;QAE1I,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC;AACpD,QAAA,OAAO,IAAI;IACb;AAEA;;;AAGG;AACI,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,OAAO,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;IAChC;AAEA;;;;;AAKG;AACH,IAAA,gBAAgB,CAAC,YAAoB,EAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;AAC1C,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;AAC9E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW;QACpC,IAAI,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;AACrD,QAAA,IAAI,WAAW,KAAK,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,CAAC,EAAE;AACjE,YAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,CAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;QAC1E;AACA,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,IAAI,EAAE,GAAG,GAAG,mBAAmB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,OAAY,KAAK,OAAO,CAAC,aAAa,KAAK,WAAW,CAAC,GAAG,IAAI;QACrJ,OAAO,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;IACxD;IAEA,gBAAgB,CAAC,IAAY,EAAE,UAAkB,EAAA;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QAC7C,MAAM,eAAe,GAAG,IAAI,EAAE,GAAG,GAAG,sBAAsB;AACxD,cAAE;gBACE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC,GAAG;gBAC5C,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC,KAAK;gBAChD,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,CAAC,CAAC,MAAM;AACnD;cACD,IAAI;AAER,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,UAAU,EAAE,oBAAoB;AAChC,YAAA,OAAO,EAAE,SAAS;YAClB,gBAAgB,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAE;AAC5G,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ;YAC9B,aAAa,EAAE,IAAI,CAAC,QAAQ;AAC5B,YAAA,SAAS,EAAE;AACT,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA;AACD,YAAA,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ;YACjC,WAAW,EAAE,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnD,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,aAAa;gBACtB,GAAG,EAAE,eAAe,EAAE,GAAG,IAAI,IAAI,CAAC,mBAAmB,IAAI,EAAE;AAC3D,gBAAA,MAAM,EAAE,eAAe,EAAE,MAAM,IAAI,EAAE;AACrC,gBAAA,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,EAAE;AACpC,aAAA;AACD,YAAA,MAAM,EAAE;AACN,gBAAA,OAAO,EAAE,cAAc;AACvB,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA;YACD,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM;SACzC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAEpD,QAAA,MAAM,CAAC,IAAI,GAAG,qBAAqB;AACnC,QAAA,MAAM,CAAC,EAAE,GAAG,UAAU;QACtB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACxC;AAEA,IAAA,mBAAmB,CAAC,UAAkB,EAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC;QACvD,MAAM,EAAE,MAAM,EAAE;IAClB;AAEO,IAAA,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAc,EAAA;AACpG,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;IAChC;8GApgBW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFT,MAAM,EAAA,CAAA,CAAA;;2FAEP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCAY,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;QAIU,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAqFxD,IAAA;AAnFC,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAW;QAC/C;AACA,QAAA,OAAO,EAAE;IACX;IAEA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;QAClC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,SAAS,GAAG,GAAG,EAAA;AACtD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;YACnC;AACA,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/G,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC;QACrC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,UAAU,CAAC,UAAqC,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,SAAS,CAAC,IAAY,EAAE,OAAgB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI;YAC/B,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;YACvC;QACF;AACA,QAAA,OAAO,IAAI;IACb;IAEA,WAAW,CAAC,OAAO,GAAG,gBAAgB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;QACvC;AACA,QAAA,OAAO,IAAI;IACb;IAEA,eAAe,CAAC,OAAO,GAAG,gBAAgB,EAAA;AACxC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;QACvC;AACA,QAAA,OAAO,IAAI;IACb;IAEA,QAAQ,CAAC,OAAO,GAAG,0BAA0B,EAAA;AAC3C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG;AAC9B,YAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO;QACvC;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,WAAW,CACT,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAA,GAA8D;AACtF,QAAA,UAAU,EAAE,GAAG;AACf,QAAA,OAAO,EAAE,+BAA+B;AACxC,QAAA,GAAG,EAAE,SAAS;AACf,KAAA,EAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,IAAI,GAAG;YAC5C,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO,IAAI,+BAA+B;YACxE,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAC5C;QACF;AACA,QAAA,OAAO,IAAI;IACb;8GArFW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cAFpB,MAAM,EAAA,CAAA,CAAA;;2FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;ACjBD;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rededor-site-front-end-lib-cura-badges-cura-badge-pill.mjs","sources":["../../../projects/site-front-end-lib/cura/badges/cura-badge-pill/cura-badge-pill.component.ts","../../../projects/site-front-end-lib/cura/badges/cura-badge-pill/cura-badge-pill.component.html","../../../projects/site-front-end-lib/cura/badges/cura-badge-pill/rededor-site-front-end-lib-cura-badges-cura-badge-pill.ts"],"sourcesContent":["import { Component, inject, input, computed } from '@angular/core';\
|
|
1
|
+
{"version":3,"file":"rededor-site-front-end-lib-cura-badges-cura-badge-pill.mjs","sources":["../../../projects/site-front-end-lib/cura/badges/cura-badge-pill/cura-badge-pill.component.ts","../../../projects/site-front-end-lib/cura/badges/cura-badge-pill/cura-badge-pill.component.html","../../../projects/site-front-end-lib/cura/badges/cura-badge-pill/rededor-site-front-end-lib-cura-badges-cura-badge-pill.ts"],"sourcesContent":["import { Component, inject, input, computed } from '@angular/core';\nimport { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\nimport { CuraIconComponent } from '@rededor/site-front-end-lib/cura/icons/cura-icon';\nimport { CuraLabelComponent } from '@rededor/site-front-end-lib/cura/forms/cura-label';\nimport { BadgeType, BadgeColor } from '@rededor/site-front-end-lib/cura/badges';\n\n@Component({\n selector: 'cura-badge-pill',\n imports: [CuraIconComponent, CuraLabelComponent],\n templateUrl: './cura-badge-pill.component.html',\n styleUrls: ['./cura-badge-pill.component.scss'],\n host: {\n '[style.--border-radius]': 'borderRadius() || \"2px\"',\n '[style.--color-background]': 'colorBackground()',\n '[style.--color-base]': 'colorBase()',\n },\n // '[style.--base-spacing]': 'baseSpacing()',\n // '[style.--font-family]': 'fontFamily()',\n // '[style.--font-size]': 'fontSize()',\n // '[style.--color-background-disabled]': 'colorBackgroundDisabled()',\n // '[style.--color-outline-disabled]': 'colorOutlineDisabled()',\n})\nexport class CuraBadgePillComponent {\n private curaApi = inject(CuraApiService);\n\n /**\n * Badge type: solid | outline | transparent\n */\n type = input<BadgeType>('solid');\n\n /**\n * Color base from color scheme. Default: primary\n */\n color = input<BadgeColor>('primary');\n\n /**\n * Name of the icon to be used from iconset\n */\n iconName = input<string>('');\n\n /**\n * Custom iconset if needed\n */\n iconset = input<string>('default');\n\n /**\n * Disabled state. Boolean\n */\n disabled = input<boolean>(false);\n\n /**\n * Set badge to icon only. Boolean\n */\n iconOnly = input<boolean>(false);\n\n /**\n * Set border-radius.\n */\n borderRadius = input<string>('2px');\n\n // Computed signals\n colorBackground = computed(() => {\n return this.curaApi.theme.colors.getColor(`${this.color()}-lighter`);\n });\n\n colorBase = computed(() => {\n return this.curaApi.theme.colors.getColor(`${this.color()}-dark`);\n });\n\n // colorBackgroundDisabled = computed(() => {\n // return this.curaApi.theme.colors.getColor('neutral-pale');\n // });\n\n // colorOutlineDisabled = computed(() => {\n // return this.curaApi.theme.colors.getColor('neutral-medium');\n // });\n\n // baseSpacing = computed(() => {\n // return this.curaApi.theme.spacing.getSpacing();\n // });\n\n // fontFamily = computed(() => {\n // return this.curaApi.theme.fonts.getFamily();\n // });\n\n // fontSize = computed(() => {\n // return this.curaApi.theme.fonts.getSize();\n // });\n\n containerClasses = computed(() => {\n const classes = [];\n\n classes.push('badge-container');\n classes.push(this.type());\n\n if (this.iconOnly()) classes.push('icon-only');\n if (this.disabled()) classes.push('disabled');\n\n return classes.join(' ');\n });\n\n symbolColor = computed(() => {\n return this.disabled() ? 'neutral-medium' : `${this.color()}-dark`;\n });\n}\n","<div [class]=\"containerClasses()\">\r\n @if (iconName()) {\r\n <cura-icon [name]=\"iconName()\" [iconset]=\"iconset()\" size=\"micro\" [color]=\"symbolColor()\"> </cura-icon>\r\n }\r\n <cura-label size=\"xsmall\" lineHeight=\"117%\" [color]=\"symbolColor()\">\r\n <ng-content></ng-content>\r\n </cura-label>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -57,11 +57,11 @@ class CuraCardComponent {
|
|
|
57
57
|
}, ...(ngDevMode ? [{ debugName: "isLink" }] : []));
|
|
58
58
|
}
|
|
59
59
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CuraCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: CuraCardComponent, isStandalone: true, selector: "cura-card", inputs: { hasPadding: { classPropertyName: "hasPadding", publicName: "hasPadding", isSignal: true, isRequired: false, transformFunction: null }, hasShadow: { classPropertyName: "hasShadow", publicName: "hasShadow", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, colorMode: { classPropertyName: "colorMode", publicName: "colorMode", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isLink()) {\
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: CuraCardComponent, isStandalone: true, selector: "cura-card", inputs: { hasPadding: { classPropertyName: "hasPadding", publicName: "hasPadding", isSignal: true, isRequired: false, transformFunction: null }, hasShadow: { classPropertyName: "hasShadow", publicName: "hasShadow", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, colorMode: { classPropertyName: "colorMode", publicName: "colorMode", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (isLink()) {\n <!-- <a [class]=\"containerClasses()\" [ngStyle]=\"cardStyles()\" [target]=\"target()\" [href]=\"href()\"> -->\n <a [class]=\"containerClasses()\" [target]=\"target()\" [href]=\"href()\">\n <ng-content></ng-content>\n </a>\n} @else {\n <!-- <div [class]=\"containerClasses()\" [ngStyle]=\"cardStyles()\"> -->\n <div [class]=\"containerClasses()\">\n <ng-content></ng-content>\n </div>\n}\n", styles: [":host{display:block;box-sizing:border-box;font-size:var(--cura-font-size);font-family:var(--cura-font-body)}a::ng-deep>*,div::ng-deep>*{display:flex;align-items:center;justify-content:center;font-size:var(--cura-font-size);font-family:var(--cura-font-body)}a{display:block;text-decoration:none!important;color:inherit}.solid{background-color:#fff;border:2px solid rgb(183,183,183);border-radius:12px;overflow:hidden;padding:0;box-shadow:none}.solid ::ng-deep>*{border-radius:0}.solid.hasPadding{padding:20px}.solid.hasPadding ::ng-deep>*{border-radius:4px!important}.solid.hasShadow{border:2px solid rgb(183,183,183);box-shadow:0 1px 4px 0 var(rgba(38, 38, 38, .16), rgba(38, 38, 38, .16))}.solid.cardLink{background-color:#fff;border:2px solid var(--cura-color-primary-500);border-radius:12px;padding:0;box-shadow:none;cursor:pointer}.solid.cardLink ::ng-deep>*{border-radius:0}.solid.cardLink:hover{border:2px solid var(--cura-color-primary-100)!important}.solid.cardLink.hasPadding{padding:20px}.solid.cardLink.hasPadding ::ng-deep>*{border-radius:4px!important}.solid.cardLink.hasPadding:hover{border:2px solid var(--cura-color-primary-100)!important}.solid.cardLink.hasShadow{border:2px solid var(--cura-color-primary-500);box-shadow:0 4px 8px 0 var(rgba(38, 38, 38, .16), rgba(38, 38, 38, .16))}.solid.cardLink:not(.hasPadding).hasShadow ::ng-deep>*{border-radius:12px!important}.solid.cardLink.dark{background-color:#fff;border:2px solid rgb(255,255,255)}.solid.cardLink.dark:hover{border:2px solid var(--cura-color-primary-100)}.transparent{background-color:transparent;border:0;border-radius:12px;padding:0;overflow:hidden}.transparent ::ng-deep>*{border-radius:12px}.transparent.hasPadding{padding:20px}.transparent.hasPadding ::ng-deep>*{border-radius:4px}.transparent.cardLink{background-color:transparent;border:2px solid var(--cura-color-primary-500);overflow:hidden;border-radius:12px;padding:0;box-shadow:none}.transparent.cardLink ::ng-deep>*{border-radius:0!important}.transparent.cardLink:hover{border:2px solid var(--cura-color-primary-100)!important}.transparent.cardLink.light{background-color:#fff;border:2px solid var(--cura-color-primary-500)}.transparent.cardLink.light ::ng-deep>*{border-radius:12px!important}.transparent.cardLink.light:hover{border-color:var(--cura-color-primary-100)!important}.transparent.cardLink.dark{background-color:transparent;border:2px solid rgb(255,255,255)}.transparent.cardLink.dark:hover{border:0}.transparent.cardLink.hasPadding{padding:20px}.transparent.cardLink.hasPadding ::ng-deep>*{border-radius:4px!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
61
61
|
}
|
|
62
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CuraCardComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
|
-
args: [{ selector: 'cura-card', imports: [CommonModule], template: "@if (isLink()) {\
|
|
64
|
+
args: [{ selector: 'cura-card', imports: [CommonModule], template: "@if (isLink()) {\n <!-- <a [class]=\"containerClasses()\" [ngStyle]=\"cardStyles()\" [target]=\"target()\" [href]=\"href()\"> -->\n <a [class]=\"containerClasses()\" [target]=\"target()\" [href]=\"href()\">\n <ng-content></ng-content>\n </a>\n} @else {\n <!-- <div [class]=\"containerClasses()\" [ngStyle]=\"cardStyles()\"> -->\n <div [class]=\"containerClasses()\">\n <ng-content></ng-content>\n </div>\n}\n", styles: [":host{display:block;box-sizing:border-box;font-size:var(--cura-font-size);font-family:var(--cura-font-body)}a::ng-deep>*,div::ng-deep>*{display:flex;align-items:center;justify-content:center;font-size:var(--cura-font-size);font-family:var(--cura-font-body)}a{display:block;text-decoration:none!important;color:inherit}.solid{background-color:#fff;border:2px solid rgb(183,183,183);border-radius:12px;overflow:hidden;padding:0;box-shadow:none}.solid ::ng-deep>*{border-radius:0}.solid.hasPadding{padding:20px}.solid.hasPadding ::ng-deep>*{border-radius:4px!important}.solid.hasShadow{border:2px solid rgb(183,183,183);box-shadow:0 1px 4px 0 var(rgba(38, 38, 38, .16), rgba(38, 38, 38, .16))}.solid.cardLink{background-color:#fff;border:2px solid var(--cura-color-primary-500);border-radius:12px;padding:0;box-shadow:none;cursor:pointer}.solid.cardLink ::ng-deep>*{border-radius:0}.solid.cardLink:hover{border:2px solid var(--cura-color-primary-100)!important}.solid.cardLink.hasPadding{padding:20px}.solid.cardLink.hasPadding ::ng-deep>*{border-radius:4px!important}.solid.cardLink.hasPadding:hover{border:2px solid var(--cura-color-primary-100)!important}.solid.cardLink.hasShadow{border:2px solid var(--cura-color-primary-500);box-shadow:0 4px 8px 0 var(rgba(38, 38, 38, .16), rgba(38, 38, 38, .16))}.solid.cardLink:not(.hasPadding).hasShadow ::ng-deep>*{border-radius:12px!important}.solid.cardLink.dark{background-color:#fff;border:2px solid rgb(255,255,255)}.solid.cardLink.dark:hover{border:2px solid var(--cura-color-primary-100)}.transparent{background-color:transparent;border:0;border-radius:12px;padding:0;overflow:hidden}.transparent ::ng-deep>*{border-radius:12px}.transparent.hasPadding{padding:20px}.transparent.hasPadding ::ng-deep>*{border-radius:4px}.transparent.cardLink{background-color:transparent;border:2px solid var(--cura-color-primary-500);overflow:hidden;border-radius:12px;padding:0;box-shadow:none}.transparent.cardLink ::ng-deep>*{border-radius:0!important}.transparent.cardLink:hover{border:2px solid var(--cura-color-primary-100)!important}.transparent.cardLink.light{background-color:#fff;border:2px solid var(--cura-color-primary-500)}.transparent.cardLink.light ::ng-deep>*{border-radius:12px!important}.transparent.cardLink.light:hover{border-color:var(--cura-color-primary-100)!important}.transparent.cardLink.dark{background-color:transparent;border:2px solid rgb(255,255,255)}.transparent.cardLink.dark:hover{border:0}.transparent.cardLink.hasPadding{padding:20px}.transparent.cardLink.hasPadding ::ng-deep>*{border-radius:4px!important}\n"] }]
|
|
65
65
|
}] });
|
|
66
66
|
|
|
67
67
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rededor-site-front-end-lib-cura-cards-cura-card.mjs","sources":["../../../projects/site-front-end-lib/cura/cards/cura-card/cura-card.component.ts","../../../projects/site-front-end-lib/cura/cards/cura-card/cura-card.component.html","../../../projects/site-front-end-lib/cura/cards/cura-card/rededor-site-front-end-lib-cura-cards-cura-card.ts"],"sourcesContent":["import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\nimport { CardType, CardColorMode, CardTarget } from './cura-cards.definitions';\n\n@Component({\n selector: 'cura-card',\n imports: [CommonModule],\n templateUrl: './cura-card.component.html',\n styleUrls: ['./cura-card.component.scss'],\n})\nexport class CuraCardComponent {\n // private curaApi = inject(CuraApiService);\n\n /**\n * Determines whether the card should have padding.\n * @default true\n */\n hasPadding = input<boolean>(true);\n\n /**\n * Determines whether the card should have a shadow effect.\n * @default false\n */\n hasShadow = input<boolean>(false);\n\n /**\n * Sets the type of the card background.\n * - 'solid': A solid background.\n * - 'transparent': A transparent background.\n * @default 'solid'\n */\n type = input<CardType>('solid');\n\n /**\n * Sets the color mode of the card.\n * - 'light': Light mode for the card.\n * - 'dark': Dark mode for the card.\n * @default 'light'\n */\n colorMode = input<CardColorMode>('light');\n\n /**\n * The URL that the card should link to (if set).\n * If not set, the card acts as a normal card.\n */\n href = input<string>('');\n\n /**\n * The target attribute for the link.\n * Applicable only if `href` is set.\n * @default '_self'\n */\n target = input<CardTarget>('_self');\n\n containerClasses = computed(() => {\n const classes = [];\n\n classes.push(this.type());\n classes.push(this.colorMode());\n\n if (this.href()) classes.push('cardLink');\n if (this.hasPadding()) classes.push('hasPadding');\n if (this.hasShadow()) classes.push('hasShadow');\n\n return classes.join(' ');\n });\n\n isLink = computed(() => {\n return !!this.href();\n });\n\n // // Computed signal\n // cardStyles = computed(() => {\n // const styles: { [key: string]: string } = {};\n\n // styles['--base-spacing'] = this.curaApi.theme.spacing.getSpacing();\n // styles['--neutral-purewhite'] = this.curaApi.theme.colors.getColor('neutral-purewhite');\n // styles['--neutral-base'] = this.curaApi.theme.colors.getColor('neutral-base');\n // styles['--neutral-black-shadow'] = this.curaApi.theme.colors.getColor('neutral-black', 0.16);\n // styles['--primary-lighter'] = this.curaApi.theme.colors.getColor('primary-lighter');\n // styles['--primary-base'] = this.curaApi.theme.colors.getColor('primary-base');\n // styles['--font-size'] = this.curaApi.theme.fonts.getSize();\n // styles['--font-family'] = this.curaApi.theme.fonts.getFamily();\n // styles['--font-weight-medium'] = this.curaApi.theme.fonts.getWeights().medium;\n\n // return styles;\n // });\n}\n","@if (isLink()) {\
|
|
1
|
+
{"version":3,"file":"rededor-site-front-end-lib-cura-cards-cura-card.mjs","sources":["../../../projects/site-front-end-lib/cura/cards/cura-card/cura-card.component.ts","../../../projects/site-front-end-lib/cura/cards/cura-card/cura-card.component.html","../../../projects/site-front-end-lib/cura/cards/cura-card/rededor-site-front-end-lib-cura-cards-cura-card.ts"],"sourcesContent":["import { Component, input, computed } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n// import { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\nimport { CardType, CardColorMode, CardTarget } from './cura-cards.definitions';\n\n@Component({\n selector: 'cura-card',\n imports: [CommonModule],\n templateUrl: './cura-card.component.html',\n styleUrls: ['./cura-card.component.scss'],\n})\nexport class CuraCardComponent {\n // private curaApi = inject(CuraApiService);\n\n /**\n * Determines whether the card should have padding.\n * @default true\n */\n hasPadding = input<boolean>(true);\n\n /**\n * Determines whether the card should have a shadow effect.\n * @default false\n */\n hasShadow = input<boolean>(false);\n\n /**\n * Sets the type of the card background.\n * - 'solid': A solid background.\n * - 'transparent': A transparent background.\n * @default 'solid'\n */\n type = input<CardType>('solid');\n\n /**\n * Sets the color mode of the card.\n * - 'light': Light mode for the card.\n * - 'dark': Dark mode for the card.\n * @default 'light'\n */\n colorMode = input<CardColorMode>('light');\n\n /**\n * The URL that the card should link to (if set).\n * If not set, the card acts as a normal card.\n */\n href = input<string>('');\n\n /**\n * The target attribute for the link.\n * Applicable only if `href` is set.\n * @default '_self'\n */\n target = input<CardTarget>('_self');\n\n containerClasses = computed(() => {\n const classes = [];\n\n classes.push(this.type());\n classes.push(this.colorMode());\n\n if (this.href()) classes.push('cardLink');\n if (this.hasPadding()) classes.push('hasPadding');\n if (this.hasShadow()) classes.push('hasShadow');\n\n return classes.join(' ');\n });\n\n isLink = computed(() => {\n return !!this.href();\n });\n\n // // Computed signal\n // cardStyles = computed(() => {\n // const styles: { [key: string]: string } = {};\n\n // styles['--base-spacing'] = this.curaApi.theme.spacing.getSpacing();\n // styles['--neutral-purewhite'] = this.curaApi.theme.colors.getColor('neutral-purewhite');\n // styles['--neutral-base'] = this.curaApi.theme.colors.getColor('neutral-base');\n // styles['--neutral-black-shadow'] = this.curaApi.theme.colors.getColor('neutral-black', 0.16);\n // styles['--primary-lighter'] = this.curaApi.theme.colors.getColor('primary-lighter');\n // styles['--primary-base'] = this.curaApi.theme.colors.getColor('primary-base');\n // styles['--font-size'] = this.curaApi.theme.fonts.getSize();\n // styles['--font-family'] = this.curaApi.theme.fonts.getFamily();\n // styles['--font-weight-medium'] = this.curaApi.theme.fonts.getWeights().medium;\n\n // return styles;\n // });\n}\n","@if (isLink()) {\n <!-- <a [class]=\"containerClasses()\" [ngStyle]=\"cardStyles()\" [target]=\"target()\" [href]=\"href()\"> -->\n <a [class]=\"containerClasses()\" [target]=\"target()\" [href]=\"href()\">\n <ng-content></ng-content>\n </a>\n} @else {\n <!-- <div [class]=\"containerClasses()\" [ngStyle]=\"cardStyles()\"> -->\n <div [class]=\"containerClasses()\">\n <ng-content></ng-content>\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rededor-site-front-end-lib-cura-forms-cura-label.mjs","sources":["../../../projects/site-front-end-lib/cura/forms/cura-label/cura-label.component.ts","../../../projects/site-front-end-lib/cura/forms/cura-label/cura-label.component.html","../../../projects/site-front-end-lib/cura/forms/cura-label/rededor-site-front-end-lib-cura-forms-cura-label.ts"],"sourcesContent":["import { Component, inject, input, computed } from '@angular/core';\
|
|
1
|
+
{"version":3,"file":"rededor-site-front-end-lib-cura-forms-cura-label.mjs","sources":["../../../projects/site-front-end-lib/cura/forms/cura-label/cura-label.component.ts","../../../projects/site-front-end-lib/cura/forms/cura-label/cura-label.component.html","../../../projects/site-front-end-lib/cura/forms/cura-label/rededor-site-front-end-lib-cura-forms-cura-label.ts"],"sourcesContent":["import { Component, inject, input, computed } from '@angular/core';\nimport { CuraApiService } from '@rededor/site-front-end-lib/cura/api';\nimport { LabelSize, LabelWeight, TextOverflow } from '@rededor/site-front-end-lib/cura/forms';\n\n@Component({\n selector: 'cura-label',\n templateUrl: './cura-label.component.html',\n styleUrls: ['./cura-label.component.scss'],\n host: {\n '[style.--line-height]': 'lineHeight()',\n '[style.--color-body]': 'bodyColor()',\n },\n // '[style.--margin-block]': 'marginBlock()',\n // '[style.--font-weight-medium]': 'weights().medium',\n // '[style.--font-weight-bold]': 'weights().bold',\n // '[style.--font-size-base]': 'fontSizeBase()',\n // '[style.--font-family]': 'fontFamily()',\n // '[style.--color-link]': 'linkColor()',\n})\nexport class CuraLabelComponent {\n private curaApi = inject(CuraApiService);\n\n /**\n * Set size of body text.\n * Values: medium (default) | large | small | xsmall.\n */\n size = input<LabelSize>('medium');\n\n /**\n * Label font weight. It is possible to use regular HTML tags like <b> or <strong> as well.\n * Values: regular (default) | bold.\n */\n weight = input<LabelWeight>('regular');\n\n /**\n * Apply design system color to interactive elements like <a> and <abbr> inside the text.\n * Values: Color from design system scheme. Default to 'accent-dark'.\n */\n spotColor = input<string>('accent-dark'); // Desativado em nosso projeto, mas funcional no projeto cura.\n\n /**\n * Text color.\n * Values: Color from design system scheme. Default to the font color from the theme.\n */\n color = input<string>('');\n\n /**\n * CSS margin-block property values.\n * Default to '0'\n */\n marginBlock = input<string>('0');\n\n /**\n * CSS line-height property values.\n * Default to '125%'\n */\n lineHeight = input<string>('125%');\n\n /**\n * Apply text-overflow ellipsis definitions.\n * Default to 'none'\n */\n textOverflow = input<TextOverflow>('none');\n\n // Computed signals\n // weights = computed(() => this.curaApi.theme.fonts.getWeights());\n // fontSizeBase = computed(() => this.curaApi.theme.fonts.getSize());\n // fontFamily = computed(() => this.curaApi.theme.fonts.getFamily('body'));\n\n // linkColor = computed(() => {\n // return this.curaApi.theme.colors.getColor(this.spotColor());\n // });\n\n bodyColor = computed(() => {\n if (this.color()) {\n return this.curaApi.theme.colors.getColor(this.color());\n }\n return this.curaApi.theme.fonts.getColor() || this.curaApi.theme.colors.getColor('neutral-darker');\n });\n\n containerClasses = computed(() => {\n const classes = [];\n\n classes.push(this.size().toLowerCase());\n classes.push(`${this.weight().toLowerCase()}-weight`);\n\n if (this.textOverflow() === 'single') {\n classes.push('textoverflow-single');\n }\n\n return classes.join(' ');\n });\n}\n","<p [class]=\"containerClasses()\">\r\n <ng-content></ng-content>\r\n</p>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAmBa,kBAAkB,CAAA;AAf/B,IAAA,WAAA,GAAA;AAgBU,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAExC;;;AAGG;AACH,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAY,QAAQ,gDAAC;AAEjC;;;AAGG;AACH,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAc,SAAS,kDAAC;AAEtC;;;AAGG;AACH,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAS,aAAa,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC;AAEzC;;;AAGG;AACH,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AAEzB;;;AAGG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,GAAG,uDAAC;AAEhC;;;AAGG;AACH,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,MAAM,sDAAC;AAElC;;;AAGG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,MAAM,wDAAC;;;;;;;;AAW1C,QAAA,IAAA,CAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE,EAAE;AAChB,gBAAA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzD;YACA,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;AACpG,QAAA,CAAC,qDAAC;AAEF,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;YAC/B,MAAM,OAAO,GAAG,EAAE;YAElB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACvC,YAAA,OAAO,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAA,OAAA,CAAS,CAAC;AAErD,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,QAAQ,EAAE;AACpC,gBAAA,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC;YACrC;AAEA,YAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,CAAC,4DAAC;AACH,IAAA;8GAzEY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,kkCCnB/B,+EAGA,EAAA,MAAA,EAAA,CAAA,0gCAAA,CAAA,EAAA,CAAA,CAAA;;2FDgBa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAf9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,IAAA,EAGhB;AACJ,wBAAA,uBAAuB,EAAE,cAAc;AACvC,wBAAA,sBAAsB,EAAE,aAAa;AACtC,qBAAA,EAAA,QAAA,EAAA,+EAAA,EAAA,MAAA,EAAA,CAAA,0gCAAA,CAAA,EAAA;;;AEXH;;AAEG;;;;"}
|