@kirbydesign/designsystem 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2020/lib/components/chart/configs/annotations.config.mjs +1 -1
  2. package/esm2020/lib/components/dropdown/dropdown.component.mjs +12 -15
  3. package/esm2020/lib/components/flag/flag.component.mjs +2 -2
  4. package/esm2020/lib/components/form-field/input/input.component.mjs +2 -2
  5. package/esm2020/lib/components/form-field/textarea/textarea.component.mjs +2 -2
  6. package/esm2020/lib/components/icon/kirby-icon-settings.mjs +1 -2
  7. package/esm2020/lib/components/modal/modal-wrapper/modal-wrapper.component.mjs +3 -3
  8. package/esm2020/lib/components/page/page.component.mjs +3 -21
  9. package/esm2020/lib/components/slide-button/slide-button.component.mjs +2 -2
  10. package/esm2020/testing-base/lib/components/mock.page.component.mjs +2 -5
  11. package/fesm2015/kirbydesign-designsystem-testing-base.mjs +1 -4
  12. package/fesm2015/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  13. package/fesm2015/kirbydesign-designsystem.mjs +23 -45
  14. package/fesm2015/kirbydesign-designsystem.mjs.map +1 -1
  15. package/fesm2020/kirbydesign-designsystem-testing-base.mjs +1 -4
  16. package/fesm2020/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  17. package/fesm2020/kirbydesign-designsystem.mjs +23 -45
  18. package/fesm2020/kirbydesign-designsystem.mjs.map +1 -1
  19. package/lib/components/chart/configs/annotations.config.d.ts +1 -1
  20. package/lib/components/dropdown/dropdown.component.d.ts +0 -2
  21. package/lib/components/page/page.component.d.ts +1 -4
  22. package/package.json +2 -2
  23. package/readme.md +37 -5
  24. package/scss/base/_link.scss +1 -0
  25. package/scss/interaction-state/_active.scss +1 -0
  26. package/scss/interaction-state/_focus.scss +1 -0
  27. package/scss/interaction-state/_hover.scss +1 -0
  28. package/scss/interaction-state/_index.scss +1 -0
  29. package/scss/interaction-state/_interaction-state.utilities.scss +1 -0
  30. package/scss/interaction-state/_layer.scss +1 -0
  31. package/scss/opt-out/_index.scss +1 -0
  32. package/scss/opt-out/_link.scss +1 -0
  33. package/src/lib/components/icon/README.md +16 -0
  34. package/testing-base/lib/components/mock.page.component.d.ts +1 -2
  35. package/README.md +0 -7
  36. package/icons/svg/insurance.svg +0 -5
@@ -1,6 +1,6 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, Optional, Output, QueryList, Renderer2, SkipSelf, TemplateRef, ViewChild, } from '@angular/core';
2
2
  import { NavigationEnd, NavigationStart, Router } from '@angular/router';
3
- import { IonBackButtonDelegate, IonContent, IonFooter, IonHeader } from '@ionic/angular';
3
+ import { IonContent, IonFooter, IonHeader } from '@ionic/angular';
4
4
  import { Subject } from 'rxjs';
5
5
  import { filter, takeUntil } from 'rxjs/operators';
6
6
  import { KirbyAnimation } from '../../animation/kirby-animation';
@@ -168,7 +168,6 @@ export class PageComponent {
168
168
  this.enter = new EventEmitter();
169
169
  this.leave = new EventEmitter();
170
170
  this.refresh = new EventEmitter();
171
- this.backButtonClick = new EventEmitter();
172
171
  this.pageTitleIntersectionObserverRef = this.pageTitleIntersectionObserver();
173
172
  this.urls = [];
174
173
  this.ngOnDestroy$ = new Subject();
@@ -216,7 +215,6 @@ export class PageComponent {
216
215
  this.windowRef.nativeWindow.addEventListener(selectedTabClickEvent, () => {
217
216
  this.content.scrollToTop(KirbyAnimation.Duration.LONG);
218
217
  });
219
- this.interceptBackButtonClicksSetup();
220
218
  }
221
219
  ngAfterContentChecked() {
222
220
  if (!this.urls.includes(this.router.url)) {
@@ -260,17 +258,6 @@ export class PageComponent {
260
258
  this.tabsComponent.tabBarBottomHidden = false;
261
259
  }
262
260
  }
263
- interceptBackButtonClicksSetup() {
264
- // Intercept back-button click events, defaulting to the built-in click-handler.
265
- if (this.backButtonClick.observers.length === 0) {
266
- this.backButtonClick
267
- .pipe(takeUntil(this.ngOnDestroy$))
268
- .subscribe(this.backButtonDelegate.onClick.bind(this.backButtonDelegate));
269
- }
270
- this.backButtonDelegate.onClick = (event) => {
271
- this.backButtonClick.emit(event);
272
- };
273
- }
274
261
  initializeTitle() {
275
262
  // Ensures initializeTitle() won't run, if already initialized
276
263
  if (this.hasPageTitle)
@@ -351,7 +338,7 @@ export class PageComponent {
351
338
  }
352
339
  }
353
340
  /** @nocollapse */ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i3.WindowRef }, { token: i4.ModalNavigationService }, { token: i5.TabsComponent, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component });
