valtech-components 4.0.209 → 4.0.210

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 (29) hide show
  1. package/esm2022/lib/components/molecules/load-more/load-more.component.mjs +11 -7
  2. package/esm2022/lib/components/molecules/reaction-bar/reaction-bar.component.mjs +326 -0
  3. package/esm2022/lib/components/molecules/reaction-bar/types.mjs +2 -0
  4. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +12 -9
  5. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +79 -5
  6. package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.mjs +5 -1
  7. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +3 -3
  8. package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +108 -135
  9. package/esm2022/lib/services/auth/org-switch.service.mjs +11 -1
  10. package/esm2022/lib/services/reactions/config.mjs +22 -0
  11. package/esm2022/lib/services/reactions/index.mjs +3 -0
  12. package/esm2022/lib/services/reactions/reactions.service.mjs +89 -0
  13. package/esm2022/lib/services/reactions/types.mjs +2 -0
  14. package/esm2022/lib/version.mjs +2 -2
  15. package/esm2022/public-api.mjs +5 -1
  16. package/fesm2022/valtech-components.mjs +648 -156
  17. package/fesm2022/valtech-components.mjs.map +1 -1
  18. package/lib/components/molecules/reaction-bar/reaction-bar.component.d.ts +44 -0
  19. package/lib/components/molecules/reaction-bar/types.d.ts +55 -0
  20. package/lib/components/organisms/organization-view/organization-view.component.d.ts +1 -0
  21. package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +5 -1
  22. package/lib/services/auth/org-switch.service.d.ts +9 -0
  23. package/lib/services/reactions/config.d.ts +20 -0
  24. package/lib/services/reactions/index.d.ts +3 -0
  25. package/lib/services/reactions/reactions.service.d.ts +42 -0
  26. package/lib/services/reactions/types.d.ts +48 -0
  27. package/lib/version.d.ts +1 -1
  28. package/package.json +1 -1
  29. package/public-api.d.ts +3 -0
@@ -1,7 +1,7 @@
1
1
  import { CommonModule, NgTemplateOutlet } from '@angular/common';
2
2
  import { Component, computed, EventEmitter, inject, input, Output } from '@angular/core';
3
3
  import { NavigationEnd, Router, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
4
- import { IonContent, IonIcon, IonItem, IonLabel, IonList, IonMenu, IonMenuToggle, IonRefresher, IonRefresherContent, IonSplitPane, } from '@ionic/angular/standalone';
4
+ import { IonContent, IonIcon, IonItem, IonLabel, IonList, IonRefresher, IonRefresherContent, } from '@ionic/angular/standalone';
5
5
  import { addIcons } from 'ionicons';
6
6
  import { chevronDownCircleOutline } from 'ionicons/icons';
7
7
  import { filter } from 'rxjs';
@@ -164,72 +164,60 @@ export class PageWrapperComponent {
164
164
  }
165
165
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
166
166
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PageWrapperComponent, isStandalone: true, selector: "val-page-wrapper", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onHeaderClick: "onHeaderClick" }, ngImport: i0, template: `
167
- @if (hasSideMenu()) {
168
- <ion-split-pane contentId="val-pw-main" [when]="'md'">
169
- <ion-menu contentId="val-pw-main" type="overlay">
170
- <ion-content>
171
- <ion-list lines="none" class="pw-menu-list">
172
- @for (item of menuItems(); track item.route) {
173
- <ion-menu-toggle [autoHide]="false">
174
- <ion-item
175
- [routerLink]="item.route"
176
- routerLinkActive="pw-menu-active"
177
- [routerLinkActiveOptions]="{ exact: item.exact ?? false }"
178
- lines="none"
179
- >
180
- @if (item.icon) {
181
- <ion-icon [name]="item.icon" slot="start" />
182
- }
183
- <ion-label>{{ item.label }}</ion-label>
184
- </ion-item>
185
- </ion-menu-toggle>
186
- }
187
- </ion-list>
188
- </ion-content>
189
- </ion-menu>
190
- <div class="ion-page" id="val-pw-main">
191
- <ng-container *ngTemplateOutlet="pageContent" />
192
- </div>
193
- </ion-split-pane>
194
- } @else {
195
- <div class="ion-page">
196
- <ng-container *ngTemplateOutlet="pageContent" />
167
+ <div class="ion-page" [class.pw-has-menu]="hasSideMenu()">
168
+ @if (hasSideMenu()) {
169
+ <nav class="pw-sidenav" aria-label="Menú lateral">
170
+ <ion-list lines="none" class="pw-menu-list">
171
+ @for (item of menuItems(); track item.route) {
172
+ <ion-item
173
+ [routerLink]="item.route"
174
+ routerLinkActive="pw-menu-active"
175
+ [routerLinkActiveOptions]="{ exact: item.exact ?? false }"
176
+ lines="none"
177
+ >
178
+ @if (item.icon) {
179
+ <ion-icon [name]="item.icon" slot="start" />
180
+ }
181
+ <ion-label>{{ item.label }}</ion-label>
182
+ </ion-item>
183
+ }
184
+ </ion-list>
185
+ </nav>
186
+ }
187
+ <div class="pw-content">
188
+ <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
189
+ <ion-content
190
+ [id]="contentId()"
191
+ [fullscreen]="true"
192
+ [ngStyle]="{
193
+ '--background': background(),
194
+ }"
195
+ >
196
+ <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
197
+ página activa registró un handler vía PageRefreshService.
198
+ ion-refresher con slot="fixed" DEBE ser hijo directo de
199
+ ion-content — por eso va aquí crudo, no envuelto en val-refresher. -->
200
+ @if (pageRefresh.hasHandler()) {
201
+ <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
202
+ <ion-refresher-content
203
+ pullingIcon="chevron-down-circle-outline"
204
+ refreshingSpinner="circular"
205
+ ></ion-refresher-content>
206
+ </ion-refresher>
207
+ }
208
+ <val-network-banner />
209
+ <val-container [props]="{ size: contentMaxWidth() }">
210
+ <main>
211
+ <router-outlet></router-outlet>
212
+ </main>
213
+ </val-container>
214
+ @if (propsFooter()) {
215
+ <val-company-footer [props]="propsFooter()" />
216
+ }
217
+ </ion-content>
197
218
  </div>
198
- }
199
-
200
- <ng-template #pageContent>
201
- <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
202
- <ion-content
203
- [id]="contentId()"
204
- [fullscreen]="true"
205
- [ngStyle]="{
206
- '--background': background(),
207
- }"
208
- >
209
- <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
210
- página activa registró un handler vía PageRefreshService.
211
- ion-refresher con slot="fixed" DEBE ser hijo directo de
212
- ion-content — por eso va aquí crudo, no envuelto en val-refresher. -->
213
- @if (pageRefresh.hasHandler()) {
214
- <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
215
- <ion-refresher-content
216
- pullingIcon="chevron-down-circle-outline"
217
- refreshingSpinner="circular"
218
- ></ion-refresher-content>
219
- </ion-refresher>
220
- }
221
- <val-network-banner />
222
- <val-container [props]="{ size: contentMaxWidth() }">
223
- <main>
224
- <router-outlet></router-outlet>
225
- </main>
226
- </val-container>
227
- @if (propsFooter()) {
228
- <val-company-footer [props]="propsFooter()" />
229
- }
230
- </ion-content>
231
- </ng-template>
232
- `, isInline: true, styles: ["main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}.pw-menu-list{padding-top:12px}.pw-menu-list ion-item{--border-radius: 10px;--padding-start: 12px;--padding-end: 12px;margin:2px 8px;font-size:.9375rem}.pw-menu-list ion-item.pw-menu-active{--background: var(--ion-color-primary-tint, rgba(var(--ion-color-primary-rgb), .12));--color: var(--ion-color-primary);font-weight:600}.pw-menu-list ion-item.pw-menu-active ion-icon{color:var(--ion-color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CompanyFooterComponent, selector: "val-company-footer", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonSplitPane, selector: "ion-split-pane", inputs: ["contentId", "disabled", "when"] }, { kind: "component", type: IonMenu, selector: "ion-menu", inputs: ["contentId", "disabled", "maxEdgeStart", "menuId", "side", "swipeGesture", "type"] }, { kind: "component", type: IonMenuToggle, selector: "ion-menu-toggle", inputs: ["autoHide", "menu"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: NetworkBannerComponent, selector: "val-network-banner" }] }); }
219
+ </div>
220
+ `, isInline: true, styles: [".ion-page.pw-has-menu{flex-direction:row}.pw-sidenav{width:0;overflow:hidden;flex-shrink:0;border-right:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color);transition:width .25s ease}@media (min-width: 768px){.pw-sidenav{width:220px}}.pw-content{display:flex;flex-direction:column;flex:1;min-width:0;position:relative}main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}.pw-menu-list{padding-top:12px}.pw-menu-list ion-item{--border-radius: 10px;--padding-start: 12px;--padding-end: 12px;margin:2px 8px;font-size:.9375rem}.pw-menu-list ion-item.pw-menu-active{--background: rgba(var(--ion-color-primary-rgb, 0, 0, 0), .1);--color: var(--ion-color-primary);font-weight:600}.pw-menu-list ion-item.pw-menu-active ion-icon{color:var(--ion-color-primary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: HeaderComponent, selector: "val-header", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: CompanyFooterComponent, selector: "val-company-footer", inputs: ["props"] }, { kind: "component", type: ContainerComponent, selector: "val-container", inputs: ["props"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: NetworkBannerComponent, selector: "val-network-banner" }] }); }
233
221
  }
234
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PageWrapperComponent, decorators: [{
235
223
  type: Component,
@@ -245,82 +233,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
245
233
  RouterLink,
246
234
  RouterLinkActive,
247
235
  IonContent,
248
- IonSplitPane,
249
- IonMenu,
250
- IonMenuToggle,
251
236
  IonList,
252
237
  IonItem,
253
238
  IonLabel,
254
239
  IonIcon,
255
240
  NetworkBannerComponent,
256
241
  ], template: `
257
- @if (hasSideMenu()) {
258
- <ion-split-pane contentId="val-pw-main" [when]="'md'">
259
- <ion-menu contentId="val-pw-main" type="overlay">
260
- <ion-content>
261
- <ion-list lines="none" class="pw-menu-list">
262
- @for (item of menuItems(); track item.route) {
263
- <ion-menu-toggle [autoHide]="false">
264
- <ion-item
265
- [routerLink]="item.route"
266
- routerLinkActive="pw-menu-active"
267
- [routerLinkActiveOptions]="{ exact: item.exact ?? false }"
268
- lines="none"
269
- >
270
- @if (item.icon) {
271
- <ion-icon [name]="item.icon" slot="start" />
272
- }
273
- <ion-label>{{ item.label }}</ion-label>
274
- </ion-item>
275
- </ion-menu-toggle>
276
- }
277
- </ion-list>
278
- </ion-content>
279
- </ion-menu>
280
- <div class="ion-page" id="val-pw-main">
281
- <ng-container *ngTemplateOutlet="pageContent" />
282
- </div>
283
- </ion-split-pane>
284
- } @else {
285
- <div class="ion-page">
286
- <ng-container *ngTemplateOutlet="pageContent" />
242
+ <div class="ion-page" [class.pw-has-menu]="hasSideMenu()">
243
+ @if (hasSideMenu()) {
244
+ <nav class="pw-sidenav" aria-label="Menú lateral">
245
+ <ion-list lines="none" class="pw-menu-list">
246
+ @for (item of menuItems(); track item.route) {
247
+ <ion-item
248
+ [routerLink]="item.route"
249
+ routerLinkActive="pw-menu-active"
250
+ [routerLinkActiveOptions]="{ exact: item.exact ?? false }"
251
+ lines="none"
252
+ >
253
+ @if (item.icon) {
254
+ <ion-icon [name]="item.icon" slot="start" />
255
+ }
256
+ <ion-label>{{ item.label }}</ion-label>
257
+ </ion-item>
258
+ }
259
+ </ion-list>
260
+ </nav>
261
+ }
262
+ <div class="pw-content">
263
+ <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
264
+ <ion-content
265
+ [id]="contentId()"
266
+ [fullscreen]="true"
267
+ [ngStyle]="{
268
+ '--background': background(),
269
+ }"
270
+ >
271
+ <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
272
+ página activa registró un handler vía PageRefreshService.
273
+ ion-refresher con slot="fixed" DEBE ser hijo directo de
274
+ ion-content — por eso va aquí crudo, no envuelto en val-refresher. -->
275
+ @if (pageRefresh.hasHandler()) {
276
+ <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
277
+ <ion-refresher-content
278
+ pullingIcon="chevron-down-circle-outline"
279
+ refreshingSpinner="circular"
280
+ ></ion-refresher-content>
281
+ </ion-refresher>
282
+ }
283
+ <val-network-banner />
284
+ <val-container [props]="{ size: contentMaxWidth() }">
285
+ <main>
286
+ <router-outlet></router-outlet>
287
+ </main>
288
+ </val-container>
289
+ @if (propsFooter()) {
290
+ <val-company-footer [props]="propsFooter()" />
291
+ }
292
+ </ion-content>
287
293
  </div>
288
- }
289
-
290
- <ng-template #pageContent>
291
- <val-header [props]="headerProps()" (onClick)="onHeaderClickHandler($event)" />
292
- <ion-content
293
- [id]="contentId()"
294
- [fullscreen]="true"
295
- [ngStyle]="{
296
- '--background': background(),
297
- }"
298
- >
299
- <!-- Pull-to-refresh estándar del factory. Se renderiza sólo cuando la
300
- página activa registró un handler vía PageRefreshService.
301
- ion-refresher con slot="fixed" DEBE ser hijo directo de
302
- ion-content — por eso va aquí crudo, no envuelto en val-refresher. -->
303
- @if (pageRefresh.hasHandler()) {
304
- <ion-refresher slot="fixed" (ionRefresh)="onPageRefresh($event)">
305
- <ion-refresher-content
306
- pullingIcon="chevron-down-circle-outline"
307
- refreshingSpinner="circular"
308
- ></ion-refresher-content>
309
- </ion-refresher>
310
- }
311
- <val-network-banner />
312
- <val-container [props]="{ size: contentMaxWidth() }">
313
- <main>
314
- <router-outlet></router-outlet>
315
- </main>
316
- </val-container>
317
- @if (propsFooter()) {
318
- <val-company-footer [props]="propsFooter()" />
319
- }
320
- </ion-content>
321
- </ng-template>
322
- `, styles: ["main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}.pw-menu-list{padding-top:12px}.pw-menu-list ion-item{--border-radius: 10px;--padding-start: 12px;--padding-end: 12px;margin:2px 8px;font-size:.9375rem}.pw-menu-list ion-item.pw-menu-active{--background: var(--ion-color-primary-tint, rgba(var(--ion-color-primary-rgb), .12));--color: var(--ion-color-primary);font-weight:600}.pw-menu-list ion-item.pw-menu-active ion-icon{color:var(--ion-color-primary)}\n"] }]
294
+ </div>
295
+ `, styles: [".ion-page.pw-has-menu{flex-direction:row}.pw-sidenav{width:0;overflow:hidden;flex-shrink:0;border-right:1px solid var(--ion-border-color, rgba(0, 0, 0, .1));background:var(--ion-background-color);transition:width .25s ease}@media (min-width: 768px){.pw-sidenav{width:220px}}.pw-content{display:flex;flex-direction:column;flex:1;min-width:0;position:relative}main{min-height:60vh;padding-bottom:calc(var(--val-bottom-nav-height, 0px) + env(safe-area-inset-bottom,0px) + 16px)}.pw-menu-list{padding-top:12px}.pw-menu-list ion-item{--border-radius: 10px;--padding-start: 12px;--padding-end: 12px;margin:2px 8px;font-size:.9375rem}.pw-menu-list ion-item.pw-menu-active{--background: rgba(var(--ion-color-primary-rgb, 0, 0, 0), .1);--color: var(--ion-color-primary);font-weight:600}.pw-menu-list ion-item.pw-menu-active ion-icon{color:var(--ion-color-primary)}\n"] }]
323
296
  }], propDecorators: { onHeaderClick: [{
324
297
  type: Output
325
298
  }] } });
