valtech-components 2.0.1008 → 2.0.1010

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/date-input/date-input.component.mjs +38 -18
  2. package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +436 -0
  3. package/esm2022/lib/components/organisms/about-view/about-view.i18n.mjs +61 -0
  4. package/esm2022/lib/components/organisms/about-view/about.routes.mjs +36 -0
  5. package/esm2022/lib/components/organisms/about-view/types.mjs +19 -0
  6. package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +2 -2
  7. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +385 -0
  8. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.mjs +63 -0
  9. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +313 -0
  10. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +63 -0
  11. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +141 -3
  12. package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +21 -1
  13. package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +39 -9
  14. package/esm2022/lib/services/apikeys/api-keys.service.mjs +46 -0
  15. package/esm2022/lib/services/apikeys/types.mjs +7 -0
  16. package/esm2022/lib/services/auth/auth.service.mjs +14 -1
  17. package/esm2022/lib/services/auth/types.mjs +1 -1
  18. package/esm2022/lib/services/org/org.service.mjs +8 -1
  19. package/esm2022/lib/services/org/types.mjs +1 -1
  20. package/esm2022/lib/version.mjs +2 -2
  21. package/esm2022/public-api.mjs +7 -1
  22. package/fesm2022/valtech-components.mjs +1938 -336
  23. package/fesm2022/valtech-components.mjs.map +1 -1
  24. package/lib/components/molecules/date-input/date-input.component.d.ts +16 -0
  25. package/lib/components/organisms/about-view/about-view.component.d.ts +88 -0
  26. package/lib/components/organisms/about-view/about-view.i18n.d.ts +14 -0
  27. package/lib/components/organisms/about-view/about.routes.d.ts +31 -0
  28. package/lib/components/organisms/about-view/types.d.ts +76 -0
  29. package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +44 -0
  30. package/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.d.ts +6 -0
  31. package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +47 -0
  32. package/lib/components/organisms/member-import-modal/member-import-modal.i18n.d.ts +6 -0
  33. package/lib/components/organisms/organization-view/organization-view.component.d.ts +6 -0
  34. package/lib/components/templates/auth-background/auth-background.component.d.ts +4 -0
  35. package/lib/services/apikeys/api-keys.service.d.ts +25 -0
  36. package/lib/services/apikeys/types.d.ts +46 -0
  37. package/lib/services/auth/auth.service.d.ts +7 -1
  38. package/lib/services/auth/types.d.ts +23 -0
  39. package/lib/services/org/org.service.d.ts +6 -1
  40. package/lib/services/org/types.d.ts +30 -0
  41. package/lib/version.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/public-api.d.ts +8 -1