354
- /** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"], components: [{ type: i6.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i6.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i6.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i6.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { type: i6.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i6.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i6.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { type: i7.SpinnerComponent, selector: "kirby-spinner" }, { type: i6.IonFooter, selector: "ion-footer", inputs: ["mode", "translucent"] }], directives: [{ type: i6.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
341
+ /** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"], components: [{ type: i6.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i6.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i6.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i6.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { type: i6.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i6.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { type: i6.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { type: i7.SpinnerComponent, selector: "kirby-spinner" }, { type: i6.IonFooter, selector: "ion-footer", inputs: ["mode", "translucent"] }], directives: [{ type: i6.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i9.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
355
342
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: PageComponent, decorators: [{
356
343
  type: Component,
357
344
  args: [{ selector: 'kirby-page', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title>\n <div class=\"toolbar-title hide\" [class.fade-in]=\"toolbarTitleVisible\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarStickyActionsVisible && stickyActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons\n class=\"hide\"\n slot=\"secondary\"\n [class.fade-in]=\"toolbarFixedActionsVisible && fixedActionsTemplate\"\n >\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <div class=\"content-inner\">\n <div\n class=\"page-header\"\n *ngIf=\"hasPageTitle\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"hasActionsInPage\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n\n <!-- Content -->\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}@media (min-width: 1025px) and (hover: hover) and (pointer: fine){ion-header,ion-toolbar{max-width:768px}}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--icon-font-size: 24px;height:44px;width:44px}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color)}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}\n"] }]
@@ -381,8 +368,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
381
368
  type: Output
382
369
  }], refresh: [{
383
370
  type: Output
384
- }], backButtonClick: [{
385
- type: Output
386
371
  }], content: [{
387
372
  type: ViewChild,
388
373
  args: [IonContent, { static: true }]
@@ -395,9 +380,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
395
380
  }], ionFooterElement: [{
396
381
  type: ViewChild,
397
382
  args: [IonFooter, { static: true, read: ElementRef }]
398
- }], backButtonDelegate: [{
399
- type: ViewChild,
400
- args: [IonBackButtonDelegate, { static: false }]
401
383
  }], pageTitle: [{
402
384
  type: ViewChild,
403
385
  args: ['pageTitle', { static: false, read: ElementRef }]
@@ -429,4 +411,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
429
411
  type: HostListener,
430
412
  args: ['window:keyboardWillHide']
431
413
  }] } });
432
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxx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RGhCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUluRCxtQkFBbUI7c0JBRDFCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzdELDBCQUEwQjtzQkFEakMsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHcEUsMEJBQTBCO3NCQURqQyxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUc3RSxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3RFLHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFHekUsYUFBYTtzQkFEWixlQUFlO3VCQUFDLG9CQUFvQjtnQkFHN0IsYUFBYTtzQkFEcEIsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBOE5yQyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV25ELG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFNraXBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CYWNrQnV0dG9uRGVsZWdhdGUsIElvbkNvbnRlbnQsIElvbkZvb3RlciwgSW9uSGVhZGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vYW5pbWF0aW9uL2tpcmJ5LWFuaW1hdGlvbic7XG5pbXBvcnQgeyBGaXRIZWFkaW5nQ29uZmlnIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9maXQtaGVhZGluZy9maXQtaGVhZGluZy5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2luZG93UmVmIH0gZnJvbSAnLi4vLi4vdHlwZXMvd2luZG93LXJlZic7XG5pbXBvcnQgeyBNb2RhbFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC13cmFwcGVyL21vZGFsLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9zZXJ2aWNlcy9tb2RhbC1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2VsZWN0ZWRUYWJDbGlja0V2ZW50IH0gZnJvbSAnLi4vdGFicy90YWItYnV0dG9uL3RhYi1idXR0b24uZXZlbnRzJztcbmltcG9ydCB7IFRhYnNDb21wb25lbnQgfSBmcm9tICcuLi90YWJzL3RhYnMuY29tcG9uZW50JztcblxudHlwZSBzdGlja3lDb25maWcgPSB7IHN0aWNreTogYm9vbGVhbiB9O1xudHlwZSBmaXhlZENvbmZpZyA9IHsgZml4ZWQ6IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gXCJwdWxsLXRvLXJlZnJlc2hcIiBiZWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVsbFRvUmVmcmVzaEV2ZW50IHtcbiAgLyoqXG4gICAqIEludm9rZSB0aGlzIGNhbGxiYWNrLW1ldGhvZCB3aGVuIGFjdGlvbiB0byBwZXJmb3JtIHVwb24gXCJwdWxsLXRvLXJlZnJlc2hcIiBjb21wbGV0ZXMuXG4gICAqL1xuICBjb21wbGV0ZSgpO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVGl0bGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VTdWJ0aXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlU3VidGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRvb2xiYXJUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VBY3Rpb25zXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VBY3Rpb25zRGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VBY3Rpb25zJykgY29uZmlnOiBzdGlja3lDb25maWcgfCBmaXhlZENvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSBzdGlja3lEZWZhdWx0ID0gdHJ1ZTtcbiAgcHJpdmF0ZSByZWFkb25seSBmaXhlZERlZmF1bHQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzU3RpY2t5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyA/ICh0aGlzLmNvbmZpZyBhcyBzdGlja3lDb25maWcpLnN0aWNreSA6IHRoaXMuc3RpY2t5RGVmYXVsdDtcbiAgfVxuXG4gIGdldCBpc0ZpeGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyA/ICh0aGlzLmNvbmZpZyBhcyBmaXhlZENvbmZpZykuZml4ZWQgOiB0aGlzLmZpeGVkRGVmYXVsdDtcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlQ29udGVudF0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgna2lyYnlQYWdlQ29udGVudCcpIGNvbmZpZzogZml4ZWRDb25maWc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxuXG4gIGdldCBpc0ZpeGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZyAmJiB0aGlzLmNvbmZpZy5maXhlZDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLXByb2dyZXNzJyxcbiAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PiBgLFxuICBzdHlsZXM6IFsnOmhvc3Qge2Rpc3BsYXk6IGZsZXh9J10sXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VQcm9ncmVzc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIFRPRE86IEZpbmQgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsaWducyB3aXRoIGZ1dHVyZSBwYWdlIGNvbmZpZ3VyYXRpb24gLyBjb25zdW1wdGlvblxuICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIHdhcyBjaG9zZW4gb3ZlciBleHBhbmRpbmcgYG1vdmVDaGlsZGAgbWV0aG9kIGluIGNvbXBvbmVudCB3cmFwcGVyIHdpdGggeWV0IGFub3RoZXIgc2NlbmFyaW9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNsb3QnKSBzbG90ID0gJ3N0YXJ0JztcblxuICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIG1vZGFsV3JhcHBlcjogTW9kYWxXcmFwcGVyQ29tcG9uZW50KSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGFsV3JhcHBlciAmJiB0aGlzLm1vZGFsV3JhcHBlci5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJykge1xuICAgICAgdGhpcy5zbG90ID0gJ2VuZCc7XG4gICAgfVxuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtdGl0bGUnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZUNvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWNvbnRlbnQnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50Q29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtYWN0aW9ucycsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltraXJieS1idXR0b25dXCI+PC9uZy1jb250ZW50PiBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCYWNrQnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZU1heExpbmVzOiBudW1iZXI7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuICBAT3V0cHV0KCkgYmFja0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudDogSW9uQ29udGVudDtcbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkNvbnRlbnRFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Db250ZW50RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uSGVhZGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBpb25IZWFkZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25IZWFkZXJFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25Gb290ZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uRm9vdGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uRm9vdGVyRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZChJb25CYWNrQnV0dG9uRGVsZWdhdGUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwcml2YXRlIGJhY2tCdXR0b25EZWxlZ2F0ZTogSW9uQmFja0J1dHRvbkRlbGVnYXRlO1xuICBAVmlld0NoaWxkKCdwYWdlVGl0bGUnLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBwYWdlVGl0bGU6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2ltcGxlVGl0bGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNpbXBsZVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIGN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21UaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21TdWJ0aXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VBY3Rpb25zRGlyZWN0aXZlKVxuICBjdXN0b21BY3Rpb25zOiBRdWVyeUxpc3Q8UGFnZUFjdGlvbnNEaXJlY3RpdmU+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VDb250ZW50RGlyZWN0aXZlKVxuICBwcml2YXRlIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxQYWdlQ29udGVudERpcmVjdGl2ZT47XG5cbiAgaGFzUGFnZVRpdGxlOiBib29sZWFuO1xuICBoYXNQYWdlU3VidGl0bGU6IGJvb2xlYW47XG4gIGhhc0FjdGlvbnNJblBhZ2U6IGJvb2xlYW47XG4gIHRvb2xiYXJUaXRsZVZpc2libGU6IGJvb2xlYW47XG4gIHRvb2xiYXJGaXhlZEFjdGlvbnNWaXNpYmxlOiBib29sZWFuO1xuICB0b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGU6IGJvb2xlYW47XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPVxuICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgcHJpdmF0ZSB1cmxzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhhc0VudGVyZWQ6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBuZ09uRGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG5hdmlnYXRpb25TdGFydCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSxcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpLFxuICAgIGZpbHRlcigoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBXaW5kb3dSZWYsXG4gICAgcHJpdmF0ZSBtb2RhbE5hdmlnYXRpb25TZXJ2aWNlOiBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgdGFic0NvbXBvbmVudDogVGFic0NvbXBvbmVudFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVXcmFwcGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGl0bGVNYXhMaW5lcykge1xuICAgICAgdGhpcy5maXRIZWFkaW5nQ29uZmlnID0ge1xuICAgICAgICAuLi50aGlzLmZpdEhlYWRpbmdDb25maWcsXG4gICAgICAgIG1heExpbmVzOiBjaGFuZ2VzLnRpdGxlTWF4TGluZXMuY3VycmVudFZhbHVlLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuc3VidGl0bGUgJiYgIWNoYW5nZXMuc3VidGl0bGUuaXNGaXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5zdWJ0aXRsZSA9IGNoYW5nZXMudGl0bGUuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5oYXNQYWdlU3VidGl0bGUgPSB0aGlzLnN1YnRpdGxlICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMubmF2aWdhdGlvblN0YXJ0JC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMudXJscy5pbmNsdWRlcyhldmVudC51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKGV2ZW50LnVybCkgJiZcbiAgICAgICAgIXRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5pc01vZGFsUm91dGUodGhpcy5yb3V0ZXIudXJsKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMub25MZWF2ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5uYXZpZ2F0aW9uRW5kJC5zdWJzY3JpYmUoKGV2ZW50OiBOYXZpZ2F0aW9uRW5kKSA9PiB7XG4gICAgICBpZiAodGhpcy51cmxzLmluY2x1ZGVzKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSkge1xuICAgICAgICB0aGlzLm9uRW50ZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKHNlbGVjdGVkVGFiQ2xpY2tFdmVudCwgKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uLkxPTkcpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudXJscy5pbmNsdWRlcyh0aGlzLnJvdXRlci51cmwpKSB7XG4gICAgICB0aGlzLnVybHMucHVzaCh0aGlzLnJvdXRlci51cmwpO1xuICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ09uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG5cbiAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihzZWxlY3RlZFRhYkNsaWNrRXZlbnQsICgpID0+IHtcbiAgICAgIHRoaXMuY29udGVudC5zY3JvbGxUb1RvcChLaXJieUFuaW1hdGlvbi5EdXJhdGlvbi5MT05HKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlbGVnYXRlUmVmcmVzaEV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCh7XG4gICAgICBjb21wbGV0ZTogZXZlbnQudGFyZ2V0LmNvbXBsZXRlLmJpbmQoZXZlbnQudGFyZ2V0KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb25FbnRlcigpIHtcbiAgICBpZiAodGhpcy5oYXNFbnRlcmVkKSByZXR1cm47XG4gICAgdGhpcy5oYXNFbnRlcmVkID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuICAgIGlmICh0aGlzLnBhZ2VUaXRsZSkge1xuICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb25MZWF2ZSgpIHtcbiAgICB0aGlzLmxlYXZlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYudW5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmhhc0VudGVyZWQgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnRhYkJhckJvdHRvbUhpZGRlbiAmJiB0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpIHtcbiAgICAvLyBJbnRlcmNlcHQgYmFjay1idXR0b24gY2xpY2sgZXZlbnRzLCBkZWZhdWx0aW5nIHRvIHRoZSBidWlsdC1pbiBjbGljay1oYW5kbGVyLlxuICAgIGlmICh0aGlzLmJhY2tCdXR0b25DbGljay5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b25DbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuYmFja0J1dHRvbkRlbGVnYXRlLm9uQ2xpY2suYmluZCh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRpdGxlKCkge1xuICAgIC8vIEVuc3VyZXMgaW5pdGlhbGl6ZVRpdGxlKCkgd29uJ3QgcnVuLCBpZiBhbHJlYWR5IGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSByZXR1cm47XG4gICAgdGhpcy5oYXNQYWdlVGl0bGUgPSB0aGlzLnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGU7XG4gICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIXRoaXMuaGFzUGFnZVRpdGxlO1xuICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21TdWJ0aXRsZVRlbXBsYXRlO1xuXG4gICAgaWYgKHRoaXMuaGFzUGFnZVRpdGxlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5vYnNlcnZlKHRoaXMucGFnZVRpdGxlLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8vIHRzbGludDpkaXNhYmxlOnByZXR0aWVyXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMuZm9yRWFjaCgocGFnZUFjdGlvbikgPT4ge1xuICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgdGhpcy50b29sYmFyRml4ZWRBY3Rpb25zVmlzaWJsZSA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgICBpZiAocGFnZUFjdGlvbi5pc1N0aWNreSkge1xuICAgICAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuaGFzQWN0aW9uc0luUGFnZSA9ICEhdGhpcy5wYWdlQWN0aW9uc1RlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlV3JhcHBlcigpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2hpbGQocGFyZW50LCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChwYXJlbnQsIHRoaXMuaW9uSGVhZGVyRWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25Gb290ZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdE1hcmdpbjogJzBweCcsXG4gICAgfTtcblxuICAgIGxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xuICAgIGNvbnN0IGNhbGxiYWNrID0gKGVudHJpZXMpID0+IHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgdGhpcy50b29sYmFyU3RpY2t5QWN0aW9uc1Zpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQnXSlcbiAgX29uS2V5Ym9hcmRXaWxsU2hvdyhpbmZvPzogeyBrZXlib2FyZEhlaWdodDogbnVtYmVyIH0pIHtcbiAgICBpZiAoaW5mbyAmJiBpbmZvLmtleWJvYXJkSGVpZ2h0KSB7XG4gICAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICctLWtleWJvYXJkLW9mZnNldCcsXG4gICAgICAgIGAke2luZm8ua2V5Ym9hcmRIZWlnaHR9cHhgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxIaWRlJylcbiAgX29uS2V5Ym9hcmRXaWxsSGlkZSgpIHtcbiAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0ta2V5Ym9hcmQtb2Zmc2V0JywgJzBweCcpO1xuICB9XG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYmFjay1idXR0b25cbiAgICAgICAgdGV4dD1cIlwiXG4gICAgICAgIFtkZWZhdWx0SHJlZl09XCJkZWZhdWx0QmFja0hyZWZcIlxuICAgICAgICBpY29uPVwiYXNzZXRzL2tpcmJ5L2ljb25zL3N2Zy9hcnJvdy1iYWNrLnN2Z1wiXG4gICAgICAgIFtzdHlsZS52aXNpYmlsaXR5XT1cImhpZGVCYWNrQnV0dG9uID8gJ2hpZGRlbicgOiBudWxsXCJcbiAgICAgID48L2lvbi1iYWNrLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+XG4gICAgICA8ZGl2IGNsYXNzPVwidG9vbGJhci10aXRsZSBoaWRlXCIgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhclRpdGxlVmlzaWJsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9vbGJhclRpdGxlVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgY2xhc3M9XCJoaWRlXCJcbiAgICAgIHNsb3Q9XCJwcmltYXJ5XCJcbiAgICAgIFtjbGFzcy5mYWRlLWluXT1cInRvb2xiYXJTdGlja3lBY3Rpb25zVmlzaWJsZSAmJiBzdGlja3lBY3Rpb25zVGVtcGxhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGlja3lBY3Rpb25zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tYnV0dG9uc1xuICAgICAgY2xhc3M9XCJoaWRlXCJcbiAgICAgIHNsb3Q9XCJzZWNvbmRhcnlcIlxuICAgICAgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhckZpeGVkQWN0aW9uc1Zpc2libGUgJiYgZml4ZWRBY3Rpb25zVGVtcGxhdGVcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG5cbjxpb24tY29udGVudCBzY3JvbGxFdmVudHM9XCJ0cnVlXCIgZm9yY2VPdmVyc2Nyb2xsPVwiZmFsc2VcIj5cbiAgPGlvbi1yZWZyZXNoZXJcbiAgICAqbmdJZj1cInJlZnJlc2gub2JzZXJ2ZXJzLmxlbmd0aCA+IDBcIlxuICAgIChpb25SZWZyZXNoKT1cImRlbGVnYXRlUmVmcmVzaEV2ZW50KCRldmVudClcIlxuICAgIHNsb3Q9XCJmaXhlZFwiXG4gID5cbiAgICA8a2lyYnktc3Bpbm5lcj48L2tpcmJ5LXNwaW5uZXI+XG4gIDwvaW9uLXJlZnJlc2hlcj5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicGFnZS1oZWFkZXJcIlxuICAgICAgKm5nSWY9XCJoYXNQYWdlVGl0bGVcIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGV4dC1jZW50ZXInOiB0aXRsZUFsaWdubWVudCA9PT0gJ2NlbnRlcicsXG4gICAgICAgICd0ZXh0LXJpZ2h0JzogdGl0bGVBbGlnbm1lbnQgPT09ICdyaWdodCdcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgI3BhZ2VUaXRsZSBjbGFzcz1cInBhZ2UtdGl0bGVcIiBbY2xhc3MuaGFzLWFjdGlvbnNdPVwiaGFzQWN0aW9uc0luUGFnZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc1BhZ2VTdWJ0aXRsZVwiIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TdWJ0aXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDb250ZW50IC0tPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFRlbXBsYXRlIHx8IGRlZmF1bHRDb250ZW50VGVtcGxhdGVcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzbG90PVwiZml4ZWRcIiBjbGFzcz1cImZpeGVkLWNvbnRlbnRcIiAqbmdJZj1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGU+XG4gIDxoMSBba2lyYnlGaXRIZWFkaW5nXT1cImZpdEhlYWRpbmdDb25maWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2gxPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlU3VidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVUaXRsZVRlbXBsYXRlPnt7IHRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlU3VidGl0bGVUZW1wbGF0ZT57eyBzdWJ0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlPnt7IHRvb2xiYXJUaXRsZSB9fTwvbmctdGVtcGxhdGU+XG4iXX0=
414
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxN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QUMsb0JBQW9CO2dCQWdOckMsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVduRCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciwgUm91dGVyRXZlbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQ29udGVudCwgSW9uRm9vdGVyLCBJb25IZWFkZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICcuLi8uLi9hbmltYXRpb24va2lyYnktYW5pbWF0aW9uJztcbmltcG9ydCB7IEZpdEhlYWRpbmdDb25maWcgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2ZpdC1oZWFkaW5nL2ZpdC1oZWFkaW5nLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXaW5kb3dSZWYgfSBmcm9tICcuLi8uLi90eXBlcy93aW5kb3ctcmVmJztcbmltcG9ydCB7IE1vZGFsV3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4uL21vZGFsL21vZGFsLXdyYXBwZXIvbW9kYWwtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZGFsL3NlcnZpY2VzL21vZGFsLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBzZWxlY3RlZFRhYkNsaWNrRXZlbnQgfSBmcm9tICcuLi90YWJzL3RhYi1idXR0b24vdGFiLWJ1dHRvbi5ldmVudHMnO1xuaW1wb3J0IHsgVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL3RhYnMvdGFicy5jb21wb25lbnQnO1xuXG50eXBlIHN0aWNreUNvbmZpZyA9IHsgc3RpY2t5OiBib29sZWFuIH07XG50eXBlIGZpeGVkQ29uZmlnID0geyBmaXhlZDogYm9vbGVhbiB9O1xuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcInB1bGwtdG8tcmVmcmVzaFwiIGJlZ2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsVG9SZWZyZXNoRXZlbnQge1xuICAvKipcbiAgICogSW52b2tlIHRoaXMgY2FsbGJhY2stbWV0aG9kIHdoZW4gYWN0aW9uIHRvIHBlcmZvcm0gdXBvbiBcInB1bGwtdG8tcmVmcmVzaFwiIGNvbXBsZXRlcy5cbiAgICovXG4gIGNvbXBsZXRlKCk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYCA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IGAsXG4gIHN0eWxlczogWyc6aG9zdCB7ZGlzcGxheTogZmxleH0nXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVByb2dyZXNzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVE9ETzogRmluZCBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxpZ25zIHdpdGggZnV0dXJlIHBhZ2UgY29uZmlndXJhdGlvbiAvIGNvbnN1bXB0aW9uXG4gIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gd2FzIGNob3NlbiBvdmVyIGV4cGFuZGluZyBgbW92ZUNoaWxkYCBtZXRob2QgaW4gY29tcG9uZW50IHdyYXBwZXIgd2l0aCB5ZXQgYW5vdGhlciBzY2VuYXJpb1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuc2xvdCcpIHNsb3QgPSAnc3RhcnQnO1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHByaXZhdGUgbW9kYWxXcmFwcGVyOiBNb2RhbFdyYXBwZXJDb21wb25lbnQpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kYWxXcmFwcGVyICYmIHRoaXMubW9kYWxXcmFwcGVyLmNvbmZpZy5mbGF2b3IgPT09ICdkcmF3ZXInKSB7XG4gICAgICB0aGlzLnNsb3QgPSAnZW5kJztcbiAgICB9XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRpdGxlQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtY29udGVudCcsXG4gIHRlbXBsYXRlOiBgIDxuZy1jb250ZW50PjwvbmctY29udGVudD4gYCxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnRDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1hY3Rpb25zJyxcbiAgdGVtcGxhdGU6IGAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW2tpcmJ5LWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VBY3Rpb25zQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25DaGFuZ2VzXG57XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHN1YnRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2xiYXJUaXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZUFsaWdubWVudDogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xuICBASW5wdXQoKSBkZWZhdWx0QmFja0hyZWY6IHN0cmluZztcbiAgQElucHV0KCkgaGlkZUJhY2tCdXR0b246IGJvb2xlYW47XG4gIEBJbnB1dCgpIHRpdGxlTWF4TGluZXM6IG51bWJlcjtcblxuICBwcml2YXRlIF90YWJCYXJCb3R0b21IaWRkZW46IGJvb2xlYW47XG4gIHB1YmxpYyBnZXQgdGFiQmFyQm90dG9tSGlkZGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW47XG4gIH1cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0YWJCYXJCb3R0b21IaWRkZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICAvLyBhcyB3ZSBhcmUgc2V0dGluZyBhIGNsYXNzIG9uIHRhYnMsIHdlIG5lZWQgdGhpcyB0byBoYXBwZW4gaW4gYSBzZXBhcmF0ZSBjZCBjeWNsZVxuICAgICAgc2V0VGltZW91dCgoKSA9PiAodGhpcy50YWJzQ29tcG9uZW50LnRhYkJhckJvdHRvbUhpZGRlbiA9IHZhbHVlKSk7XG4gICAgfVxuICAgIHRoaXMuX3RhYkJhckJvdHRvbUhpZGRlbiA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIGVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSByZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjxQdWxsVG9SZWZyZXNoRXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNvbnRlbnQ6IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uRm9vdGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkZvb3RlckVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3BhZ2VUaXRsZScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIHBhZ2VUaXRsZTogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzaW1wbGVUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVN1YnRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVN1YnRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUFjdGlvbnNEaXJlY3RpdmUpXG4gIGN1c3RvbUFjdGlvbnM6IFF1ZXJ5TGlzdDxQYWdlQWN0aW9uc0RpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUNvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PFBhZ2VDb250ZW50RGlyZWN0aXZlPjtcblxuICBoYXNQYWdlVGl0bGU6IGJvb2xlYW47XG4gIGhhc1BhZ2VTdWJ0aXRsZTogYm9vbGVhbjtcbiAgaGFzQWN0aW9uc0luUGFnZTogYm9vbGVhbjtcbiAgdG9vbGJhclRpdGxlVmlzaWJsZTogYm9vbGVhbjtcbiAgdG9vbGJhckZpeGVkQWN0aW9uc1Zpc2libGU6IGJvb2xlYW47XG4gIHRvb2xiYXJTdGlja3lBY3Rpb25zVmlzaWJsZTogYm9vbGVhbjtcblxuICBmaXRIZWFkaW5nQ29uZmlnOiBGaXRIZWFkaW5nQ29uZmlnO1xuXG4gIHRvb2xiYXJUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBjdXN0b21Db250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHBhZ2VBY3Rpb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZpeGVkQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBzdGlja3lBY3Rpb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGZpeGVkQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIHBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmOiBJbnRlcnNlY3Rpb25PYnNlcnZlciA9XG4gICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICBwcml2YXRlIHVybHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgaGFzRW50ZXJlZDogYm9vbGVhbjtcblxuICBwcml2YXRlIG5nT25EZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgbmF2aWdhdGlvblN0YXJ0JDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpLFxuICAgIGZpbHRlcigoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydClcbiAgKTtcblxuICBwcml2YXRlIG5hdmlnYXRpb25FbmQkOiBPYnNlcnZhYmxlPFJvdXRlckV2ZW50PiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHRha2VVbnRpbCh0aGlzLm5nT25EZXN0cm95JCksXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB3aW5kb3dSZWY6IFdpbmRvd1JlZixcbiAgICBwcml2YXRlIG1vZGFsTmF2aWdhdGlvblNlcnZpY2U6IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSB0YWJzQ29tcG9uZW50OiBUYWJzQ29tcG9uZW50XG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVdyYXBwZXIoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy50aXRsZU1heExpbmVzKSB7XG4gICAgICB0aGlzLmZpdEhlYWRpbmdDb25maWcgPSB7XG4gICAgICAgIC4uLnRoaXMuZml0SGVhZGluZ0NvbmZpZyxcbiAgICAgICAgbWF4TGluZXM6IGNoYW5nZXMudGl0bGVNYXhMaW5lcy5jdXJyZW50VmFsdWUsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5zdWJ0aXRsZSAmJiAhY2hhbmdlcy5zdWJ0aXRsZS5pc0ZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLnN1YnRpdGxlID0gY2hhbmdlcy50aXRsZS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmhhc1BhZ2VTdWJ0aXRsZSA9IHRoaXMuc3VidGl0bGUgIT09IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy51cmxzLmluY2x1ZGVzKGV2ZW50LnVybCkgJiZcbiAgICAgICAgIXRoaXMubW9kYWxOYXZpZ2F0aW9uU2VydmljZS5pc01vZGFsUm91dGUoZXZlbnQudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZSh0aGlzLnJvdXRlci51cmwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLnVybHMuaW5jbHVkZXMoZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMpKSB7XG4gICAgICAgIHRoaXMub25FbnRlcigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LmFkZEV2ZW50TGlzdGVuZXIoc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCAoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnVybHMuaW5jbHVkZXModGhpcy5yb3V0ZXIudXJsKSkge1xuICAgICAgdGhpcy51cmxzLnB1c2godGhpcy5yb3V0ZXIudXJsKTtcbiAgICAgIHRoaXMub25FbnRlcigpO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZVRpdGxlKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQWN0aW9ucygpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy5wYWdlVGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlclJlZi5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCAoKSA9PiB7XG4gICAgICB0aGlzLmNvbnRlbnQuc2Nyb2xsVG9Ub3AoS2lyYnlBbmltYXRpb24uRHVyYXRpb24uTE9ORyk7XG4gICAgfSk7XG4gIH1cblxuICBkZWxlZ2F0ZVJlZnJlc2hFdmVudChldmVudDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoe1xuICAgICAgY29tcGxldGU6IGV2ZW50LnRhcmdldC5jb21wbGV0ZS5iaW5kKGV2ZW50LnRhcmdldCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaGFzRW50ZXJlZCkgcmV0dXJuO1xuICAgIHRoaXMuaGFzRW50ZXJlZCA9IHRydWU7XG5cbiAgICB0aGlzLmVudGVyLmVtaXQoKTtcbiAgICBpZiAodGhpcy5wYWdlVGl0bGUpIHtcbiAgICAgIHRoaXMucGFnZVRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJSZWYub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uTGVhdmUoKSB7XG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XG4gICAgaWYgKHRoaXMucGFnZVRpdGxlKSB7XG4gICAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLnVub2JzZXJ2ZSh0aGlzLnBhZ2VUaXRsZS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5oYXNFbnRlcmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy50YWJCYXJCb3R0b21IaWRkZW4gJiYgdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGl0bGUoKSB7XG4gICAgLy8gRW5zdXJlcyBpbml0aWFsaXplVGl0bGUoKSB3b24ndCBydW4sIGlmIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAgICBpZiAodGhpcy5oYXNQYWdlVGl0bGUpIHJldHVybjtcbiAgICB0aGlzLmhhc1BhZ2VUaXRsZSA9IHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZCB8fCAhIXRoaXMuY3VzdG9tVGl0bGVUZW1wbGF0ZTtcbiAgICB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUgPSAhdGhpcy5oYXNQYWdlVGl0bGU7XG4gICAgdGhpcy5oYXNQYWdlU3VidGl0bGUgPSB0aGlzLnN1YnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVN1YnRpdGxlVGVtcGxhdGU7XG5cbiAgICBpZiAodGhpcy5oYXNQYWdlVGl0bGUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyUmVmLm9ic2VydmUodGhpcy5wYWdlVGl0bGUubmF0aXZlRWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0VGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVGl0bGVUZW1wbGF0ZSB8fCB0aGlzLnNpbXBsZVRpdGxlVGVtcGxhdGU7XG4gICAgLy8gdHNsaW50OmRpc2FibGU6cHJldHRpZXJcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICB0aGlzLnRvb2xiYXJUaXRsZVRlbXBsYXRlID0gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgPyB0aGlzLmN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlXG4gICAgICA6IHR5cGVvZiB0aGlzLnRvb2xiYXJUaXRsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgPyB0aGlzLnNpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlXG4gICAgICAgIDogZGVmYXVsdFRpdGxlVGVtcGxhdGU7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVBY3Rpb25zKCkge1xuICAgIHRoaXMuY3VzdG9tQWN0aW9ucy5mb3JFYWNoKChwYWdlQWN0aW9uKSA9PiB7XG4gICAgICBpZiAocGFnZUFjdGlvbi5pc0ZpeGVkKSB7XG4gICAgICAgIHRoaXMuZml4ZWRBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgICB0aGlzLnRvb2xiYXJGaXhlZEFjdGlvbnNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICAgIGlmIChwYWdlQWN0aW9uLmlzU3RpY2t5KSB7XG4gICAgICAgICAgdGhpcy5zdGlja3lBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5oYXNBY3Rpb25zSW5QYWdlID0gISF0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGU7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb250ZW50KCkge1xuICAgIHRoaXMuY3VzdG9tQ29udGVudC5mb3JFYWNoKChjb250ZW50KSA9PiB7XG4gICAgICBpZiAoY29udGVudC5pc0ZpeGVkKSB7XG4gICAgICAgIHRoaXMuZml4ZWRDb250ZW50VGVtcGxhdGUgPSBjb250ZW50LnRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXN0b21Db250ZW50VGVtcGxhdGUgPSBjb250ZW50LnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVXcmFwcGVyKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHBhZ2VUaXRsZUludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICB9O1xuXG4gICAgbGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG4gICAgY29uc3QgY2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICB0aGlzLnRvb2xiYXJTdGlja3lBY3Rpb25zVmlzaWJsZSA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbFNob3cnLCBbJyRldmVudCddKVxuICBfb25LZXlib2FyZFdpbGxTaG93KGluZm8/OiB7IGtleWJvYXJkSGVpZ2h0OiBudW1iZXIgfSkge1xuICAgIGlmIChpbmZvICYmIGluZm8ua2V5Ym9hcmRIZWlnaHQpIHtcbiAgICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgJy0ta2V5Ym9hcmQtb2Zmc2V0JyxcbiAgICAgICAgYCR7aW5mby5rZXlib2FyZEhlaWdodH1weGBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmtleWJvYXJkV2lsbEhpZGUnKVxuICBfb25LZXlib2FyZFdpbGxIaWRlKCkge1xuICAgIHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1rZXlib2FyZC1vZmZzZXQnLCAnMHB4Jyk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvblxuICAgICAgICB0ZXh0PVwiXCJcbiAgICAgICAgW2RlZmF1bHRIcmVmXT1cImRlZmF1bHRCYWNrSHJlZlwiXG4gICAgICAgIGljb249XCJhc3NldHMva2lyYnkvaWNvbnMvc3ZnL2Fycm93LWJhY2suc3ZnXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZUJhY2tCdXR0b24gPyAnaGlkZGVuJyA6IG51bGxcIlxuICAgICAgPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXRpdGxlIGhpZGVcIiBbY2xhc3MuZmFkZS1pbl09XCJ0b29sYmFyVGl0bGVWaXNpYmxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b29sYmFyVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zXG4gICAgICBjbGFzcz1cImhpZGVcIlxuICAgICAgc2xvdD1cInByaW1hcnlcIlxuICAgICAgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhclN0aWNreUFjdGlvbnNWaXNpYmxlICYmIHN0aWNreUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0aWNreUFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi1idXR0b25zXG4gICAgICBjbGFzcz1cImhpZGVcIlxuICAgICAgc2xvdD1cInNlY29uZGFyeVwiXG4gICAgICBbY2xhc3MuZmFkZS1pbl09XCJ0b29sYmFyRml4ZWRBY3Rpb25zVmlzaWJsZSAmJiBmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpeGVkQWN0aW9uc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgPC9pb24tdG9vbGJhcj5cbjwvaW9uLWhlYWRlcj5cblxuPGlvbi1jb250ZW50IHNjcm9sbEV2ZW50cz1cInRydWVcIiBmb3JjZU92ZXJzY3JvbGw9XCJmYWxzZVwiPlxuICA8aW9uLXJlZnJlc2hlclxuICAgICpuZ0lmPVwicmVmcmVzaC5vYnNlcnZlcnMubGVuZ3RoID4gMFwiXG4gICAgKGlvblJlZnJlc2gpPVwiZGVsZWdhdGVSZWZyZXNoRXZlbnQoJGV2ZW50KVwiXG4gICAgc2xvdD1cImZpeGVkXCJcbiAgPlxuICAgIDxraXJieS1zcGlubmVyPjwva2lyYnktc3Bpbm5lcj5cbiAgPC9pb24tcmVmcmVzaGVyPlxuXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50LWlubmVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwYWdlLWhlYWRlclwiXG4gICAgICAqbmdJZj1cImhhc1BhZ2VUaXRsZVwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICd0ZXh0LWNlbnRlcic6IHRpdGxlQWxpZ25tZW50ID09PSAnY2VudGVyJyxcbiAgICAgICAgJ3RleHQtcmlnaHQnOiB0aXRsZUFsaWdubWVudCA9PT0gJ3JpZ2h0J1xuICAgICAgfVwiXG4gICAgPlxuICAgICAgPGRpdiAjcGFnZVRpdGxlIGNsYXNzPVwicGFnZS10aXRsZVwiIFtjbGFzcy5oYXMtYWN0aW9uc109XCJoYXNBY3Rpb25zSW5QYWdlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgZGVmYXVsdFBhZ2VUaXRsZVRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdlQWN0aW9uc1RlbXBsYXRlIHx8IGRlZmF1bHRQYWdlQWN0aW9uc1RlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaGFzUGFnZVN1YnRpdGxlXCIgY2xhc3M9XCJwYWdlLXN1YnRpdGxlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbVN1YnRpdGxlVGVtcGxhdGUgfHwgZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIENvbnRlbnQgLS0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21Db250ZW50VGVtcGxhdGUgfHwgZGVmYXVsdENvbnRlbnRUZW1wbGF0ZVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8ZGl2IHNsb3Q9XCJmaXhlZFwiIGNsYXNzPVwiZml4ZWQtY29udGVudFwiICpuZ0lmPVwiZml4ZWRDb250ZW50VGVtcGxhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9pb24tY29udGVudD5cblxuPGlvbi1mb290ZXI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuPC9pb24tZm9vdGVyPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZT5cbiAgPGgxIFtraXJieUZpdEhlYWRpbmddPVwiZml0SGVhZGluZ0NvbmZpZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW1wbGVUaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvaDE+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVN1YnRpdGxlVGVtcGxhdGU+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzaW1wbGVTdWJ0aXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1hY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29udGVudFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NpbXBsZVRpdGxlVGVtcGxhdGU+e3sgdGl0bGUgfX08L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzaW1wbGVTdWJ0aXRsZVRlbXBsYXRlPnt7IHN1YnRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGU+e3sgdG9vbGJhclRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -57,10 +57,10 @@ export class SlideButtonComponent {
57
57
  }
58
58
  }
59
59
  /** @nocollapse */ SlideButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SlideButtonComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