326
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS13cmFwcGVyL3BhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLE9BQU8sRUFDUCxhQUFhLEVBQ2IsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixZQUFZLEdBR2IsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThC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RkFxR2Isb0JBQW9CO2tCQTNIaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixPQUFPO3dCQUNQLHNCQUFzQjtxQkFDdkIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0VUOzhCQWlFUyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSW9uQ29udGVudCxcbiAgSW9uSWNvbixcbiAgSW9uSXRlbSxcbiAgSW9uTGFiZWwsXG4gIElvbkxpc3QsXG4gIElvbk1lbnUsXG4gIElvbk1lbnVUb2dnbGUsXG4gIElvblJlZnJlc2hlcixcbiAgSW9uUmVmcmVzaGVyQ29udGVudCxcbiAgSW9uU3BsaXRQYW5lLFxuICBWaWV3V2lsbEVudGVyLFxuICBWaWV3V2lsbExlYXZlLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2hldnJvbkRvd25DaXJjbGVPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wYW55Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL2NvbXBhbnktZm9vdGVyL2NvbXBhbnktZm9vdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9jb250YWluZXIvY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250YWluZXJTaXplIH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL3R5cGVzJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IFBhZ2VSZWZyZXNoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BhZ2UtcmVmcmVzaC9wYWdlLXJlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBQYWdlV3JhcHBlck1ldGFkYXRhLCBTaWRlTmF2SXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgeyBOZXR3b3JrQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL25ldHdvcmstYmFubmVyL25ldHdvcmstYmFubmVyLmNvbXBvbmVudCc7XG5cbi8vIEljb25vIGRlbCBpbmRpY2Fkb3IgZGUgcHVsbCAoaW9uLXJlZnJlc2hlci1jb250ZW50IHB1bGxpbmdJY29uKS5cbmFkZEljb25zKHsgY2hldnJvbkRvd25DaXJjbGVPdXRsaW5lIH0pO1xuXG4vKipcbiAqIHZhbC1wYWdlLXdyYXBwZXJcbiAqXG4gKiBBIGNvbXBsZXRlIHBhZ2Ugd3JhcHBlciB0ZW1wbGF0ZSB3aXRoIGhlYWRlciwgcm91dGVyIG91dGxldCwgZm9vdGVyLFxuICogYW5kIGF1dG9tYXRpYyBzY3JvbGwtdG8tdG9wIG9uIG5hdmlnYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcGFnZS13cmFwcGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgaG9tZVJvdXRlOiAnLycsXG4gKiAgICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICogICAgIGZvb3Rlcjoge1xuICogICAgICAgbGlua3M6IHsgLi4uIH0sXG4gKiAgICAgICByaWdodHM6IHsgY29tcGFueU5hbWU6ICdBY21lJyB9XG4gKiAgICAgfVxuICogICB9XCJcbiAqID48L3ZhbC1wYWdlLXdyYXBwZXI+XG4gKlxuICogQGlucHV0IHByb3BzIC0gUGFnZSB3cmFwcGVyIGNvbmZpZ3VyYXRpb25cbiAqIEBvdXRwdXQgb25IZWFkZXJDbGljayAtIEVtaXRzIHdoZW4gYSBoZWFkZXIgYWN0aW9uIGlzIGNsaWNrZWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXBhZ2Utd3JhcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBIZWFkZXJDb21wb25lbnQsXG4gICAgQ29tcGFueUZvb3RlckNvbXBvbmVudCxcbiAgICBDb250YWluZXJDb21wb25lbnQsXG4gICAgSW9uUmVmcmVzaGVyLFxuICAgIElvblJlZnJlc2hlckNvbnRlbnQsXG4gICAgUm91dGVyT3V0bGV0LFxuICAgIFJvdXRlckxpbmssXG4gICAgUm91dGVyTGlua0FjdGl2ZSxcbiAgICBJb25Db250ZW50LFxuICAgIElvblNwbGl0UGFuZSxcbiAgICBJb25NZW51LFxuICAgIElvbk1lbnVUb2dnbGUsXG4gICAgSW9uTGlzdCxcbiAgICBJb25JdGVtLFxuICAgIElvbkxhYmVsLFxuICAgIElvbkljb24sXG4gICAgTmV0d29ya0Jhbm5lckNvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGhhc1NpZGVNZW51KCkpIHtcbiAgICAgIDxpb24tc3BsaXQtcGFuZSBjb250ZW50SWQ9XCJ2YWwtcHctbWFpblwiIFt3aGVuXT1cIidtZCdcIj5cbiAgICAgICAgPGlvbi1tZW51IGNvbnRlbnRJZD1cInZhbC1wdy1tYWluXCIgdHlwZT1cIm92ZXJsYXlcIj5cbiAgICAgICAgICA8aW9uLWNvbnRlbnQ+XG4gICAgICAgICAgICA8aW9uLWxpc3QgbGluZXM9XCJub25lXCIgY2xhc3M9XCJwdy1tZW51LWxpc3RcIj5cbiAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51SXRlbXMoKTsgdHJhY2sgaXRlbS5yb3V0ZSkge1xuICAgICAgICAgICAgICAgIDxpb24tbWVudS10b2dnbGUgW2F1dG9IaWRlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbmtBY3RpdmU9XCJwdy1tZW51LWFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiBpdGVtLmV4YWN0ID8/IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgICBsaW5lcz1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJpdGVtLmljb25cIiBzbG90PVwic3RhcnRcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgaXRlbS5sYWJlbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICAgICAgICA8L2lvbi1tZW51LXRvZ2dsZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tbGlzdD5cbiAgICAgICAgICA8L2lvbi1jb250ZW50PlxuICAgICAgICA8L2lvbi1tZW51PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW9uLXBhZ2VcIiBpZD1cInZhbC1wdy1tYWluXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VDb250ZW50XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lvbi1zcGxpdC1wYW5lPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImlvbi1wYWdlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlQ29udGVudFwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8bmctdGVtcGxhdGUgI3BhZ2VDb250ZW50PlxuICAgICAgPHZhbC1oZWFkZXIgW3Byb3BzXT1cImhlYWRlclByb3BzKClcIiAob25DbGljayk9XCJvbkhlYWRlckNsaWNrSGFuZGxlcigkZXZlbnQpXCIgLz5cbiAgICAgIDxpb24tY29udGVudFxuICAgICAgICBbaWRdPVwiY29udGVudElkKClcIlxuICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICctLWJhY2tncm91bmQnOiBiYWNrZ3JvdW5kKCksXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8IS0tIFB1bGwtdG8tcmVmcmVzaCBlc3TDoW5kYXIgZGVsIGZhY3RvcnkuIFNlIHJlbmRlcml6YSBzw7NsbyBjdWFuZG8gbGFcbiAgICAgICAgICAgICBww6FnaW5hIGFjdGl2YSByZWdpc3Ryw7MgdW4gaGFuZGxlciB2w61hIFBhZ2VSZWZyZXNoU2VydmljZS5cbiAgICAgICAgICAgICBpb24tcmVmcmVzaGVyIGNvbiBzbG90PVwiZml4ZWRcIiBERUJFIHNlciBoaWpvIGRpcmVjdG8gZGVcbiAgICAgICAgICAgICBpb24tY29udGVudCDigJQgcG9yIGVzbyB2YSBhcXXDrSBjcnVkbywgbm8gZW52dWVsdG8gZW4gdmFsLXJlZnJlc2hlci4gLS0+XG4gICAgICAgIEBpZiAocGFnZVJlZnJlc2guaGFzSGFuZGxlcigpKSB7XG4gICAgICAgICAgPGlvbi1yZWZyZXNoZXIgc2xvdD1cImZpeGVkXCIgKGlvblJlZnJlc2gpPVwib25QYWdlUmVmcmVzaCgkZXZlbnQpXCI+XG4gICAgICAgICAgICA8aW9uLXJlZnJlc2hlci1jb250ZW50XG4gICAgICAgICAgICAgIHB1bGxpbmdJY29uPVwiY2hldnJvbi1kb3duLWNpcmNsZS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgcmVmcmVzaGluZ1NwaW5uZXI9XCJjaXJjdWxhclwiXG4gICAgICAgICAgICA+PC9pb24tcmVmcmVzaGVyLWNvbnRlbnQ+XG4gICAgICAgICAgPC9pb24tcmVmcmVzaGVyPlxuICAgICAgICB9XG4gICAgICAgIDx2YWwtbmV0d29yay1iYW5uZXIgLz5cbiAgICAgICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogY29udGVudE1heFdpZHRoKCkgfVwiPlxuICAgICAgICAgIDxtYWluPlxuICAgICAgICAgICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgPC92YWwtY29udGFpbmVyPlxuICAgICAgICBAaWYgKHByb3BzRm9vdGVyKCkpIHtcbiAgICAgICAgICA8dmFsLWNvbXBhbnktZm9vdGVyIFtwcm9wc109XCJwcm9wc0Zvb3RlcigpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9pb24tY29udGVudD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICBgLFxuICBzdHlsZXM6IGBcbiAgICBtYWluIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYwdmg7XG4gICAgICAvKiBSZXNlcnZhIGVzcGFjaW8gcGFyYSBlbCBib3R0b20tbmF2IGZsb2F0aW5nICsgc2FmZS1hcmVhIChpT1MgaG9tZSBpbmRpY2F0b3IpXG4gICAgICAgICArIGJyZWF0aGluZyByb29tICgxNnB4KS4gU2luIGVzdG8sIGVsIMO6bHRpbW8gZWxlbWVudG8gcXVlZGEgdGFwYWRvIHBvclxuICAgICAgICAgZWwgbmF2IGVuIG1vYmlsZS9QV0EuICovXG4gICAgICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS12YWwtYm90dG9tLW5hdi1oZWlnaHQsIDBweCkgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSArIDE2cHgpO1xuICAgIH1cblxuICAgIC5wdy1tZW51LWxpc3Qge1xuICAgICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbSB7XG4gICAgICAtLWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAtLXBhZGRpbmctc3RhcnQ6IDEycHg7XG4gICAgICAtLXBhZGRpbmctZW5kOiAxMnB4O1xuICAgICAgbWFyZ2luOiAycHggOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbS5wdy1tZW51LWFjdGl2ZSB7XG4gICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXRpbnQsIHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xMikpO1xuICAgICAgLS1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB9XG5cbiAgICAucHctbWVudS1saXN0IGlvbi1pdGVtLnB3LW1lbnUtYWN0aXZlIGlvbi1pY29uIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgfVxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlV3JhcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIFZpZXdXaWxsRW50ZXIsIFZpZXdXaWxsTGVhdmUsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB0aGVtZSA9IGluamVjdChUaGVtZVNlcnZpY2UpO1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKiBCdXMgZGVsIHB1bGwtdG8tcmVmcmVzaCDigJQgbGEgcMOhZ2luYSBhY3RpdmEgcmVnaXN0cmEgc3UgaGFuZGxlciBhcXXDrS4gKi9cbiAgcHJvdGVjdGVkIHBhZ2VSZWZyZXNoID0gaW5qZWN0KFBhZ2VSZWZyZXNoU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXIgZGVsIGdlc3RvIHB1bGwtdG8tcmVmcmVzaCAoYGlvbi1yZWZyZXNoZXJgIGlvblJlZnJlc2gpLiBEZWxlZ2EgZW5cbiAgICogZWwgaGFuZGxlciBxdWUgcmVnaXN0csOzIGxhIHDDoWdpbmEgYWN0aXZhIHkgY2llcnJhIGVsIHNwaW5uZXIgYWwgdGVybWluYXIuXG4gICAqL1xuICBhc3luYyBvblBhZ2VSZWZyZXNoKGV2ZW50OiBFdmVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnBhZ2VSZWZyZXNoLnJ1bigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJb25SZWZyZXNoZXJFbGVtZW50IHwgbnVsbCk/LmNvbXBsZXRlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBhZ2Ugd3JhcHBlciBjb25maWd1cmF0aW9uLlxuICAgKiBTaWduYWwtYmFzZWQgaW5wdXQgZm9yIGZ1bGwgcmVhY3Rpdml0eSB3aXRoIGNvbXB1dGVkKCkuXG4gICAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFBhZ2VXcmFwcGVyTWV0YWRhdGE+KHtcbiAgICBzY3JvbGxUb1RvcE9uTmF2aWdhdGU6IHRydWUsXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIG9uSGVhZGVyQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRGVmYXVsdCBoZWFkZXIgY29uZmlndXJhdGlvbiAoY2FjaGVkIHRvIGF2b2lkIGluZmluaXRlIGNoYW5nZSBkZXRlY3Rpb24pLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0SGVhZGVyID0ge1xuICAgIGJvcmRlcmVkOiB0cnVlLFxuICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIHdpdGhCYWNrOiBmYWxzZSxcbiAgICAgIHdpdGhBY3Rpb25zOiB0cnVlLFxuICAgICAgdGV4dENvbG9yOiAnZGFyaycgYXMgY29uc3QsXG4gICAgICB3aXRoTWVudTogdHJ1ZSxcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRva2VuOiAnaGVhZGVyLWxvZ28nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgICBwb3NpdGlvbjogJ2xlZnQnIGFzIGNvbnN0LFxuICAgICAgICAgIHR5cGU6ICdJTUFHRScgYXMgY29uc3QsXG4gICAgICAgICAgaW1hZ2U6IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMCxcbiAgICAgICAgICAgIHNyYzogJy0tbWFpbi1sb2dvJyxcbiAgICAgICAgICAgIGFsdDogJ2hlYWRlciBsb2dvJyxcbiAgICAgICAgICAgIG1vZGU6ICdib3gnIGFzIGNvbnN0LFxuICAgICAgICAgICAgc2hhZGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNpemU6ICdzbWFsbCcgYXMgY29uc3QsXG4gICAgICAgICAgICBsaW1pdGVkOiBmYWxzZSxcbiAgICAgICAgICAgIGZsZXg6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfTtcblxuICAvLyBDb21wdXRlZCBoZWxwZXJzIGZvciB0ZW1wbGF0ZSBiaW5kaW5nc1xuICBoZWFkZXJQcm9wcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8uaGVhZGVyIHx8IHRoaXMuZGVmYXVsdEhlYWRlcik7XG4gIGNvbnRlbnRJZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8uY29udGVudElkIHx8ICdwYWdlLXdyYXBwZXInKTtcbiAgcHJvcHNGb290ZXIgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmZvb3Rlcik7XG4gIGNvbnRlbnRNYXhXaWR0aCA9IGNvbXB1dGVkPENvbnRhaW5lclNpemU+KCgpID0+IHRoaXMucHJvcHMoKT8uY29udGVudE1heFdpZHRoID8/ICdmbHVpZCcpO1xuICBtZW51SXRlbXMgPSBjb21wdXRlZDxTaWRlTmF2SXRlbVtdPigoKSA9PiB0aGlzLnByb3BzKCk/Lm1lbnVJdGVtcyA/PyBbXSk7XG4gIGhhc1NpZGVNZW51ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5tZW51SXRlbXMoKS5sZW5ndGggPiAwKTtcbiAgYmFja2dyb3VuZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAodGhpcy50aGVtZS5Jc0RhcmspIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG4gICAgY29uc3QgYmcgPSB0aGlzLnByb3BzKCk/LmJhY2tncm91bmQ7XG4gICAgaWYgKCFiZykge1xuICAgICAgcmV0dXJuICd2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciknO1xuICAgIH1cbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKGJnKTtcbiAgfSk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMoKT8uc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlICE9PSBmYWxzZSkge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm91dGVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnJvdXRlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlvblZpZXdXaWxsTGVhdmUoKTogdm9pZCB7XG4gICAgLy8gT3B0aW9uYWw6IGNhbiBhZGQgbG9naWMgb24gdmlldyBsZWF2ZVxuICB9XG5cbiAgaW9uVmlld1dpbGxFbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogU2Nyb2xscyB0aGUgY29udGVudCB0byB0aGUgdG9wLlxuICAgKi9cbiAgcHJpdmF0ZSBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICBjb25zdCBpZCA9IHRoaXMucHJvcHMoKT8uY29udGVudElkIHx8ICdwYWdlLXdyYXBwZXInO1xuICAgIGNvbnN0IGlvbkNvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKSBhcyBhbnk7XG4gICAgaWYgKGlvbkNvbnRlbnQgJiYgaW9uQ29udGVudC5zY3JvbGxUb1RvcCkge1xuICAgICAgaW9uQ29udGVudC5zY3JvbGxUb1RvcCgzMDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyBoZWFkZXIgYWN0aW9uIGNsaWNrcy5cbiAgICovXG4gIG9uSGVhZGVyQ2xpY2tIYW5kbGVyKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uSGVhZGVyQ2xpY2suZW1pdCh0b2tlbik7XG5cbiAgICBjb25zdCBob21lUm91dGUgPSB0aGlzLnByb3BzKCk/LmhvbWVSb3V0ZTtcbiAgICBpZiAodG9rZW4gPT09ICdoZWFkZXItbG9nbycgJiYgaG9tZVJvdXRlKSB7XG4gICAgICB0aGlzLm5hdi5uYXZpZ2F0ZUJ5VXJsKGhvbWVSb3V0ZSk7XG4gICAgfVxuICB9XG59XG4iXX0=
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS13cmFwcGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90ZW1wbGF0ZXMvcGFnZS13cmFwcGVyL3BhZ2Utd3JhcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BHLE9BQU8sRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFlBQVksRUFDWixtQkFBbUIsR0FHcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUUvRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOzs7QUFFakcsbUVBQW1FO0FBQ25FLFFBQVEsQ0FBQyxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztBQUV2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUEwSUgsTUFBTSxPQUFPLG9CQUFvQjtJQXpJakM7UUEwSVUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUdoQywyRUFBMkU7UUFDakUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQWNuRDs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsS0FBSyxDQUFzQjtZQUMxQyxxQkFBcUIsRUFBRSxJQUFJO1NBQzVCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ08sa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRXJEOztXQUVHO1FBQ2Msa0JBQWEsR0FBRztZQUMvQixRQUFRLEVBQUUsSUFBSTtZQUNkLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsS0FBSztnQkFDZixXQUFXLEVBQUUsSUFBSTtnQkFDakIsU0FBUyxFQUFFLE1BQWU7Z0JBQzFCLFFBQVEsRUFBRSxJQUFJO2dCQUNkLEtBQUssRUFBRSxFQUFFO2dCQUNULE9BQU8sRUFBRTtvQkFDUDt3QkFDRSxLQUFLLEVBQUUsYUFBYTt3QkFDcEIsV0FBVyxFQUFFLEVBQUU7d0JBQ2YsUUFBUSxFQUFFLE1BQWU7d0JBQ3pCLElBQUksRUFBRSxPQUFnQjt3QkFDdEIsS0FBSyxFQUFFOzRCQUNMLEtBQUssRUFBRSxFQUFFOzRCQUNULEdBQUcsRUFBRSxhQUFhOzRCQUNsQixHQUFHLEVBQUUsYUFBYTs0QkFDbEIsSUFBSSxFQUFFLEtBQWM7NEJBQ3BCLE1BQU0sRUFBRSxLQUFLOzRCQUNiLFFBQVEsRUFBRSxLQUFLOzRCQUNmLElBQUksRUFBRSxPQUFnQjs0QkFDdEIsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsSUFBSSxFQUFFLElBQUk7eUJBQ1g7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7UUFFRix5Q0FBeUM7UUFDekMsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxJQUFJLGNBQWMsQ0FBQyxDQUFDO1FBQ3RFLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxvQkFBZSxHQUFHLFFBQVEsQ0FBZ0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLGVBQWUsSUFBSSxPQUFPLENBQUMsQ0FBQztRQUMxRixjQUFTLEdBQUcsUUFBUSxDQUFnQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN0QixPQUFPLDZCQUE2QixDQUFDO1lBQ3ZDLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDUixPQUFPLDZCQUE2QixDQUFDO1lBQ3ZDLENBQUM7WUFDRCxPQUFPLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztLQWtESjtJQTdIQzs7O09BR0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLEtBQVk7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQy9CLENBQUM7Z0JBQVMsQ0FBQztZQUNSLEtBQUssQ0FBQyxNQUF5QyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBbUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxxQkFBcUIsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2lCQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUFDO2lCQUNyRCxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2Qsd0NBQXdDO0lBQzFDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssV0FBVztRQUNqQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxJQUFJLGNBQWMsQ0FBQztRQUNyRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQVEsQ0FBQztRQUMzRCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxvQkFBb0IsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDMUMsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDOytHQXJJVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiw2UEFwSHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRFQsazZCQXZFQyxZQUFZLG9IQUVaLGVBQWUsZ0dBQ2Ysc0JBQXNCLGtGQUN0QixrQkFBa0IsNkVBQ2xCLFlBQVksaUtBQ1osbUJBQW1CLGlKQUNuQixZQUFZLDJKQUNaLFVBQVUsb09BQ1YsZ0JBQWdCLDhNQUNoQixVQUFVLHdLQUNWLE9BQU8seUZBQ1AsT0FBTywwTkFDUCxRQUFRLDZGQUNSLE9BQU8sMkpBQ1Asc0JBQXNCOzs0RkFzSGIsb0JBQW9CO2tCQXpJaEMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsUUFBUTt3QkFDUixPQUFPO3dCQUNQLHNCQUFzQjtxQkFDdkIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0RUOzhCQThGUyxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBpbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyLCBSb3V0ZXJMaW5rLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSW9uQ29udGVudCxcbiAgSW9uSWNvbixcbiAgSW9uSXRlbSxcbiAgSW9uTGFiZWwsXG4gIElvbkxpc3QsXG4gIElvblJlZnJlc2hlcixcbiAgSW9uUmVmcmVzaGVyQ29udGVudCxcbiAgVmlld1dpbGxFbnRlcixcbiAgVmlld1dpbGxMZWF2ZSxcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZXZyb25Eb3duQ2lyY2xlT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcbmltcG9ydCB7IGZpbHRlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcGFueUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9jb21wYW55LWZvb3Rlci9jb21wYW55LWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvY29udGFpbmVyL2NvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29udGFpbmVyU2l6ZSB9IGZyb20gJy4uLy4uL2F0b21zL2NvbnRhaW5lci90eXBlcyc7XG5pbXBvcnQgeyBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBQYWdlUmVmcmVzaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUGFnZVdyYXBwZXJNZXRhZGF0YSwgU2lkZU5hdkl0ZW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHJlc29sdmVDb2xvciB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC91dGlscy9zdHlsZXMnO1xuaW1wb3J0IHsgTmV0d29ya0Jhbm5lckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9uZXR3b3JrLWJhbm5lci9uZXR3b3JrLWJhbm5lci5jb21wb25lbnQnO1xuXG4vLyBJY29ubyBkZWwgaW5kaWNhZG9yIGRlIHB1bGwgKGlvbi1yZWZyZXNoZXItY29udGVudCBwdWxsaW5nSWNvbikuXG5hZGRJY29ucyh7IGNoZXZyb25Eb3duQ2lyY2xlT3V0bGluZSB9KTtcblxuLyoqXG4gKiB2YWwtcGFnZS13cmFwcGVyXG4gKlxuICogQSBjb21wbGV0ZSBwYWdlIHdyYXBwZXIgdGVtcGxhdGUgd2l0aCBoZWFkZXIsIHJvdXRlciBvdXRsZXQsIGZvb3RlcixcbiAqIGFuZCBhdXRvbWF0aWMgc2Nyb2xsLXRvLXRvcCBvbiBuYXZpZ2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXBhZ2Utd3JhcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGhvbWVSb3V0ZTogJy8nLFxuICogICAgIHNjcm9sbFRvVG9wT25OYXZpZ2F0ZTogdHJ1ZSxcbiAqICAgICBmb290ZXI6IHtcbiAqICAgICAgIGxpbmtzOiB7IC4uLiB9LFxuICogICAgICAgcmlnaHRzOiB7IGNvbXBhbnlOYW1lOiAnQWNtZScgfVxuICogICAgIH1cbiAqICAgfVwiXG4gKiA+PC92YWwtcGFnZS13cmFwcGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIFBhZ2Ugd3JhcHBlciBjb25maWd1cmF0aW9uXG4gKiBAb3V0cHV0IG9uSGVhZGVyQ2xpY2sgLSBFbWl0cyB3aGVuIGEgaGVhZGVyIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1wYWdlLXdyYXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSGVhZGVyQ29tcG9uZW50LFxuICAgIENvbXBhbnlGb290ZXJDb21wb25lbnQsXG4gICAgQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIElvblJlZnJlc2hlcixcbiAgICBJb25SZWZyZXNoZXJDb250ZW50LFxuICAgIFJvdXRlck91dGxldCxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25MaXN0LFxuICAgIElvbkl0ZW0sXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uSWNvbixcbiAgICBOZXR3b3JrQmFubmVyQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJpb24tcGFnZVwiIFtjbGFzcy5wdy1oYXMtbWVudV09XCJoYXNTaWRlTWVudSgpXCI+XG4gICAgICBAaWYgKGhhc1NpZGVNZW51KCkpIHtcbiAgICAgICAgPG5hdiBjbGFzcz1cInB3LXNpZGVuYXZcIiBhcmlhLWxhYmVsPVwiTWVuw7ogbGF0ZXJhbFwiPlxuICAgICAgICAgIDxpb24tbGlzdCBsaW5lcz1cIm5vbmVcIiBjbGFzcz1cInB3LW1lbnUtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtZW51SXRlbXMoKTsgdHJhY2sgaXRlbS5yb3V0ZSkge1xuICAgICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlXCJcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rQWN0aXZlPVwicHctbWVudS1hY3RpdmVcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7IGV4YWN0OiBpdGVtLmV4YWN0ID8/IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgIGxpbmVzPVwibm9uZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIml0ZW0uaWNvblwiIHNsb3Q9XCJzdGFydFwiIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgaXRlbS5sYWJlbCB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWxpc3Q+XG4gICAgICAgIDwvbmF2PlxuICAgICAgfVxuICAgICAgPGRpdiBjbGFzcz1cInB3LWNvbnRlbnRcIj5cbiAgICAgICAgPHZhbC1oZWFkZXIgW3Byb3BzXT1cImhlYWRlclByb3BzKClcIiAob25DbGljayk9XCJvbkhlYWRlckNsaWNrSGFuZGxlcigkZXZlbnQpXCIgLz5cbiAgICAgICAgPGlvbi1jb250ZW50XG4gICAgICAgICAgW2lkXT1cImNvbnRlbnRJZCgpXCJcbiAgICAgICAgICBbZnVsbHNjcmVlbl09XCJ0cnVlXCJcbiAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAnLS1iYWNrZ3JvdW5kJzogYmFja2dyb3VuZCgpLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPCEtLSBQdWxsLXRvLXJlZnJlc2ggZXN0w6FuZGFyIGRlbCBmYWN0b3J5LiBTZSByZW5kZXJpemEgc8OzbG8gY3VhbmRvIGxhXG4gICAgICAgICAgICAgICBww6FnaW5hIGFjdGl2YSByZWdpc3Ryw7MgdW4gaGFuZGxlciB2w61hIFBhZ2VSZWZyZXNoU2VydmljZS5cbiAgICAgICAgICAgICAgIGlvbi1yZWZyZXNoZXIgY29uIHNsb3Q9XCJmaXhlZFwiIERFQkUgc2VyIGhpam8gZGlyZWN0byBkZVxuICAgICAgICAgICAgICAgaW9uLWNvbnRlbnQg4oCUIHBvciBlc28gdmEgYXF1w60gY3J1ZG8sIG5vIGVudnVlbHRvIGVuIHZhbC1yZWZyZXNoZXIuIC0tPlxuICAgICAgICAgIEBpZiAocGFnZVJlZnJlc2guaGFzSGFuZGxlcigpKSB7XG4gICAgICAgICAgICA8aW9uLXJlZnJlc2hlciBzbG90PVwiZml4ZWRcIiAoaW9uUmVmcmVzaCk9XCJvblBhZ2VSZWZyZXNoKCRldmVudClcIj5cbiAgICAgICAgICAgICAgPGlvbi1yZWZyZXNoZXItY29udGVudFxuICAgICAgICAgICAgICAgIHB1bGxpbmdJY29uPVwiY2hldnJvbi1kb3duLWNpcmNsZS1vdXRsaW5lXCJcbiAgICAgICAgICAgICAgICByZWZyZXNoaW5nU3Bpbm5lcj1cImNpcmN1bGFyXCJcbiAgICAgICAgICAgICAgPjwvaW9uLXJlZnJlc2hlci1jb250ZW50PlxuICAgICAgICAgICAgPC9pb24tcmVmcmVzaGVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8dmFsLW5ldHdvcmstYmFubmVyIC8+XG4gICAgICAgICAgPHZhbC1jb250YWluZXIgW3Byb3BzXT1cInsgc2l6ZTogY29udGVudE1heFdpZHRoKCkgfVwiPlxuICAgICAgICAgICAgPG1haW4+XG4gICAgICAgICAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgICA8L3ZhbC1jb250YWluZXI+XG4gICAgICAgICAgQGlmIChwcm9wc0Zvb3RlcigpKSB7XG4gICAgICAgICAgICA8dmFsLWNvbXBhbnktZm9vdGVyIFtwcm9wc109XCJwcm9wc0Zvb3RlcigpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgLyogTGF5b3V0IGNvbiBzaWRlbWVudTogaW9uLXBhZ2UgZW4gcm93LCBzaWRlYmFyIGZpam8gKyBjb250ZW50IGFyZWEgZmxleGlibGUgKi9cbiAgICAuaW9uLXBhZ2UucHctaGFzLW1lbnUge1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICB9XG5cbiAgICAucHctc2lkZW5hdiB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHZhcigtLWlvbi1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvcik7XG4gICAgICB0cmFuc2l0aW9uOiB3aWR0aCAwLjI1cyBlYXNlO1xuICAgIH1cblxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAgICAgLnB3LXNpZGVuYXYge1xuICAgICAgICB3aWR0aDogMjIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogQ29udGVudCBhcmVhOiBmbGV4LWNvbHVtbiwgb2N1cGEgZWwgZXNwYWNpbyByZXN0YW50ZSAqL1xuICAgIC5wdy1jb250ZW50IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgZmxleDogMTtcbiAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG5cbiAgICBtYWluIHtcbiAgICAgIG1pbi1oZWlnaHQ6IDYwdmg7XG4gICAgICAvKiBSZXNlcnZhIGVzcGFjaW8gcGFyYSBlbCBib3R0b20tbmF2IGZsb2F0aW5nICsgc2FmZS1hcmVhIChpT1MgaG9tZSBpbmRpY2F0b3IpXG4gICAgICAgICArIGJyZWF0aGluZyByb29tICgxNnB4KS4gU2luIGVzdG8sIGVsIMO6bHRpbW8gZWxlbWVudG8gcXVlZGEgdGFwYWRvIHBvclxuICAgICAgICAgZWwgbmF2IGVuIG1vYmlsZS9QV0EuICovXG4gICAgICBwYWRkaW5nLWJvdHRvbTogY2FsYyh2YXIoLS12YWwtYm90dG9tLW5hdi1oZWlnaHQsIDBweCkgKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwgMHB4KSArIDE2cHgpO1xuICAgIH1cblxuICAgIC5wdy1tZW51LWxpc3Qge1xuICAgICAgcGFkZGluZy10b3A6IDEycHg7XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbSB7XG4gICAgICAtLWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAtLXBhZGRpbmctc3RhcnQ6IDEycHg7XG4gICAgICAtLXBhZGRpbmctZW5kOiAxMnB4O1xuICAgICAgbWFyZ2luOiAycHggOHB4O1xuICAgICAgZm9udC1zaXplOiAwLjkzNzVyZW07XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbS5wdy1tZW51LWFjdGl2ZSB7XG4gICAgICAtLWJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiLCAwLCAwLCAwKSwgMC4xKTtcbiAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgfVxuXG4gICAgLnB3LW1lbnUtbGlzdCBpb24taXRlbS5wdy1tZW51LWFjdGl2ZSBpb24taWNvbiB7XG4gICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVdyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBWaWV3V2lsbEVudGVyLCBWaWV3V2lsbExlYXZlLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgdGhlbWUgPSBpbmplY3QoVGhlbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJvdXRlclN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogQnVzIGRlbCBwdWxsLXRvLXJlZnJlc2gg4oCUIGxhIHDDoWdpbmEgYWN0aXZhIHJlZ2lzdHJhIHN1IGhhbmRsZXIgYXF1w60uICovXG4gIHByb3RlY3RlZCBwYWdlUmVmcmVzaCA9IGluamVjdChQYWdlUmVmcmVzaFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVyIGRlbCBnZXN0byBwdWxsLXRvLXJlZnJlc2ggKGBpb24tcmVmcmVzaGVyYCBpb25SZWZyZXNoKS4gRGVsZWdhIGVuXG4gICAqIGVsIGhhbmRsZXIgcXVlIHJlZ2lzdHLDsyBsYSBww6FnaW5hIGFjdGl2YSB5IGNpZXJyYSBlbCBzcGlubmVyIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgYXN5bmMgb25QYWdlUmVmcmVzaChldmVudDogRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5wYWdlUmVmcmVzaC5ydW4oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW9uUmVmcmVzaGVyRWxlbWVudCB8IG51bGwpPy5jb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdlIHdyYXBwZXIgY29uZmlndXJhdGlvbi5cbiAgICogU2lnbmFsLWJhc2VkIGlucHV0IGZvciBmdWxsIHJlYWN0aXZpdHkgd2l0aCBjb21wdXRlZCgpLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dDxQYWdlV3JhcHBlck1ldGFkYXRhPih7XG4gICAgc2Nyb2xsVG9Ub3BPbk5hdmlnYXRlOiB0cnVlLFxuICB9KTtcblxuICAvKipcbiAgICogRW1pdHMgd2hlbiBhIGhlYWRlciBhY3Rpb24gaXMgY2xpY2tlZC5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkhlYWRlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgaGVhZGVyIGNvbmZpZ3VyYXRpb24gKGNhY2hlZCB0byBhdm9pZCBpbmZpbml0ZSBjaGFuZ2UgZGV0ZWN0aW9uKS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEhlYWRlciA9IHtcbiAgICBib3JkZXJlZDogdHJ1ZSxcbiAgICB0cmFuc2x1Y2VudDogdHJ1ZSxcbiAgICB0b29sYmFyOiB7XG4gICAgICB3aXRoQmFjazogZmFsc2UsXG4gICAgICB3aXRoQWN0aW9uczogdHJ1ZSxcbiAgICAgIHRleHRDb2xvcjogJ2RhcmsnIGFzIGNvbnN0LFxuICAgICAgd2l0aE1lbnU6IHRydWUsXG4gICAgICB0aXRsZTogJycsXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0b2tlbjogJ2hlYWRlci1sb2dvJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgcG9zaXRpb246ICdsZWZ0JyBhcyBjb25zdCxcbiAgICAgICAgICB0eXBlOiAnSU1BR0UnIGFzIGNvbnN0LFxuICAgICAgICAgIGltYWdlOiB7XG4gICAgICAgICAgICB3aWR0aDogMTAsXG4gICAgICAgICAgICBzcmM6ICctLW1haW4tbG9nbycsXG4gICAgICAgICAgICBhbHQ6ICdoZWFkZXIgbG9nbycsXG4gICAgICAgICAgICBtb2RlOiAnYm94JyBhcyBjb25zdCxcbiAgICAgICAgICAgIHNoYWRlZDogZmFsc2UsXG4gICAgICAgICAgICBib3JkZXJlZDogZmFsc2UsXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnIGFzIGNvbnN0LFxuICAgICAgICAgICAgbGltaXRlZDogZmFsc2UsXG4gICAgICAgICAgICBmbGV4OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gIH07XG5cbiAgLy8gQ29tcHV0ZWQgaGVscGVycyBmb3IgdGVtcGxhdGUgYmluZGluZ3NcbiAgaGVhZGVyUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmhlYWRlciB8fCB0aGlzLmRlZmF1bHRIZWFkZXIpO1xuICBjb250ZW50SWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnByb3BzKCk/LmNvbnRlbnRJZCB8fCAncGFnZS13cmFwcGVyJyk7XG4gIHByb3BzRm9vdGVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5mb290ZXIpO1xuICBjb250ZW50TWF4V2lkdGggPSBjb21wdXRlZDxDb250YWluZXJTaXplPigoKSA9PiB0aGlzLnByb3BzKCk/LmNvbnRlbnRNYXhXaWR0aCA/PyAnZmx1aWQnKTtcbiAgbWVudUl0ZW1zID0gY29tcHV0ZWQ8U2lkZU5hdkl0ZW1bXT4oKCkgPT4gdGhpcy5wcm9wcygpPy5tZW51SXRlbXMgPz8gW10pO1xuICBoYXNTaWRlTWVudSA9IGNvbXB1dGVkKCgpID0+IHRoaXMubWVudUl0ZW1zKCkubGVuZ3RoID4gMCk7XG4gIGJhY2tncm91bmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMudGhlbWUuSXNEYXJrKSB7XG4gICAgICByZXR1cm4gJ3ZhcigtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yKSc7XG4gICAgfVxuICAgIGNvbnN0IGJnID0gdGhpcy5wcm9wcygpPy5iYWNrZ3JvdW5kO1xuICAgIGlmICghYmcpIHtcbiAgICAgIHJldHVybiAndmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IpJztcbiAgICB9XG4gICAgcmV0dXJuIHJlc29sdmVDb2xvcihiZyk7XG4gIH0pO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzKCk/LnNjcm9sbFRvVG9wT25OYXZpZ2F0ZSAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgIC5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlclN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpb25WaWV3V2lsbExlYXZlKCk6IHZvaWQge1xuICAgIC8vIE9wdGlvbmFsOiBjYW4gYWRkIGxvZ2ljIG9uIHZpZXcgbGVhdmVcbiAgfVxuXG4gIGlvblZpZXdXaWxsRW50ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNjcm9sbHMgdGhlIGNvbnRlbnQgdG8gdGhlIHRvcC5cbiAgICovXG4gIHByaXZhdGUgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLnByb3BzKCk/LmNvbnRlbnRJZCB8fCAncGFnZS13cmFwcGVyJztcbiAgICBjb25zdCBpb25Db250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWR9YCkgYXMgYW55O1xuICAgIGlmIChpb25Db250ZW50ICYmIGlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3ApIHtcbiAgICAgIGlvbkNvbnRlbnQuc2Nyb2xsVG9Ub3AoMzAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiAwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaGVhZGVyIGFjdGlvbiBjbGlja3MuXG4gICAqL1xuICBvbkhlYWRlckNsaWNrSGFuZGxlcih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vbkhlYWRlckNsaWNrLmVtaXQodG9rZW4pO1xuXG4gICAgY29uc3QgaG9tZVJvdXRlID0gdGhpcy5wcm9wcygpPy5ob21lUm91dGU7XG4gICAgaWYgKHRva2VuID09PSAnaGVhZGVyLWxvZ28nICYmIGhvbWVSb3V0ZSkge1xuICAgICAgdGhpcy5uYXYubmF2aWdhdGVCeVVybChob21lUm91dGUpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -63,10 +63,15 @@ import * as i1 from "./auth.service";
63
63
  * ```
64
64
  */
65
65
  export class OrgSwitchService {
66
+ /** Notify subscribers that the active org's data was updated. */
67
+ notifyOrgDataUpdated(org) {
68
+ this._orgDataUpdated.next(org);
69
+ }
66
70
  constructor(auth) {
67
71
  this.auth = auth;
68
72
  this._switching = signal(false);
69
73
  this._orgChanged = new Subject();
74
+ this._orgDataUpdated = new Subject();
70
75
  /**
71
76
  * `true` while a switch is in flight. UI should disable interactions
72
77
  * with org-scoped data and show a loading indicator.
@@ -80,6 +85,11 @@ export class OrgSwitchService {
80
85
  * see the updated Firebase user / activeOrg claim.
81
86
  */
82
87
  this.orgChanged$ = this._orgChanged.asObservable();
88
+ /**
89
+ * Fires when org data (name, logoUrl, etc.) changes without a full org switch.
90
+ * Subscribe in the app shell to keep the header org avatar up to date.
91
+ */
92
+ this.orgDataUpdated$ = this._orgDataUpdated.asObservable();
83
93
  }
84
94
  /**
85
95
  * Switch the user's active organization.
@@ -134,4 +144,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
134
144
  type: Injectable,
135
145
  args: [{ providedIn: 'root' }]
136
146
  }], ctorParameters: () => [{ type: i1.AuthService }] });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXN3aXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29yZy1zd2l0Y2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBOEIzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyREc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBbUIzQixZQUFvQixJQUFpQjtRQUFqQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBbEJwQixlQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFFOUQ7OztXQUdHO1FBQ00sY0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEQ7Ozs7OztXQU1HO1FBQ00sZ0JBQVcsR0FBZ0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUU1QyxDQUFDO0lBRXpDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYSxFQUFFLFVBQTRCLEVBQUU7UUFDMUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLCtCQUErQjtZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFdEQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLHFFQUFxRTtRQUNyRSxtQ0FBbUM7UUFDbkMsT0FBTyxDQUNKLElBQTRELEVBQUUsV0FBVztZQUN6RSxJQUE0RCxFQUFFLFNBQVM7WUFDeEUsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDOytHQXZFVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGFjdGl2ZSBvcmdhbml6YXRpb24gY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmdDaGFuZ2VkRXZlbnQge1xuICAvKiogT3JnIHRoZSB1c2VyIHdhcyBvbiBiZWZvcmUgdGhlIHN3aXRjaC4gTWF5IGJlIGVtcHR5IG9uIGZpcnN0IHNpZ24taW4uICovXG4gIHByZXZpb3VzT3JnOiBzdHJpbmc7XG4gIC8qKiBPcmcgdGhlIHVzZXIganVzdCBzd2l0Y2hlZCB0by4gKi9cbiAgbmV3T3JnOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYE9yZ1N3aXRjaFNlcnZpY2Uuc3dpdGNoVG9gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE9yZ09wdGlvbnMge1xuICAvKipcbiAgICogSWYgYHRydWVgLCBhZnRlciB0aGUgc3dpdGNoIHN1Y2NlZWRzIHRoZSBwYWdlIGlzIGZ1bGx5IHJlbG9hZGVkIHZpYVxuICAgKiBgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpYC4gVXNlZnVsIGZvciBhcHBzIHdpdGggc2lnbmlmaWNhbnQgaW4tbWVtb3J5XG4gICAqIHN0YXRlIHRpZWQgdG8gdGhlIHByZXZpb3VzIG9yZyB0aGF0J3MgaGFyZCB0byBpbnZhbGlkYXRlIHBpZWNlIGJ5IHBpZWNlLlxuICAgKlxuICAgKiBUcmFkZS1vZmY6IHJlbG9hZCBsb3NlcyBhbGwgaW4tbWVtb3J5IHN0YXRlIChmb3Jtcywgc2Nyb2xsIHBvc2l0aW9uKS5cbiAgICogRGVmYXVsdDogYGZhbHNlYCDigJQgcmVsaWVzIG9uIGBvcmdDaGFuZ2VkJGAgYW5kIGBhdXRoLnVzZXIoKWAgc2lnbmFsXG4gICAqIHByb3BhZ2F0aW9uIGZvciBjb21wb25lbnRzIHRvIHJlYWN0LlxuICAgKi9cbiAgcmVsb2FkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBPcmdTd2l0Y2hTZXJ2aWNlIOKAlCBvcmNoZXN0cmF0ZXMgYWN0aXZlIG9yZ2FuaXphdGlvbiBjaGFuZ2VzIGFjcm9zcyB0aGUgYXBwLlxuICpcbiAqIEJ1aWx0IG9uIHRvcCBvZiBgQXV0aFNlcnZpY2Uuc3dpdGNoT3JnYCwgd2hpY2ggYWxyZWFkeTpcbiAqIC0gSGl0cyBgUE9TVCAvdjIvYXV0aC9zd2l0Y2gtb3JnYCBhbmQgcmVjZWl2ZXMgYSBuZXcgRmlyZWJhc2UgY3VzdG9tIHRva2VuLlxuICogLSBSZS1hdXRoZW50aWNhdGVzIEZpcmViYXNlIEF1dGggd2l0aCB0aGUgbmV3IHRva2VuIChSQkFDIGNsYWltcyB1cGRhdGUpLlxuICogLSBCcm9hZGNhc3RzIGBPUkdfU1dJVENIYCB0byBvdGhlciB0YWJzIHZpYSBgQXV0aFN5bmNTZXJ2aWNlYCAobXVsdGktdGFiIHN5bmMpLlxuICpcbiAqIFdoYXQgdGhpcyBzZXJ2aWNlIGFkZHMgb24gdG9wOlxuICogLSBBIGBzd2l0Y2hpbmdgIHNpZ25hbCBzbyB0aGUgVUkgY2FuIHNob3cgYSBsb2FkaW5nIGluZGljYXRvciAoMS0ycyBzd2l0Y2gpLlxuICogLSBBbiBgb3JnQ2hhbmdlZCRgIE9ic2VydmFibGUgdGhhdCBjb21wb25lbnRzIHN1YnNjcmliZSB0byBpbiBvcmRlciB0b1xuICogICBpbnZhbGlkYXRlIHRoZWlyIG9yZy1zY29wZWQgY2FjaGVzIChlLmcuIGRyb3Agb2xkIHF1ZXJ5IHJlc3VsdHMsIHJlc2V0XG4gKiAgIHBhZ2Ugc3RhdGUpIHdpdGhvdXQgYSBmdWxsIHBhZ2UgcmVsb2FkLlxuICogLSBPcHRpb25hbCBgcmVsb2FkOiB0cnVlYCBmb3IgYXBwcyB3aGVyZSBpbnZhbGlkYXRpbmcgaW4tbWVtb3J5IHN0YXRlIHBpZWNlXG4gKiAgIGJ5IHBpZWNlIGlzIGltcHJhY3RpY2FsLlxuICpcbiAqICoqV2hhdCB0aGlzIHNlcnZpY2UgZG9lcyBOT1QgZG8gYXV0b21hdGljYWxseToqKlxuICpcbiAqIDEuICoqVGVhcmRvd24gRmlyZXN0b3JlIGxpc3RlbmVycy4qKiBMaXN0ZW5lcnMgYXJlIG93bmVkIGJ5IHRoZWlyIHN1YnNjcmliaW5nXG4gKiAgICBjb21wb25lbnRzICh0eXBpY2FsbHkgdmlhIGB0YWtlVW50aWxEZXN0cm95ZWRgIG9yIGFzeW5jIHBpcGUpLiBXaGVuIHRoZVxuICogICAgY29tcG9uZW50IHJlLXJlbmRlcnMgb3IgdW5zdWJzY3JpYmVzLCB0aGUgbGlzdGVuZXIgZGlzcG9zZXMuIElmIGFcbiAqICAgIGNvbXBvbmVudCBkb2VzIE5PVCB1bnN1YnNjcmliZSBvbiBvcmcgY2hhbmdlLCBpdHMgbGlzdGVuZXIgd2lsbCBrZWVwXG4gKiAgICBwb2ludGluZyBhdCB0aGUgcHJldmlvdXMgb3JnJ3MgcGF0aCBhbmQgbWF5IHN0YXJ0IGZhaWxpbmcgcnVsZXMuIFRoZSBmaXhcbiAqICAgIGlzIGNvbXBvbmVudC1sZXZlbDogc3Vic2NyaWJlIHRvIGBvcmdDaGFuZ2VkJGAgYW5kIHJlc2V0IHN0YXRlLCBvciB1c2VcbiAqICAgIHRoZSBgcmVsb2FkOiB0cnVlYCBvcHRpb24uXG4gKlxuICogMi4gKipSZS1pbnN0YW50aWF0ZSByb3V0ZWQgY29tcG9uZW50cy4qKiBBbmd1bGFyIGtlZXBzIG1vdW50ZWQgY29tcG9uZW50c1xuICogICAgYWxpdmUgYWNyb3NzIG5hdmlnYXRpb25zLiBJZiB5b3UgbmVlZCBmcmVzaCBzdGF0ZSwgZWl0aGVyIHN1YnNjcmliZSB0b1xuICogICAgYG9yZ0NoYW5nZWQkYCBpbiB0aGUgY29tcG9uZW50LCBvciB1c2UgYHJlbG9hZDogdHJ1ZWAuXG4gKlxuICogQGV4YW1wbGUgQmFzaWMgc3dpdGNoIHdpdGggbG9hZGluZyBzdGF0ZVxuICogYGBgdHlwZXNjcmlwdFxuICogcHJpdmF0ZSBvcmdTd2l0Y2ggPSBpbmplY3QoT3JnU3dpdGNoU2VydmljZSk7XG4gKlxuICogYXN5bmMgb25Td2l0Y2hPcmcob3JnSWQ6IHN0cmluZykge1xuICogICBhd2FpdCB0aGlzLm9yZ1N3aXRjaC5zd2l0Y2hUbyhvcmdJZCk7XG4gKiAgIC8vIENvbXBvbmVudHMgc3Vic2NyaWJlZCB0byBvcmdDaGFuZ2VkJCBoYXZlIGFscmVhZHkgcmVzZXQgdGhlaXIgc3RhdGUuXG4gKiB9XG4gKlxuICogLy8gSW4gdGVtcGxhdGU6XG4gKiBAaWYgKG9yZ1N3aXRjaC5zd2l0Y2hpbmcoKSkgeyA8dmFsLWxvYWRpbmcgLz4gfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQ29tcG9uZW50IHJlYWN0aW5nIHRvIG9yZyBjaGFuZ2VcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByaXZhdGUgb3JnU3dpdGNoID0gaW5qZWN0KE9yZ1N3aXRjaFNlcnZpY2UpO1xuICpcbiAqIGNvbnN0cnVjdG9yKCkge1xuICogICB0aGlzLm9yZ1N3aXRjaC5vcmdDaGFuZ2VkJFxuICogICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICogICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXNldFN0YXRlKCkpO1xuICogfVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQnJ1dGFsIHJlbG9hZCBtb2RlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBhd2FpdCB0aGlzLm9yZ1N3aXRjaC5zd2l0Y2hUbyhvcmdJZCwgeyByZWxvYWQ6IHRydWUgfSk7XG4gKiAvLyB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkg4oCUIGNsZWFuIHNsYXRlLCBsb3NlcyBzY3JvbGwgcG9zaXRpb25cbiAqIGBgYFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE9yZ1N3aXRjaFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zd2l0Y2hpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcmdDaGFuZ2VkID0gbmV3IFN1YmplY3Q8T3JnQ2hhbmdlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgd2hpbGUgYSBzd2l0Y2ggaXMgaW4gZmxpZ2h0LiBVSSBzaG91bGQgZGlzYWJsZSBpbnRlcmFjdGlvbnNcbiAgICogd2l0aCBvcmctc2NvcGVkIGRhdGEgYW5kIHNob3cgYSBsb2FkaW5nIGluZGljYXRvci5cbiAgICovXG4gIHJlYWRvbmx5IHN3aXRjaGluZyA9IHRoaXMuX3N3aXRjaGluZy5hc1JlYWRvbmx5KCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIGFmdGVyIGEgc3VjY2Vzc2Z1bCBzd2l0Y2gsIHdpdGggdGhlIHByZXZpb3VzIGFuZCBuZXcgb3JnIGlkcy5cbiAgICogQ29tcG9uZW50cyBzdWJzY3JpYmUgdG8gaW52YWxpZGF0ZSBjYWNoZXMgLyByZXNldCBzdGF0ZS5cbiAgICpcbiAgICogRmlyZXMgQUZURVIgdGhlIEZpcmViYXNlIHJlLWF1dGggY29tcGxldGVzIOKAlCBsaXN0ZW5lcnMgYXR0YWNoZWQgaGVyZVxuICAgKiBzZWUgdGhlIHVwZGF0ZWQgRmlyZWJhc2UgdXNlciAvIGFjdGl2ZU9yZyBjbGFpbS5cbiAgICovXG4gIHJlYWRvbmx5IG9yZ0NoYW5nZWQkOiBPYnNlcnZhYmxlPE9yZ0NoYW5nZWRFdmVudD4gPSB0aGlzLl9vcmdDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFN3aXRjaCB0aGUgdXNlcidzIGFjdGl2ZSBvcmdhbml6YXRpb24uXG4gICAqXG4gICAqIFJlLWVudHJhbnQgc2FmZTogd2hpbGUgYSBzd2l0Y2ggaXMgaW4gZmxpZ2h0LCBhZGRpdGlvbmFsIGNhbGxzIGFyZVxuICAgKiByZWplY3RlZCBzaWxlbnRseSAocmV0dXJucyBpbW1lZGlhdGVseSkuIEluc3BlY3QgYHN3aXRjaGluZygpYCB0byBnYXRlIFVJLlxuICAgKlxuICAgKiBAcGFyYW0gb3JnSWQgVGFyZ2V0IG9yZ2FuaXphdGlvbiBpZC4gTXVzdCBiZSBvbmUgdGhlIHVzZXIgaGFzIGEgcm9sZSBpblxuICAgKiAgICAgICAgICAgICAg4oCUIGJhY2tlbmQgcmVqZWN0cyBvdGhlcndpc2Ugd2l0aCBgUEVSTUlTU0lPTl9ERU5JRURgLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBTZWUgYFN3aXRjaE9yZ09wdGlvbnNgLlxuICAgKlxuICAgKiBAdGhyb3dzIFRoZSBlcnJvciBmcm9tIGBhdXRoLnN3aXRjaE9yZ2AgaWYgdGhlIGJhY2tlbmQgY2FsbCBmYWlscy5cbiAgICogICAgICAgICBgc3dpdGNoaW5nYCByZXR1cm5zIHRvIGBmYWxzZWAgYmVmb3JlIHRoZSBlcnJvciBwcm9wYWdhdGVzLlxuICAgKi9cbiAgYXN5bmMgc3dpdGNoVG8ob3JnSWQ6IHN0cmluZywgb3B0aW9uczogU3dpdGNoT3JnT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N3aXRjaGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNPcmcgPSB0aGlzLmN1cnJlbnRBY3RpdmVPcmcoKTtcbiAgICBpZiAocHJldmlvdXNPcmcgPT09IG9yZ0lkKSB7XG4gICAgICAvLyBOby1vcCDigJQgYWxyZWFkeSBvbiB0aGlzIG9yZy5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zd2l0Y2hpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmF1dGguc3dpdGNoT3JnKG9yZ0lkKSk7XG4gICAgICB0aGlzLl9vcmdDaGFuZ2VkLm5leHQoeyBwcmV2aW91c09yZywgbmV3T3JnOiBvcmdJZCB9KTtcblxuICAgICAgaWYgKG9wdGlvbnMucmVsb2FkICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fc3dpdGNoaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWQgdGhlIGN1cnJlbnQgYGFjdGl2ZU9yZ2AgZnJvbSB0aGUgYXV0aCB1c2VyIHNpZ25hbC5cbiAgICogRmFsbHMgYmFjayB0byBlbXB0eSBzdHJpbmcgaWYgdGhlIHVzZXIgaXNuJ3QgbG9hZGVkIHlldC5cbiAgICovXG4gIHByaXZhdGUgY3VycmVudEFjdGl2ZU9yZygpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgIC8vIEF1dGhVc2VyIG1heSBleHBvc2UgYWN0aXZlT3JnSWQgdW5kZXIgZGlmZmVyZW50IG5hbWVzIGRlcGVuZGluZyBvblxuICAgIC8vIGJhY2tlbmQgdmVyc2lvbiDigJQga2VlcCB0b2xlcmFudC5cbiAgICByZXR1cm4gKFxuICAgICAgKHVzZXIgYXMgeyBhY3RpdmVPcmdJZD86IHN0cmluZzsgYWN0aXZlT3JnPzogc3RyaW5nIH0gfCBudWxsKT8uYWN0aXZlT3JnSWQgPz9cbiAgICAgICh1c2VyIGFzIHsgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7IGFjdGl2ZU9yZz86IHN0cmluZyB9IHwgbnVsbCk/LmFjdGl2ZU9yZyA/P1xuICAgICAgJydcbiAgICApO1xuICB9XG59XG4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLXN3aXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29yZy1zd2l0Y2guc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBK0IzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyREc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBMEIzQixpRUFBaUU7SUFDakUsb0JBQW9CLENBQUMsR0FBaUI7UUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFlBQW9CLElBQWlCO1FBQWpCLFNBQUksR0FBSixJQUFJLENBQWE7UUE5QnBCLGVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBbUIsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLElBQUksT0FBTyxFQUFnQixDQUFDO1FBRS9EOzs7V0FHRztRQUNNLGNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxEOzs7Ozs7V0FNRztRQUNNLGdCQUFXLEdBQWdDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEY7OztXQUdHO1FBQ00sb0JBQWUsR0FBNkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQU9qRCxDQUFDO0lBRXpDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBYSxFQUFFLFVBQTRCLEVBQUU7UUFDMUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztZQUN0QixPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVDLElBQUksV0FBVyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQzFCLCtCQUErQjtZQUMvQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFFdEQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUNwRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLHFFQUFxRTtRQUNyRSxtQ0FBbUM7UUFDbkMsT0FBTyxDQUNKLElBQTRELEVBQUUsV0FBVztZQUN6RSxJQUE0RCxFQUFFLFNBQVM7WUFDeEUsRUFBRSxDQUNILENBQUM7SUFDSixDQUFDOytHQW5GVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQURILE1BQU07OzRGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ2FuaXphdGlvbiB9IGZyb20gJy4uL29yZy90eXBlcyc7XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhY3RpdmUgb3JnYW5pemF0aW9uIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnQ2hhbmdlZEV2ZW50IHtcbiAgLyoqIE9yZyB0aGUgdXNlciB3YXMgb24gYmVmb3JlIHRoZSBzd2l0Y2guIE1heSBiZSBlbXB0eSBvbiBmaXJzdCBzaWduLWluLiAqL1xuICBwcmV2aW91c09yZzogc3RyaW5nO1xuICAvKiogT3JnIHRoZSB1c2VyIGp1c3Qgc3dpdGNoZWQgdG8uICovXG4gIG5ld09yZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBPcmdTd2l0Y2hTZXJ2aWNlLnN3aXRjaFRvYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgYWZ0ZXIgdGhlIHN3aXRjaCBzdWNjZWVkcyB0aGUgcGFnZSBpcyBmdWxseSByZWxvYWRlZCB2aWFcbiAgICogYHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKWAuIFVzZWZ1bCBmb3IgYXBwcyB3aXRoIHNpZ25pZmljYW50IGluLW1lbW9yeVxuICAgKiBzdGF0ZSB0aWVkIHRvIHRoZSBwcmV2aW91cyBvcmcgdGhhdCdzIGhhcmQgdG8gaW52YWxpZGF0ZSBwaWVjZSBieSBwaWVjZS5cbiAgICpcbiAgICogVHJhZGUtb2ZmOiByZWxvYWQgbG9zZXMgYWxsIGluLW1lbW9yeSBzdGF0ZSAoZm9ybXMsIHNjcm9sbCBwb3NpdGlvbikuXG4gICAqIERlZmF1bHQ6IGBmYWxzZWAg4oCUIHJlbGllcyBvbiBgb3JnQ2hhbmdlZCRgIGFuZCBgYXV0aC51c2VyKClgIHNpZ25hbFxuICAgKiBwcm9wYWdhdGlvbiBmb3IgY29tcG9uZW50cyB0byByZWFjdC5cbiAgICovXG4gIHJlbG9hZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3JnU3dpdGNoU2VydmljZSDigJQgb3JjaGVzdHJhdGVzIGFjdGl2ZSBvcmdhbml6YXRpb24gY2hhbmdlcyBhY3Jvc3MgdGhlIGFwcC5cbiAqXG4gKiBCdWlsdCBvbiB0b3Agb2YgYEF1dGhTZXJ2aWNlLnN3aXRjaE9yZ2AsIHdoaWNoIGFscmVhZHk6XG4gKiAtIEhpdHMgYFBPU1QgL3YyL2F1dGgvc3dpdGNoLW9yZ2AgYW5kIHJlY2VpdmVzIGEgbmV3IEZpcmViYXNlIGN1c3RvbSB0b2tlbi5cbiAqIC0gUmUtYXV0aGVudGljYXRlcyBGaXJlYmFzZSBBdXRoIHdpdGggdGhlIG5ldyB0b2tlbiAoUkJBQyBjbGFpbXMgdXBkYXRlKS5cbiAqIC0gQnJvYWRjYXN0cyBgT1JHX1NXSVRDSGAgdG8gb3RoZXIgdGFicyB2aWEgYEF1dGhTeW5jU2VydmljZWAgKG11bHRpLXRhYiBzeW5jKS5cbiAqXG4gKiBXaGF0IHRoaXMgc2VydmljZSBhZGRzIG9uIHRvcDpcbiAqIC0gQSBgc3dpdGNoaW5nYCBzaWduYWwgc28gdGhlIFVJIGNhbiBzaG93IGEgbG9hZGluZyBpbmRpY2F0b3IgKDEtMnMgc3dpdGNoKS5cbiAqIC0gQW4gYG9yZ0NoYW5nZWQkYCBPYnNlcnZhYmxlIHRoYXQgY29tcG9uZW50cyBzdWJzY3JpYmUgdG8gaW4gb3JkZXIgdG9cbiAqICAgaW52YWxpZGF0ZSB0aGVpciBvcmctc2NvcGVkIGNhY2hlcyAoZS5nLiBkcm9wIG9sZCBxdWVyeSByZXN1bHRzLCByZXNldFxuICogICBwYWdlIHN0YXRlKSB3aXRob3V0IGEgZnVsbCBwYWdlIHJlbG9hZC5cbiAqIC0gT3B0aW9uYWwgYHJlbG9hZDogdHJ1ZWAgZm9yIGFwcHMgd2hlcmUgaW52YWxpZGF0aW5nIGluLW1lbW9yeSBzdGF0ZSBwaWVjZVxuICogICBieSBwaWVjZSBpcyBpbXByYWN0aWNhbC5cbiAqXG4gKiAqKldoYXQgdGhpcyBzZXJ2aWNlIGRvZXMgTk9UIGRvIGF1dG9tYXRpY2FsbHk6KipcbiAqXG4gKiAxLiAqKlRlYXJkb3duIEZpcmVzdG9yZSBsaXN0ZW5lcnMuKiogTGlzdGVuZXJzIGFyZSBvd25lZCBieSB0aGVpciBzdWJzY3JpYmluZ1xuICogICAgY29tcG9uZW50cyAodHlwaWNhbGx5IHZpYSBgdGFrZVVudGlsRGVzdHJveWVkYCBvciBhc3luYyBwaXBlKS4gV2hlbiB0aGVcbiAqICAgIGNvbXBvbmVudCByZS1yZW5kZXJzIG9yIHVuc3Vic2NyaWJlcywgdGhlIGxpc3RlbmVyIGRpc3Bvc2VzLiBJZiBhXG4gKiAgICBjb21wb25lbnQgZG9lcyBOT1QgdW5zdWJzY3JpYmUgb24gb3JnIGNoYW5nZSwgaXRzIGxpc3RlbmVyIHdpbGwga2VlcFxuICogICAgcG9pbnRpbmcgYXQgdGhlIHByZXZpb3VzIG9yZydzIHBhdGggYW5kIG1heSBzdGFydCBmYWlsaW5nIHJ1bGVzLiBUaGUgZml4XG4gKiAgICBpcyBjb21wb25lbnQtbGV2ZWw6IHN1YnNjcmliZSB0byBgb3JnQ2hhbmdlZCRgIGFuZCByZXNldCBzdGF0ZSwgb3IgdXNlXG4gKiAgICB0aGUgYHJlbG9hZDogdHJ1ZWAgb3B0aW9uLlxuICpcbiAqIDIuICoqUmUtaW5zdGFudGlhdGUgcm91dGVkIGNvbXBvbmVudHMuKiogQW5ndWxhciBrZWVwcyBtb3VudGVkIGNvbXBvbmVudHNcbiAqICAgIGFsaXZlIGFjcm9zcyBuYXZpZ2F0aW9ucy4gSWYgeW91IG5lZWQgZnJlc2ggc3RhdGUsIGVpdGhlciBzdWJzY3JpYmUgdG9cbiAqICAgIGBvcmdDaGFuZ2VkJGAgaW4gdGhlIGNvbXBvbmVudCwgb3IgdXNlIGByZWxvYWQ6IHRydWVgLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHN3aXRjaCB3aXRoIGxvYWRpbmcgc3RhdGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHByaXZhdGUgb3JnU3dpdGNoID0gaW5qZWN0KE9yZ1N3aXRjaFNlcnZpY2UpO1xuICpcbiAqIGFzeW5jIG9uU3dpdGNoT3JnKG9yZ0lkOiBzdHJpbmcpIHtcbiAqICAgYXdhaXQgdGhpcy5vcmdTd2l0Y2guc3dpdGNoVG8ob3JnSWQpO1xuICogICAvLyBDb21wb25lbnRzIHN1YnNjcmliZWQgdG8gb3JnQ2hhbmdlZCQgaGF2ZSBhbHJlYWR5IHJlc2V0IHRoZWlyIHN0YXRlLlxuICogfVxuICpcbiAqIC8vIEluIHRlbXBsYXRlOlxuICogQGlmIChvcmdTd2l0Y2guc3dpdGNoaW5nKCkpIHsgPHZhbC1sb2FkaW5nIC8+IH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIENvbXBvbmVudCByZWFjdGluZyB0byBvcmcgY2hhbmdlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBwcml2YXRlIG9yZ1N3aXRjaCA9IGluamVjdChPcmdTd2l0Y2hTZXJ2aWNlKTtcbiAqXG4gKiBjb25zdHJ1Y3RvcigpIHtcbiAqICAgdGhpcy5vcmdTd2l0Y2gub3JnQ2hhbmdlZCRcbiAqICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSlcbiAqICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXRTdGF0ZSgpKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIEJydXRhbCByZWxvYWQgbW9kZVxuICogYGBgdHlwZXNjcmlwdFxuICogYXdhaXQgdGhpcy5vcmdTd2l0Y2guc3dpdGNoVG8ob3JnSWQsIHsgcmVsb2FkOiB0cnVlIH0pO1xuICogLy8gd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpIOKAlCBjbGVhbiBzbGF0ZSwgbG9zZXMgc2Nyb2xsIHBvc2l0aW9uXG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBPcmdTd2l0Y2hTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3dpdGNoaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3JnQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PE9yZ0NoYW5nZWRFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3JnRGF0YVVwZGF0ZWQgPSBuZXcgU3ViamVjdDxPcmdhbml6YXRpb24+KCk7XG5cbiAgLyoqXG4gICAqIGB0cnVlYCB3aGlsZSBhIHN3aXRjaCBpcyBpbiBmbGlnaHQuIFVJIHNob3VsZCBkaXNhYmxlIGludGVyYWN0aW9uc1xuICAgKiB3aXRoIG9yZy1zY29wZWQgZGF0YSBhbmQgc2hvdyBhIGxvYWRpbmcgaW5kaWNhdG9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc3dpdGNoaW5nID0gdGhpcy5fc3dpdGNoaW5nLmFzUmVhZG9ubHkoKTtcblxuICAvKipcbiAgICogRmlyZXMgYWZ0ZXIgYSBzdWNjZXNzZnVsIHN3aXRjaCwgd2l0aCB0aGUgcHJldmlvdXMgYW5kIG5ldyBvcmcgaWRzLlxuICAgKiBDb21wb25lbnRzIHN1YnNjcmliZSB0byBpbnZhbGlkYXRlIGNhY2hlcyAvIHJlc2V0IHN0YXRlLlxuICAgKlxuICAgKiBGaXJlcyBBRlRFUiB0aGUgRmlyZWJhc2UgcmUtYXV0aCBjb21wbGV0ZXMg4oCUIGxpc3RlbmVycyBhdHRhY2hlZCBoZXJlXG4gICAqIHNlZSB0aGUgdXBkYXRlZCBGaXJlYmFzZSB1c2VyIC8gYWN0aXZlT3JnIGNsYWltLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JnQ2hhbmdlZCQ6IE9ic2VydmFibGU8T3JnQ2hhbmdlZEV2ZW50PiA9IHRoaXMuX29yZ0NoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gb3JnIGRhdGEgKG5hbWUsIGxvZ29VcmwsIGV0Yy4pIGNoYW5nZXMgd2l0aG91dCBhIGZ1bGwgb3JnIHN3aXRjaC5cbiAgICogU3Vic2NyaWJlIGluIHRoZSBhcHAgc2hlbGwgdG8ga2VlcCB0aGUgaGVhZGVyIG9yZyBhdmF0YXIgdXAgdG8gZGF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IG9yZ0RhdGFVcGRhdGVkJDogT2JzZXJ2YWJsZTxPcmdhbml6YXRpb24+ID0gdGhpcy5fb3JnRGF0YVVwZGF0ZWQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqIE5vdGlmeSBzdWJzY3JpYmVycyB0aGF0IHRoZSBhY3RpdmUgb3JnJ3MgZGF0YSB3YXMgdXBkYXRlZC4gKi9cbiAgbm90aWZ5T3JnRGF0YVVwZGF0ZWQob3JnOiBPcmdhbml6YXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLl9vcmdEYXRhVXBkYXRlZC5uZXh0KG9yZyk7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBTd2l0Y2ggdGhlIHVzZXIncyBhY3RpdmUgb3JnYW5pemF0aW9uLlxuICAgKlxuICAgKiBSZS1lbnRyYW50IHNhZmU6IHdoaWxlIGEgc3dpdGNoIGlzIGluIGZsaWdodCwgYWRkaXRpb25hbCBjYWxscyBhcmVcbiAgICogcmVqZWN0ZWQgc2lsZW50bHkgKHJldHVybnMgaW1tZWRpYXRlbHkpLiBJbnNwZWN0IGBzd2l0Y2hpbmcoKWAgdG8gZ2F0ZSBVSS5cbiAgICpcbiAgICogQHBhcmFtIG9yZ0lkIFRhcmdldCBvcmdhbml6YXRpb24gaWQuIE11c3QgYmUgb25lIHRoZSB1c2VyIGhhcyBhIHJvbGUgaW5cbiAgICogICAgICAgICAgICAgIOKAlCBiYWNrZW5kIHJlamVjdHMgb3RoZXJ3aXNlIHdpdGggYFBFUk1JU1NJT05fREVOSUVEYC5cbiAgICogQHBhcmFtIG9wdGlvbnMgU2VlIGBTd2l0Y2hPcmdPcHRpb25zYC5cbiAgICpcbiAgICogQHRocm93cyBUaGUgZXJyb3IgZnJvbSBgYXV0aC5zd2l0Y2hPcmdgIGlmIHRoZSBiYWNrZW5kIGNhbGwgZmFpbHMuXG4gICAqICAgICAgICAgYHN3aXRjaGluZ2AgcmV0dXJucyB0byBgZmFsc2VgIGJlZm9yZSB0aGUgZXJyb3IgcHJvcGFnYXRlcy5cbiAgICovXG4gIGFzeW5jIHN3aXRjaFRvKG9yZ0lkOiBzdHJpbmcsIG9wdGlvbnM6IFN3aXRjaE9yZ09wdGlvbnMgPSB7fSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zd2l0Y2hpbmcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzT3JnID0gdGhpcy5jdXJyZW50QWN0aXZlT3JnKCk7XG4gICAgaWYgKHByZXZpb3VzT3JnID09PSBvcmdJZCkge1xuICAgICAgLy8gTm8tb3Ag4oCUIGFscmVhZHkgb24gdGhpcyBvcmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc3dpdGNoaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnN3aXRjaE9yZyhvcmdJZCkpO1xuICAgICAgdGhpcy5fb3JnQ2hhbmdlZC5uZXh0KHsgcHJldmlvdXNPcmcsIG5ld09yZzogb3JnSWQgfSk7XG5cbiAgICAgIGlmIChvcHRpb25zLnJlbG9hZCAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3N3aXRjaGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSBjdXJyZW50IGBhY3RpdmVPcmdgIGZyb20gdGhlIGF1dGggdXNlciBzaWduYWwuXG4gICAqIEZhbGxzIGJhY2sgdG8gZW1wdHkgc3RyaW5nIGlmIHRoZSB1c2VyIGlzbid0IGxvYWRlZCB5ZXQuXG4gICAqL1xuICBwcml2YXRlIGN1cnJlbnRBY3RpdmVPcmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoLnVzZXIoKTtcbiAgICAvLyBBdXRoVXNlciBtYXkgZXhwb3NlIGFjdGl2ZU9yZ0lkIHVuZGVyIGRpZmZlcmVudCBuYW1lcyBkZXBlbmRpbmcgb25cbiAgICAvLyBiYWNrZW5kIHZlcnNpb24g4oCUIGtlZXAgdG9sZXJhbnQuXG4gICAgcmV0dXJuIChcbiAgICAgICh1c2VyIGFzIHsgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7IGFjdGl2ZU9yZz86IHN0cmluZyB9IHwgbnVsbCk/LmFjdGl2ZU9yZ0lkID8/XG4gICAgICAodXNlciBhcyB7IGFjdGl2ZU9yZ0lkPzogc3RyaW5nOyBhY3RpdmVPcmc/OiBzdHJpbmcgfSB8IG51bGwpPy5hY3RpdmVPcmcgPz9cbiAgICAgICcnXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
2
+ /**
3
+ * Token de inyeccion para la configuracion del servicio de Reactions.
4
+ */
5
+ export const VALTECH_REACTIONS_CONFIG = new InjectionToken('ValtechReactionsConfig');
6
+ /**
7
+ * Provee el servicio de reactions a la aplicacion Angular.
8
+ *
9
+ * @param config - Configuracion de reactions
10
+ * @returns EnvironmentProviders para usar en bootstrapApplication
11
+ *
12
+ * @example
13
+ * bootstrapApplication(AppComponent, {
14
+ * providers: [
15
+ * provideValtechReactions({ apiUrl: environment.apiUrl, appId: 'my-app' }),
16
+ * ],
17
+ * });
18
+ */
19
+ export function provideValtechReactions(config) {
20
+ return makeEnvironmentProviders([{ provide: VALTECH_REACTIONS_CONFIG, useValue: config }]);
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9yZWFjdGlvbnMvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0IsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9GOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3hELHdCQUF3QixDQUN6QixDQUFDO0FBRUY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE1BQThCO0lBQ3BFLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgSW5qZWN0aW9uVG9rZW4sIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsdGVjaFJlYWN0aW9uc0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFRva2VuIGRlIGlueWVjY2lvbiBwYXJhIGxhIGNvbmZpZ3VyYWNpb24gZGVsIHNlcnZpY2lvIGRlIFJlYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IFZBTFRFQ0hfUkVBQ1RJT05TX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxWYWx0ZWNoUmVhY3Rpb25zQ29uZmlnPihcbiAgJ1ZhbHRlY2hSZWFjdGlvbnNDb25maWcnXG4pO1xuXG4vKipcbiAqIFByb3ZlZSBlbCBzZXJ2aWNpbyBkZSByZWFjdGlvbnMgYSBsYSBhcGxpY2FjaW9uIEFuZ3VsYXIuXG4gKlxuICogQHBhcmFtIGNvbmZpZyAtIENvbmZpZ3VyYWNpb24gZGUgcmVhY3Rpb25zXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudFByb3ZpZGVycyBwYXJhIHVzYXIgZW4gYm9vdHN0cmFwQXBwbGljYXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogYm9vdHN0cmFwQXBwbGljYXRpb24oQXBwQ29tcG9uZW50LCB7XG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHByb3ZpZGVWYWx0ZWNoUmVhY3Rpb25zKHsgYXBpVXJsOiBlbnZpcm9ubWVudC5hcGlVcmwsIGFwcElkOiAnbXktYXBwJyB9KSxcbiAqICAgXSxcbiAqIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVZhbHRlY2hSZWFjdGlvbnMoY29uZmlnOiBWYWx0ZWNoUmVhY3Rpb25zQ29uZmlnKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKFt7IHByb3ZpZGU6IFZBTFRFQ0hfUkVBQ1RJT05TX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XSk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export { VALTECH_REACTIONS_CONFIG, provideValtechReactions } from './config';
2
+ export { ReactionsService } from './reactions.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JlYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBWQUxURUNIX1JFQUNUSU9OU19DT05GSUcsIHByb3ZpZGVWYWx0ZWNoUmVhY3Rpb25zIH0gZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0IHsgUmVhY3Rpb25zU2VydmljZSB9IGZyb20gJy4vcmVhY3Rpb25zLnNlcnZpY2UnO1xuZXhwb3J0IHR5cGUge1xuICBWYWx0ZWNoUmVhY3Rpb25zQ29uZmlnLFxuICBSZWFjdGlvblNldENvbnRleHQsXG4gIFJlYWN0aW9uRGVmaW5pdGlvbixcbiAgUmVhY3Rpb25TZXQsXG4gIFJlYWN0aW9uQ291bnRzLFxuICBSZWFjdFJlcXVlc3QsXG4gIFJlYWN0UmVzcG9uc2UsXG4gIEdldENvdW50c1Jlc3BvbnNlLFxuICBHZXRNeVJlYWN0aW9uc1Jlc3BvbnNlLFxufSBmcm9tICcuL3R5cGVzJztcbiJdfQ==
@@ -0,0 +1,89 @@
1
+ import { Injectable, inject, isDevMode } from '@angular/core';
2
+ import { HttpClient, HttpParams } from '@angular/common/http';
3
+ import { EMPTY, map } from 'rxjs';
4
+ import { VALTECH_REACTIONS_CONFIG } from './config';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Servicio para gestionar reacciones emoji configurables por contexto.
8
+ *
9
+ * Requiere provideValtechReactions() en el bootstrap de la app.
10
+ *
11
+ * @example
12
+ * const svc = inject(ReactionsService);
13
+ * svc.react({ entityRef: { entityType: 'post', entityId: '1' }, token: 'heart', appId: 'app' })
14
+ * .subscribe(res => console.log(res.counts));
15
+ */
16
+ export class ReactionsService {
17
+ constructor() {
18
+ this.http = inject(HttpClient);
19
+ this.config = inject(VALTECH_REACTIONS_CONFIG, { optional: true });
20
+ if (!this.config && isDevMode()) {
21
+ console.warn('[valtech-components] ReactionsService: provideValtechReactions() no esta en main.ts. ' +
22
+ 'Las reacciones no funcionaran.');
23
+ }
24
+ }
25
+ get apiUrl() {
26
+ return this.config?.apiUrl ?? '';
27
+ }
28
+ get baseUrl() {
29
+ return `${this.apiUrl}/v2/reactions`;
30
+ }
31
+ /**
32
+ * Toggle reaccion — retorna estado nuevo + conteos actualizados.
33
+ */
34
+ react(req) {
35
+ if (!this.config)
36
+ return EMPTY;
37
+ return this.http.post(this.baseUrl, req);
38
+ }
39
+ /**
40
+ * Conteos + reacciones del usuario para una entidad.
41
+ */
42
+ getCounts(appId, entityType, entityId) {
43
+ if (!this.config)
44
+ return EMPTY;
45
+ const params = new HttpParams()
46
+ .set('appId', appId)
47
+ .set('entityType', entityType)
48
+ .set('entityId', entityId);
49
+ return this.http.get(`${this.baseUrl}/counts`, { params });
50
+ }
51
+ /**
52
+ * Solo mis tokens activos para una entidad.
53
+ */
54
+ getMyReactions(appId, entityType, entityId) {
55
+ if (!this.config)
56
+ return EMPTY;
57
+ const params = new HttpParams()
58
+ .set('appId', appId)
59
+ .set('entityType', entityType)
60
+ .set('entityId', entityId);
61
+ return this.http
62
+ .get(`${this.baseUrl}/mine`, { params })
63
+ .pipe(map(res => res.tokens));
64
+ }
65
+ /**
66
+ * Obtener un set de reacciones por ID.
67
+ */
68
+ getSet(setId) {
69
+ if (!this.config)
70
+ return EMPTY;
71
+ return this.http.get(`${this.baseUrl}/sets/${setId}`);
72
+ }
73
+ /**
74
+ * Listar todos los sets disponibles para una app.
75
+ */
76
+ listSets(appId) {
77
+ if (!this.config)
78
+ return EMPTY;
79
+ const params = new HttpParams().set('appId', appId);
80
+ return this.http.get(`${this.baseUrl}/sets`, { params });
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReactionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReactionsService, providedIn: 'root' }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReactionsService, decorators: [{
86
+ type: Injectable,
87
+ args: [{ providedIn: 'root' }]
88
+ }], ctorParameters: () => [] });
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3Rpb25zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JlYWN0aW9ucy9yZWFjdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQWMsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBU3BEOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0I7UUFIUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUdwRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsdUZBQXVGO2dCQUNyRixnQ0FBZ0MsQ0FDbkMsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBWSxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFZLE9BQU87UUFDakIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLGVBQWUsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsR0FBaUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBZ0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsS0FBYSxFQUFFLFVBQWtCLEVBQUUsUUFBZ0I7UUFDM0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7YUFDNUIsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7YUFDbkIsR0FBRyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7YUFDN0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFvQixHQUFHLElBQUksQ0FBQyxPQUFPLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYyxDQUFDLEtBQWEsRUFBRSxVQUFrQixFQUFFLFFBQWdCO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFO2FBQzVCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO2FBQ25CLEdBQUcsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO2FBQzdCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBeUIsR0FBRyxJQUFJLENBQUMsT0FBTyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQWE7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7K0dBdEVVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBREgsTUFBTTs7NEZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIEVNUFRZLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFZBTFRFQ0hfUkVBQ1RJT05TX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7XG4gIFJlYWN0UmVxdWVzdCxcbiAgUmVhY3RSZXNwb25zZSxcbiAgR2V0Q291bnRzUmVzcG9uc2UsXG4gIEdldE15UmVhY3Rpb25zUmVzcG9uc2UsXG4gIFJlYWN0aW9uU2V0LFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBwYXJhIGdlc3Rpb25hciByZWFjY2lvbmVzIGVtb2ppIGNvbmZpZ3VyYWJsZXMgcG9yIGNvbnRleHRvLlxuICpcbiAqIFJlcXVpZXJlIHByb3ZpZGVWYWx0ZWNoUmVhY3Rpb25zKCkgZW4gZWwgYm9vdHN0cmFwIGRlIGxhIGFwcC5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc3ZjID0gaW5qZWN0KFJlYWN0aW9uc1NlcnZpY2UpO1xuICogc3ZjLnJlYWN0KHsgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdwb3N0JywgZW50aXR5SWQ6ICcxJyB9LCB0b2tlbjogJ2hlYXJ0JywgYXBwSWQ6ICdhcHAnIH0pXG4gKiAgIC5zdWJzY3JpYmUocmVzID0+IGNvbnNvbGUubG9nKHJlcy5jb3VudHMpKTtcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZWFjdGlvbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX1JFQUNUSU9OU19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZyAmJiBpc0Rldk1vZGUoKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnW3ZhbHRlY2gtY29tcG9uZW50c10gUmVhY3Rpb25zU2VydmljZTogcHJvdmlkZVZhbHRlY2hSZWFjdGlvbnMoKSBubyBlc3RhIGVuIG1haW4udHMuICcgK1xuICAgICAgICAgICdMYXMgcmVhY2Npb25lcyBubyBmdW5jaW9uYXJhbi4nXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGFwaVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uYXBpVXJsID8/ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgYmFzZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmFwaVVybH0vdjIvcmVhY3Rpb25zYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGUgcmVhY2Npb24g4oCUIHJldG9ybmEgZXN0YWRvIG51ZXZvICsgY29udGVvcyBhY3R1YWxpemFkb3MuXG4gICAqL1xuICByZWFjdChyZXE6IFJlYWN0UmVxdWVzdCk6IE9ic2VydmFibGU8UmVhY3RSZXNwb25zZT4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHJldHVybiBFTVBUWTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UmVhY3RSZXNwb25zZT4odGhpcy5iYXNlVXJsLCByZXEpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRlb3MgKyByZWFjY2lvbmVzIGRlbCB1c3VhcmlvIHBhcmEgdW5hIGVudGlkYWQuXG4gICAqL1xuICBnZXRDb3VudHMoYXBwSWQ6IHN0cmluZywgZW50aXR5VHlwZTogc3RyaW5nLCBlbnRpdHlJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxHZXRDb3VudHNSZXNwb25zZT4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHJldHVybiBFTVBUWTtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdhcHBJZCcsIGFwcElkKVxuICAgICAgLnNldCgnZW50aXR5VHlwZScsIGVudGl0eVR5cGUpXG4gICAgICAuc2V0KCdlbnRpdHlJZCcsIGVudGl0eUlkKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxHZXRDb3VudHNSZXNwb25zZT4oYCR7dGhpcy5iYXNlVXJsfS9jb3VudHNgLCB7IHBhcmFtcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb2xvIG1pcyB0b2tlbnMgYWN0aXZvcyBwYXJhIHVuYSBlbnRpZGFkLlxuICAgKi9cbiAgZ2V0TXlSZWFjdGlvbnMoYXBwSWQ6IHN0cmluZywgZW50aXR5VHlwZTogc3RyaW5nLCBlbnRpdHlJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHJldHVybiBFTVBUWTtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdhcHBJZCcsIGFwcElkKVxuICAgICAgLnNldCgnZW50aXR5VHlwZScsIGVudGl0eVR5cGUpXG4gICAgICAuc2V0KCdlbnRpdHlJZCcsIGVudGl0eUlkKTtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAuZ2V0PEdldE15UmVhY3Rpb25zUmVzcG9uc2U+KGAke3RoaXMuYmFzZVVybH0vbWluZWAsIHsgcGFyYW1zIH0pXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcy50b2tlbnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRlbmVyIHVuIHNldCBkZSByZWFjY2lvbmVzIHBvciBJRC5cbiAgICovXG4gIGdldFNldChzZXRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZWFjdGlvblNldD4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHJldHVybiBFTVBUWTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxSZWFjdGlvblNldD4oYCR7dGhpcy5iYXNlVXJsfS9zZXRzLyR7c2V0SWR9YCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGFyIHRvZG9zIGxvcyBzZXRzIGRpc3BvbmlibGVzIHBhcmEgdW5hIGFwcC5cbiAgICovXG4gIGxpc3RTZXRzKGFwcElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlYWN0aW9uU2V0W10+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSByZXR1cm4gRU1QVFk7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKS5zZXQoJ2FwcElkJywgYXBwSWQpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlYWN0aW9uU2V0W10+KGAke3RoaXMuYmFzZVVybH0vc2V0c2AsIHsgcGFyYW1zIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3JlYWN0aW9ucy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUmVhY3Rpb25TZXRDb250ZXh0ID0gJ2Zvcm1hbCcgfCAnc29jaWFsJyB8ICdjZWxlYnJhdGlvbicgfCAnb3BpbmlvbicgfCAnY3VzdG9tJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbkRlZmluaXRpb24ge1xuICB0b2tlbjogc3RyaW5nO1xuICBlbW9qaTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3Rpb25TZXQge1xuICBzZXRJZDogc3RyaW5nO1xuICBhcHBJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbnRleHQ6IFJlYWN0aW9uU2V0Q29udGV4dDtcbiAgcmVhY3Rpb25zOiBSZWFjdGlvbkRlZmluaXRpb25bXTtcbiAgaXNQcmVzZXQ6IGJvb2xlYW47XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbkNvdW50cyB7XG4gIGNvdW50czogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdFJlcXVlc3Qge1xuICBlbnRpdHlSZWY6IHsgZW50aXR5VHlwZTogc3RyaW5nOyBlbnRpdHlJZDogc3RyaW5nIH07XG4gIHRva2VuOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3RSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgY291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldENvdW50c1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgY291bnRzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBteVJlYWN0aW9uczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TXlSZWFjdGlvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHRva2Vuczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaFJlYWN0aW9uc0NvbmZpZyB7XG4gIGFwaVVybDogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cbiJdfQ==
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.209';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yMDknO1xuIl19
5
+ export const VERSION = '4.0.210';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4yMTAnO1xuIl19