@skyux/tabs 5.0.2 → 5.1.0

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 (41) hide show
  1. package/bundles/skyux-tabs-testing.umd.js +1 -1
  2. package/bundles/skyux-tabs.umd.js +267 -299
  3. package/documentation.json +598 -587
  4. package/esm2015/modules/sectioned-form/sectioned-form-section.component.js +14 -19
  5. package/esm2015/modules/sectioned-form/sectioned-form.component.js +18 -18
  6. package/esm2015/modules/sectioned-form/sectioned-form.module.js +10 -18
  7. package/esm2015/modules/sectioned-form/sectioned-form.service.js +4 -4
  8. package/esm2015/modules/shared/sky-tabs-resources.module.js +23 -12
  9. package/esm2015/modules/tabs/tab-button.component.js +19 -8
  10. package/esm2015/modules/tabs/tab.component.js +13 -14
  11. package/esm2015/modules/tabs/tabs.module.js +10 -16
  12. package/esm2015/modules/tabs/tabset-active-tab-unregistered-args.js +1 -1
  13. package/esm2015/modules/tabs/tabset-adapter.service.js +8 -6
  14. package/esm2015/modules/tabs/tabset-nav-button.component.js +8 -8
  15. package/esm2015/modules/tabs/tabset-permalink.service.js +14 -9
  16. package/esm2015/modules/tabs/tabset-tab-indexes-change.js +1 -1
  17. package/esm2015/modules/tabs/tabset.component.js +38 -35
  18. package/esm2015/modules/tabs/tabset.service.js +10 -11
  19. package/esm2015/modules/vertical-tabset/vertical-tab-media-query.service.js +9 -9
  20. package/esm2015/modules/vertical-tabset/vertical-tab.component.js +40 -26
  21. package/esm2015/modules/vertical-tabset/vertical-tabset-adapter.service.js +5 -5
  22. package/esm2015/modules/vertical-tabset/vertical-tabset-group.component.js +10 -56
  23. package/esm2015/modules/vertical-tabset/vertical-tabset.component.js +28 -25
  24. package/esm2015/modules/vertical-tabset/vertical-tabset.module.js +19 -19
  25. package/esm2015/modules/vertical-tabset/vertical-tabset.service.js +8 -8
  26. package/esm2015/testing/tabs/tab-fixture-tab.js +1 -1
  27. package/esm2015/testing/tabs/tabset-fixture.js +2 -2
  28. package/fesm2015/skyux-tabs-testing.js +1 -1
  29. package/fesm2015/skyux-tabs-testing.js.map +1 -1
  30. package/fesm2015/skyux-tabs.js +275 -294
  31. package/fesm2015/skyux-tabs.js.map +1 -1
  32. package/modules/sectioned-form/sectioned-form-section.component.d.ts +0 -3
  33. package/modules/tabs/tab-button.component.d.ts +2 -2
  34. package/modules/tabs/tabset.component.d.ts +1 -1
  35. package/modules/vertical-tabset/vertical-tab.component.d.ts +8 -13
  36. package/modules/vertical-tabset/vertical-tabset-group.component.d.ts +2 -2
  37. package/modules/vertical-tabset/vertical-tabset.component.d.ts +17 -2
  38. package/modules/vertical-tabset/vertical-tabset.module.d.ts +4 -3
  39. package/package.json +11 -11
  40. package/bundles/skyux-tabs-testing.umd.js.map +0 -1
  41. package/bundles/skyux-tabs.umd.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, HostListener, Input, ViewChild } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, HostListener, Input, ViewChild, } from '@angular/core';
2
2
  import { SkyMediaQueryService } from '@skyux/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import { takeUntil } from 'rxjs/operators';
@@ -9,6 +9,8 @@ import * as i2 from "./vertical-tabset.service";
9
9
  import * as i3 from "./vertical-tab-media-query.service";
10
10
  import * as i4 from "@skyux/indicators";
11
11
  import * as i5 from "@angular/common";