60
- /** @nocollapse */ SlideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SlideButtonComponent, selector: "kirby-slide-button", inputs: { text: "text", expand: "expand" }, outputs: { slideDone: "slideDone", slidingPercentageChanged: "slidingPercentageChanged" }, ngImport: i0, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;z-index:2}:host .slide-button::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-button::-moz-range-thumb{-moz-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
+ /** @nocollapse */ SlideButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: SlideButtonComponent, selector: "kirby-slide-button", inputs: { text: "text", expand: "expand" }, outputs: { slideDone: "slideDone", slidingPercentageChanged: "slidingPercentageChanged" }, ngImport: i0, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2}:host .slide-button::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-button::-moz-range-thumb{appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: SlideButtonComponent, decorators: [{
62
62
  type: Component,
63
- args: [{ selector: 'kirby-slide-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;z-index:2}:host .slide-button::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-button::-moz-range-thumb{-moz-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}\n"] }]
63
+ args: [{ selector: 'kirby-slide-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slide-button-container\" [ngClass]=\"{ 'slide-done': isSlideDone }\">\n <input\n type=\"range\"\n (mouseup)=\"onSliderMouseup()\"\n (touchend)=\"onSliderMouseup()\"\n (input)=\"onSliderValueChange($event.target.value)\"\n (mousedown)=\"onSliderMousedown()\"\n (touchstart)=\"onSliderMousedown()\"\n class=\"slide-button\"\n [value]=\"value\"\n max=\"100\"\n />\n <p class=\"slide-button-text slide-{{ pctInTens }}-pct\">{{ text }}</p>\n</div>\n", styles: [":host{position:relative;display:inline-block;width:256px;-webkit-user-select:none;user-select:none}:host[expand=block]{display:block;width:100%}:host .slide-button-container{width:100%;display:flex;justify-content:center;align-items:center;color:var(--kirby-primary-contrast);background-color:var(--kirby-primary);height:56px;border-radius:26px}:host .slide-10-pct{opacity:.9}:host .slide-20-pct{opacity:.8}:host .slide-30-pct{opacity:.7}:host .slide-40-pct{opacity:.6}:host .slide-50-pct{opacity:.5}:host .slide-60-pct{opacity:.4}:host .slide-70-pct{opacity:.3}:host .slide-80-pct{opacity:.2}:host .slide-90-pct{opacity:.1}:host .slide-100-pct{opacity:0}:host .slide-button-text{position:absolute;font-size:16px;margin:0;line-height:1;z-index:1;width:100%;text-align:center;padding:0 26px 0 56px}:host .slide-button{width:100%;height:100%;-webkit-appearance:none;appearance:none;background:transparent;z-index:2}:host .slide-button::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-button::-moz-range-thumb{appearance:none;border-radius:50%;background-color:var(--kirby-white);background-image:url(/assets/kirby/icons/svg/arrow-more.svg);background-repeat:no-repeat;background-position:center;background-size:24px;width:52px;height:52px;border:none;cursor:pointer}:host .slide-done{transition:all .3s ease-in-out;opacity:0;height:0;transform:scale(0);pointer-events:none}\n"] }]
64
64
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { text: [{
65
65
  type: Input
66
66
  }], expand: [{
@@ -206,11 +206,10 @@ export class MockPageComponent {
206
206
  this.enter = new EventEmitter();
207
207
  this.leave = new EventEmitter();
208
208
  this.refresh = new EventEmitter();
209
- this.backButtonClick = new EventEmitter();
210
209
  }
211
210
  }
212
211
  /** @nocollapse */ MockPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: MockPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
213
- /** @nocollapse */ MockPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: MockPageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, providers: [
212
+ /** @nocollapse */ MockPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: MockPageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh" }, providers: [
214
213
  {
215
214
  provide: PageComponent,
216
215
  useExisting: forwardRef((() => MockPageComponent)),
@@ -250,7 +249,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
250
249
  type: Output
251
250
  }], refresh: [{
252
251
  type: Output
253
- }], backButtonClick: [{
254
- type: Output
255
252
  }] } });
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3Rlc3RpbmctYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvbW9jay5wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHlCQUF5QixHQUUxQixNQUFNLDJCQUEyQixDQUFDOztBQUtuQyw2REFBNkQ7QUFVN0QsTUFBTSxPQUFPLHNCQUFzQjs7c0lBQXRCLHNCQUFzQjswSEFBdEIsc0JBQXNCLDJDQVB0QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixFQUFDO1NBQ3REO0tBQ0Y7MkZBRVUsc0JBQXNCO2tCQVRsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSx1QkFBdUIsRUFBQzt5QkFDdEQ7cUJBQ0Y7aUJBQ0Y7O0FBWUQsTUFBTSxPQUFPLHlCQUF5Qjs7eUlBQXpCLHlCQUF5Qjs2SEFBekIseUJBQXlCLDhDQVB6QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFD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LEVBQVEsQ0FBQztRQUNqQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNqQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDakQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO0tBQ3ZEOztpSUFiWSxpQkFBaUI7cUhBQWpCLGlCQUFpQiw0WUFQakI7UUFDVDtZQUNFLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLEVBQUM7U0FDakQ7S0FDRiwwQkFOUywyQkFBMkI7MkZBUTFCLGlCQUFpQjtrQkFWN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxrQkFBa0IsRUFBQzt5QkFDakQ7cUJBQ0Y7aUJBQ0Y7OEJBRVUsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgUGFnZUFjdGlvbnNDb21wb25lbnQsXG4gIFBhZ2VBY3Rpb25zRGlyZWN0aXZlLFxuICBQYWdlQ29tcG9uZW50LFxuICBQYWdlQ29udGVudENvbXBvbmVudCxcbiAgUGFnZUNvbnRlbnREaXJlY3RpdmUsXG4gIFBhZ2VQcm9ncmVzc0NvbXBvbmVudCxcbiAgUGFnZVN1YnRpdGxlRGlyZWN0aXZlLFxuICBQYWdlVGl0bGVDb21wb25lbnQsXG4gIFBhZ2VUaXRsZURpcmVjdGl2ZSxcbiAgUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSxcbiAgUHVsbFRvUmVmcmVzaEV2ZW50LFxufSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtJztcblxudHlwZSBzdGlja3lDb25maWcgPSB7IHN0aWNreTogYm9vbGVhbiB9O1xudHlwZSBmaXhlZENvbmZpZyA9IHsgZml4ZWQ6IGJvb2xlYW4gfTtcblxuLy8gI3JlZ2lvbiBBVVRPLUdFTkVSQVRFRCAtIFBMRUFTRSBET04nVCBFRElUIENPTlRFTlQgV0lUSElOIVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRpdGxlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VUaXRsZURpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlVGl0bGVEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlU3VidGl0bGVEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlU3VidGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRvb2xiYXJUaXRsZV0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ja1BhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VBY3Rpb25zXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VBY3Rpb25zRGlyZWN0aXZlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ja1BhZ2VBY3Rpb25zRGlyZWN0aXZlKSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2NrUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlQ29udGVudF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlQ29udGVudERpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlQ29udGVudERpcmVjdGl2ZSksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ja1BhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1wcm9ncmVzcycsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VQcm9ncmVzc0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlUHJvZ3Jlc3NDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlUHJvZ3Jlc3NDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VUaXRsZUNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlVGl0bGVDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlVGl0bGVDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUGFnZUNvbnRlbnRDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNb2NrUGFnZUNvbnRlbnRDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlQ29udGVudENvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlQWN0aW9uc0NvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ja1BhZ2VBY3Rpb25zQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ja1BhZ2VDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdG9vbGJhclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlQWxpZ25tZW50OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG4gIEBJbnB1dCgpIGRlZmF1bHRCYWNrSHJlZjogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlQmFja0J1dHRvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGl0bGVNYXhMaW5lczogbnVtYmVyO1xuICBASW5wdXQoKSB0YWJCYXJCb3R0b21IaWRkZW46IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuICBAT3V0cHV0KCkgYmFja0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbn1cblxuLy8gI2VuZHJlZ2lvblxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5wYWdlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3Rlc3RpbmctYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvbW9jay5wYWdlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUYsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLHlCQUF5QixHQUUxQixNQUFNLDJCQUEyQixDQUFDOztBQUtuQyw2REFBNkQ7QUFVN0QsTUFBTSxPQUFPLHNCQUFzQjs7c0lBQXRCLHNCQUFzQjswSEFBdEIsc0JBQXNCLDJDQVB0QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLHNCQUFzQixFQUFDO1NBQ3REO0tBQ0Y7MkZBRVUsc0JBQXNCO2tCQVRsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSx1QkFBdUIsRUFBQzt5QkFDdEQ7cUJBQ0Y7aUJBQ0Y7O0FBWUQsTUFBTSxPQUFPLHlCQUF5Qjs7eUlBQXpCLHlCQUF5Qjs2SEFBekIseUJBQXlCLDhDQVB6QjtRQUNUO1lBQ0UsT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFD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LEVBQVEsQ0FBQztRQUNqQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNqQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7S0FDNUQ7O2lJQVpZLGlCQUFpQjtxSEFBakIsaUJBQWlCLHdXQVBqQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGFBQWE7WUFDdEIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBQztTQUNqRDtLQUNGLDBCQU5TLDJCQUEyQjsyRkFRMUIsaUJBQWlCO2tCQVY3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLGtCQUFrQixFQUFDO3lCQUNqRDtxQkFDRjtpQkFDRjs4QkFFVSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csT0FBTztzQkFBaEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgUGFnZUFjdGlvbnNDb21wb25lbnQsXG4gIFBhZ2VBY3Rpb25zRGlyZWN0aXZlLFxuICBQYWdlQ29tcG9uZW50LFxuICBQYWdlQ29udGVudENvbXBvbmVudCxcbiAgUGFnZUNvbnRlbnREaXJlY3RpdmUsXG4gIFBhZ2VQcm9ncmVzc0NvbXBvbmVudCxcbiAgUGFnZVN1YnRpdGxlRGlyZWN0aXZlLFxuICBQYWdlVGl0bGVDb21wb25lbnQsXG4gIFBhZ2VUaXRsZURpcmVjdGl2ZSxcbiAgUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSxcbiAgUHVsbFRvUmVmcmVzaEV2ZW50LFxufSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtJztcblxudHlwZSBzdGlja3lDb25maWcgPSB7IHN0aWNreTogYm9vbGVhbiB9O1xudHlwZSBmaXhlZENvbmZpZyA9IHsgZml4ZWQ6IGJvb2xlYW4gfTtcblxuLy8gI3JlZ2lvbiBBVVRPLUdFTkVSQVRFRCAtIFBMRUFTRSBET04nVCBFRElUIENPTlRFTlQgV0lUSElOIVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRpdGxlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VUaXRsZURpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlVGl0bGVEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlU3VidGl0bGVEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlU3VidGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRvb2xiYXJUaXRsZV0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ja1BhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VBY3Rpb25zXScsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VBY3Rpb25zRGlyZWN0aXZlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ja1BhZ2VBY3Rpb25zRGlyZWN0aXZlKSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2NrUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlQ29udGVudF0nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlQ29udGVudERpcmVjdGl2ZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlQ29udGVudERpcmVjdGl2ZSksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ja1BhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1wcm9ncmVzcycsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VQcm9ncmVzc0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlUHJvZ3Jlc3NDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlUHJvZ3Jlc3NDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBhZ2VUaXRsZUNvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlVGl0bGVDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlVGl0bGVDb21wb25lbnQge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogUGFnZUNvbnRlbnRDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNb2NrUGFnZUNvbnRlbnRDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlQ29udGVudENvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlQWN0aW9uc0NvbXBvbmVudCxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vY2tQYWdlQWN0aW9uc0NvbXBvbmVudCksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ja1BhZ2VBY3Rpb25zQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UnLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQYWdlQ29tcG9uZW50LFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTW9ja1BhZ2VDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vY2tQYWdlQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdG9vbGJhclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlQWxpZ25tZW50OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG4gIEBJbnB1dCgpIGRlZmF1bHRCYWNrSHJlZjogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlQmFja0J1dHRvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGl0bGVNYXhMaW5lczogbnVtYmVyO1xuICBASW5wdXQoKSB0YWJCYXJCb3R0b21IaWRkZW46IGJvb2xlYW47XG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xufVxuXG4vLyAjZW5kcmVnaW9uXG4iXX0=
@@ -1401,11 +1401,10 @@ class MockPageComponent {
1401
1401
  this.enter = new EventEmitter();
1402
1402
  this.leave = new EventEmitter();
1403
1403
  this.refresh = new EventEmitter();
1404
- this.backButtonClick = new EventEmitter();
1405
1404
  }
1406
1405
  }
1407
1406
  /** @nocollapse */ MockPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: MockPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1408
- /** @nocollapse */ MockPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: MockPageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, providers: [
1407
+ /** @nocollapse */ MockPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: MockPageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh" }, providers: [
1409
1408
  {
1410
1409
  provide: PageComponent,
1411
1410
  useExisting: forwardRef((() => MockPageComponent)),
@@ -1445,8 +1444,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
1445
1444
  type: Output
1446
1445
  }], refresh: [{
1447
1446
  type: Output
1448
- }], backButtonClick: [{
1449
- type: Output
1450
1447
  }] } });
1451
1448
 
1452
1449
  // #region AUTO-GENERATED - PLEASE DON'T EDIT CONTENT WITHIN!