valtech-components 2.0.1007 → 2.0.1008

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/esm2022/lib/components/molecules/comment/comment.component.mjs +3 -3
  2. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -141
  3. package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +1 -21
  4. package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +6 -16
  5. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +19 -17
  6. package/esm2022/lib/services/auth/auth.service.mjs +1 -14
  7. package/esm2022/lib/services/auth/types.mjs +1 -1
  8. package/esm2022/lib/services/org/org.service.mjs +1 -8
  9. package/esm2022/lib/services/org/types.mjs +1 -1
  10. package/esm2022/lib/services/preferences/preferences.service.mjs +36 -11
  11. package/esm2022/lib/version.mjs +2 -2
  12. package/esm2022/public-api.mjs +1 -7
  13. package/fesm2022/valtech-components.mjs +370 -1905
  14. package/fesm2022/valtech-components.mjs.map +1 -1
  15. package/lib/components/organisms/organization-view/organization-view.component.d.ts +0 -6
  16. package/lib/components/templates/auth-background/auth-background.component.d.ts +2 -2
  17. package/lib/services/auth/auth.service.d.ts +1 -7
  18. package/lib/services/auth/types.d.ts +0 -23
  19. package/lib/services/org/org.service.d.ts +1 -6
  20. package/lib/services/org/types.d.ts +0 -30
  21. package/lib/version.d.ts +1 -1
  22. package/package.json +1 -1
  23. package/public-api.d.ts +1 -8
  24. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +0 -436
  25. package/esm2022/lib/components/organisms/about-view/about-view.i18n.mjs +0 -61
  26. package/esm2022/lib/components/organisms/about-view/about.routes.mjs +0 -36
  27. package/esm2022/lib/components/organisms/about-view/types.mjs +0 -19
  28. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +0 -385
  29. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.mjs +0 -63
  30. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +0 -313
  31. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +0 -63
  32. package/esm2022/lib/services/apikeys/api-keys.service.mjs +0 -46
  33. package/esm2022/lib/services/apikeys/types.mjs +0 -7
  34. package/lib/components/organisms/about-view/about-view.component.d.ts +0 -88
  35. package/lib/components/organisms/about-view/about-view.i18n.d.ts +0 -14
  36. package/lib/components/organisms/about-view/about.routes.d.ts +0 -31
  37. package/lib/components/organisms/about-view/types.d.ts +0 -76
  38. package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +0 -44
  39. package/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.d.ts +0 -6
  40. package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +0 -47
  41. package/lib/components/organisms/member-import-modal/member-import-modal.i18n.d.ts +0 -6
  42. package/lib/services/apikeys/api-keys.service.d.ts +0 -25
  43. package/lib/services/apikeys/types.d.ts +0 -46