@@ -56,6 +56,24 @@ export class DateInputComponent {
56
56
  get presentation() {
57
57
  return this.resolvedProps?.presentation || 'date';
58
58
  }
59
+ /** Locale del datetime — honra el prop del consumer (default es-ES). */
60
+ get datetimeLocale() {
61
+ return this.resolvedProps?.locale || 'es-ES';
62
+ }
63
+ /** Primer día de la semana — honra el prop del consumer (default lunes). */
64
+ get firstDayOfWeek() {
65
+ return this.resolvedProps?.firstDayOfWeek ?? 1;
66
+ }
67
+ /**
68
+ * Opciones de formato para `ion-datetime` (binding, NO string). Honra el prop
69
+ * del consumer y cae a un default sensato (date medium / time short).
70
+ */
71
+ get datetimeFormatOptions() {
72
+ return (this.resolvedProps?.formatOptions || {
73
+ date: { dateStyle: 'medium' },
74
+ time: { timeStyle: 'short' },
75
+ });
76
+ }
59
77
  /** Texto del trigger cuando NO hay valor (placeholder explícito o default i18n). */
60
78
  get placeholderText() {
61
79
  if (this.resolvedProps?.placeholder)
@@ -78,7 +96,7 @@ export class DateInputComponent {
78
96
  if (isNaN(d.getTime()))
79
97
  return String(raw);
80
98
  this.i18n.lang(); // reactividad
81
- const locale = 'es-ES';
99
+ const locale = this.datetimeLocale;
82
100
  try {
83
101
  switch (this.presentation) {
84
102
  case 'time':
@@ -163,27 +181,28 @@ export class DateInputComponent {
163
181
  {{ displayValue || placeholderText }}
164
182
  </ion-button>
165
183
  </div>
166
- <ion-modal [trigger]="triggerId" [keepContentsMounted]="true">
184
+ <ion-modal
185
+ [trigger]="triggerId"
186
+ [keepContentsMounted]="true"
187
+ class="val-date-modal"
188
+ >
167
189
  <ng-template>
168
190
  <ion-datetime
169
191
  [formControl]="resolvedProps.control"
170
192
  [id]="resolvedProps.token"
171
193
  [presentation]="presentation"
172
- locale="es-ES"
173
- [firstDayOfWeek]="1"
194
+ [locale]="datetimeLocale"
195
+ [firstDayOfWeek]="firstDayOfWeek"
174
196
  [showDefaultButtons]="true"
175
197
  [doneText]="doneText"
176
198
  [cancelText]="cancelText"
177
- formatOptions="{
178
- date: { dateStyle: 'medium' },
179
- time: { timeStyle: 'short' }
180
- }"
199
+ [formatOptions]="datetimeFormatOptions"
181
200
  >
182
201
  <span slot="title">{{ resolvedProps.hint }}</span>
183
202
  </ion-datetime>
184
203
  </ng-template>
185
204
  </ion-modal>
186
- `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showAdjacentDays", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonModal, selector: "ion-modal" }] }); }
205
+ `, isInline: true, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}ion-modal.val-date-modal{--width: fit-content;--min-width: pxToRem(320);--height: fit-content;--border-radius: pxToRem(16);--box-shadow: 0 pxToRem(12) pxToRem(48) rgba(0, 0, 0, .25)}ion-modal.val-date-modal ion-datetime{margin:0 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showAdjacentDays", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }, { kind: "component", type: IonModal, selector: "ion-modal" }] }); }
187
206
  }
188
207
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateInputComponent, decorators: [{
189
208
  type: Component,
@@ -202,30 +221,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
202
221
  {{ displayValue || placeholderText }}
203
222
  </ion-button>
204
223
  </div>
205
- <ion-modal [trigger]="triggerId" [keepContentsMounted]="true">
224
+ <ion-modal
225
+ [trigger]="triggerId"
226
+ [keepContentsMounted]="true"
227
+ class="val-date-modal"
228
+ >
206
229
  <ng-template>
207
230
  <ion-datetime
208
231
  [formControl]="resolvedProps.control"
209
232
  [id]="resolvedProps.token"
210
233
  [presentation]="presentation"
211
- locale="es-ES"
212
- [firstDayOfWeek]="1"
234
+ [locale]="datetimeLocale"
235
+ [firstDayOfWeek]="firstDayOfWeek"
213
236
  [showDefaultButtons]="true"
214
237
  [doneText]="doneText"
215
238
  [cancelText]="cancelText"
216
- formatOptions="{
217
- date: { dateStyle: 'medium' },
218
- time: { timeStyle: 'short' }
219
- }"
239
+ [formatOptions]="datetimeFormatOptions"
220
240
  >
221
241
  <span slot="title">{{ resolvedProps.hint }}</span>
222
242
  </ion-datetime>
223
243
  </ng-template>
224
244
  </ion-modal>
225
- `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"] }]
245
+ `, styles: ["@charset \"UTF-8\";:root{--val-container-sm: 540px;--val-container-md: 720px;--val-container-lg: 880px;--val-container-xl: 1100px;--val-container-padding: 16px;--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}body.dark,html.ion-palette-dark,body[data-theme=dark]{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:var(--val-form-field-gap, .5rem) 0}@media (min-width: 768px){.input{margin:var(--val-form-field-gap, .75rem) 0}}.submit-actions--sticky{position:sticky;bottom:0;z-index:1;background:var(--ion-background-color);border-top:1px solid var(--ion-color-step-150, rgba(0, 0, 0, .08));padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom))}.field-description{display:block;font-size:.75rem;color:var(--ion-color-dark);margin-bottom:.25rem;line-height:1.4}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}ion-modal.val-date-modal{--width: fit-content;--min-width: pxToRem(320);--height: fit-content;--border-radius: pxToRem(16);--box-shadow: 0 pxToRem(12) pxToRem(48) rgba(0, 0, 0, .25)}ion-modal.val-date-modal ion-datetime{margin:0 auto}\n"] }]
226
246
  }], ctorParameters: () => [], propDecorators: { preset: [{
227
247
  type: Input
228
248
  }], props: [{
229
249
  type: Input
230
250
  }] } });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBRzFELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUU7SUFDdkUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFO0NBQzdELENBQUM7QUE0Q0Y7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0I7UUFIUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFrQnhDOzs7OztXQUtHO1FBQ00sVUFBSyxHQUErQixFQUFFLENBQUM7UUFFaEQ7O1dBRUc7UUFDSCxrQkFBYSxHQUFzQixFQUF1QixDQUFDO1FBMUJ6RCx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJ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QUFsQixrQkFBa0IsNklBcERuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1QscTBHQXBDUyxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxTQUFTLG9QQUFFLFdBQVcsb2hCQUFFLFFBQVE7OzRGQXFEbEUsa0JBQWtCO2tCQXhEOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQUMsWUFDcEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUNUO3dEQW1DUSxNQUFNO3NCQUFkLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkRhdGV0aW1lLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IERhdGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IERBVEVfSU5QVVRfSTE4TiA9IHtcbiAgZXM6IHsgc2VsZWN0RGF0ZTogJ1NlbGVjY2lvbmFyIGZlY2hhJywgc2VsZWN0VGltZTogJ1NlbGVjY2lvbmFyIGhvcmEnIH0sXG4gIGVuOiB7IHNlbGVjdERhdGU6ICdTZWxlY3QgZGF0ZScsIHNlbGVjdFRpbWU6ICdTZWxlY3QgdGltZScgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uQnV0dG9uLCBJb25EYXRldGltZSwgSW9uTW9kYWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8IS0tIFRyaWdnZXIgcHJvcGlvIChyZWVtcGxhemEgaW9uLWRhdGV0aW1lLWJ1dHRvbiwgcXVlIHJlbmRlcml6YSBlbiBibGFuY29cbiAgICAgICAgICAgY3VhbmRvIGVsIGNvbnRyb2wgbm8gdGllbmUgdmFsb3IpLiBNdWVzdHJhIGVsIHZhbG9yIGZvcm1hdGVhZG8gbyBlbFxuICAgICAgICAgICBwbGFjZWhvbGRlciwgeSBhYnJlIGVsIG1vZGFsIHbDrWEgW3RyaWdnZXJdLiAtLT5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIFtpZF09XCJ0cmlnZ2VySWRcIlxuICAgICAgICBjbGFzcz1cImFjdGlvbiBkYXRlLXRyaWdnZXJcIlxuICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgIGNvbG9yPVwibWVkaXVtXCJcbiAgICAgICAgW2NsYXNzLmlzLXBsYWNlaG9sZGVyXT1cIiFkaXNwbGF5VmFsdWVcIlxuICAgICAgPlxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfHwgcGxhY2Vob2xkZXJUZXh0IH19XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGlvbi1tb2RhbCBbdHJpZ2dlcl09XCJ0cmlnZ2VySWRcIiBba2VlcENvbnRlbnRzTW91bnRlZF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24tZGF0ZXRpbWVcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVzb2x2ZWRQcm9wcy5jb250cm9sXCJcbiAgICAgICAgICBbaWRdPVwicmVzb2x2ZWRQcm9wcy50b2tlblwiXG4gICAgICAgICAgW3ByZXNlbnRhdGlvbl09XCJwcmVzZW50YXRpb25cIlxuICAgICAgICAgIGxvY2FsZT1cImVzLUVTXCJcbiAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiXG4gICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICBbZG9uZVRleHRdPVwiZG9uZVRleHRcIlxuICAgICAgICAgIFtjYW5jZWxUZXh0XT1cImNhbmNlbFRleHRcIlxuICAgICAgICAgIGZvcm1hdE9wdGlvbnM9XCJ7XG4gICAgICAgICAgICBkYXRlOiB7IGRhdGVTdHlsZTogJ21lZGl1bScgfSxcbiAgICAgICAgICAgIHRpbWU6IHsgdGltZVN0eWxlOiAnc2hvcnQnIH1cbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIHNsb3Q9XCJ0aXRsZVwiPnt7IHJlc29sdmVkUHJvcHMuaGludCB9fTwvc3Bhbj5cbiAgICAgICAgPC9pb24tZGF0ZXRpbWU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtZGF0ZS1pbnB1dFxuICpcbiAqIEEgZGF0ZSBwaWNrZXIgaW5wdXQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMsIHVzaW5nIElvbmljJ3MgZGF0ZXRpbWUgY29tcG9uZW50LlxuICpcbiAqIEN1YW5kbyBlbCBjb250cm9sIG5vIHRpZW5lIHZhbG9yLCBtdWVzdHJhIHVuIGJvdMOzbiBjb24gZWwgdGV4dG8gYHBsYWNlaG9sZGVyYFxuICogKG8gdW4gZGVmYXVsdCBpMThuIFwiU2VsZWNjaW9uYXIgZmVjaGFcIikgZW4gdmV6IGRlIHJlbmRlcml6YXIgZW4gYmxhbmNvIOKAlFxuICogYGlvbi1kYXRldGltZS1idXR0b25gIG5vIHNvcG9ydGEgcGxhY2Vob2xkZXIsIHBvciBlc28gdXNhbW9zIHVuIHRyaWdnZXIgcHJvcGlvLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWRhdGUtaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBoaW50OiAnU2VsZWN0IGEgZGF0ZScgfVwiPjwvdmFsLWRhdGUtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBEYXRlSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkYXRlIGlucHV0IChmb3JtIGNvbnRyb2wsIGhpbnQsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGRlIGRlZmF1bHRzIGkxOG4gKGFudGkga2V5LWZhbHRhbnRlIOKGkiBhbnRpIHN0b3JtIGRlIENEKS5cbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoJ0RhdGVJbnB1dCcpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KCdEYXRlSW5wdXQnLCBEQVRFX0lOUFVUX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgZGF0ZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtZGF0ZS1pbnB1dCBwcmVzZXQ9XCJmb3JtLWZpZWxkXCIgW3Byb3BzXT1cInsgY29udHJvbDogY3RybCB9XCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqIEB0eXBlIHtEYXRlSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGRhdGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBoaW50IC0gVGhlIGhpbnQgdGV4dCBmb3IgdGhlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBEYXRlSW5wdXRNZXRhZGF0YSA9IHt9IGFzIERhdGVJbnB1dE1ldGFkYXRhO1xuXG4gIC8qKiBEb25lIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGRvbmVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcz8uZG9uZVRleHQgfHwgdGhpcy5pMThuLnQoJ29rJyk7XG4gIH1cblxuICAvKiogQ2FuY2VsIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGNhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzPy5jYW5jZWxUZXh0IHx8IHRoaXMuaTE4bi50KCdjYW5jZWwnKTtcbiAgfVxuXG4gIC8qKiBQcmVzZW50YWNpw7NuIGRlbCBkYXRldGltZSAoZGVmYXVsdDogZGF0ZSkuICovXG4gIGdldCBwcmVzZW50YXRpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzPy5wcmVzZW50YXRpb24gfHwgJ2RhdGUnO1xuICB9XG5cbiAgLyoqIFRleHRvIGRlbCB0cmlnZ2VyIGN1YW5kbyBOTyBoYXkgdmFsb3IgKHBsYWNlaG9sZGVyIGV4cGzDrWNpdG8gbyBkZWZhdWx0IGkxOG4pLiAqL1xuICBnZXQgcGxhY2Vob2xkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcz8ucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMucGxhY2Vob2xkZXI7XG4gICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gcmVhY3RpdmlkYWQgYW50ZSBjYW1iaW8gZGUgaWRpb21hXG4gICAgcmV0dXJuIHRoaXMucHJlc2VudGF0aW9uID09PSAndGltZSdcbiAgICAgID8gdGhpcy5pMThuLnQoJ3NlbGVjdFRpbWUnLCAnRGF0ZUlucHV0JylcbiAgICAgIDogdGhpcy5pMThuLnQoJ3NlbGVjdERhdGUnLCAnRGF0ZUlucHV0Jyk7XG4gIH1cblxuICAvKiogSWQgZGVsIHRyaWdnZXIvZGF0ZXRpbWUg4oCUIGVzdGFibGU7IHNlIGdhcmFudGl6YSBubyB2YWPDrW8gZW4gcmVzb2x2ZVByb3BzLiAqL1xuICBnZXQgdHJpZ2dlcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcz8udG9rZW4gfHwgJyc7XG4gIH1cblxuICAvKiogVmFsb3IgZm9ybWF0ZWFkbyBkZWwgY29udHJvbCBwYXJhIG1vc3RyYXIgZW4gZWwgdHJpZ2dlciAoJycgc2kgdmFjw61vKS4gKi9cbiAgZ2V0IGRpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMucmVzb2x2ZWRQcm9wcz8uY29udHJvbD8udmFsdWU7XG4gICAgaWYgKCFyYXcpIHJldHVybiAnJztcbiAgICBjb25zdCBkID0gbmV3IERhdGUocmF3KTtcbiAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gU3RyaW5nKHJhdyk7XG4gICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gcmVhY3RpdmlkYWRcbiAgICBjb25zdCBsb2NhbGUgPSAnZXMtRVMnO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucHJlc2VudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgdGltZVN0eWxlOiAnc2hvcnQnIH0pLmZvcm1hdChkKTtcbiAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjYXNlICdtb250aC15ZWFyJzpcbiAgICAgICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycsIHllYXI6ICdudW1lcmljJyB9KS5mb3JtYXQoZCk7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pLmZvcm1hdChkKTtcbiAgICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IGRhdGVTdHlsZTogJ21lZGl1bScsIHRpbWVTdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoZCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBkYXRlU3R5bGU6ICdtZWRpdW0nIH0pLmZvcm1hdChkKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcocmF3KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXQgPyAodGhpcy5wcmVzZXRzLmdldCgnZGF0ZUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+KSA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgRGF0ZUlucHV0TWV0YWRhdGE7XG5cbiAgICAvLyBHYXJhbnRpemFyIHVuIHRva2VuIChpZCkgbm8gdmFjw61vOiBsbyBuZWNlc2l0YW4gW3RyaWdnZXJdIGRlbCBtb2RhbCB5IGVsXG4gICAgLy8gW2lkXSBkZWwgaW9uLWRhdGV0aW1lIHBhcmEgdmluY3VsYXJzZS4gU2kgZWwgY29uc3VtZXIgbm8gbG8gcGFzw7MsIGdlbmVyYW1vcyB1bm8uXG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMudG9rZW4pIHtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy50b2tlbiA9IGB2YWwtZGF0ZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDEwKX1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbCkgcmV0dXJuO1xuXG4gICAgLy8gT25seSBhcHBseSBpZiB3aXRoRGVmYXVsdCBvciB2YWx1ZSBpcyBzZXRcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRQcm9wcy53aXRoRGVmYXVsdCAmJiAhdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlKSByZXR1cm47XG5cbiAgICBsZXQgZGVmYXVsdFZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIEV4cGxpY2l0IHZhbHVlIHRha2VzIHByZWNlZGVuY2VcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpLnRvSVNPU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUodGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0KS50b0lTT1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0ID09PSB0cnVlKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBRzFELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUU7SUFDdkUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFO0NBQzdELENBQUM7QUE2Q0Y7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFJN0I7UUFIUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFrQnhDOzs7OztXQUtHO1FBQ00sVUFBSyxHQUErQixFQUFFLENBQUM7UUFFaEQ7O1dBRUc7UUFDSCxrQkFBYSxHQUFzQixFQUF1QixDQUFDO1FBMUJ6RCx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJ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QUMsV0FBVyxFQUFFLENBQUM7UUFDeEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkQsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7K0dBeEtVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZJQXJEbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9DVCwraUhBckNTLFlBQVksOEJBQUUsbUJBQW1CLDBUQUFFLFNBQVMsb1BBQUUsV0FBVyxvaEJBQUUsUUFBUTs7NEZBc0RsRSxrQkFBa0I7a0JBekQ5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsQ0FBQyxZQUNwRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0NUO3dEQW1DUSxNQUFNO3NCQUFkLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkRhdGV0aW1lLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IERhdGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IERBVEVfSU5QVVRfSTE4TiA9IHtcbiAgZXM6IHsgc2VsZWN0RGF0ZTogJ1NlbGVjY2lvbmFyIGZlY2hhJywgc2VsZWN0VGltZTogJ1NlbGVjY2lvbmFyIGhvcmEnIH0sXG4gIGVuOiB7IHNlbGVjdERhdGU6ICdTZWxlY3QgZGF0ZScsIHNlbGVjdFRpbWU6ICdTZWxlY3QgdGltZScgfSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uQnV0dG9uLCBJb25EYXRldGltZSwgSW9uTW9kYWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8IS0tIFRyaWdnZXIgcHJvcGlvIChyZWVtcGxhemEgaW9uLWRhdGV0aW1lLWJ1dHRvbiwgcXVlIHJlbmRlcml6YSBlbiBibGFuY29cbiAgICAgICAgICAgY3VhbmRvIGVsIGNvbnRyb2wgbm8gdGllbmUgdmFsb3IpLiBNdWVzdHJhIGVsIHZhbG9yIGZvcm1hdGVhZG8gbyBlbFxuICAgICAgICAgICBwbGFjZWhvbGRlciwgeSBhYnJlIGVsIG1vZGFsIHbDrWEgW3RyaWdnZXJdLiAtLT5cbiAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgIFtpZF09XCJ0cmlnZ2VySWRcIlxuICAgICAgICBjbGFzcz1cImFjdGlvbiBkYXRlLXRyaWdnZXJcIlxuICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgIGNvbG9yPVwibWVkaXVtXCJcbiAgICAgICAgW2NsYXNzLmlzLXBsYWNlaG9sZGVyXT1cIiFkaXNwbGF5VmFsdWVcIlxuICAgICAgPlxuICAgICAgICB7eyBkaXNwbGF5VmFsdWUgfHwgcGxhY2Vob2xkZXJUZXh0IH19XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGlvbi1tb2RhbFxuICAgICAgW3RyaWdnZXJdPVwidHJpZ2dlcklkXCJcbiAgICAgIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIlxuICAgICAgY2xhc3M9XCJ2YWwtZGF0ZS1tb2RhbFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8aW9uLWRhdGV0aW1lXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlc29sdmVkUHJvcHMuY29udHJvbFwiXG4gICAgICAgICAgW2lkXT1cInJlc29sdmVkUHJvcHMudG9rZW5cIlxuICAgICAgICAgIFtwcmVzZW50YXRpb25dPVwicHJlc2VudGF0aW9uXCJcbiAgICAgICAgICBbbG9jYWxlXT1cImRhdGV0aW1lTG9jYWxlXCJcbiAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIlxuICAgICAgICAgIFtzaG93RGVmYXVsdEJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgW2RvbmVUZXh0XT1cImRvbmVUZXh0XCJcbiAgICAgICAgICBbY2FuY2VsVGV4dF09XCJjYW5jZWxUZXh0XCJcbiAgICAgICAgICBbZm9ybWF0T3B0aW9uc109XCJkYXRldGltZUZvcm1hdE9wdGlvbnNcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgcmVzb2x2ZWRQcm9wcy5oaW50IH19PC9zcGFuPlxuICAgICAgICA8L2lvbi1kYXRldGltZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1kYXRlLWlucHV0XG4gKlxuICogQSBkYXRlIHBpY2tlciBpbnB1dCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3JtcywgdXNpbmcgSW9uaWMncyBkYXRldGltZSBjb21wb25lbnQuXG4gKlxuICogQ3VhbmRvIGVsIGNvbnRyb2wgbm8gdGllbmUgdmFsb3IsIG11ZXN0cmEgdW4gYm90w7NuIGNvbiBlbCB0ZXh0byBgcGxhY2Vob2xkZXJgXG4gKiAobyB1biBkZWZhdWx0IGkxOG4gXCJTZWxlY2Npb25hciBmZWNoYVwiKSBlbiB2ZXogZGUgcmVuZGVyaXphciBlbiBibGFuY28g4oCUXG4gKiBgaW9uLWRhdGV0aW1lLWJ1dHRvbmAgbm8gc29wb3J0YSBwbGFjZWhvbGRlciwgcG9yIGVzbyB1c2Ftb3MgdW4gdHJpZ2dlciBwcm9waW8uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIGhpbnQ6ICdTZWxlY3QgYSBkYXRlJyB9XCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IERhdGVJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRhdGUgaW5wdXQgKGZvcm0gY29udHJvbCwgaGludCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vIEF1dG8tcmVnaXN0cm8gZGUgZGVmYXVsdHMgaTE4biAoYW50aSBrZXktZmFsdGFudGUg4oaSIGFudGkgc3Rvcm0gZGUgQ0QpLlxuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSgnRGF0ZUlucHV0JykpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoJ0RhdGVJbnB1dCcsIERBVEVfSU5QVVRfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBkYXRlIGlucHV0IGNvbmZpZ3VyYXRpb25zXG4gICAqIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgYXQgYXBwIGxldmVsIHZpYSBwcm92aWRlVmFsdGVjaFByZXNldHMoKS5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogPHZhbC1kYXRlLWlucHV0IHByZXNldD1cImZvcm0tZmllbGRcIiBbcHJvcHNdPVwieyBjb250cm9sOiBjdHJsIH1cIj48L3ZhbC1kYXRlLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICogQHR5cGUge0RhdGVJbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgZGF0ZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IGhpbnQgLSBUaGUgaGludCB0ZXh0IGZvciB0aGUgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxEYXRlSW5wdXRNZXRhZGF0YT4gPSB7fTtcblxuICAvKipcbiAgICogUmVzb2x2ZWQgcHJvcHMgYWZ0ZXIgbWVyZ2luZyBwcmVzZXQgKyBleHBsaWNpdCBwcm9wcy5cbiAgICovXG4gIHJlc29sdmVkUHJvcHM6IERhdGVJbnB1dE1ldGFkYXRhID0ge30gYXMgRGF0ZUlucHV0TWV0YWRhdGE7XG5cbiAgLyoqIERvbmUgYnV0dG9uIHRleHQgLSBmcm9tIHByb3BzIG9yIGkxOG4gZGVmYXVsdCAqL1xuICBnZXQgZG9uZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzPy5kb25lVGV4dCB8fCB0aGlzLmkxOG4udCgnb2snKTtcbiAgfVxuXG4gIC8qKiBDYW5jZWwgYnV0dG9uIHRleHQgLSBmcm9tIHByb3BzIG9yIGkxOG4gZGVmYXVsdCAqL1xuICBnZXQgY2FuY2VsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHM/LmNhbmNlbFRleHQgfHwgdGhpcy5pMThuLnQoJ2NhbmNlbCcpO1xuICB9XG5cbiAgLyoqIFByZXNlbnRhY2nDs24gZGVsIGRhdGV0aW1lIChkZWZhdWx0OiBkYXRlKS4gKi9cbiAgZ2V0IHByZXNlbnRhdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHM/LnByZXNlbnRhdGlvbiB8fCAnZGF0ZSc7XG4gIH1cblxuICAvKiogTG9jYWxlIGRlbCBkYXRldGltZSDigJQgaG9ucmEgZWwgcHJvcCBkZWwgY29uc3VtZXIgKGRlZmF1bHQgZXMtRVMpLiAqL1xuICBnZXQgZGF0ZXRpbWVMb2NhbGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzPy5sb2NhbGUgfHwgJ2VzLUVTJztcbiAgfVxuXG4gIC8qKiBQcmltZXIgZMOtYSBkZSBsYSBzZW1hbmEg4oCUIGhvbnJhIGVsIHByb3AgZGVsIGNvbnN1bWVyIChkZWZhdWx0IGx1bmVzKS4gKi9cbiAgZ2V0IGZpcnN0RGF5T2ZXZWVrKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcz8uZmlyc3REYXlPZldlZWsgPz8gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGNpb25lcyBkZSBmb3JtYXRvIHBhcmEgYGlvbi1kYXRldGltZWAgKGJpbmRpbmcsIE5PIHN0cmluZykuIEhvbnJhIGVsIHByb3BcbiAgICogZGVsIGNvbnN1bWVyIHkgY2FlIGEgdW4gZGVmYXVsdCBzZW5zYXRvIChkYXRlIG1lZGl1bSAvIHRpbWUgc2hvcnQpLlxuICAgKi9cbiAgZ2V0IGRhdGV0aW1lRm9ybWF0T3B0aW9ucygpOiB7XG4gICAgZGF0ZT86IHsgZGF0ZVN0eWxlPzogJ2Z1bGwnIHwgJ2xvbmcnIHwgJ21lZGl1bScgfCAnc2hvcnQnIH07XG4gICAgdGltZT86IHsgdGltZVN0eWxlPzogJ2Z1bGwnIHwgJ2xvbmcnIHwgJ21lZGl1bScgfCAnc2hvcnQnIH07XG4gIH0ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHM/LmZvcm1hdE9wdGlvbnMgfHwge1xuICAgICAgICBkYXRlOiB7IGRhdGVTdHlsZTogJ21lZGl1bScgfSxcbiAgICAgICAgdGltZTogeyB0aW1lU3R5bGU6ICdzaG9ydCcgfSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIFRleHRvIGRlbCB0cmlnZ2VyIGN1YW5kbyBOTyBoYXkgdmFsb3IgKHBsYWNlaG9sZGVyIGV4cGzDrWNpdG8gbyBkZWZhdWx0IGkxOG4pLiAqL1xuICBnZXQgcGxhY2Vob2xkZXJUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMucmVzb2x2ZWRQcm9wcz8ucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLnJlc29sdmVkUHJvcHMucGxhY2Vob2xkZXI7XG4gICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gcmVhY3RpdmlkYWQgYW50ZSBjYW1iaW8gZGUgaWRpb21hXG4gICAgcmV0dXJuIHRoaXMucHJlc2VudGF0aW9uID09PSAndGltZSdcbiAgICAgID8gdGhpcy5pMThuLnQoJ3NlbGVjdFRpbWUnLCAnRGF0ZUlucHV0JylcbiAgICAgIDogdGhpcy5pMThuLnQoJ3NlbGVjdERhdGUnLCAnRGF0ZUlucHV0Jyk7XG4gIH1cblxuICAvKiogSWQgZGVsIHRyaWdnZXIvZGF0ZXRpbWUg4oCUIGVzdGFibGU7IHNlIGdhcmFudGl6YSBubyB2YWPDrW8gZW4gcmVzb2x2ZVByb3BzLiAqL1xuICBnZXQgdHJpZ2dlcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcz8udG9rZW4gfHwgJyc7XG4gIH1cblxuICAvKiogVmFsb3IgZm9ybWF0ZWFkbyBkZWwgY29udHJvbCBwYXJhIG1vc3RyYXIgZW4gZWwgdHJpZ2dlciAoJycgc2kgdmFjw61vKS4gKi9cbiAgZ2V0IGRpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhdyA9IHRoaXMucmVzb2x2ZWRQcm9wcz8uY29udHJvbD8udmFsdWU7XG4gICAgaWYgKCFyYXcpIHJldHVybiAnJztcbiAgICBjb25zdCBkID0gbmV3IERhdGUocmF3KTtcbiAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gU3RyaW5nKHJhdyk7XG4gICAgdGhpcy5pMThuLmxhbmcoKTsgLy8gcmVhY3RpdmlkYWRcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmRhdGV0aW1lTG9jYWxlO1xuICAgIHRyeSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucHJlc2VudGF0aW9uKSB7XG4gICAgICAgIGNhc2UgJ3RpbWUnOlxuICAgICAgICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgdGltZVN0eWxlOiAnc2hvcnQnIH0pLmZvcm1hdChkKTtcbiAgICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjYXNlICdtb250aC15ZWFyJzpcbiAgICAgICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IG1vbnRoOiAnbG9uZycsIHllYXI6ICdudW1lcmljJyB9KS5mb3JtYXQoZCk7XG4gICAgICAgIGNhc2UgJ3llYXInOlxuICAgICAgICAgIHJldHVybiBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUsIHsgeWVhcjogJ251bWVyaWMnIH0pLmZvcm1hdChkKTtcbiAgICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgICAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCB7IGRhdGVTdHlsZTogJ21lZGl1bScsIHRpbWVTdHlsZTogJ3Nob3J0JyB9KS5mb3JtYXQoZCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgeyBkYXRlU3R5bGU6ICdtZWRpdW0nIH0pLmZvcm1hdChkKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBTdHJpbmcocmF3KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXQgPyAodGhpcy5wcmVzZXRzLmdldCgnZGF0ZUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+KSA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgRGF0ZUlucHV0TWV0YWRhdGE7XG5cbiAgICAvLyBHYXJhbnRpemFyIHVuIHRva2VuIChpZCkgbm8gdmFjw61vOiBsbyBuZWNlc2l0YW4gW3RyaWdnZXJdIGRlbCBtb2RhbCB5IGVsXG4gICAgLy8gW2lkXSBkZWwgaW9uLWRhdGV0aW1lIHBhcmEgdmluY3VsYXJzZS4gU2kgZWwgY29uc3VtZXIgbm8gbG8gcGFzw7MsIGdlbmVyYW1vcyB1bm8uXG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMudG9rZW4pIHtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy50b2tlbiA9IGB2YWwtZGF0ZS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDEwKX1gO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbCkgcmV0dXJuO1xuXG4gICAgLy8gT25seSBhcHBseSBpZiB3aXRoRGVmYXVsdCBvciB2YWx1ZSBpcyBzZXRcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRQcm9wcy53aXRoRGVmYXVsdCAmJiAhdGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlKSByZXR1cm47XG5cbiAgICBsZXQgZGVmYXVsdFZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIEV4cGxpY2l0IHZhbHVlIHRha2VzIHByZWNlZGVuY2VcbiAgICBpZiAodGhpcy5yZXNvbHZlZFByb3BzLnZhbHVlKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpLnRvSVNPU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUodGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0KS50b0lTT1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0ID09PSB0cnVlKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuICB9XG59XG4iXX0=