12
+ import * as i6 from "@skyux/core";
13
+ let nextId = 0;
12
14
  export class SkyVerticalTabComponent {
13
15
  constructor(adapterService, changeRef, tabsetService, verticalTabMediaQueryService) {
14
16
  this.adapterService = adapterService;
@@ -28,23 +30,17 @@ export class SkyVerticalTabComponent {
28
30
  * @internal This is used for sectioned forms and is not currently a supported design for pure vertical tabs.
29
31
  */
30
32
  this.errorIndicator = false;
33
+ /**
34
+ * Specifies an ID for the tab.
35
+ * @deprecated Now that the vertical tabs provide aria labels automatically, this input is no longer necessary.
36
+ */
37
+ this.tabId = `sky-vertical-tab-${++nextId}`;
31
38
  this.isMobile = false;
32
39
  this._contentRendered = false;
33
40
  this._mobileSubscription = new Subject();
34
41
  this._ngUnsubscribe = new Subject();
35
42
  this._showTabRightArrow = false;
36
43
  }
37
- /**
38
- * Specifies the HTML element ID (without the leading `#`) of the element that contains
39
- * the content that the vertical tab displays, which corresponds to the `tabId`. This property
40
- * [supports accessibility rules for disclosures](https://www.w3.org/TR/wai-aria-practices-1.1/#disclosure).
41
- */
42
- get ariaControls() {
43
- return this.isMobile ? undefined : this._ariaControls;
44
- }
45
- set ariaControls(value) {
46
- this._ariaControls = value;
47
- }
48
44
  /**
49
45
  * Specifies an ARIA role for the vertical tab
50
46
  * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility)
@@ -52,6 +48,8 @@ export class SkyVerticalTabComponent {
52
48
  * an ARIA role indicates what an item represents on a web page, see the
53
49
  * [WAI-ARIA roles model](https://www.w3.org/WAI/PF/aria/roles).
54
50
  * @default "tab"
51
+ * @deprecated Any other value than `tab` could lead to a poor user experience for users with assistive technology.
52
+ * In the next major version, this property will be automatically set to `tab`.
55
53
  */
56
54
  get ariaRole() {
57
55
  if (this.isMobile) {
@@ -88,8 +86,7 @@ export class SkyVerticalTabComponent {
88
86
  ngOnInit() {
89
87
  this.isMobile = this.tabsetService.isMobile();
90
88
  this.changeRef.markForCheck();
91
- this.tabsetService.switchingMobile
92
- .subscribe((mobile) => {
89
+ this.tabsetService.switchingMobile.subscribe((mobile) => {
93
90
  this.isMobile = mobile;
94
91
  this.changeRef.markForCheck();
95
92
  });
@@ -125,6 +122,21 @@ export class SkyVerticalTabComponent {
125
122
  this.changeRef.markForCheck();
126
123
  }
127
124
  }
125
+ onTabButtonKeyUp(event) {
126
+ /*istanbul ignore else */
127
+ if (event.key) {
128
+ switch (event.key.toUpperCase()) {
129
+ case ' ':
130
+ case 'ENTER':
131
+ this.activateTab();
132
+ event.stopPropagation();
133
+ break;
134
+ /* istanbul ignore next */
135
+ default:
136
+ break;
137
+ }
138
+ }
139
+ }
128
140
  onWindowResize() {
129
141
  this.updateBreakpointAndResponsiveClass(this.adapterService.getWidth(this.tabContent));
130
142
  }
@@ -138,12 +150,15 @@ export class SkyVerticalTabComponent {
138
150
  this.changeRef.markForCheck();
139
151
  }
140
152
  }
141
- SkyVerticalTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyVerticalTabMediaQueryService }], target: i0.ɵɵFactoryTarget.Component });
142
- SkyVerticalTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: { active: "active", ariaControls: "ariaControls", ariaInvalid: "ariaInvalid", ariaRequired: "ariaRequired", ariaRole: "ariaRole", disabled: "disabled", errorIndicator: "errorIndicator", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", showTabRightArrow: "showTabRightArrow", tabId: "tabId" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [
153
+ SkyVerticalTabComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabComponent, deps: [{ token: i1.SkyVerticalTabsetAdapterService }, { token: i0.ChangeDetectorRef }, { token: i2.SkyVerticalTabsetService }, { token: i3.SkyVerticalTabMediaQueryService }], target: i0.ɵɵFactoryTarget.Component });
154
+ SkyVerticalTabComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyVerticalTabComponent, selector: "sky-vertical-tab", inputs: { active: "active", ariaControls: "ariaControls", ariaRole: "ariaRole", disabled: "disabled", errorIndicator: "errorIndicator", tabHeaderCount: "tabHeaderCount", tabHeading: "tabHeading", showTabRightArrow: "showTabRightArrow", tabId: "tabId" }, host: { listeners: { "window:resize": "onWindowResize()" } }, providers: [
143
155
  SkyVerticalTabMediaQueryService,
144
- { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }
145
- ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"ariaControls\"\n [attr.aria-invalid]=\"ariaInvalid\"\n [attr.aria-required]=\"ariaRequired ? ariaRequired : null\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup.enter)=\"activateTab()\">\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\">\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div\n #tabContentWrapper\n>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n [ngClass]=\"{'sky-vertical-tab-hidden': !active}\"\n >\n\n <ng-content></ng-content>\n\n <div>\n\n</div>\n\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:3px solid #00b4f1;color:#212327;padding-left:7px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:7px;border-left:3px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:3px solid #00b4f1;color:#212327;padding-left:7px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:7px;border-left:3px solid #1870B8}\n"], components: [{ type: i4.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
156
+ {
157
+ provide: SkyMediaQueryService,
158
+ useExisting: SkyVerticalTabMediaQueryService,
159
+ },
160
+ ], viewQueries: [{ propertyName: "tabContent", first: true, predicate: ["tabContentWrapper"], descendants: true }], ngImport: i0, template: "<a\n class=\"sky-vertical-tab\"\n [attr.aria-controls]=\"isMobile ? null : ariaControls || tabContentPane.id\"\n [attr.aria-selected]=\"active\"\n [attr.id]=\"tabId\"\n [attr.role]=\"ariaRole\"\n [ngClass]=\"{\n 'sky-vertical-tab-active': active,\n 'sky-vertical-tab-disabled': disabled,\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled\n }\"\n [tabIndex]=\"tabIndex()\"\n (click)=\"activateTab()\"\n (keyup)=\"onTabButtonKeyUp($event)\"\n>\n <div class=\"sky-vertical-tab-display\">\n <div class=\"sky-vertical-tab-heading\">\n <span class=\"sky-vertical-tab-heading-value\">{{ tabHeading }}</span>\n <span\n class=\"sky-vertical-tab-count\"\n *ngIf=\"tabHeaderCount || tabHeaderCount === 0\"\n >\n ({{ tabHeaderCount }})\n </span>\n </div>\n <sky-status-indicator\n *ngIf=\"errorIndicator\"\n class=\"sky-vertical-tab-heading-error\"\n descriptionType=\"error\"\n indicatorType=\"danger\"\n ></sky-status-indicator>\n <sky-icon\n *ngIf=\"showTabRightArrow\"\n class=\"sky-vertical-tab-right-arrow\"\n icon=\"chevron-right\"\n >\n </sky-icon>\n </div>\n</a>\n\n<div #tabContentWrapper>\n <div\n class=\"sky-vertical-tab-content-pane\"\n role=\"tabpanel\"\n tabindex=\"0\"\n skyId\n [attr.aria-labelledby]=\"tabId\"\n [ngClass]=\"{ 'sky-vertical-tab-hidden': !active }\"\n #tabContentPane\n >\n <ng-content></ng-content>\n\n <div></div>\n </div>\n</div>\n", styles: [".sky-vertical-tab{cursor:pointer;padding:7px 0 7px 10px;margin:5px 0 5px 10px;display:flex;text-decoration:none}.sky-vertical-tab:not(.sky-deemphasized){color:#212327}.sky-vertical-tab:hover{background-color:#eeeeef}.sky-vertical-tab:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tab:hover .sky-vertical-tab-right-arrow{color:#979ba2}.sky-vertical-tab-active{background-color:#eeeeef;color:#212327;padding-left:6px;border-left:4px solid #00b4f1}.sky-vertical-tab-hidden{display:none}.sky-vertical-tab-display{display:flex;flex-grow:1}.sky-vertical-tab-heading-error{padding-left:5px}.sky-vertical-tab-count{margin-left:5px}.sky-vertical-tab-disabled{cursor:not-allowed;pointer-events:none}.sky-vertical-tab-right-arrow{padding:3px 10px 0 0;color:#cdcfd2}:host-context(.sky-theme-modern) .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}:host-context(.sky-theme-modern) .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}:host-context(.sky-theme-modern) .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}:host-context(.sky-theme-modern) .sky-vertical-tab:focus:active:hover{outline:none;background:none}:host-context(.sky-theme-modern) .sky-vertical-tab:active{border-left:3px solid #00b4f1;color:#212327;padding-left:7px}:host-context(.sky-theme-modern) .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}:host-context(.sky-theme-modern) .sky-vertical-tab-active{background:none;color:#212327;padding-left:7px;border-left:3px solid #1870B8}.sky-theme-modern .sky-vertical-tab{color:#686c73;cursor:pointer;padding:10px 0 10px 10px;margin:10px 0 20px 10px}.sky-theme-modern .sky-vertical-tab:not(.sky-vertical-tab-active):not(:active):hover{color:#212327;background-color:transparent;padding-left:9px;border-left:1px solid #00b4f1}.sky-theme-modern .sky-vertical-tab:not(:active):focus-visible{outline:solid 2px #1870B8;outline-offset:-2px;box-shadow:0 1px 8px #0000004d}.sky-theme-modern .sky-vertical-tab:focus:active:hover{outline:none;background:none}.sky-theme-modern .sky-vertical-tab:active{border-left:3px solid #00b4f1;color:#212327;padding-left:7px}.sky-theme-modern .sky-vertical-tab .sky-vertical-tab-heading-error{padding-left:10px;position:relative;top:-2px}.sky-theme-modern .sky-vertical-tab-active{background:none;color:#212327;padding-left:7px;border-left:3px solid #1870B8}\n"], components: [{ type: i4.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription"] }, { type: i4.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.λ2, selector: "[skyId]", exportAs: ["skyId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabComponent, decorators: [{
147
162
  type: Component,
148
163
  args: [{
149
164
  selector: 'sky-vertical-tab',
@@ -151,18 +166,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
151
166
  styleUrls: ['./vertical-tab.component.scss'],
152
167
  providers: [
153
168
  SkyVerticalTabMediaQueryService,
154
- { provide: SkyMediaQueryService, useExisting: SkyVerticalTabMediaQueryService }
169
+ {
170
+ provide: SkyMediaQueryService,
171
+ useExisting: SkyVerticalTabMediaQueryService,
172
+ },
155
173
  ],
156
- changeDetection: ChangeDetectionStrategy.OnPush
174
+ changeDetection: ChangeDetectionStrategy.OnPush,
157
175
  }]
158
176
  }], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetAdapterService }, { type: i0.ChangeDetectorRef }, { type: i2.SkyVerticalTabsetService }, { type: i3.SkyVerticalTabMediaQueryService }]; }, propDecorators: { active: [{
159
177
  type: Input
160
178
  }], ariaControls: [{
161
179
  type: Input
162
- }], ariaInvalid: [{
163
- type: Input
164
- }], ariaRequired: [{
165
- type: Input
166
180
  }], ariaRole: [{
167
181
  type: Input
168
182
  }], disabled: [{
@@ -184,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
184
198
  type: HostListener,
185
199
  args: ['window:resize']
186
200
  }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsT0FBTyxFQUNSLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUNMLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCwrQkFBK0IsRUFDaEMsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7OztBQW9CNUMsTUFBTSxPQUFPLHVCQUF1QjtJQW1JbEMsWUFDVSxjQUErQyxFQUMvQyxTQUE0QixFQUM1QixhQUF1QyxFQUN2Qyw0QkFBNkQ7UUFIN0QsbUJBQWMsR0FBZCxjQUFjLENBQWlDO1FBQy9DLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2QyxpQ0FBNEIsR0FBNUIsNEJBQTRCLENBQWlDO1FBdEl2RTs7V0FFRztRQUVJLFdBQU0sR0FBWSxLQUFLLENBQUM7UUE4Qy9COztXQUVHO1FBRUksYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFFSSxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQXVEL0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU1qQixxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFF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QUFXLEVBQUUsK0JBQStCLEVBQUU7S0FDaEYsMklDM0NILGk5Q0F3REE7NEZEVmEsdUJBQXVCO2tCQVZuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSwrQkFBK0I7b0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO29CQUM1QyxTQUFTLEVBQUU7d0JBQ1QsK0JBQStCO3dCQUMvQixFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsK0JBQStCLEVBQUU7cUJBQ2hGO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDsyT0FNUSxNQUFNO3NCQURaLEtBQUs7Z0JBU0ssWUFBWTtzQkFEdEIsS0FBSztnQkFZQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBWUssUUFBUTtzQkFEbEIsS0FBSztnQkFlQyxRQUFRO3NCQURkLEtBQUs7Z0JBUUMsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxjQUFjO3NCQURwQixLQUFLO2dCQVFDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBUUssaUJBQWlCO3NCQUQzQixLQUFLO2dCQWFDLEtBQUs7c0JBRFgsS0FBSztnQkFzQkMsVUFBVTtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBd0V2QixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5TWVkaWFRdWVyeVNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQge1xuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lWZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlXG59IGZyb20gJy4vdmVydGljYWwtdGFiLW1lZGlhLXF1ZXJ5LnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2Vcbn0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQuc2VydmljZSc7XG5cbmltcG9ydCB7XG4gIFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2Vcbn0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQtYWRhcHRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXZlcnRpY2FsLXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICB7IHByb3ZpZGU6IFNreU1lZGlhUXVlcnlTZXJ2aWNlLCB1c2VFeGlzdGluZzogU2t5VmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZSB9XG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFiQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHRhYiBpcyBhY3RpdmUgd2hlbiB0aGUgdGFic2V0IGxvYWRzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgY29udGFpbnNcbiAgICogdGhlIGNvbnRlbnQgdGhhdCB0aGUgdmVydGljYWwgdGFiIGRpc3BsYXlzLCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgYHRhYklkYC4gVGhpcyBwcm9wZXJ0eVxuICAgKiBbc3VwcG9ydHMgYWNjZXNzaWJpbGl0eSBydWxlcyBmb3IgZGlzY2xvc3VyZXNdKGh0dHBzOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS1wcmFjdGljZXMtMS4xLyNkaXNjbG9zdXJlKS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgYXJpYUNvbnRyb2xzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiB0aGlzLl9hcmlhQ29udHJvbHM7XG4gIH1cbiAgcHVibGljIHNldCBhcmlhQ29udHJvbHModmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2FyaWFDb250cm9scyA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFJbnZhbGlkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhUmVxdWlyZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIHJvbGUgZm9yIHRoZSB2ZXJ0aWNhbCB0YWJcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KVxuICAgKiBieSBpbmRpY2F0aW5nIGhvdyB0aGUgdGFiIGZ1bmN0aW9ucyBhbmQgd2hhdCBpdCBjb250cm9scy4gRm9yIGluZm9ybWF0aW9uIGFib3V0IGhvd1xuICAgKiBhbiBBUklBIHJvbGUgaW5kaWNhdGVzIHdoYXQgYW4gaXRlbSByZXByZXNlbnRzIG9uIGEgd2ViIHBhZ2UsIHNlZSB0aGVcbiAgICogW1dBSS1BUklBIHJvbGVzIG1vZGVsXShodHRwczovL3d3dy53My5vcmcvV0FJL1BGL2FyaWEvcm9sZXMpLlxuICAgKiBAZGVmYXVsdCBcInRhYlwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGFyaWFSb2xlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuaXNNb2JpbGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hcmlhUm9sZSB8fCAndGFiJztcbiAgfVxuICBwdWJsaWMgc2V0IGFyaWFSb2xlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hcmlhUm9sZSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIHRhYi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBpbmRpY2F0ZSB0aGF0IHRoZSB0YWIgaGFzIGFuIGVycm9yLlxuICAgKiBAaW50ZXJuYWwgVGhpcyBpcyB1c2VkIGZvciBzZWN0aW9uZWQgZm9ybXMgYW5kIGlzIG5vdCBjdXJyZW50bHkgYSBzdXBwb3J0ZWQgZGVzaWduIGZvciBwdXJlIHZlcnRpY2FsIHRhYnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZXJyb3JJbmRpY2F0b3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogRGlzcGxheXMgYW4gaXRlbSBjb3VudCBhbG9uZ3NpZGUgdGhlIHRhYiBoZWFkZXIgdG8gaW5kaWNhdGUgaG93IG1hbnkgbGlzdCBpdGVtcyB0aGUgdGFiIGNvbnRhaW5zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYkhlYWRlckNvdW50OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGFiIGhlYWRlci5cbiAgICogQHJlcXVpcmVkXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFiSGVhZGluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGEgY2hldnJvbi1yaWdodCBpY29uIGluIHRoZSByaWdodGhhbmQgc2lkZSBvZiB0aGUgdGFiLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgc2hvd1RhYlJpZ2h0QXJyb3coKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUYWJSaWdodEFycm93ICYmIHRoaXMudGFic2V0U2VydmljZS5pc01vYmlsZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBzaG93VGFiUmlnaHRBcnJvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dUYWJSaWdodEFycm93ID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIElEIGZvciB0aGUgdGFiLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHNldCBjb250ZW50UmVuZGVyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jb250ZW50UmVuZGVyZWQgPSB2YWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuX2NvbnRlbnRSZW5kZXJlZCkge1xuICAgICAgLy8gTk9URTogV3JhcHBlZCBpbiBhIHNldFRpbWVvdXQgaGVyZSB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGhhcyBjb21wbGV0ZWQgcmVuZGVyaW5nLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyh0aGlzLmFkYXB0ZXJTZXJ2aWNlLmdldFdpZHRoKHRoaXMudGFiQ29udGVudCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjb250ZW50UmVuZGVyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRSZW5kZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBpbmRleDogbnVtYmVyO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkNvbnRlbnRXcmFwcGVyJylcbiAgcHVibGljIHRhYkNvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBpc01vYmlsZSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2FyaWFDb250cm9sczogc3RyaW5nO1xuXG4gIHByaXZhdGUgX2FyaWFSb2xlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfY29udGVudFJlbmRlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbW9iaWxlU3Vic2NyaXB0aW9uID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9zaG93VGFiUmlnaHRBcnJvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdGFic2V0U2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZTogU2t5VmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLnRhYnNldFNlcnZpY2UuaXNNb2JpbGUoKTtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMudGFic2V0U2VydmljZS5zd2l0Y2hpbmdNb2JpbGVcbiAgICAgIC5zdWJzY3JpYmUoKG1vYmlsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmlzTW9iaWxlID0gbW9iaWxlO1xuICAgICAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBicmVha3BvaW50IGFuZCByZXNwb25zaXZlIGNsYXNzIGhlcmUganVzdCBhcyBhIHNhbml0eSBjaGVjayBzaW5jZSB3ZSBjYW4gbm90XG4gICAgLy8gd2F0Y2ggZm9yIGVsZW1lbnQgcmVzaXppbmcuXG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmluZGV4Q2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IGluZGV4ICYmIHRoaXMuY29udGVudFJlbmRlcmVkKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHRoaXMuYWRhcHRlclNlcnZpY2UuZ2V0V2lkdGgodGhpcy50YWJDb250ZW50KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFkZFRhYih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2JpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmRlc3Ryb3lUYWIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgdGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlVGFiKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFjdGl2YXRlVGFiKHRoaXMpO1xuXG4gICAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyh0aGlzLmFkYXB0ZXJTZXJ2aWNlLmdldFdpZHRoKHRoaXMudGFiQ29udGVudCkpO1xuICB9XG5cbiAgcHVibGljIHRhYkRlYWN0aXZhdGVkKCk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2Uuc2V0QnJlYWtwb2ludEZvcldpZHRoKHdpZHRoKTtcblxuICAgIGNvbnN0IG5ld0JyZWFrcGlvbnQgPSB0aGlzLnZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2UuY3VycmVudDtcblxuICAgIHRoaXMuYWRhcHRlclNlcnZpY2Uuc2V0UmVzcG9uc2l2ZUNsYXNzKHRoaXMudGFiQ29udGVudCwgbmV3QnJlYWtwaW9udCk7XG5cbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPGFcbiAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiXCJcbiAgW2F0dHIuYXJpYS1jb250cm9sc109XCJhcmlhQ29udHJvbHNcIlxuICBbYXR0ci5hcmlhLWludmFsaWRdPVwiYXJpYUludmFsaWRcIlxuICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImFyaWFSZXF1aXJlZCA/IGFyaWFSZXF1aXJlZCA6IG51bGxcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImFjdGl2ZVwiXG4gIFthdHRyLmlkXT1cInRhYklkXCJcbiAgW2F0dHIucm9sZV09XCJhcmlhUm9sZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnc2t5LXZlcnRpY2FsLXRhYi1hY3RpdmUnOiBhY3RpdmUsXG4gICAgJ3NreS12ZXJ0aWNhbC10YWItZGlzYWJsZWQnOiBkaXNhYmxlZCxcbiAgICAnc2t5LWZvbnQtZGVlbXBoYXNpemVkJzogZGlzYWJsZWQsXG4gICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiBkaXNhYmxlZFxuICB9XCJcbiAgW3RhYkluZGV4XT1cInRhYkluZGV4KClcIlxuICAoY2xpY2spPVwiYWN0aXZhdGVUYWIoKVwiXG4gIChrZXl1cC5lbnRlcik9XCJhY3RpdmF0ZVRhYigpXCI+XG4gIDxkaXYgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLWRpc3BsYXlcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1oZWFkaW5nXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItaGVhZGluZy12YWx1ZVwiPnt7IHRhYkhlYWRpbmcgfX08L3NwYW4+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItY291bnRcIlxuICAgICAgICAqbmdJZj1cInRhYkhlYWRlckNvdW50IHx8IHRhYkhlYWRlckNvdW50ID09PSAwXCI+XG4gICAgICAgICh7eyB0YWJIZWFkZXJDb3VudCB9fSlcbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8c2t5LXN0YXR1cy1pbmRpY2F0b3IgKm5nSWY9XCJlcnJvckluZGljYXRvclwiXG4gICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItaGVhZGluZy1lcnJvclwiXG4gICAgICBkZXNjcmlwdGlvblR5cGU9XCJlcnJvclwiXG4gICAgICBpbmRpY2F0b3JUeXBlPVwiZGFuZ2VyXCJcbiAgICA+PC9za3ktc3RhdHVzLWluZGljYXRvcj5cbiAgICA8c2t5LWljb25cbiAgICAgICpuZ0lmPVwic2hvd1RhYlJpZ2h0QXJyb3dcIlxuICAgICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLXJpZ2h0LWFycm93XCJcbiAgICAgIGljb249XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICA+XG4gICAgPC9za3ktaWNvbj5cbiAgPC9kaXY+XG48L2E+XG5cbjxkaXZcbiAgI3RhYkNvbnRlbnRXcmFwcGVyXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItY29udGVudC1wYW5lXCJcbiAgICByb2xlPVwidGFicGFuZWxcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgW25nQ2xhc3NdPVwieydza3ktdmVydGljYWwtdGFiLWhpZGRlbic6ICFhY3RpdmV9XCJcbiAgPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gIDxkaXY+XG5cbjwvZGl2PlxuXG4iXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7OztBQU1yRixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFlZixNQUFNLE9BQU8sdUJBQXVCO0lBc0hsQyxZQUNVLGNBQStDLEVBQy9DLFNBQTRCLEVBQzVCLGFBQXVDLEVBQ3ZDLDRCQUE2RDtRQUg3RCxtQkFBYyxHQUFkLGNBQWMsQ0FBaUM7UUFDL0MsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsa0JBQWEsR0FBYixhQUFhLENBQTBCO1FBQ3ZDLGlDQUE0QixHQUE1Qiw0QkFBNEIsQ0FBaUM7UUF6SHZFOztXQUVHO1FBRUksV0FBTSxHQUFZLEtBQUssQ0FBQztRQWdDL0I7O1dBRUc7UUFFSSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRWpDOzs7V0FHRztRQUVJLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBNEJ2Qzs7O1dBR0c7UUFFSSxVQUFLLEdBQVcsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFzQi9DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFPaEIscUJBQWdCLEdBQVksS0FBSyxDQUFDO1FBRWxDLHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFcEMsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRS9CLHVCQUFrQixHQUFZLEtBQUssQ0FBQztJQU96QyxDQUFDO0lBM0dKOzs7Ozs7Ozs7T0FTRztJQUNILElBQ1csUUFBUTtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFXLFFBQVEsQ0FBQyxLQUFhO1FBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUE0QkQ7OztPQUdHO0lBQ0gsSUFDVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsRSxDQUFDO0lBRUQsSUFBVyxpQkFBaUIsQ0FBQyxLQUFjO1FBQ3pDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQVNELElBQVcsZUFBZSxDQUFDLEtBQWM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUU5QiwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsd0ZBQXdGO1lBQ3hGLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGtDQUFrQyxDQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzlDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBMEJNLFFBQVE7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUMvRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsMEZBQTBGO1FBQzFGLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVk7YUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsa0NBQWtDLENBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDOUMsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTyxDQUFDLENBQUM7U0FDVjthQUFNO1lBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFvQjtRQUMxQyx5QkFBeUI7UUFDekIsSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2IsUUFBUSxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUMvQixLQUFLLEdBQUcsQ0FBQztnQkFDVCxLQUFLLE9BQU87b0JBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNuQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7b0JBQ3hCLE1BQU07Z0JBQ1IsMEJBQTBCO2dCQUMxQjtvQkFDRSxNQUFNO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFHTSxjQUFjO1FBQ25CLElBQUksQ0FBQyxrQ0FBa0MsQ0FDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sa0NBQWtDLENBQUMsS0FBYTtRQUN0RCxJQUFJLENBQUMsNEJBQTRCLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFL0QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLE9BQU8sQ0FBQztRQUVoRSxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoQyxDQUFDOztxSEFoTlUsdUJBQXVCO3lHQUF2Qix1QkFBdUIsdVdBVHZCO1FBQ1QsK0JBQStCO1FBQy9CO1lBQ0UsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixXQUFXLEVBQUUsK0JBQStCO1NBQzdDO0tBQ0YsMklDcENILHUvQ0F3REE7NEZEakJhLHVCQUF1QjtrQkFibkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixXQUFXLEVBQUUsK0JBQStCO29CQUM1QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDNUMsU0FBUyxFQUFFO3dCQUNULCtCQUErQjt3QkFDL0I7NEJBQ0UsT0FBTyxFQUFFLG9CQUFvQjs0QkFDN0IsV0FBVyxFQUFFLCtCQUErQjt5QkFDN0M7cUJBQ0Y7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzJPQU1RLE1BQU07c0JBRFosS0FBSztnQkFVQyxZQUFZO3NCQURsQixLQUFLO2dCQWNLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBZUMsUUFBUTtzQkFEZCxLQUFLO2dCQVFDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSztnQkFRQyxVQUFVO3NCQURoQixLQUFLO2dCQVFLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkFjQyxLQUFLO3NCQURYLEtBQUs7Z0JBMEJDLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsbUJBQW1CO2dCQXFGdkIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lNZWRpYVF1ZXJ5U2VydmljZSB9IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFiTWVkaWFRdWVyeVNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi1tZWRpYS1xdWVyeS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlIH0gZnJvbSAnLi92ZXJ0aWNhbC10YWJzZXQuc2VydmljZSc7XG5cbmltcG9ydCB7IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UnO1xuXG5sZXQgbmV4dElkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXZlcnRpY2FsLXRhYicsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC10YWIuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBTa3lNZWRpYVF1ZXJ5U2VydmljZSxcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lWZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSB0YWIgaXMgYWN0aXZlIHdoZW4gdGhlIHRhYnNldCBsb2Fkcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBIVE1MIGVsZW1lbnQgSUQgKHdpdGhvdXQgdGhlIGxlYWRpbmcgYCNgKSBvZiB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zXG4gICAqIHRoZSBjb250ZW50IHRoYXQgdGhlIHZlcnRpY2FsIHRhYiBkaXNwbGF5cywgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGB0YWJJZGAuIFRoaXMgcHJvcGVydHlcbiAgICogW3N1cHBvcnRzIGFjY2Vzc2liaWxpdHkgcnVsZXMgZm9yIGRpc2Nsb3N1cmVzXShodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8jZGlzY2xvc3VyZSkuXG4gICAqIEBkZXByZWNhdGVkIE5vdyB0aGF0IHRoZSB2ZXJ0aWNhbCB0YWJzIHByb3ZpZGUgYXJpYSBsYWJlbHMgYXV0b21hdGljYWxseSwgdGhpcyBpbnB1dCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFDb250cm9sczogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gQVJJQSByb2xlIGZvciB0aGUgdmVydGljYWwgdGFiXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSlcbiAgICogYnkgaW5kaWNhdGluZyBob3cgdGhlIHRhYiBmdW5jdGlvbnMgYW5kIHdoYXQgaXQgY29udHJvbHMuIEZvciBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICogYW4gQVJJQSByb2xlIGluZGljYXRlcyB3aGF0IGFuIGl0ZW0gcmVwcmVzZW50cyBvbiBhIHdlYiBwYWdlLCBzZWUgdGhlXG4gICAqIFtXQUktQVJJQSByb2xlcyBtb2RlbF0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhL3JvbGVzKS5cbiAgICogQGRlZmF1bHQgXCJ0YWJcIlxuICAgKiBAZGVwcmVjYXRlZCBBbnkgb3RoZXIgdmFsdWUgdGhhbiBgdGFiYCBjb3VsZCBsZWFkIHRvIGEgcG9vciB1c2VyIGV4cGVyaWVuY2UgZm9yIHVzZXJzIHdpdGggYXNzaXN0aXZlIHRlY2hub2xvZ3kuXG4gICAqIEluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24sIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCB0byBgdGFiYC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgYXJpYVJvbGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2FyaWFSb2xlIHx8ICd0YWInO1xuICB9XG4gIHB1YmxpYyBzZXQgYXJpYVJvbGUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2FyaWFSb2xlID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgdGFiLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGluZGljYXRlIHRoYXQgdGhlIHRhYiBoYXMgYW4gZXJyb3IuXG4gICAqIEBpbnRlcm5hbCBUaGlzIGlzIHVzZWQgZm9yIHNlY3Rpb25lZCBmb3JtcyBhbmQgaXMgbm90IGN1cnJlbnRseSBhIHN1cHBvcnRlZCBkZXNpZ24gZm9yIHB1cmUgdmVydGljYWwgdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlcnJvckluZGljYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBhbiBpdGVtIGNvdW50IGFsb25nc2lkZSB0aGUgdGFiIGhlYWRlciB0byBpbmRpY2F0ZSBob3cgbWFueSBsaXN0IGl0ZW1zIHRoZSB0YWIgY29udGFpbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGFiSGVhZGVyQ291bnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0YWIgaGVhZGVyLlxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0YWJIZWFkaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBjaGV2cm9uLXJpZ2h0IGljb24gaW4gdGhlIHJpZ2h0aGFuZCBzaWRlIG9mIHRoZSB0YWIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBzaG93VGFiUmlnaHRBcnJvdygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd1RhYlJpZ2h0QXJyb3cgJiYgdGhpcy50YWJzZXRTZXJ2aWNlLmlzTW9iaWxlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0IHNob3dUYWJSaWdodEFycm93KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1RhYlJpZ2h0QXJyb3cgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gSUQgZm9yIHRoZSB0YWIuXG4gICAqIEBkZXByZWNhdGVkIE5vdyB0aGF0IHRoZSB2ZXJ0aWNhbCB0YWJzIHByb3ZpZGUgYXJpYSBsYWJlbHMgYXV0b21hdGljYWxseSwgdGhpcyBpbnB1dCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHRhYklkOiBzdHJpbmcgPSBgc2t5LXZlcnRpY2FsLXRhYi0keysrbmV4dElkfWA7XG5cbiAgcHVibGljIHNldCBjb250ZW50UmVuZGVyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9jb250ZW50UmVuZGVyZWQgPSB2YWx1ZTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuX2NvbnRlbnRSZW5kZXJlZCkge1xuICAgICAgLy8gTk9URTogV3JhcHBlZCBpbiBhIHNldFRpbWVvdXQgaGVyZSB0byBlbnN1cmUgdGhhdCBldmVyeXRoaW5nIGhhcyBjb21wbGV0ZWQgcmVuZGVyaW5nLlxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyhcbiAgICAgICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmdldFdpZHRoKHRoaXMudGFiQ29udGVudClcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGVudFJlbmRlcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9jb250ZW50UmVuZGVyZWQ7XG4gIH1cblxuICBwdWJsaWMgaW5kZXg6IG51bWJlcjtcblxuICBwdWJsaWMgaXNNb2JpbGUgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCd0YWJDb250ZW50V3JhcHBlcicpXG4gIHB1YmxpYyB0YWJDb250ZW50OiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2FyaWFSb2xlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfY29udGVudFJlbmRlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbW9iaWxlU3Vic2NyaXB0aW9uID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9uZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIF9zaG93VGFiUmlnaHRBcnJvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgdGFic2V0U2VydmljZTogU2t5VmVydGljYWxUYWJzZXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZTogU2t5VmVydGljYWxUYWJNZWRpYVF1ZXJ5U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNNb2JpbGUgPSB0aGlzLnRhYnNldFNlcnZpY2UuaXNNb2JpbGUoKTtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIHRoaXMudGFic2V0U2VydmljZS5zd2l0Y2hpbmdNb2JpbGUuc3Vic2NyaWJlKChtb2JpbGU6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMuaXNNb2JpbGUgPSBtb2JpbGU7XG4gICAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgYnJlYWtwb2ludCBhbmQgcmVzcG9uc2l2ZSBjbGFzcyBoZXJlIGp1c3QgYXMgYSBzYW5pdHkgY2hlY2sgc2luY2Ugd2UgY2FuIG5vdFxuICAgIC8vIHdhdGNoIGZvciBlbGVtZW50IHJlc2l6aW5nLlxuICAgIHRoaXMudGFic2V0U2VydmljZS5pbmRleENoYW5nZWRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmluZGV4ID09PSBpbmRleCAmJiB0aGlzLmNvbnRlbnRSZW5kZXJlZCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyhcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuZ2V0V2lkdGgodGhpcy50YWJDb250ZW50KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFkZFRhYih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2JpbGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLl9uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50YWJzZXRTZXJ2aWNlLmRlc3Ryb3lUYWIodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgdGFiSW5kZXgoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFjdGl2YXRlVGFiKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy50YWJzZXRTZXJ2aWNlLmFjdGl2YXRlVGFiKHRoaXMpO1xuXG4gICAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25UYWJCdXR0b25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZXZlbnQua2V5KSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleS50b1VwcGVyQ2FzZSgpKSB7XG4gICAgICAgIGNhc2UgJyAnOlxuICAgICAgICBjYXNlICdFTlRFUic6XG4gICAgICAgICAgdGhpcy5hY3RpdmF0ZVRhYigpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBwdWJsaWMgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVCcmVha3BvaW50QW5kUmVzcG9uc2l2ZUNsYXNzKFxuICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5nZXRXaWR0aCh0aGlzLnRhYkNvbnRlbnQpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB0YWJEZWFjdGl2YXRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQnJlYWtwb2ludEFuZFJlc3BvbnNpdmVDbGFzcyh3aWR0aDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52ZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlLnNldEJyZWFrcG9pbnRGb3JXaWR0aCh3aWR0aCk7XG5cbiAgICBjb25zdCBuZXdCcmVha3Bpb250ID0gdGhpcy52ZXJ0aWNhbFRhYk1lZGlhUXVlcnlTZXJ2aWNlLmN1cnJlbnQ7XG5cbiAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnNldFJlc3BvbnNpdmVDbGFzcyh0aGlzLnRhYkNvbnRlbnQsIG5ld0JyZWFrcGlvbnQpO1xuXG4gICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxhXG4gIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYlwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwiaXNNb2JpbGUgPyBudWxsIDogYXJpYUNvbnRyb2xzIHx8IHRhYkNvbnRlbnRQYW5lLmlkXCJcbiAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJhY3RpdmVcIlxuICBbYXR0ci5pZF09XCJ0YWJJZFwiXG4gIFthdHRyLnJvbGVdPVwiYXJpYVJvbGVcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ3NreS12ZXJ0aWNhbC10YWItYWN0aXZlJzogYWN0aXZlLFxuICAgICdza3ktdmVydGljYWwtdGFiLWRpc2FibGVkJzogZGlzYWJsZWQsXG4gICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6IGRpc2FibGVkLFxuICAgICdza3ktZGVlbXBoYXNpemVkJzogZGlzYWJsZWRcbiAgfVwiXG4gIFt0YWJJbmRleF09XCJ0YWJJbmRleCgpXCJcbiAgKGNsaWNrKT1cImFjdGl2YXRlVGFiKClcIlxuICAoa2V5dXApPVwib25UYWJCdXR0b25LZXlVcCgkZXZlbnQpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItZGlzcGxheVwiPlxuICAgIDxkaXYgY2xhc3M9XCJza3ktdmVydGljYWwtdGFiLWhlYWRpbmdcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1oZWFkaW5nLXZhbHVlXCI+e3sgdGFiSGVhZGluZyB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1jb3VudFwiXG4gICAgICAgICpuZ0lmPVwidGFiSGVhZGVyQ291bnQgfHwgdGFiSGVhZGVyQ291bnQgPT09IDBcIlxuICAgICAgPlxuICAgICAgICAoe3sgdGFiSGVhZGVyQ291bnQgfX0pXG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPHNreS1zdGF0dXMtaW5kaWNhdG9yXG4gICAgICAqbmdJZj1cImVycm9ySW5kaWNhdG9yXCJcbiAgICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYi1oZWFkaW5nLWVycm9yXCJcbiAgICAgIGRlc2NyaXB0aW9uVHlwZT1cImVycm9yXCJcbiAgICAgIGluZGljYXRvclR5cGU9XCJkYW5nZXJcIlxuICAgID48L3NreS1zdGF0dXMtaW5kaWNhdG9yPlxuICAgIDxza3ktaWNvblxuICAgICAgKm5nSWY9XCJzaG93VGFiUmlnaHRBcnJvd1wiXG4gICAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItcmlnaHQtYXJyb3dcIlxuICAgICAgaWNvbj1cImNoZXZyb24tcmlnaHRcIlxuICAgID5cbiAgICA8L3NreS1pY29uPlxuICA8L2Rpdj5cbjwvYT5cblxuPGRpdiAjdGFiQ29udGVudFdyYXBwZXI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWItY29udGVudC1wYW5lXCJcbiAgICByb2xlPVwidGFicGFuZWxcIlxuICAgIHRhYmluZGV4PVwiMFwiXG4gICAgc2t5SWRcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGFiSWRcIlxuICAgIFtuZ0NsYXNzXT1cInsgJ3NreS12ZXJ0aWNhbC10YWItaGlkZGVuJzogIWFjdGl2ZSB9XCJcbiAgICAjdGFiQ29udGVudFBhbmVcbiAgPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuICAgIDxkaXY+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Injectable, } from '@angular/core';
2
2
  import { SkyMediaBreakpoints } from '@skyux/core';
3
3
  import * as i0 from "@angular/core";
4
4
  export class SkyVerticalTabsetAdapterService {
@@ -40,9 +40,9 @@ export class SkyVerticalTabsetAdapterService {
40
40
  this.renderer.addClass(nativeEl, newClass);
41
41
  }
42
42
  }
43
- SkyVerticalTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabsetAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
44
- SkyVerticalTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabsetAdapterService });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabsetAdapterService, decorators: [{
43
+ SkyVerticalTabsetAdapterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetAdapterService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
44
+ SkyVerticalTabsetAdapterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetAdapterService });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetAdapterService, decorators: [{
46
46
  type: Injectable
47
47
  }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsRUFHWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ3BCLE1BQU0sYUFBYSxDQUFDOztBQUdyQixNQUFNLE9BQU8sK0JBQStCO0lBRzFDLFlBQ1UsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBRXpDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxRQUFRLENBQUMsVUFBc0I7UUFDcEMsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsT0FBbUI7UUFDM0MsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxPQUFtQixFQUFFLFVBQStCO1FBQzVFLE1BQU0sUUFBUSxHQUFnQixPQUFPLENBQUMsYUFBYSxDQUFDO1FBRXBELElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBRW5FLElBQUksUUFBZ0IsQ0FBQztRQUVyQixRQUFRLFVBQVUsRUFBRTtZQUNsQixLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixRQUFRLEdBQUcsNkJBQTZCLENBQUM7Z0JBQ3pDLE1BQU07YUFDUDtZQUNELEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztnQkFDekMsTUFBTTthQUNQO1lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsUUFBUSxHQUFHLDZCQUE2QixDQUFDO2dCQUN6QyxNQUFNO2FBQ1A7WUFDRCxPQUFPLENBQUMsQ0FBQztnQkFDUCxRQUFRLEdBQUcsNkJBQTZCLENBQUM7Z0JBQ3pDLE1BQU07YUFDUDtTQUNGO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7OzZIQS9DVSwrQkFBK0I7aUlBQS9CLCtCQUErQjs0RkFBL0IsK0JBQStCO2tCQUQzQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZixcbiAgSW5qZWN0YWJsZSxcbiAgUmVuZGVyZXIyLFxuICBSZW5kZXJlckZhY3RvcnkyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lNZWRpYUJyZWFrcG9pbnRzXG59IGZyb20gJ0Bza3l1eC9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVZlcnRpY2FsVGFic2V0QWRhcHRlclNlcnZpY2Uge1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTJcbiAgKSB7XG4gICAgdGhpcy5yZW5kZXJlciA9IHRoaXMucmVuZGVyZXJGYWN0b3J5LmNyZWF0ZVJlbmRlcmVyKHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXaWR0aChlbGVtZW50UmVmOiBFbGVtZW50UmVmKTogbnVtYmVyIHtcbiAgICByZXR1cm4gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbFRvQ29udGVudFRvcChlbGVtZW50OiBFbGVtZW50UmVmKTogdm9pZCB7XG4gICAgZWxlbWVudC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gIH1cblxuICBwdWJsaWMgc2V0UmVzcG9uc2l2ZUNsYXNzKGVsZW1lbnQ6IEVsZW1lbnRSZWYsIGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHMpOiB2b2lkIHtcbiAgICBjb25zdCBuYXRpdmVFbDogSFRNTEVsZW1lbnQgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLXhzJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1zbScpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItbWQnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLWxnJyk7XG5cbiAgICBsZXQgbmV3Q2xhc3M6IHN0cmluZztcblxuICAgIHN3aXRjaCAoYnJlYWtwb2ludCkge1xuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnhzOiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci14cyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLnNtOiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1zbSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBTa3lNZWRpYUJyZWFrcG9pbnRzLm1kOiB7XG4gICAgICAgIG5ld0NsYXNzID0gJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1tZCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBuZXdDbGFzcyA9ICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItbGcnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKG5hdGl2ZUVsLCBuZXdDbGFzcyk7XG4gIH1cbn1cbiJdfQ==
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC1hZGFwdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFVBQVUsR0FHWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBR2xELE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsZUFBaUM7UUFBakMsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ25ELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxRQUFRLENBQUMsVUFBc0I7UUFDcEMsT0FBTyxVQUFVLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsT0FBbUI7UUFDM0MsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxrQkFBa0IsQ0FDdkIsT0FBbUIsRUFDbkIsVUFBK0I7UUFFL0IsTUFBTSxRQUFRLEdBQWdCLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFFcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFFbkUsSUFBSSxRQUFnQixDQUFDO1FBRXJCLFFBQVEsVUFBVSxFQUFFO1lBQ2xCLEtBQUssbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzNCLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztnQkFDekMsTUFBTTthQUNQO1lBQ0QsS0FBSyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0IsUUFBUSxHQUFHLDZCQUE2QixDQUFDO2dCQUN6QyxNQUFNO2FBQ1A7WUFDRCxLQUFLLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixRQUFRLEdBQUcsNkJBQTZCLENBQUM7Z0JBQ3pDLE1BQU07YUFDUDtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNQLFFBQVEsR0FBRyw2QkFBNkIsQ0FBQztnQkFDekMsTUFBTTthQUNQO1NBQ0Y7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7NkhBaERVLCtCQUErQjtpSUFBL0IsK0JBQStCOzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbGVtZW50UmVmLFxuICBJbmplY3RhYmxlLFxuICBSZW5kZXJlcjIsXG4gIFJlbmRlcmVyRmFjdG9yeTIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lNZWRpYUJyZWFrcG9pbnRzIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRBZGFwdGVyU2VydmljZSB7XG4gIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5Mikge1xuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0V2lkdGgoZWxlbWVudFJlZjogRWxlbWVudFJlZik6IG51bWJlciB7XG4gICAgcmV0dXJuIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBzY3JvbGxUb0NvbnRlbnRUb3AoZWxlbWVudDogRWxlbWVudFJlZik6IHZvaWQge1xuICAgIGVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICB9XG5cbiAgcHVibGljIHNldFJlc3BvbnNpdmVDbGFzcyhcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIGJyZWFrcG9pbnQ6IFNreU1lZGlhQnJlYWtwb2ludHNcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgbmF0aXZlRWw6IEhUTUxFbGVtZW50ID0gZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci14cycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MobmF0aXZlRWwsICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItc20nKTtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKG5hdGl2ZUVsLCAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLW1kJyk7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhuYXRpdmVFbCwgJ3NreS1yZXNwb25zaXZlLWNvbnRhaW5lci1sZycpO1xuXG4gICAgbGV0IG5ld0NsYXNzOiBzdHJpbmc7XG5cbiAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHtcbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy54czoge1xuICAgICAgICBuZXdDbGFzcyA9ICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXIteHMnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy5zbToge1xuICAgICAgICBuZXdDbGFzcyA9ICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItc20nO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgU2t5TWVkaWFCcmVha3BvaW50cy5tZDoge1xuICAgICAgICBuZXdDbGFzcyA9ICdza3ktcmVzcG9uc2l2ZS1jb250YWluZXItbWQnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgbmV3Q2xhc3MgPSAnc2t5LXJlc3BvbnNpdmUtY29udGFpbmVyLWxnJztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhuYXRpdmVFbCwgbmV3Q2xhc3MpO1xuICB9XG59XG4iXX0=
@@ -1,13 +1,13 @@
1
- import { ChangeDetectionStrategy, Component, ContentChildren, Input } from '@angular/core';
2
- import { animate, style, transition, trigger } from '@angular/animations';
1
+ import { ChangeDetectionStrategy, Component, ContentChildren, Input, } from '@angular/core';
3
2
  import { Subject } from 'rxjs';
4
3
  import { takeUntil } from 'rxjs/operators';
5
4
  import { SkyVerticalTabComponent } from './vertical-tab.component';
5
+ import { skyAnimationSlide } from '@skyux/animations';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "./vertical-tabset.service";
8
8
  import * as i2 from "@skyux/indicators";
9
9
  import * as i3 from "@angular/common";
10
- import * as i4 from "@skyux/theme";
10
+ import * as i4 from "@skyux/core";
11
11
  export class SkyVerticalTabsetGroupComponent {
12
12
  constructor(tabService, changeRef) {
13
13
  this.tabService = tabService;
@@ -31,7 +31,7 @@ export class SkyVerticalTabsetGroupComponent {
31
31
  }
32
32
  /**
33
33
  * Indicates whether the collapsible group is expanded.
34
- * @default "false"
34
+ * @default false
35
35
  */
36
36
  set open(value) {
37
37
  this._open = value;
@@ -61,65 +61,19 @@ export class SkyVerticalTabsetGroupComponent {
61
61
  this.changeRef.markForCheck();
62
62
  }
63
63
  subMenuOpen() {
64
- return this.tabs && (this.tabs.find(t => t.active) !== undefined);
64
+ return this.tabs && this.tabs.find((t) => t.active) !== undefined;
65
65
  }
66
66
  }
67
- SkyVerticalTabsetGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
68
- SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], ngImport: i0, template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header sky-padding-even-default\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized': subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n (click)=\"toggleMenuOpen()\"\n (keyup.enter)=\"toggleMenuOpen()\"\n [tabIndex]=\"-1\"\n >\n {{ groupHeading }}\n <sky-chevron *skyThemeIf=\"'default'\"\n class=\"sky-vertical-tabset-group-header-chevron\"\n [direction]=\"open ? 'up' : 'down'\"\n [disabled]=\"disabled\"\n (directionChange)=\"toggleMenuOpen()\"\n (keyup.enter)=\"$event.stopPropagation()\"\n >\n </sky-chevron>\n <ng-container *skyThemeIf=\"'modern'\">\n <button *ngIf=\"!open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-up\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n <button *ngIf=\"open\"\n class=\"sky-btn sky-btn-icon-borderless sky-vertical-tabset-group-header-chevron\"\n type=\"button\"\n >\n <sky-icon\n icon=\"chevron-down\"\n iconType=\"skyux\"\n >\n </sky-icon>\n </button>\n </ng-container>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n *ngIf=\"open\"\n [@tabSlide]\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header{cursor:pointer;display:flex;justify-content:space-between}.sky-vertical-tabset-group-header:focus-visible{outline:thin dotted;outline:-webkit-focus-ring-color auto 5px}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-header-chevron>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header-chevron{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-header-chevron{position:absolute;top:6px;right:5px}\n"], components: [{ type: i2.λ2, selector: "sky-chevron", inputs: ["direction", "disabled"], outputs: ["directionChange"] }, { type: i2.λ4, selector: "sky-icon", inputs: ["icon", "iconType", "size", "fixedWidth", "variant"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.λ3, selector: "[skyThemeIf]", inputs: ["skyThemeIf"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
69
- trigger('tabSlide', [
70
- transition(':enter', [
71
- style({
72
- height: '0',
73
- visibility: 'hidden'
74
- }),
75
- animate('150ms ease-in', style({
76
- height: '*',
77
- visibility: 'visible'
78
- }))
79
- ]),
80
- transition(':leave', [
81
- style({
82
- height: '*',
83
- visibility: 'visible'
84
- }),
85
- animate('150ms ease-in', style({
86
- height: '0',
87
- visibility: 'hidden'
88
- }))
89
- ])
90
- ])
91
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush });
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
67
+ SkyVerticalTabsetGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetGroupComponent, deps: [{ token: i1.SkyVerticalTabsetService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
68
+ SkyVerticalTabsetGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: SkyVerticalTabsetGroupComponent, selector: "sky-vertical-tabset-group", inputs: { disabled: "disabled", groupHeading: "groupHeading", open: "open" }, queries: [{ propertyName: "tabs", predicate: SkyVerticalTabComponent }], ngImport: i0, template: "<div class=\"sky-vertical-tabset-group\">\n <!-- [ngClass] includes font classes for both modern and default styles -->\n <div\n class=\"sky-vertical-tabset-group-header\"\n [ngClass]=\"{\n 'sky-vertical-tabset-group-header-sub-open sky-font-emphasized sky-emphasized':\n subMenuOpen(),\n 'sky-font-deemphasized': disabled,\n 'sky-deemphasized': disabled,\n 'sky-vertical-tabset-disabled': disabled\n }\"\n [tabIndex]=\"-1\"\n >\n <button\n class=\"sky-padding-even-default\"\n type=\"button\"\n skyId\n [attr.aria-controls]=\"groupContent.id\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggleMenuOpen()\"\n #groupHeadingButton\n >\n {{ groupHeading }}\n <sky-expansion-indicator\n class=\"sky-vertical-tabset-group-expansion-indicator\"\n [direction]=\"open ? 'up' : 'down'\"\n >\n </sky-expansion-indicator>\n </button>\n </div>\n <div\n class=\"sky-vertical-tabset-group-content\"\n role=\"region\"\n skyId\n [attr.labelledby]=\"groupHeadingButton.id\"\n [@skyAnimationSlide]=\"open ? 'down' : 'up'\"\n #groupContent\n >\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".sky-vertical-tabset-group{border-bottom:1px solid #e2e3e4;margin:5px 0 5px 5px}.sky-vertical-tabset-group-header button{cursor:pointer;display:flex;justify-content:space-between;border:none;width:100%;text-align:left;background:none}.sky-vertical-tabset-group-content{overflow:hidden;border-top:1px solid #e2e3e4}:host ::ng-deep .sky-vertical-tabset-group-expansion-indicator>button{font-size:14px!important}.sky-vertical-tabset-disabled{cursor:not-allowed;pointer-events:none}:host-context(.sky-theme-modern) .sky-vertical-tabset-group{border:none;margin:10px 0}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-content{border:none;padding-left:25px}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-header{position:relative}:host-context(.sky-theme-modern) .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}.sky-theme-modern .sky-vertical-tabset-group{border:none;margin:10px 0}.sky-theme-modern .sky-vertical-tabset-group-content{border:none;padding-left:25px}.sky-theme-modern .sky-vertical-tabset-group-header{position:relative}.sky-theme-modern .sky-vertical-tabset-group-expansion-indicator{position:absolute;top:6px;right:5px}\n"], components: [{ type: i2.λ15, selector: "sky-expansion-indicator", inputs: ["direction"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.λ2, selector: "[skyId]", exportAs: ["skyId"] }], animations: [skyAnimationSlide], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyVerticalTabsetGroupComponent, decorators: [{
93
70
  type: Component,
94
71
  args: [{
95
72
  selector: 'sky-vertical-tabset-group',
96
73
  templateUrl: './vertical-tabset-group.component.html',
97
74
  styleUrls: ['./vertical-tabset-group.component.scss'],
98
75
  changeDetection: ChangeDetectionStrategy.OnPush,
99
- animations: [
100
- trigger('tabSlide', [
101
- transition(':enter', [
102
- style({
103
- height: '0',
104
- visibility: 'hidden'
105
- }),
106
- animate('150ms ease-in', style({
107
- height: '*',
108
- visibility: 'visible'
109
- }))
110
- ]),
111
- transition(':leave', [
112
- style({
113
- height: '*',
114
- visibility: 'visible'
115
- }),
116
- animate('150ms ease-in', style({
117
- height: '0',
118
- visibility: 'hidden'
119
- }))
120
- ])
121
- ])
122
- ]
76
+ animations: [skyAnimationSlide],
123
77
  }]
124
78
  }], ctorParameters: function () { return [{ type: i1.SkyVerticalTabsetService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { disabled: [{
125
79
  type: Input
@@ -131,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
131
85
  type: ContentChildren,
132
86
  args: [SkyVerticalTabComponent]
133
87
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssRUFJTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNMLE9BQU8sRUFDUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3hCLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQXFDbEMsTUFBTSxPQUFPLCtCQUErQjtJQXFDMUMsWUFDVSxVQUFvQyxFQUNwQyxTQUE0QjtRQUQ1QixlQUFVLEdBQVYsVUFBVSxDQUEwQjtRQUNwQyxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQVI5QixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFFOUIseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBRXRDLFVBQUssR0FBWSxLQUFLLENBQUM7UUFzQ3hCLGVBQVUsR0FBRyxHQUFHLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUE7UUFFTSxlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLDhGQUE4RjtZ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MkJBQTJCO29CQUNyQyxXQUFXLEVBQUUsd0NBQXdDO29CQUNyRCxTQUFTLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztvQkFDckQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRTt3QkFDVixPQUFPLENBQ0wsVUFBVSxFQUFFOzRCQUNWLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQztvQ0FDSixNQUFNLEVBQUUsR0FBRztvQ0FDWCxVQUFVLEVBQUUsUUFBUTtpQ0FDckIsQ0FBQztnQ0FDRixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztvQ0FDN0IsTUFBTSxFQUFFLEdBQUc7b0NBQ1gsVUFBVSxFQUFFLFNBQVM7aUNBQ3RCLENBQUMsQ0FBQzs2QkFDSixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQztvQ0FDSixNQUFNLEVBQUUsR0FBRztvQ0FDWCxVQUFVLEVBQUUsU0FBUztpQ0FDdEIsQ0FBQztnQ0FDRixPQUFPLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztvQ0FDN0IsTUFBTSxFQUFFLEdBQUc7b0NBQ1gsVUFBVSxFQUFFLFFBQVE7aUNBQ3JCLENBQUMsQ0FBQzs2QkFDSixDQUFDO3lCQUNILENBQUM7cUJBQ0g7aUJBQ0o7K0lBUVEsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBUUssSUFBSTtzQkFEZCxLQUFLO2dCQVVFLElBQUk7c0JBRFgsZUFBZTt1QkFBQyx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7XG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreVZlcnRpY2FsVGFiQ29tcG9uZW50XG59IGZyb20gJy4vdmVydGljYWwtdGFiLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreVZlcnRpY2FsVGFic2V0U2VydmljZVxufSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFxuICAgICAgJ3RhYlNsaWRlJywgW1xuICAgICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgaGVpZ2h0OiAnMCcsXG4gICAgICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJ1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGFuaW1hdGUoJzE1MG1zIGVhc2UtaW4nLCBzdHlsZSh7XG4gICAgICAgICAgICBoZWlnaHQ6ICcqJyxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJ1xuICAgICAgICAgIH0pKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgIHN0eWxlKHtcbiAgICAgICAgICAgIGhlaWdodDogJyonLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnXG4gICAgICAgICAgfSksXG4gICAgICAgICAgYW5pbWF0ZSgnMTUwbXMgZWFzZS1pbicsIHN0eWxlKHtcbiAgICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbidcbiAgICAgICAgICB9KSlcbiAgICAgICAgXSlcbiAgICAgIF0pXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBTa3lWZXJ0aWNhbFRhYnNldEdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBhYmlsaXR5IHRvIGV4cGFuZCBhbmQgY29sbGFwc2UgdGhlIGdyb3VwLlxuICAgKiBAZGVmYXVsdCBcImZhbHNlXCJcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBoZWFkZXIgZm9yIHRoZSBjb2xsYXBzaWJsZSBncm91cCBvZiB0YWJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdyb3VwSGVhZGluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgY29sbGFwc2libGUgZ3JvdXAgaXMgZXhwYW5kZWQuXG4gICAqIEBkZWZhdWx0IFwiZmFsc2VcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9vcGVuO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudClcbiAgcHJpdmF0ZSB0YWJzOiBRdWVyeUxpc3Q8U2t5VmVydGljYWxUYWJDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvcGVuQmVmb3JlVGFic0hpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX29wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhYlNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuaGlkaW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFic0hpZGRlbik7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2Uuc2hvd2luZ1RhYnNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLnRhYnNTaG93bik7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2UudGFiQ2xpY2tlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFiQ2xpY2tlZCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNZW51T3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc3ViTWVudU9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicyAmJiAodGhpcy50YWJzLmZpbmQodCA9PiB0LmFjdGl2ZSkgIT09IHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2xpY2tlZCA9ICgpID0+IHtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyB0YWJzSGlkZGVuID0gKCkgPT4ge1xuICAgIC8vIHRoaXMgZml4ZXMgYW4gYW5pbWF0aW9uIGJ1ZyB3aXRoIG5nSWYgd2hlbiB0aGUgcGFyZW50IGNvbXBvbmVudCBnb2VzIGZyb20gdmlzaWJsZSB0byBoaWRkZW5cbiAgICB0aGlzLm9wZW5CZWZvcmVUYWJzSGlkZGVuID0gdGhpcy5vcGVuO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIHRoaXMuY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHRhYnNTaG93biA9ICgpID0+IHtcbiAgICB0aGlzLm9wZW4gPSB0aGlzLm9wZW5CZWZvcmVUYWJzSGlkZGVuO1xuICAgIHRoaXMuY2hhbmdlUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cFwiPlxuICAgPCEtLSBbbmdDbGFzc10gaW5jbHVkZXMgZm9udCBjbGFzc2VzIGZvciBib3RoIG1vZGVybiBhbmQgZGVmYXVsdCBzdHlsZXMgLS0+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyIHNreS1wYWRkaW5nLWV2ZW4tZGVmYXVsdFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyLXN1Yi1vcGVuIHNreS1mb250LWVtcGhhc2l6ZWQgc2t5LWVtcGhhc2l6ZWQnOiBzdWJNZW51T3BlbigpLFxuICAgICAgJ3NreS1mb250LWRlZW1waGFzaXplZCc6IGRpc2FibGVkLFxuICAgICAgJ3NreS1kZWVtcGhhc2l6ZWQnOiBkaXNhYmxlZCxcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgICAoY2xpY2spPVwidG9nZ2xlTWVudU9wZW4oKVwiXG4gICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZU1lbnVPcGVuKClcIlxuICAgIFt0YWJJbmRleF09XCItMVwiXG4gID5cbiAgICB7eyBncm91cEhlYWRpbmcgfX1cbiAgICA8c2t5LWNoZXZyb24gKnNreVRoZW1lSWY9XCInZGVmYXVsdCdcIlxuICAgICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlci1jaGV2cm9uXCJcbiAgICAgIFtkaXJlY3Rpb25dPVwib3BlbiA/ICd1cCcgOiAnZG93bidcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIChkaXJlY3Rpb25DaGFuZ2UpPVwidG9nZ2xlTWVudU9wZW4oKVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICA+XG4gICAgPC9za3ktY2hldnJvbj5cbiAgICA8bmctY29udGFpbmVyICpza3lUaGVtZUlmPVwiJ21vZGVybidcIj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiIW9wZW5cIlxuICAgICAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4taWNvbi1ib3JkZXJsZXNzIHNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtaGVhZGVyLWNoZXZyb25cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgPlxuICAgICAgPHNreS1pY29uXG4gICAgICAgIGljb249XCJjaGV2cm9uLXVwXCJcbiAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICA+XG4gICAgICA8L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gKm5nSWY9XCJvcGVuXCJcbiAgICAgIGNsYXNzPVwic2t5LWJ0biBza3ktYnRuLWljb24tYm9yZGVybGVzcyBza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlci1jaGV2cm9uXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgID5cbiAgICAgIDxza3ktaWNvblxuICAgICAgICBpY29uPVwiY2hldnJvbi1kb3duXCJcbiAgICAgICAgaWNvblR5cGU9XCJza3l1eFwiXG4gICAgICA+XG4gICAgICA8L3NreS1pY29uPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS12ZXJ0aWNhbC10YWJzZXQtZ3JvdXAtY29udGVudFwiXG4gICAgKm5nSWY9XCJvcGVuXCJcbiAgICBbQHRhYlNsaWRlXVxuICA+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVydGljYWwtdGFic2V0LWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYnMvc3JjL21vZHVsZXMvdmVydGljYWwtdGFic2V0L3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YWJzL3NyYy9tb2R1bGVzL3ZlcnRpY2FsLXRhYnNldC92ZXJ0aWNhbC10YWJzZXQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUNmLEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUduRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7O0FBU3RELE1BQU0sT0FBTywrQkFBK0I7SUFvQzFDLFlBQ1UsVUFBb0MsRUFDcEMsU0FBNEI7UUFENUIsZUFBVSxHQUFWLFVBQVUsQ0FBMEI7UUFDcEMsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFSOUIsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBRTlCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUV0QyxVQUFLLEdBQVksS0FBSyxDQUFDO1FBc0N4QixlQUFVLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDO1FBRUssZUFBVSxHQUFHLEdBQUcsRUFBRTtZQUN2Qiw4RkFBOEY7WUFDOUYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUM7UUFFSyxjQUFTLEdBQUcsR0FBRyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDO0lBL0NDLENBQUM7SUF6Qko7OztPQUdHO0lBQ0gsSUFDVyxJQUFJLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUN0QyxDQUFDO0lBZ0JNLFFBQVE7UUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7YUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVc7YUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVU7YUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGNBQWM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDeEI7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsQ0FBQztJQUNwRSxDQUFDOzs2SEF0RVUsK0JBQStCO2lIQUEvQiwrQkFBK0Isb0tBMkJ6Qix1QkFBdUIsNkJDdEQxQyxtc0NBeUNBLGs3Q0RoQmMsQ0FBQyxpQkFBaUIsQ0FBQzs0RkFFcEIsK0JBQStCO2tCQVAzQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLFdBQVcsRUFBRSx3Q0FBd0M7b0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO29CQUNyRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsVUFBVSxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQ2hDOytJQU9RLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxZQUFZO3NCQURsQixLQUFLO2dCQVFLLElBQUk7c0JBRGQsS0FBSztnQkFVRSxJQUFJO3NCQURYLGVBQWU7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgU2t5VmVydGljYWxUYWJDb21wb25lbnQgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYi5jb21wb25lbnQnO1xuXG5pbXBvcnQgeyBTa3lWZXJ0aWNhbFRhYnNldFNlcnZpY2UgfSBmcm9tICcuL3ZlcnRpY2FsLXRhYnNldC5zZXJ2aWNlJztcbmltcG9ydCB7IHNreUFuaW1hdGlvblNsaWRlIH0gZnJvbSAnQHNreXV4L2FuaW1hdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZlcnRpY2FsLXRhYnNldC1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgYW5pbWF0aW9uczogW3NreUFuaW1hdGlvblNsaWRlXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5VmVydGljYWxUYWJzZXRHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGFiaWxpdHkgdG8gZXhwYW5kIGFuZCBjb2xsYXBzZSB0aGUgZ3JvdXAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgaGVhZGVyIGZvciB0aGUgY29sbGFwc2libGUgZ3JvdXAgb2YgdGFicy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBncm91cEhlYWRpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbGxhcHNpYmxlIGdyb3VwIGlzIGV4cGFuZGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBvcGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fb3BlbiA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNhYmxlZCAmJiB0aGlzLl9vcGVuO1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihTa3lWZXJ0aWNhbFRhYkNvbXBvbmVudClcbiAgcHJpdmF0ZSB0YWJzOiBRdWVyeUxpc3Q8U2t5VmVydGljYWxUYWJDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvcGVuQmVmb3JlVGFic0hpZGRlbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX29wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhYlNlcnZpY2U6IFNreVZlcnRpY2FsVGFic2V0U2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRhYlNlcnZpY2UuaGlkaW5nVGFic1xuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFic0hpZGRlbik7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2Uuc2hvd2luZ1RhYnNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLnRhYnNTaG93bik7XG5cbiAgICB0aGlzLnRhYlNlcnZpY2UudGFiQ2xpY2tlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMudGFiQ2xpY2tlZCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVNZW51T3BlbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuXG4gICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgc3ViTWVudU9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFicyAmJiB0aGlzLnRhYnMuZmluZCgodCkgPT4gdC5hY3RpdmUpICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2xpY2tlZCA9ICgpID0+IHtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcblxuICBwdWJsaWMgdGFic0hpZGRlbiA9ICgpID0+IHtcbiAgICAvLyB0aGlzIGZpeGVzIGFuIGFuaW1hdGlvbiBidWcgd2l0aCBuZ0lmIHdoZW4gdGhlIHBhcmVudCBjb21wb25lbnQgZ29lcyBmcm9tIHZpc2libGUgdG8gaGlkZGVuXG4gICAgdGhpcy5vcGVuQmVmb3JlVGFic0hpZGRlbiA9IHRoaXMub3BlbjtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmNoYW5nZVJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfTtcblxuICBwdWJsaWMgdGFic1Nob3duID0gKCkgPT4ge1xuICAgIHRoaXMub3BlbiA9IHRoaXMub3BlbkJlZm9yZVRhYnNIaWRkZW47XG4gICAgdGhpcy5jaGFuZ2VSZWYubWFya0ZvckNoZWNrKCk7XG4gIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cFwiPlxuICA8IS0tIFtuZ0NsYXNzXSBpbmNsdWRlcyBmb250IGNsYXNzZXMgZm9yIGJvdGggbW9kZXJuIGFuZCBkZWZhdWx0IHN0eWxlcyAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LXZlcnRpY2FsLXRhYnNldC1ncm91cC1oZWFkZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWhlYWRlci1zdWItb3BlbiBza3ktZm9udC1lbXBoYXNpemVkIHNreS1lbXBoYXNpemVkJzpcbiAgICAgICAgc3ViTWVudU9wZW4oKSxcbiAgICAgICdza3ktZm9udC1kZWVtcGhhc2l6ZWQnOiBkaXNhYmxlZCxcbiAgICAgICdza3ktZGVlbXBoYXNpemVkJzogZGlzYWJsZWQsXG4gICAgICAnc2t5LXZlcnRpY2FsLXRhYnNldC1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwic2t5LXBhZGRpbmctZXZlbi1kZWZhdWx0XCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgc2t5SWRcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZ3JvdXBDb250ZW50LmlkXCJcbiAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwib3BlblwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlTWVudU9wZW4oKVwiXG4gICAgICAjZ3JvdXBIZWFkaW5nQnV0dG9uXG4gICAgPlxuICAgICAge3sgZ3JvdXBIZWFkaW5nIH19XG4gICAgICA8c2t5LWV4cGFuc2lvbi1pbmRpY2F0b3JcbiAgICAgICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWV4cGFuc2lvbi1pbmRpY2F0b3JcIlxuICAgICAgICBbZGlyZWN0aW9uXT1cIm9wZW4gPyAndXAnIDogJ2Rvd24nXCJcbiAgICAgID5cbiAgICAgIDwvc2t5LWV4cGFuc2lvbi1pbmRpY2F0b3I+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktdmVydGljYWwtdGFic2V0LWdyb3VwLWNvbnRlbnRcIlxuICAgIHJvbGU9XCJyZWdpb25cIlxuICAgIHNreUlkXG4gICAgW2F0dHIubGFiZWxsZWRieV09XCJncm91cEhlYWRpbmdCdXR0b24uaWRcIlxuICAgIFtAc2t5QW5pbWF0aW9uU2xpZGVdPVwib3BlbiA/ICdkb3duJyA6ICd1cCdcIlxuICAgICNncm91cENvbnRlbnRcbiAgPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==