@@ -1,436 +0,0 @@
1
- import { Component, computed, inject, Input } from '@angular/core';
2
- import { ActivatedRoute } from '@angular/router';
3
- import { IonButton, IonGrid, IonIcon } from '@ionic/angular/standalone';
4
- import { addIcons } from 'ionicons';
5
- import { chatbubbleEllipsesOutline, copyOutline, helpCircleOutline, logoFacebook, logoInstagram, logoLinkedin, logoTiktok, logoTwitter, logoYoutube, shareSocialOutline, starOutline, } from 'ionicons/icons';
6
- import { PillComponent } from '../../molecules/pill/pill.component';
7
- import { ActionCardComponent } from '../../molecules/action-card/action-card.component';
8
- import { TextComponent } from '../../atoms/text/text.component';
9
- import { TitleComponent } from '../../atoms/title/title.component';
10
- import { ContentReactionComponent } from '../../molecules/content-reaction/content-reaction.component';
11
- import { I18nService } from '../../../services/i18n';
12
- import { ModalService } from '../../../services/modal/modal.service';
13
- import { NavigationService } from '../../../services/navigation/navigation.service';
14
- import { ToastService } from '../../../services/toast.service';
15
- import { ABOUT_VIEW_I18N } from './about-view.i18n';
16
- import * as i0 from "@angular/core";
17
- addIcons({
18
- copyOutline,
19
- starOutline,
20
- chatbubbleEllipsesOutline,
21
- shareSocialOutline,
22
- helpCircleOutline,
23
- logoFacebook,
24
- logoInstagram,
25
- logoLinkedin,
26
- logoTwitter,
27
- logoYoutube,
28
- logoTiktok,
29
- });
30
- const DEFAULT_NAMESPACE = 'Settings.About';
31
- const DEFAULT_BRAND_NAME = 'Valtech';
32
- const DEFAULT_LOGO_SRC = 'assets/images/main-icon.png';
33
- const DEFAULT_RATING_ENTITY_ID = 'experience';
34
- /**
35
- * `val-about-view` — vista About full-feature autocontenida (organism).
36
- * Promovida desde `showcase` bajo el proceso de ADR-021. Reúne:
37
- * - **HERO** — logo + nombre de marca + tagline + pill de versión (copiable).
38
- * - **Descripción** — título + cuerpo.
39
- * - **Acciones** — action-card de rating built-in (abre `val-content-reaction`
40
- * DIRECTAMENTE vía `ModalService`, sin wrapper local — decisión CTO) + las
41
- * acciones genéricas que el consumer aporte por `config.actions`.
42
- * - **Redes** — links sociales (`config.socialLinks`); sección oculta si vacía.
43
- * - **Footer** — copyright con el año actual.
44
- *
45
- * Lo app-specific (logo, nombre, versión, redes, acciones share/faq) viaja como
46
- * DATA de config — NO como slots (ADR-021). La versión la pasa el consumer
47
- * (`config.version` = su `APP_VERSION`); la lib NO importa el `version.ts` de la
48
- * app. Si no se pasa versión, el pill se oculta.
49
- *
50
- * NO renderiza ion-content — vive dentro de val-page-wrapper. `ActivatedRoute`
51
- * se inyecta `{ optional: true }` solo para leer el route data de config.
52
- *
53
- * Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
54
- * proveyó el namespace configurado (default `Settings.About`).
55
- *
56
- * GOTCHA i18n ContentReaction: `val-content-reaction` exige su namespace
57
- * `ContentReaction` registrado donde se use (key faltante en binding + CD =
58
- * navegador congelado en dev). `ContentReactionComponent` se auto-registra ese
59
- * namespace en SU constructor, y como se abre vía `ModalService` ese constructor
60
- * corre antes de que su template binde — queda cubierto. Igual lo importamos
61
- * como dependencia explícita de esta vista para que la garantía sea local.
62
- */
63
- export class AboutViewComponent {
64
- /** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
65
- get ns() {
66
- return this.resolvedConfig().i18nNamespace;
67
- }
68
- constructor() {
69
- this.nav = inject(NavigationService);
70
- this.i18n = inject(I18nService);
71
- this.modalService = inject(ModalService);
72
- this.toast = inject(ToastService);
73
- this.route = inject(ActivatedRoute, { optional: true });
74
- this.resolvedConfig = computed(() => {
75
- const fromRoute = (this.route?.snapshot.data['aboutConfig'] ?? {});
76
- const merged = { ...fromRoute, ...(this.config ?? {}) };
77
- return {
78
- brand: {
79
- name: merged.brand?.name ?? DEFAULT_BRAND_NAME,
80
- logoSrc: merged.brand?.logoSrc ?? DEFAULT_LOGO_SRC,
81
- },
82
- version: merged.version ?? '',
83
- socialLinks: merged.socialLinks ?? [],
84
- showRating: merged.showRating ?? true,
85
- ratingEntityId: merged.ratingEntityId ?? DEFAULT_RATING_ENTITY_ID,
86
- actions: merged.actions ?? [],
87
- i18nNamespace: merged.i18nNamespace ?? DEFAULT_NAMESPACE,
88
- onRated: merged.onRated,
89
- };
90
- });
91
- this.brandName = computed(() => this.resolvedConfig().brand.name);
92
- this.logoSrc = computed(() => this.resolvedConfig().brand.logoSrc);
93
- this.version = computed(() => this.resolvedConfig().version);
94
- this.socialLinks = computed(() => this.resolvedConfig().socialLinks);
95
- this.showRating = computed(() => this.resolvedConfig().showRating);
96
- this.actions = computed(() => this.resolvedConfig().actions);
97
- /** Copyright del footer — año actual interpolado en `copyrightText`. */
98
- this.copyright = computed(() => {
99
- this.i18n.lang();
100
- const year = String(new Date().getFullYear());
101
- return this.tt('copyrightText').replace('{year}', year);
102
- });
103
- /** Title metadata para secciones — bold + size small. */
104
- this.rateActionCard = computed(() => {
105
- this.i18n.lang();
106
- return {
107
- icon: { ionicon: 'star-outline', color: 'primary' },
108
- title: this.tt('rateTitle'),
109
- description: this.tt('rateDesc'),
110
- size: 'medium',
111
- bordered: false,
112
- shadowed: false,
113
- };
114
- });
115
- const ns = this.ns;
116
- if (!this.i18n.hasNamespace(ns)) {
117
- this.i18n.registerContent(ns, ABOUT_VIEW_I18N);
118
- }
119
- this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
120
- }
121
- /** Helper i18n bound al namespace resuelto. Reactivo vía `lang()`. */
122
- tt(key) {
123
- this.i18n.lang();
124
- return this.i18n.t(key, this.ns);
125
- }
126
- /** Title metadata para secciones — bold + size small. */
127
- sectionTitle(key) {
128
- this.i18n.lang();
129
- return {
130
- content: this.tt(key),
131
- size: 'small',
132
- color: 'dark',
133
- bold: true,
134
- };
135
- }
136
- /** ActionCardMetadata para una acción genérica del consumer. */
137
- extraActionCard(action) {
138
- return {
139
- icon: { ionicon: action.icon ?? 'chatbubble-ellipses-outline', color: 'primary' },
140
- title: action.label,
141
- description: action.description,
142
- size: 'medium',
143
- bordered: false,
144
- shadowed: false,
145
- };
146
- }
147
- /** Copia la versión al portapapeles + toast (color dark). */
148
- async copyVersion() {
149
- const v = this.version();
150
- if (!v)
151
- return;
152
- try {
153
- await navigator.clipboard.writeText(v);
154
- this.toast.show({
155
- message: this.tt('versionCopied').replace('{v}', v),
156
- color: 'dark',
157
- duration: 1500,
158
- });
159
- }
160
- catch {
161
- // clipboard no disponible — silencioso
162
- }
163
- }
164
- /** Abre una URL externa en nueva tab. `mailto:` queda en la misma tab. */
165
- openUrl(url) {
166
- if (url.startsWith('mailto:')) {
167
- window.location.href = url;
168
- return;
169
- }
170
- window.open(url, '_blank', 'noopener,noreferrer');
171
- }
172
- /**
173
- * "Calificar la app" — abre `val-content-reaction` DIRECTAMENTE como sheet
174
- * modal (sin wrapper local — decisión CTO). El componente persiste la reacción
175
- * contra el backend de feedback y muestra su propio estado de "gracias"; el
176
- * sheet se cierra arrastrando (breakpoint 0). El namespace i18n
177
- * `ContentReaction` lo auto-registra `ContentReactionComponent` en su
178
- * constructor, que corre al crear el modal — sin riesgo de key faltante.
179
- *
180
- * Sheet (bottom sheet): el contenido scrollea dentro y el botón "Enviar" queda
181
- * siempre alcanzable, también en viewports chicos.
182
- */
183
- async openRating() {
184
- const reactionProps = {
185
- // entityType "app" distingue esta reacción de las de artículos/FAQs.
186
- entityRef: { entityType: 'app', entityId: this.resolvedConfig().ratingEntityId },
187
- question: this.tt('rateQuestion'),
188
- commentPlaceholder: this.tt('rateComment'),
189
- thankYouMessage: this.tt('rateThanks'),
190
- showComment: true,
191
- showThankYou: true,
192
- // Modal one-shot: NO bloquear el render con el check de rating previo.
193
- skipInitialCheck: true,
194
- emojis: ['😕', '🙂', '😍'],
195
- emojiLabels: [this.tt('rateBad'), this.tt('rateMid'), this.tt('rateGood')],
196
- };
197
- await this.modalService.open({
198
- component: ContentReactionComponent,
199
- componentProps: { props: reactionProps },
200
- breakpoints: {
201
- initialBreakpoint: 0.9,
202
- breakpoints: [0, 0.9, 1],
203
- showHandle: true,
204
- handleBehavior: 'cycle',
205
- },
206
- });
207
- this.resolvedConfig().onRated?.();
208
- }
209
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
210
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AboutViewComponent, isStandalone: true, selector: "val-about-view", inputs: { config: "config" }, ngImport: i0, template: `
211
- <ion-grid class="about-grid">
212
- <!-- HERO: logo + name + version -->
213
- <div class="about-hero">
214
- <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
215
- <val-title
216
- [props]="{
217
- content: brandName(),
218
- size: 'xlarge',
219
- color: 'dark',
220
- bold: true,
221
- }"
222
- />
223
- <val-text
224
- [props]="{
225
- content: tt('tagline'),
226
- size: 'medium',
227
- color: 'dark',
228
- bold: false,
229
- }"
230
- />
231
- @if (version()) {
232
- <div
233
- class="version-row"
234
- (click)="copyVersion()"
235
- role="button"
236
- [attr.aria-label]="tt('versionLabel') + ' ' + version()"
237
- >
238
- <val-pill
239
- [props]="{
240
- label: tt('versionLabel') + ' ' + version(),
241
- color: 'dark',
242
- weight: 'bold',
243
- size: 'small',
244
- }"
245
- />
246
- <ion-icon name="copy-outline" class="version-copy-icon" />
247
- </div>
248
- }
249
- </div>
250
-
251
- <!-- DESCRIPTION -->
252
- <section class="about-section">
253
- <val-title [props]="sectionTitle('descTitle')" />
254
- <val-text
255
- [props]="{
256
- content: tt('descBody'),
257
- size: 'medium',
258
- color: 'dark',
259
- bold: false,
260
- }"
261
- />
262
- </section>
263
-
264
- <!-- ACTIONS — rating built-in + acciones del consumer. -->
265
- @if (showRating() || actions().length > 0) {
266
- <section class="about-section about-section--reviews">
267
- <val-title [props]="sectionTitle('actionsTitle')" />
268
- <div class="about-actions">
269
- @if (showRating()) {
270
- <val-action-card [props]="rateActionCard()" (onClick)="openRating()" />
271
- }
272
- @for (action of actions(); track action.label) {
273
- <val-action-card [props]="extraActionCard(action)" (onClick)="action.onClick()" />
274
- }
275
- </div>
276
- </section>
277
- }
278
-
279
- <!-- SOCIAL — penúltimo, justo antes del footer de derechos. -->
280
- @if (socialLinks().length > 0) {
281
- <section class="about-section">
282
- <val-title [props]="sectionTitle('socialTitle')" />
283
- <val-text
284
- [props]="{
285
- content: tt('socialDesc'),
286
- size: 'medium',
287
- color: 'dark',
288
- bold: false,
289
- }"
290
- />
291
- <div class="about-social">
292
- @for (s of socialLinks(); track s.url) {
293
- <ion-button
294
- fill="clear"
295
- size="small"
296
- class="social-btn"
297
- [attr.aria-label]="s.label"
298
- (click)="openUrl(s.url)"
299
- >
300
- <ion-icon [name]="s.icon" slot="icon-only" />
301
- </ion-button>
302
- }
303
- </div>
304
- </section>
305
- }
306
-
307
- <!-- FOOTER -->
308
- <footer class="about-footer">
309
- <val-text
310
- [props]="{
311
- content: copyright(),
312
- size: 'small',
313
- color: 'dark',
314
- bold: false,
315
- }"
316
- />
317
- </footer>
318
- </ion-grid>
319
- `, isInline: true, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }] }); }
320
- }
321
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, decorators: [{
322
- type: Component,
323
- args: [{ selector: 'val-about-view', standalone: true, imports: [IonButton, IonGrid, IonIcon, PillComponent, TitleComponent, TextComponent, ActionCardComponent], template: `
324
- <ion-grid class="about-grid">
325
- <!-- HERO: logo + name + version -->
326
- <div class="about-hero">
327
- <img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
328
- <val-title
329
- [props]="{
330
- content: brandName(),
331
- size: 'xlarge',
332
- color: 'dark',
333
- bold: true,
334
- }"
335
- />
336
- <val-text
337
- [props]="{
338
- content: tt('tagline'),
339
- size: 'medium',
340
- color: 'dark',
341
- bold: false,
342
- }"
343
- />
344
- @if (version()) {
345
- <div
346
- class="version-row"
347
- (click)="copyVersion()"
348
- role="button"
349
- [attr.aria-label]="tt('versionLabel') + ' ' + version()"
350
- >
351
- <val-pill
352
- [props]="{
353
- label: tt('versionLabel') + ' ' + version(),
354
- color: 'dark',
355
- weight: 'bold',
356
- size: 'small',
357
- }"
358
- />
359
- <ion-icon name="copy-outline" class="version-copy-icon" />
360
- </div>
361
- }
362
- </div>
363
-
364
- <!-- DESCRIPTION -->
365
- <section class="about-section">
366
- <val-title [props]="sectionTitle('descTitle')" />
367
- <val-text
368
- [props]="{
369
- content: tt('descBody'),
370
- size: 'medium',
371
- color: 'dark',
372
- bold: false,
373
- }"
374
- />
375
- </section>
376
-
377
- <!-- ACTIONS — rating built-in + acciones del consumer. -->
378
- @if (showRating() || actions().length > 0) {
379
- <section class="about-section about-section--reviews">
380
- <val-title [props]="sectionTitle('actionsTitle')" />
381
- <div class="about-actions">
382
- @if (showRating()) {
383
- <val-action-card [props]="rateActionCard()" (onClick)="openRating()" />
384
- }
385
- @for (action of actions(); track action.label) {
386
- <val-action-card [props]="extraActionCard(action)" (onClick)="action.onClick()" />
387
- }
388
- </div>
389
- </section>
390
- }
391
-
392
- <!-- SOCIAL — penúltimo, justo antes del footer de derechos. -->
393
- @if (socialLinks().length > 0) {
394
- <section class="about-section">
395
- <val-title [props]="sectionTitle('socialTitle')" />
396
- <val-text
397
- [props]="{
398
- content: tt('socialDesc'),
399
- size: 'medium',
400
- color: 'dark',
401
- bold: false,
402
- }"
403
- />
404
- <div class="about-social">
405
- @for (s of socialLinks(); track s.url) {
406
- <ion-button
407
- fill="clear"
408
- size="small"
409
- class="social-btn"
410
- [attr.aria-label]="s.label"
411
- (click)="openUrl(s.url)"
412
- >
413
- <ion-icon [name]="s.icon" slot="icon-only" />
414
- </ion-button>
415
- }
416
- </div>
417
- </section>
418
- }
419
-
420
- <!-- FOOTER -->
421
- <footer class="about-footer">
422
- <val-text
423
- [props]="{
424
- content: copyright(),
425
- size: 'small',
426
- color: 'dark',
427
- bold: false,
428
- }"
429
- />
430
- </footer>
431
- </ion-grid>
432
- `, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"] }]
433
- }], ctorParameters: () => [], propDecorators: { config: [{
434
- type: Input
435
- }] } });
436
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvYWJvdXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkdUO3dEQStJUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkdyaWQsIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2hhdGJ1YmJsZUVsbGlwc2VzT3V0bGluZSxcbiAgY29weU91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1Rpa3RvayxcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IFBpbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGlsbC9waWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL2FjdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3R5cGVzJztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb250ZW50LXJlYWN0aW9uL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBYm91dEFjdGlvbiwgQWJvdXRWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBQk9VVF9WSUVXX0kxOE4gfSBmcm9tICcuL2Fib3V0LXZpZXcuaTE4bic7XG5cbmFkZEljb25zKHtcbiAgY29weU91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxuICBjaGF0YnViYmxlRWxsaXBzZXNPdXRsaW5lLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBsb2dvVGlrdG9rLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkFib3V0JztcbmNvbnN0IERFRkFVTFRfQlJBTkRfTkFNRSA9ICdWYWx0ZWNoJztcbmNvbnN0IERFRkFVTFRfTE9HT19TUkMgPSAnYXNzZXRzL2ltYWdlcy9tYWluLWljb24ucG5nJztcbmNvbnN0IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCA9ICdleHBlcmllbmNlJztcblxuLyoqXG4gKiBgdmFsLWFib3V0LXZpZXdgIOKAlCB2aXN0YSBBYm91dCBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICogUHJvbW92aWRhIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuIFJlw7puZTpcbiAqICAtICoqSEVSTyoqIOKAlCBsb2dvICsgbm9tYnJlIGRlIG1hcmNhICsgdGFnbGluZSArIHBpbGwgZGUgdmVyc2nDs24gKGNvcGlhYmxlKS5cbiAqICAtICoqRGVzY3JpcGNpw7NuKiog4oCUIHTDrXR1bG8gKyBjdWVycG8uXG4gKiAgLSAqKkFjY2lvbmVzKiog4oCUIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbiAoYWJyZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gXG4gKiAgICBESVJFQ1RBTUVOVEUgdsOtYSBgTW9kYWxTZXJ2aWNlYCwgc2luIHdyYXBwZXIgbG9jYWwg4oCUIGRlY2lzacOzbiBDVE8pICsgbGFzXG4gKiAgICBhY2Npb25lcyBnZW7DqXJpY2FzIHF1ZSBlbCBjb25zdW1lciBhcG9ydGUgcG9yIGBjb25maWcuYWN0aW9uc2AuXG4gKiAgLSAqKlJlZGVzKiog4oCUIGxpbmtzIHNvY2lhbGVzIChgY29uZmlnLnNvY2lhbExpbmtzYCk7IHNlY2Npw7NuIG9jdWx0YSBzaSB2YWPDrWEuXG4gKiAgLSAqKkZvb3RlcioqIOKAlCBjb3B5cmlnaHQgY29uIGVsIGHDsW8gYWN0dWFsLlxuICpcbiAqIExvIGFwcC1zcGVjaWZpYyAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIHNoYXJlL2ZhcSkgdmlhamEgY29tb1xuICogREFUQSBkZSBjb25maWcg4oCUIE5PIGNvbW8gc2xvdHMgKEFEUi0wMjEpLiBMYSB2ZXJzacOzbiBsYSBwYXNhIGVsIGNvbnN1bWVyXG4gKiAoYGNvbmZpZy52ZXJzaW9uYCA9IHN1IGBBUFBfVkVSU0lPTmApOyBsYSBsaWIgTk8gaW1wb3J0YSBlbCBgdmVyc2lvbi50c2AgZGUgbGFcbiAqIGFwcC4gU2kgbm8gc2UgcGFzYSB2ZXJzacOzbiwgZWwgcGlsbCBzZSBvY3VsdGEuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgXG4gKiBzZSBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5BYm91dGApLlxuICpcbiAqIEdPVENIQSBpMThuIENvbnRlbnRSZWFjdGlvbjogYHZhbC1jb250ZW50LXJlYWN0aW9uYCBleGlnZSBzdSBuYW1lc3BhY2VcbiAqIGBDb250ZW50UmVhY3Rpb25gIHJlZ2lzdHJhZG8gZG9uZGUgc2UgdXNlIChrZXkgZmFsdGFudGUgZW4gYmluZGluZyArIENEID1cbiAqIG5hdmVnYWRvciBjb25nZWxhZG8gZW4gZGV2KS4gYENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudGAgc2UgYXV0by1yZWdpc3RyYSBlc2VcbiAqIG5hbWVzcGFjZSBlbiBTVSBjb25zdHJ1Y3RvciwgeSBjb21vIHNlIGFicmUgdsOtYSBgTW9kYWxTZXJ2aWNlYCBlc2UgY29uc3RydWN0b3JcbiAqIGNvcnJlIGFudGVzIGRlIHF1ZSBzdSB0ZW1wbGF0ZSBiaW5kZSDigJQgcXVlZGEgY3ViaWVydG8uIElndWFsIGxvIGltcG9ydGFtb3NcbiAqIGNvbW8gZGVwZW5kZW5jaWEgZXhwbMOtY2l0YSBkZSBlc3RhIHZpc3RhIHBhcmEgcXVlIGxhIGdhcmFudMOtYSBzZWEgbG9jYWwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hYm91dC12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uR3JpZCwgSW9uSWNvbiwgUGlsbENvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIFRleHRDb21wb25lbnQsIEFjdGlvbkNhcmRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tZ3JpZCBjbGFzcz1cImFib3V0LWdyaWRcIj5cbiAgICAgIDwhLS0gSEVSTzogbG9nbyArIG5hbWUgKyB2ZXJzaW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWhlcm9cIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImFib3V0LWhlcm9fX2xvZ29cIiBbc3JjXT1cImxvZ29TcmMoKVwiIFthbHRdPVwiYnJhbmROYW1lKClcIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJyYW5kTmFtZSgpLFxuICAgICAgICAgICAgc2l6ZTogJ3hsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0YWdsaW5lJyksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmICh2ZXJzaW9uKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZlcnNpb24tcm93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5VmVyc2lvbigpXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtcGlsbFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiIGNsYXNzPVwidmVyc2lvbi1jb3B5LWljb25cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJzZWN0aW9uVGl0bGUoJ2Rlc2NUaXRsZScpXCIgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdkZXNjQm9keScpLFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gQUNUSU9OUyDigJQgcmF0aW5nIGJ1aWx0LWluICsgYWNjaW9uZXMgZGVsIGNvbnN1bWVyLiAtLT5cbiAgICAgIEBpZiAoc2hvd1JhdGluZygpIHx8IGFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvbiBhYm91dC1zZWN0aW9uLS1yZXZpZXdzXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdhY3Rpb25zVGl0bGUnKVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1JhdGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cInJhdGVBY3Rpb25DYXJkKClcIiAob25DbGljayk9XCJvcGVuUmF0aW5nKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cImV4dHJhQWN0aW9uQ2FyZChhY3Rpb24pXCIgKG9uQ2xpY2spPVwiYWN0aW9uLm9uQ2xpY2soKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTT0NJQUwg4oCUIHBlbsO6bHRpbW8sIGp1c3RvIGFudGVzIGRlbCBmb290ZXIgZGUgZGVyZWNob3MuIC0tPlxuICAgICAgQGlmIChzb2NpYWxMaW5rcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJhYm91dC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdzb2NpYWxUaXRsZScpXCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzb2NpYWxEZXNjJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXNvY2lhbFwiPlxuICAgICAgICAgICAgQGZvciAocyBvZiBzb2NpYWxMaW5rcygpOyB0cmFjayBzLnVybCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNvY2lhbC1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Vcmwocy51cmwpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzLmljb25cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gRk9PVEVSIC0tPlxuICAgICAgPGZvb3RlciBjbGFzcz1cImFib3V0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgY29udGVudDogY29weXJpZ2h0KCksXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LWdyaWQge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDAgMTZweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVyb19fbG9nbyB7XG4gICAgICAgIGhlaWdodDogOTZweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAudmVyc2lvbi1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLXJvdzpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLWNvcHktaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMCA4cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNlY3Rpb24tLXJldmlld3MgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZF9fZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zb2NpYWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNvY2lhbCAuc29jaWFsLWJ0biB7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICAtLXBhZGRpbmctZW5kOiAwO1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuOmhvdmVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS10aW50LCAjOGE0Y2U1KTtcbiAgICAgICAgLS1jb2xvcjogI2ZmZjtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWJvdXRWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYGFib3V0Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoQWJvdXRSb3V0ZXNgKS4gYHJlc29sdmVkQ29uZmlnYFxuICAgKiBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogQWJvdXRWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8UmVxdWlyZWQ8T21pdDxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+ICYgUGljazxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhYm91dENvbmZpZyddID8/IHt9KSBhcyBBYm91dFZpZXdDb25maWc7XG4gICAgICBjb25zdCBtZXJnZWQ6IEFib3V0Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBicmFuZDoge1xuICAgICAgICAgIG5hbWU6IG1lcmdlZC5icmFuZD8ubmFtZSA/PyBERUZBVUxUX0JSQU5EX05BTUUsXG4gICAgICAgICAgbG9nb1NyYzogbWVyZ2VkLmJyYW5kPy5sb2dvU3JjID8/IERFRkFVTFRfTE9HT19TUkMsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb246IG1lcmdlZC52ZXJzaW9uID8/ICcnLFxuICAgICAgICBzb2NpYWxMaW5rczogbWVyZ2VkLnNvY2lhbExpbmtzID8/IFtdLFxuICAgICAgICBzaG93UmF0aW5nOiBtZXJnZWQuc2hvd1JhdGluZyA/PyB0cnVlLFxuICAgICAgICByYXRpbmdFbnRpdHlJZDogbWVyZ2VkLnJhdGluZ0VudGl0eUlkID8/IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCxcbiAgICAgICAgYWN0aW9uczogbWVyZ2VkLmFjdGlvbnMgPz8gW10sXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgICBvblJhdGVkOiBtZXJnZWQub25SYXRlZCxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBicmFuZE5hbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuYnJhbmQubmFtZSEpO1xuICByZWFkb25seSBsb2dvU3JjID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmJyYW5kLmxvZ29TcmMhKTtcbiAgcmVhZG9ubHkgdmVyc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS52ZXJzaW9uKTtcbiAgcmVhZG9ubHkgc29jaWFsTGlua3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc29jaWFsTGlua3MpO1xuICByZWFkb25seSBzaG93UmF0aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnNob3dSYXRpbmcpO1xuICByZWFkb25seSBhY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmFjdGlvbnMpO1xuXG4gIC8qKiBDb3B5cmlnaHQgZGVsIGZvb3RlciDigJQgYcOxbyBhY3R1YWwgaW50ZXJwb2xhZG8gZW4gYGNvcHlyaWdodFRleHRgLiAqL1xuICByZWFkb25seSBjb3B5cmlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB5ZWFyID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ2NvcHlyaWdodFRleHQnKS5yZXBsYWNlKCd7eWVhcn0nLCB5ZWFyKTtcbiAgfSk7XG5cbiAgLyoqIFRpdGxlIG1ldGFkYXRhIHBhcmEgc2VjY2lvbmVzIOKAlCBib2xkICsgc2l6ZSBzbWFsbC4gKi9cbiAgcmVhZG9ubHkgcmF0ZUFjdGlvbkNhcmQgPSBjb21wdXRlZDxBY3Rpb25DYXJkTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246ICdzdGFyLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogdGhpcy50dCgncmF0ZVRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgncmF0ZURlc2MnKSxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBBQk9VVF9WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBIZWxwZXIgaTE4biBib3VuZCBhbCBuYW1lc3BhY2UgcmVzdWVsdG8uIFJlYWN0aXZvIHbDrWEgYGxhbmcoKWAuICovXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIC8qKiBUaXRsZSBtZXRhZGF0YSBwYXJhIHNlY2Npb25lcyDigJQgYm9sZCArIHNpemUgc21hbGwuICovXG4gIHByb3RlY3RlZCBzZWN0aW9uVGl0bGUoa2V5OiBzdHJpbmcpOiBUaXRsZU1ldGFkYXRhIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiB0aGlzLnR0KGtleSksXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGJvbGQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY3Rpb25DYXJkTWV0YWRhdGEgcGFyYSB1bmEgYWNjacOzbiBnZW7DqXJpY2EgZGVsIGNvbnN1bWVyLiAqL1xuICBwcm90ZWN0ZWQgZXh0cmFBY3Rpb25DYXJkKGFjdGlvbjogQWJvdXRBY3Rpb24pOiBBY3Rpb25DYXJkTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246IGFjdGlvbi5pY29uID8/ICdjaGF0YnViYmxlLWVsbGlwc2VzLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogYWN0aW9uLmxhYmVsLFxuICAgICAgZGVzY3JpcHRpb246IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKiogQ29waWEgbGEgdmVyc2nDs24gYWwgcG9ydGFwYXBlbGVzICsgdG9hc3QgKGNvbG9yIGRhcmspLiAqL1xuICBhc3luYyBjb3B5VmVyc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gdGhpcy52ZXJzaW9uKCk7XG4gICAgaWYgKCF2KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHYpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgndmVyc2lvbkNvcGllZCcpLnJlcGxhY2UoJ3t2fScsIHYpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMTUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY2xpcGJvYXJkIG5vIGRpc3BvbmlibGUg4oCUIHNpbGVuY2lvc29cbiAgICB9XG4gIH1cblxuICAvKiogQWJyZSB1bmEgVVJMIGV4dGVybmEgZW4gbnVldmEgdGFiLiBgbWFpbHRvOmAgcXVlZGEgZW4gbGEgbWlzbWEgdGFiLiAqL1xuICBvcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdtYWlsdG86JykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiQ2FsaWZpY2FyIGxhIGFwcFwiIOKAlCBhYnJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgRElSRUNUQU1FTlRFIGNvbW8gc2hlZXRcbiAgICogbW9kYWwgKHNpbiB3cmFwcGVyIGxvY2FsIOKAlCBkZWNpc2nDs24gQ1RPKS4gRWwgY29tcG9uZW50ZSBwZXJzaXN0ZSBsYSByZWFjY2nDs25cbiAgICogY29udHJhIGVsIGJhY2tlbmQgZGUgZmVlZGJhY2sgeSBtdWVzdHJhIHN1IHByb3BpbyBlc3RhZG8gZGUgXCJncmFjaWFzXCI7IGVsXG4gICAqIHNoZWV0IHNlIGNpZXJyYSBhcnJhc3RyYW5kbyAoYnJlYWtwb2ludCAwKS4gRWwgbmFtZXNwYWNlIGkxOG5cbiAgICogYENvbnRlbnRSZWFjdGlvbmAgbG8gYXV0by1yZWdpc3RyYSBgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50YCBlbiBzdVxuICAgKiBjb25zdHJ1Y3RvciwgcXVlIGNvcnJlIGFsIGNyZWFyIGVsIG1vZGFsIOKAlCBzaW4gcmllc2dvIGRlIGtleSBmYWx0YW50ZS5cbiAgICpcbiAgICogU2hlZXQgKGJvdHRvbSBzaGVldCk6IGVsIGNvbnRlbmlkbyBzY3JvbGxlYSBkZW50cm8geSBlbCBib3TDs24gXCJFbnZpYXJcIiBxdWVkYVxuICAgKiBzaWVtcHJlIGFsY2FuemFibGUsIHRhbWJpw6luIGVuIHZpZXdwb3J0cyBjaGljb3MuXG4gICAqL1xuICBhc3luYyBvcGVuUmF0aW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlYWN0aW9uUHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge1xuICAgICAgLy8gZW50aXR5VHlwZSBcImFwcFwiIGRpc3Rpbmd1ZSBlc3RhIHJlYWNjacOzbiBkZSBsYXMgZGUgYXJ0w61jdWxvcy9GQVFzLlxuICAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcHAnLCBlbnRpdHlJZDogdGhpcy5yZXNvbHZlZENvbmZpZygpLnJhdGluZ0VudGl0eUlkIH0sXG4gICAgICBxdWVzdGlvbjogdGhpcy50dCgncmF0ZVF1ZXN0aW9uJyksXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMudHQoJ3JhdGVDb21tZW50JyksXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6IHRoaXMudHQoJ3JhdGVUaGFua3MnKSxcbiAgICAgIHNob3dDb21tZW50OiB0cnVlLFxuICAgICAgc2hvd1RoYW5rWW91OiB0cnVlLFxuICAgICAgLy8gTW9kYWwgb25lLXNob3Q6IE5PIGJsb3F1ZWFyIGVsIHJlbmRlciBjb24gZWwgY2hlY2sgZGUgcmF0aW5nIHByZXZpby5cbiAgICAgIHNraXBJbml0aWFsQ2hlY2s6IHRydWUsXG4gICAgICBlbW9qaXM6IFsn8J+YlScsICfwn5mCJywgJ/CfmI0nXSxcbiAgICAgIGVtb2ppTGFiZWxzOiBbdGhpcy50dCgncmF0ZUJhZCcpLCB0aGlzLnR0KCdyYXRlTWlkJyksIHRoaXMudHQoJ3JhdGVHb29kJyldLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbjxDb250ZW50UmVhY3Rpb25Db21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogQ29udGVudFJlYWN0aW9uQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHsgcHJvcHM6IHJlYWN0aW9uUHJvcHMgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjksXG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC45LCAxXSxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgICAgaGFuZGxlQmVoYXZpb3I6ICdjeWNsZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vblJhdGVkPy4oKTtcbiAgfVxufVxuIl19
@@ -1,61 +0,0 @@
1
- /**
2
- * Defaults i18n (es/en) embebidos en `val-about-view`. Auto-registrados en el
3
- * constructor del componente si el consumer no proveyó el namespace
4
- * (`Settings.About` por default). SOLO incluye las keys que la vista usa.
5
- *
6
- * Textos portados EXACTOS del override `Settings.About` de showcase
7
- * (`frontend/showcase/src/i18n/index.ts`). Las keys de las acciones
8
- * showcase-specific (`feedback*`, `share*`, `faq*`, `donate*`) NO se incluyen:
9
- * esas acciones se modelan ahora como `actions[]` de la config (el consumer
10
- * aporta sus propios textos). `copyrightText` se incluye aquí (antes salía del
11
- * namespace `Layout`) para que la vista sea autocontenida.
12
- */
13
- export const ABOUT_VIEW_I18N = {
14
- es: {
15
- pageTitle: 'Acerca de',
16
- pageDescription: 'Demo del factory Valtech',
17
- tagline: 'App de demo — explora las funcionalidades en vivo',
18
- descTitle: 'Acerca de Showcase',
19
- descBody: 'Showcase es la app de referencia del factory Valtech. Aquí puedes explorar el flujo completo en vivo: autenticación, perfil, organizaciones, notificaciones y ajustes de cuenta.',
20
- actionsTitle: 'Acciones',
21
- rateTitle: 'Calificar la app',
22
- rateDesc: 'Cuéntanos qué te ha parecido la experiencia.',
23
- rateModalTitle: 'Tu opinión',
24
- rateQuestion: '¿Qué te ha parecido la experiencia hasta ahora?',
25
- rateComment: 'Cuéntanos más (opcional)…',
26
- rateThanks: '¡Gracias por tu opinión!',
27
- rateClose: 'Cerrar',
28
- rateBad: 'No tanto',
29
- rateMid: 'Bien',
30
- rateGood: '¡Me encanta!',
31
- socialTitle: 'Síguenos',
32
- socialDesc: 'Estamos en redes sociales.',
33
- versionLabel: 'Versión',
34
- versionCopied: 'v{v} copiado',
35
- copyrightText: '© {year}, Soluciones Valtech Ltda. o sus afiliados. Todos los derechos reservados.',
36
- },
37
- en: {
38
- pageTitle: 'About',
39
- pageDescription: 'Valtech factory demo',
40
- tagline: 'Demo app — explore features live',
41
- descTitle: 'About Showcase',
42
- descBody: 'Showcase is the reference app for the Valtech factory. Explore the full flow live: authentication, profile, organizations, notifications and account settings.',
43
- actionsTitle: 'Actions',
44
- rateTitle: 'Rate the app',
45
- rateDesc: 'Tell us how your experience has been.',
46
- rateModalTitle: 'Your feedback',
47
- rateQuestion: 'How has your experience been so far?',
48
- rateComment: 'Tell us more (optional)…',
49
- rateThanks: 'Thanks for your feedback!',
50
- rateClose: 'Close',
51
- rateBad: 'Not great',
52
- rateMid: 'Good',
53
- rateGood: 'Love it!',
54
- socialTitle: 'Follow us',
55
- socialDesc: "We're on social media.",
56
- versionLabel: 'Version',
57
- versionCopied: 'v{v} copied',
58
- copyrightText: '© {year}, Soluciones Valtech Ltda. or its affiliates. All rights reserved.',
59
- },
60
- };
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hYm91dC12aWV3L2Fib3V0LXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBcUI7SUFDL0MsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLFdBQVc7UUFDdEIsZUFBZSxFQUFFLDBCQUEwQjtRQUMzQyxPQUFPLEVBQUUsbURBQW1EO1FBQzVELFNBQVMsRUFBRSxvQkFBb0I7UUFDL0IsUUFBUSxFQUNOLGtMQUFrTDtRQUNwTCxZQUFZLEVBQUUsVUFBVTtRQUN4QixTQUFTLEVBQUUsa0JBQWtCO1FBQzdCLFFBQVEsRUFBRSw4Q0FBOEM7UUFDeEQsY0FBYyxFQUFFLFlBQVk7UUFDNUIsWUFBWSxFQUFFLGlEQUFpRDtRQUMvRCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFVBQVUsRUFBRSwwQkFBMEI7UUFDdEMsU0FBUyxFQUFFLFFBQVE7UUFDbkIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUUsY0FBYztRQUN4QixXQUFXLEVBQUUsVUFBVTtRQUN2QixVQUFVLEVBQUUsNEJBQTRCO1FBQ3hDLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLGFBQWEsRUFBRSxjQUFjO1FBQzdCLGFBQWEsRUFDWCxvRkFBb0Y7S0FDdkY7SUFDRCxFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsT0FBTztRQUNsQixlQUFlLEVBQUUsc0JBQXNCO1FBQ3ZDLE9BQU8sRUFBRSxrQ0FBa0M7UUFDM0MsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixRQUFRLEVBQ04sZ0tBQWdLO1FBQ2xLLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFFBQVEsRUFBRSx1Q0FBdUM7UUFDakQsY0FBYyxFQUFFLGVBQWU7UUFDL0IsWUFBWSxFQUFFLHNDQUFzQztRQUNwRCxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFVBQVUsRUFBRSwyQkFBMkI7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsT0FBTyxFQUFFLFdBQVc7UUFDcEIsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUUsVUFBVTtRQUNwQixXQUFXLEVBQUUsV0FBVztRQUN4QixVQUFVLEVBQUUsd0JBQXdCO1FBQ3BDLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLGFBQWEsRUFBRSw0RUFBNEU7S0FDNUY7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1hYm91dC12aWV3YC4gQXV0by1yZWdpc3RyYWRvcyBlbiBlbFxuICogY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLkFib3V0YCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFRleHRvcyBwb3J0YWRvcyBFWEFDVE9TIGRlbCBvdmVycmlkZSBgU2V0dGluZ3MuQWJvdXRgIGRlIHNob3djYXNlXG4gKiAoYGZyb250ZW5kL3Nob3djYXNlL3NyYy9pMThuL2luZGV4LnRzYCkuIExhcyBrZXlzIGRlIGxhcyBhY2Npb25lc1xuICogc2hvd2Nhc2Utc3BlY2lmaWMgKGBmZWVkYmFjaypgLCBgc2hhcmUqYCwgYGZhcSpgLCBgZG9uYXRlKmApIE5PIHNlIGluY2x1eWVuOlxuICogZXNhcyBhY2Npb25lcyBzZSBtb2RlbGFuIGFob3JhIGNvbW8gYGFjdGlvbnNbXWAgZGUgbGEgY29uZmlnIChlbCBjb25zdW1lclxuICogYXBvcnRhIHN1cyBwcm9waW9zIHRleHRvcykuIGBjb3B5cmlnaHRUZXh0YCBzZSBpbmNsdXllIGFxdcOtIChhbnRlcyBzYWzDrWEgZGVsXG4gKiBuYW1lc3BhY2UgYExheW91dGApIHBhcmEgcXVlIGxhIHZpc3RhIHNlYSBhdXRvY29udGVuaWRhLlxuICovXG5leHBvcnQgY29uc3QgQUJPVVRfVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ0FjZXJjYSBkZScsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnRGVtbyBkZWwgZmFjdG9yeSBWYWx0ZWNoJyxcbiAgICB0YWdsaW5lOiAnQXBwIGRlIGRlbW8g4oCUIGV4cGxvcmEgbGFzIGZ1bmNpb25hbGlkYWRlcyBlbiB2aXZvJyxcbiAgICBkZXNjVGl0bGU6ICdBY2VyY2EgZGUgU2hvd2Nhc2UnLFxuICAgIGRlc2NCb2R5OlxuICAgICAgJ1Nob3djYXNlIGVzIGxhIGFwcCBkZSByZWZlcmVuY2lhIGRlbCBmYWN0b3J5IFZhbHRlY2guIEFxdcOtIHB1ZWRlcyBleHBsb3JhciBlbCBmbHVqbyBjb21wbGV0byBlbiB2aXZvOiBhdXRlbnRpY2FjacOzbiwgcGVyZmlsLCBvcmdhbml6YWNpb25lcywgbm90aWZpY2FjaW9uZXMgeSBhanVzdGVzIGRlIGN1ZW50YS4nLFxuICAgIGFjdGlvbnNUaXRsZTogJ0FjY2lvbmVzJyxcbiAgICByYXRlVGl0bGU6ICdDYWxpZmljYXIgbGEgYXBwJyxcbiAgICByYXRlRGVzYzogJ0N1w6ludGFub3MgcXXDqSB0ZSBoYSBwYXJlY2lkbyBsYSBleHBlcmllbmNpYS4nLFxuICAgIHJhdGVNb2RhbFRpdGxlOiAnVHUgb3BpbmnDs24nLFxuICAgIHJhdGVRdWVzdGlvbjogJ8K/UXXDqSB0ZSBoYSBwYXJlY2lkbyBsYSBleHBlcmllbmNpYSBoYXN0YSBhaG9yYT8nLFxuICAgIHJhdGVDb21tZW50OiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCnigKYnLFxuICAgIHJhdGVUaGFua3M6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgcmF0ZUNsb3NlOiAnQ2VycmFyJyxcbiAgICByYXRlQmFkOiAnTm8gdGFudG8nLFxuICAgIHJhdGVNaWQ6ICdCaWVuJyxcbiAgICByYXRlR29vZDogJ8KhTWUgZW5jYW50YSEnLFxuICAgIHNvY2lhbFRpdGxlOiAnU8OtZ3Vlbm9zJyxcbiAgICBzb2NpYWxEZXNjOiAnRXN0YW1vcyBlbiByZWRlcyBzb2NpYWxlcy4nLFxuICAgIHZlcnNpb25MYWJlbDogJ1ZlcnNpw7NuJyxcbiAgICB2ZXJzaW9uQ29waWVkOiAndnt2fSBjb3BpYWRvJyxcbiAgICBjb3B5cmlnaHRUZXh0OlxuICAgICAgJ8KpIHt5ZWFyfSwgU29sdWNpb25lcyBWYWx0ZWNoIEx0ZGEuIG8gc3VzIGFmaWxpYWRvcy4gVG9kb3MgbG9zIGRlcmVjaG9zIHJlc2VydmFkb3MuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwYWdlVGl0bGU6ICdBYm91dCcsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnVmFsdGVjaCBmYWN0b3J5IGRlbW8nLFxuICAgIHRhZ2xpbmU6ICdEZW1vIGFwcCDigJQgZXhwbG9yZSBmZWF0dXJlcyBsaXZlJyxcbiAgICBkZXNjVGl0bGU6ICdBYm91dCBTaG93Y2FzZScsXG4gICAgZGVzY0JvZHk6XG4gICAgICAnU2hvd2Nhc2UgaXMgdGhlIHJlZmVyZW5jZSBhcHAgZm9yIHRoZSBWYWx0ZWNoIGZhY3RvcnkuIEV4cGxvcmUgdGhlIGZ1bGwgZmxvdyBsaXZlOiBhdXRoZW50aWNhdGlvbiwgcHJvZmlsZSwgb3JnYW5pemF0aW9ucywgbm90aWZpY2F0aW9ucyBhbmQgYWNjb3VudCBzZXR0aW5ncy4nLFxuICAgIGFjdGlvbnNUaXRsZTogJ0FjdGlvbnMnLFxuICAgIHJhdGVUaXRsZTogJ1JhdGUgdGhlIGFwcCcsXG4gICAgcmF0ZURlc2M6ICdUZWxsIHVzIGhvdyB5b3VyIGV4cGVyaWVuY2UgaGFzIGJlZW4uJyxcbiAgICByYXRlTW9kYWxUaXRsZTogJ1lvdXIgZmVlZGJhY2snLFxuICAgIHJhdGVRdWVzdGlvbjogJ0hvdyBoYXMgeW91ciBleHBlcmllbmNlIGJlZW4gc28gZmFyPycsXG4gICAgcmF0ZUNvbW1lbnQ6ICdUZWxsIHVzIG1vcmUgKG9wdGlvbmFsKeKApicsXG4gICAgcmF0ZVRoYW5rczogJ1RoYW5rcyBmb3IgeW91ciBmZWVkYmFjayEnLFxuICAgIHJhdGVDbG9zZTogJ0Nsb3NlJyxcbiAgICByYXRlQmFkOiAnTm90IGdyZWF0JyxcbiAgICByYXRlTWlkOiAnR29vZCcsXG4gICAgcmF0ZUdvb2Q6ICdMb3ZlIGl0IScsXG4gICAgc29jaWFsVGl0bGU6ICdGb2xsb3cgdXMnLFxuICAgIHNvY2lhbERlc2M6IFwiV2UncmUgb24gc29jaWFsIG1lZGlhLlwiLFxuICAgIHZlcnNpb25MYWJlbDogJ1ZlcnNpb24nLFxuICAgIHZlcnNpb25Db3BpZWQ6ICd2e3Z9IGNvcGllZCcsXG4gICAgY29weXJpZ2h0VGV4dDogJ8KpIHt5ZWFyfSwgU29sdWNpb25lcyBWYWx0ZWNoIEx0ZGEuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLicsXG4gIH0sXG59O1xuIl19
@@ -1,36 +0,0 @@
1
- import { AboutViewComponent } from './about-view.component';
2
- /**
3
- * Helper para montar la vista About (`val-about-view`) como ruta en una app del
4
- * factory. El `config` se pasa por route `data` (`aboutConfig`) y el componente
5
- * lo lee como fallback de su `@Input() config` (el `@Input` gana).
6
- *
7
- * @example
8
- * ```ts
9
- * // settings.routes.ts
10
- * import { APP_VERSION } from '../version';
11
- *
12
- * export const settingsRoutes: Routes = [
13
- * ...provideValtechAboutRoutes({ config: { version: APP_VERSION } }), // → /app/about
14
- * { path: 'preferences', loadComponent: () => ... },
15
- * ];
16
- *
17
- * // con redes y acciones extra:
18
- * ...provideValtechAboutRoutes({
19
- * config: {
20
- * version: APP_VERSION,
21
- * socialLinks: VALTECH_SOCIAL_LINKS.map(s => ({ icon: s.icon, url: s.url, label: s.name })),
22
- * actions: [{ label: 'Compartir', icon: 'share-social-outline', onClick: () => share() }],
23
- * },
24
- * }),
25
- * ```
26
- */
27
- export function provideValtechAboutRoutes(opts) {
28
- return [
29
- {
30
- path: opts?.path ?? 'about',
31
- component: AboutViewComponent,
32
- data: { aboutConfig: opts?.config },
33
- },
34
- ];
35
- }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hYm91dC12aWV3L2Fib3V0LnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLElBR3pDO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksT0FBTztZQUMzQixTQUFTLEVBQUUsa0JBQWtCO1lBQzdCLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3BDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBYm91dFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2Fib3V0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFib3V0Vmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEhlbHBlciBwYXJhIG1vbnRhciBsYSB2aXN0YSBBYm91dCAoYHZhbC1hYm91dC12aWV3YCkgY29tbyBydXRhIGVuIHVuYSBhcHAgZGVsXG4gKiBmYWN0b3J5LiBFbCBgY29uZmlnYCBzZSBwYXNhIHBvciByb3V0ZSBgZGF0YWAgKGBhYm91dENvbmZpZ2ApIHkgZWwgY29tcG9uZW50ZVxuICogbG8gbGVlIGNvbW8gZmFsbGJhY2sgZGUgc3UgYEBJbnB1dCgpIGNvbmZpZ2AgKGVsIGBASW5wdXRgIGdhbmEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gc2V0dGluZ3Mucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBBUFBfVkVSU0lPTiB9IGZyb20gJy4uL3ZlcnNpb24nO1xuICpcbiAqIGV4cG9ydCBjb25zdCBzZXR0aW5nc1JvdXRlczogUm91dGVzID0gW1xuICogICAuLi5wcm92aWRlVmFsdGVjaEFib3V0Um91dGVzKHsgY29uZmlnOiB7IHZlcnNpb246IEFQUF9WRVJTSU9OIH0gfSksIC8vIOKGkiAvYXBwL2Fib3V0XG4gKiAgIHsgcGF0aDogJ3ByZWZlcmVuY2VzJywgbG9hZENvbXBvbmVudDogKCkgPT4gLi4uIH0sXG4gKiBdO1xuICpcbiAqIC8vIGNvbiByZWRlcyB5IGFjY2lvbmVzIGV4dHJhOlxuICogLi4ucHJvdmlkZVZhbHRlY2hBYm91dFJvdXRlcyh7XG4gKiAgIGNvbmZpZzoge1xuICogICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICogICAgIHNvY2lhbExpbmtzOiBWQUxURUNIX1NPQ0lBTF9MSU5LUy5tYXAocyA9PiAoeyBpY29uOiBzLmljb24sIHVybDogcy51cmwsIGxhYmVsOiBzLm5hbWUgfSkpLFxuICogICAgIGFjdGlvbnM6IFt7IGxhYmVsOiAnQ29tcGFydGlyJywgaWNvbjogJ3NoYXJlLXNvY2lhbC1vdXRsaW5lJywgb25DbGljazogKCkgPT4gc2hhcmUoKSB9XSxcbiAqICAgfSxcbiAqIH0pLFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVmFsdGVjaEFib3V0Um91dGVzKG9wdHM/OiB7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGNvbmZpZz86IEFib3V0Vmlld0NvbmZpZztcbn0pOiBSb3V0ZXMge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhdGg6IG9wdHM/LnBhdGggPz8gJ2Fib3V0JyxcbiAgICAgIGNvbXBvbmVudDogQWJvdXRWaWV3Q29tcG9uZW50LFxuICAgICAgZGF0YTogeyBhYm91dENvbmZpZzogb3B0cz8uY29uZmlnIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
@@ -1,19 +0,0 @@
1
- /**
2
- * Configuración acotada de `val-about-view` (object-first). La vista About es
3
- * app-specific por naturaleza (logo, nombre, versión, redes, acciones extra),
4
- * así que lo propio de cada app se parametriza como **DATA de config** — NO como
5
- * slots arbitrarios (ADR-021: una vista full-feature no abre slots; si falta
6
- * algo, se promueve un nuevo punto de extensión).
7
- *
8
- * Ejes de variación permitidos:
9
- * - **branding** — `brand.name` / `brand.logoSrc` (qué muestra el HERO).
10
- * - **versión** — `version` la pasa el consumer (la lib NO puede importar el
11
- * `version.ts` de la app). Si no se pasa, se oculta el pill de versión.
12
- * - **redes** — `socialLinks`; si está vacío se oculta la sección social.
13
- * - **rating** — `showRating` + `ratingEntityId` + `onRated`.
14
- * - **acciones extra** — `actions[]` genéricas que el consumer agrega junto a
15
- * la acción de rating built-in.
16
- * - **branding i18n** — `i18nNamespace` (default `'Settings.About'`).
17
- */
18
- export {};
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYWNpw7NuIGFjb3RhZGEgZGUgYHZhbC1hYm91dC12aWV3YCAob2JqZWN0LWZpcnN0KS4gTGEgdmlzdGEgQWJvdXQgZXNcbiAqIGFwcC1zcGVjaWZpYyBwb3IgbmF0dXJhbGV6YSAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIGV4dHJhKSxcbiAqIGFzw60gcXVlIGxvIHByb3BpbyBkZSBjYWRhIGFwcCBzZSBwYXJhbWV0cml6YSBjb21vICoqREFUQSBkZSBjb25maWcqKiDigJQgTk8gY29tb1xuICogc2xvdHMgYXJiaXRyYXJpb3MgKEFEUi0wMjE6IHVuYSB2aXN0YSBmdWxsLWZlYXR1cmUgbm8gYWJyZSBzbG90czsgc2kgZmFsdGFcbiAqIGFsZ28sIHNlIHByb211ZXZlIHVuIG51ZXZvIHB1bnRvIGRlIGV4dGVuc2nDs24pLlxuICpcbiAqIEVqZXMgZGUgdmFyaWFjacOzbiBwZXJtaXRpZG9zOlxuICogIC0gKipicmFuZGluZyoqIOKAlCBgYnJhbmQubmFtZWAgLyBgYnJhbmQubG9nb1NyY2AgKHF1w6kgbXVlc3RyYSBlbCBIRVJPKS5cbiAqICAtICoqdmVyc2nDs24qKiDigJQgYHZlcnNpb25gIGxhIHBhc2EgZWwgY29uc3VtZXIgKGxhIGxpYiBOTyBwdWVkZSBpbXBvcnRhciBlbFxuICogICAgYHZlcnNpb24udHNgIGRlIGxhIGFwcCkuIFNpIG5vIHNlIHBhc2EsIHNlIG9jdWx0YSBlbCBwaWxsIGRlIHZlcnNpw7NuLlxuICogIC0gKipyZWRlcyoqIOKAlCBgc29jaWFsTGlua3NgOyBzaSBlc3TDoSB2YWPDrW8gc2Ugb2N1bHRhIGxhIHNlY2Npw7NuIHNvY2lhbC5cbiAqICAtICoqcmF0aW5nKiog4oCUIGBzaG93UmF0aW5nYCArIGByYXRpbmdFbnRpdHlJZGAgKyBgb25SYXRlZGAuXG4gKiAgLSAqKmFjY2lvbmVzIGV4dHJhKiog4oCUIGBhY3Rpb25zW11gIGdlbsOpcmljYXMgcXVlIGVsIGNvbnN1bWVyIGFncmVnYSBqdW50byBhXG4gKiAgICBsYSBhY2Npw7NuIGRlIHJhdGluZyBidWlsdC1pbi5cbiAqICAtICoqYnJhbmRpbmcgaTE4bioqIOKAlCBgaTE4bk5hbWVzcGFjZWAgKGRlZmF1bHQgYCdTZXR0aW5ncy5BYm91dCdgKS5cbiAqL1xuXG4vKiogTWFyY2EgYSBtb3N0cmFyIGVuIGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm91dEJyYW5kIHtcbiAgLyoqIE5vbWJyZSBkZSBsYSBtYXJjYS4gRGVmYXVsdCBgJ1ZhbHRlY2gnYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgZGVsIGxvZ28uIERlZmF1bHQgYCdhc3NldHMvaW1hZ2VzL21haW4taWNvbi5wbmcnYC4gKi9cbiAgbG9nb1NyYz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Npw7NuIGdlbsOpcmljYSBleHRyYSBkZSBsYSBzZWNjacOzbiBcIkFjY2lvbmVzXCIgKGFkZW3DoXMgZGVsIHJhdGluZyBidWlsdC1pbikuXG4gKiBFbCBjb25zdW1lciBsYSBtb2RlbGEgY29tcGxldGEgKGxhYmVsL2Rlc2NyaXBjacOzbi/DrWNvbm8gKyBoYW5kbGVyKS4gTGFzXG4gKiBhY2Npb25lcyBzaGFyZS9mYXEgZGUgc2hvd2Nhc2UgTk8gc29uIGdlbsOpcmljYXMgKFdlYiBTaGFyZSBBUEkgeSBydXRhIGludGVybmFcbiAqIGRlIGxhIGFwcCksIHBvciBlc28gc2UgZXhwb25lbiBjb21vIGBhY3Rpb25zYCBwYXJhIHF1ZSBjYWRhIGFwcCBhcG9ydGUgbGFzXG4gKiBzdXlhcyBlbiB2ZXogZGUgaGFyZGNvZGVhcmxhcyBlbiBsYSBsaWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvdXRBY3Rpb24ge1xuICAvKiogVGV4dG8gcHJpbmNpcGFsIGRlIGxhIGFjdGlvbi1jYXJkLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVGV4dG8gc2VjdW5kYXJpbyAob3BjaW9uYWwpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElvbmljb24gbmFtZSAoZWouIGAnc2hhcmUtc29jaWFsLW91dGxpbmUnYCkuICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBIYW5kbGVyIGRlbCBjbGljay4gKi9cbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYm91dFZpZXdDb25maWcge1xuICAvKiogTWFyY2EgZGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiBEZWZhdWx0IFZhbHRlY2guICovXG4gIGJyYW5kPzogQWJvdXRCcmFuZDtcblxuICAvKipcbiAgICogVmVyc2nDs24gYSBtb3N0cmFyIGVuIGVsIHBpbGwgKGVsIGNvbnN1bWVyIHBhc2Egc3UgYEFQUF9WRVJTSU9OYCkuIExhIGxpYiBOT1xuICAgKiBpbXBvcnRhIGVsIGB2ZXJzaW9uLnRzYCBkZSBsYSBhcHAuIFNpIG5vIHNlIHBhc2EsIGVsIHBpbGwgZGUgdmVyc2nDs24gc2VcbiAgICogb2N1bHRhLlxuICAgKi9cbiAgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVkZXMgc29jaWFsZXMuIFNpIGVzdMOhIHZhY8OtbyAobyBubyBzZSBwYXNhKSwgbGEgc2VjY2nDs24gc29jaWFsIHNlIG9jdWx0YS5cbiAgICogYGljb25gID0gaW9uaWNvbiBuYW1lOyBgdXJsYCA9IGRlc3Rpbm87IGBsYWJlbGAgPSBhcmlhLWxhYmVsLlxuICAgKi9cbiAgc29jaWFsTGlua3M/OiB7IGljb246IHN0cmluZzsgdXJsOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuXG4gIC8qKiBNdWVzdHJhIGxhIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbi4gRGVmYXVsdCBgdHJ1ZWAuICovXG4gIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBgZW50aXR5SWRgIGRlbCBgZW50aXR5UmVmYCBxdWUgcmVjaWJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgYWwgY2FsaWZpY2FyXG4gICAqIChlbCBgZW50aXR5VHlwZWAgZXMgc2llbXByZSBgJ2FwcCdgKS4gRGVmYXVsdCBgJ2V4cGVyaWVuY2UnYC5cbiAgICovXG4gIHJhdGluZ0VudGl0eUlkPzogc3RyaW5nO1xuXG4gIC8qKiBBY2Npb25lcyBnZW7DqXJpY2FzIGV4dHJhIGRlIGxhIHNlY2Npw7NuIFwiQWNjaW9uZXNcIi4gRGVmYXVsdCBgW11gLiAqL1xuICBhY3Rpb25zPzogQWJvdXRBY3Rpb25bXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlIGkxOG4gY29uIGVsIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLlxuICAgKiBEZWZhdWx0IGAnU2V0dGluZ3MuQWJvdXQnYC5cbiAgICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqIEhvb2sgdHJhcyBlbnZpYXIgbGEgY2FsaWZpY2FjacOzbiAocmF0aW5nKSBkZXNkZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gLiAqL1xuICBvblJhdGVkPzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==