ngx-tethys 15.3.6 → 15.3.7

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 (37) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/avatar/avatar-list/avatar-list.component.d.ts +1 -3
  3. package/avatar/styles/avatar-list.scss +13 -13
  4. package/avatar/styles/avatar.scss +3 -3
  5. package/esm2020/avatar/avatar-list/avatar-list.component.mjs +5 -8
  6. package/esm2020/avatar/avatar.component.mjs +10 -19
  7. package/esm2020/cascader/cascader.component.mjs +3 -3
  8. package/esm2020/date-picker/abstract-picker.component.mjs +1 -6
  9. package/esm2020/date-picker/lib/popups/date-popup.component.mjs +38 -9
  10. package/esm2020/date-picker/picker.component.mjs +3 -3
  11. package/esm2020/property/property-item.component.mjs +5 -2
  12. package/esm2020/version.mjs +2 -2
  13. package/fesm2015/ngx-tethys-avatar.mjs +13 -25
  14. package/fesm2015/ngx-tethys-avatar.mjs.map +1 -1
  15. package/fesm2015/ngx-tethys-cascader.mjs +2 -2
  16. package/fesm2015/ngx-tethys-cascader.mjs.map +1 -1
  17. package/fesm2015/ngx-tethys-date-picker.mjs +39 -15
  18. package/fesm2015/ngx-tethys-date-picker.mjs.map +1 -1
  19. package/fesm2015/ngx-tethys-property.mjs +4 -1
  20. package/fesm2015/ngx-tethys-property.mjs.map +1 -1
  21. package/fesm2015/ngx-tethys.mjs +1 -1
  22. package/fesm2015/ngx-tethys.mjs.map +1 -1
  23. package/fesm2020/ngx-tethys-avatar.mjs +13 -25
  24. package/fesm2020/ngx-tethys-avatar.mjs.map +1 -1
  25. package/fesm2020/ngx-tethys-cascader.mjs +2 -2
  26. package/fesm2020/ngx-tethys-cascader.mjs.map +1 -1
  27. package/fesm2020/ngx-tethys-date-picker.mjs +39 -15
  28. package/fesm2020/ngx-tethys-date-picker.mjs.map +1 -1
  29. package/fesm2020/ngx-tethys-property.mjs +4 -1
  30. package/fesm2020/ngx-tethys-property.mjs.map +1 -1
  31. package/fesm2020/ngx-tethys.mjs +1 -1
  32. package/fesm2020/ngx-tethys.mjs.map +1 -1
  33. package/package.json +1 -1
  34. package/property/property-item.component.d.ts +1 -0
  35. package/schematics/version.d.ts +1 -1
  36. package/schematics/version.js +1 -1
  37. package/styles/variables.scss +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [15.3.7](https://github.com/atinc/ngx-tethys/compare/15.3.5...15.3.7) (2023-06-05)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **avatar:** add constant of avatar list item space INFR-8056 ([9b96f4c](https://github.com/atinc/ngx-tethys/commit/9b96f4ca6b5f8d87a903da554aa20d6c4dfa3d6b))
11
+ * **avatar:** the overlap space of thy-avatar-list component in overlap mode is 25% of the width of avatar component #INFR-8056 ([b26ad14](https://github.com/atinc/ngx-tethys/commit/b26ad1418bf4a0548889c76ea3c17bf6f29729c1)), closes [#INFR-8056](https://github.com/atinc/ngx-tethys/issues/INFR-8056)
12
+ * **cascader:** fix it is still open when in disabled state #INFR-8141 ([#2692](https://github.com/atinc/ngx-tethys/issues/2692)) ([a73da1b](https://github.com/atinc/ngx-tethys/commit/a73da1bef1d4a75f7989f24b9f39e0910f5009fe)), closes [#INFR-8141](https://github.com/atinc/ngx-tethys/issues/INFR-8141)
13
+ * **date-picker:** #INFR-8069 shortcut support thyMinDate thyMaxDate ([#2691](https://github.com/atinc/ngx-tethys/issues/2691)) ([7f72682](https://github.com/atinc/ngx-tethys/commit/7f7268215f585c4c39d55ef50ecb66ce304ff67e)), closes [#INFR-8069](https://github.com/atinc/ngx-tethys/issues/INFR-8069)
14
+ * **date-picker:** fix both clear icon and calendar icon are displayed #INFR-8182 ([#2696](https://github.com/atinc/ngx-tethys/issues/2696)) ([f1914d3](https://github.com/atinc/ngx-tethys/commit/f1914d3a7900b4e836c2a1eb3cd7a059f3c2f40f)), closes [#INFR-8182](https://github.com/atinc/ngx-tethys/issues/INFR-8182)
15
+ * **property:** should not subscribe multiple times when the value of thyEditable is changed to true #INFR-8179 ([#2695](https://github.com/atinc/ngx-tethys/issues/2695)) ([34e600c](https://github.com/atinc/ngx-tethys/commit/34e600c579fd978b8f93cca26c52cc4e417c249c)), closes [#INFR-8179](https://github.com/atinc/ngx-tethys/issues/INFR-8179)
16
+
17
+
18
+
5
19
  ## [15.3.6](https://github.com/atinc/ngx-tethys/compare/15.3.5...15.3.6) (2023-05-25)
6
20
 
7
21
 
@@ -17,8 +17,6 @@ export declare class ThyAvatarListComponent implements OnChanges, OnDestroy, Aft
17
17
  overlapMode: boolean;
18
18
  avatarItems: ThyAvatarComponent[];
19
19
  avatarRenderItems: ThyAvatarComponent[];
20
- avatarSpace: number;
21
- avatarOverlapSpace: number;
22
20
  private ngUnsubscribe$;
23
21
  /**
24
22
  * 展示方式
@@ -28,7 +26,7 @@ export declare class ThyAvatarListComponent implements OnChanges, OnDestroy, Aft
28
26
  set thyMode(value: ThyAvatarListMode);
29
27
  /**
30
28
  * 头像大小
31
- * @type 22 | 24 | 28 | 32 | 36 | 44 | 48 | 68 | 110 | 160 | xxs(22px) | xs(24px) | sm(32px) | md(36px) | lg(48px)
29
+ * @type 16 | 22 | 24 | 28 | 32 | 36 | 44 | 48 | 68 | 110 | 160 | xxs(22px) | xs(24px) | sm(32px) | md(36px) | lg(48px)
32
30
  * @default 36
33
31
  */
34
32
  thyAvatarSize: number | string;
@@ -7,28 +7,28 @@
7
7
  line-height: initial;
8
8
  width: 100%;
9
9
 
10
- .thy-avatar-content {
11
- position: relative;
12
- }
13
- &:not(.thy-avatar-list-overlap) {
14
- .thy-avatar {
15
- margin-right: variables.$avatar-item-space;
16
- }
10
+ .thy-avatar {
11
+ margin-right: variables.$avatar-item-space;
17
12
  }
18
13
  }
19
14
 
20
15
  .thy-avatar-list-overlap {
21
16
  @each $size, $value in variables.$avatar-sizes {
22
17
  .thy-avatar-#{$size} {
23
- @include mixin.avatarSize($size, $value);
24
-
25
- .avatar-default {
18
+ margin-left: #{-$size * variables.$overlap-avatar-item-space-percent}px;
19
+ margin-right: 0;
20
+ .avatar-default,
21
+ .avatar-avatar {
26
22
  border: 1px solid variables.$white;
27
23
  }
28
24
  }
29
- }
30
25
 
31
- .thy-avatar {
32
- margin-left: variables.$overlap-avatar-item-space;
26
+ .thy-avatar-#{$size}:first-child {
27
+ margin-left: 0;
28
+ }
29
+
30
+ .thy-avatar-append {
31
+ padding-left: variables.$avatar-item-space;
32
+ }
33
33
  }
34
34
  }
@@ -1,6 +1,6 @@
1
- @use "sass:meta";
2
- @use "../../styles/variables";
3
- @use "mixin";
1
+ @use 'sass:meta';
2
+ @use '../../styles/variables';
3
+ @use 'mixin';
4
4
  @use './avatar-list.scss';
5
5
 
6
6
  .thy-avatar {
@@ -30,12 +30,10 @@ export class ThyAvatarListComponent {
30
30
  this.overlapMode = false;
31
31
  this.avatarItems = [];
32
32
  this.avatarRenderItems = [];
33
- this.avatarSpace = THY_AVATAR_ITEM_SPACE;
34
- this.avatarOverlapSpace = THY_OVERLAP_AVATAR_ITEM_SPACE;
35
33
  this.ngUnsubscribe$ = new Subject();
36
34
  /**
37
35
  * 头像大小
38
- * @type 22 | 24 | 28 | 32 | 36 | 44 | 48 | 68 | 110 | 160 | xxs(22px) | xs(24px) | sm(32px) | md(36px) | lg(48px)
36
+ * @type 16 | 22 | 24 | 28 | 32 | 36 | 44 | 48 | 68 | 110 | 160 | xxs(22px) | xs(24px) | sm(32px) | md(36px) | lg(48px)
39
37
  * @default 36
40
38
  */
41
39
  this.thyAvatarSize = DEFAULT_SIZE;
@@ -59,13 +57,12 @@ export class ThyAvatarListComponent {
59
57
  }
60
58
  }
61
59
  ThyAvatarListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyAvatarListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
62
- ThyAvatarListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyAvatarListComponent, isStandalone: true, selector: "thy-avatar-list", inputs: { thyMode: "thyMode", thyAvatarSize: "thyAvatarSize" }, host: { properties: { "style.margin-left.px": "overlapMode ? -avatarOverlapSpace : 0", "class.thy-avatar-list-overlap": "this.overlapMode" }, classAttribute: "thy-avatar-list" }, providers: [UpdateHostClassService], queries: [{ propertyName: "append", first: true, predicate: ["append"], descendants: true }, { propertyName: "avatarComponents", predicate: ThyAvatarComponent }], viewQueries: [{ propertyName: "appendContent", first: true, predicate: ["appendContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<!-- .thy-avatar-append used to handle #appendContent style -->\n<div #appendContent *ngIf=\"append\" class=\"thy-avatar-append\" [ngStyle]=\"{ 'padding-left.px': overlapMode && avatarSpace }\">\n <ng-container [ngTemplateOutlet]=\"append\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
60
+ ThyAvatarListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyAvatarListComponent, isStandalone: true, selector: "thy-avatar-list", inputs: { thyMode: "thyMode", thyAvatarSize: "thyAvatarSize" }, host: { properties: { "class.thy-avatar-list-overlap": "this.overlapMode" }, classAttribute: "thy-avatar-list" }, providers: [UpdateHostClassService], queries: [{ propertyName: "append", first: true, predicate: ["append"], descendants: true }, { propertyName: "avatarComponents", predicate: ThyAvatarComponent }], viewQueries: [{ propertyName: "appendContent", first: true, predicate: ["appendContent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<div #appendContent *ngIf=\"append\" class=\"thy-avatar-append\">\n <ng-container [ngTemplateOutlet]=\"append\"></ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
63
61
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyAvatarListComponent, decorators: [{
64
62
  type: Component,
65
63
  args: [{ selector: 'thy-avatar-list', host: {
66
- class: 'thy-avatar-list',
67
- '[style.margin-left.px]': 'overlapMode ? -avatarOverlapSpace : 0'
68
- }, providers: [UpdateHostClassService], standalone: true, imports: [NgFor, NgStyle, ThyAvatarComponent, NgIf, NgClass, NgTemplateOutlet], template: "<ng-content></ng-content>\n\n<!-- .thy-avatar-append used to handle #appendContent style -->\n<div #appendContent *ngIf=\"append\" class=\"thy-avatar-append\" [ngStyle]=\"{ 'padding-left.px': overlapMode && avatarSpace }\">\n <ng-container [ngTemplateOutlet]=\"append\"></ng-container>\n</div>\n" }]
64
+ class: 'thy-avatar-list'
65
+ }, providers: [UpdateHostClassService], standalone: true, imports: [NgFor, NgStyle, ThyAvatarComponent, NgIf, NgClass, NgTemplateOutlet], template: "<ng-content></ng-content>\n\n<div #appendContent *ngIf=\"append\" class=\"thy-avatar-append\">\n <ng-container [ngTemplateOutlet]=\"append\"></ng-container>\n</div>\n" }]
69
66
  }], ctorParameters: function () { return []; }, propDecorators: { overlapMode: [{
70
67
  type: HostBinding,
71
68
  args: ['class.thy-avatar-list-overlap']
@@ -83,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
83
80
  type: ViewChild,
84
81
  args: ['appendContent']
85
82
  }] } });
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F2YXRhci9hdmF0YXItbGlzdC9hdmF0YXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvYXZhdGFyL2F2YXRhci1saXN0L2F2YXRhci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQU1oRDs7OztHQUlHO0FBWUgsTUFBTSxPQUFPLHNCQUFzQjtJQWEvQjs7OztPQUlHO0lBQ0gsSUFDSSxPQUFPLENBQUMsS0FBd0I7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLDhDQUE4QixDQUFDO0lBQzNELENBQUM7SUFjRDs7T0FFRztJQUNILElBQ1ksZ0JBQWdCLENBQUMsS0FBb0M7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUlEO1FBNUM4QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUUzRCxnQkFBVyxHQUF5QixFQUFFLENBQUM7UUFFdkMsc0JBQWlCLEdBQXlCLEVBQUUsQ0FBQztRQUU3QyxnQkFBVyxHQUFHLHFCQUFxQixDQUFDO1FBRXBDLHVCQUFrQixHQUFHLDZCQUE2QixDQUFDO1FBRWxELG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVk3Qzs7OztXQUlHO1FBQ00sa0JBQWEsR0FBb0IsWUFBWSxDQUFDO0lBaUJ4QyxDQUFDO0lBRWhCLFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtZQUM3RCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBMEIsRUFBRSxFQUFFO1lBQ3BELE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7O21IQWxFUSxzQkFBc0I7dUdBQXRCLHNCQUFzQixpVEFKcEIsQ0FBQyxzQkFBc0IsQ0FBQyw4SUEwQ2xCLGtCQUFrQixrS0NuRnZDLDBTQU1BLDRDRHFDcUIsT0FBTywyRUFBc0IsSUFBSSw2RkFBVyxnQkFBZ0I7MkZBRXBFLHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDSSxpQkFBaUIsUUFFckI7d0JBQ0YsS0FBSyxFQUFFLGlCQUFpQjt3QkFDeEIsd0JBQXdCLEVBQUUsdUNBQXVDO3FCQUNwRSxhQUNVLENBQUMsc0JBQXNCLENBQUMsY0FDdkIsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDOzBFQUdoQyxXQUFXO3NCQUF4RCxXQUFXO3VCQUFDLCtCQUErQjtnQkFrQnhDLE9BQU87c0JBRFYsS0FBSztnQkFVRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtxQyxNQUFNO3NCQUFoRCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBTTdCLGdCQUFnQjtzQkFEM0IsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBS1AsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICduZ3gtdGV0aHlzL3R5cGVzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERFRkFVTFRfU0laRSwgVGh5QXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXZhdGFyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBUSFlfQVZBVEFSX0lURU1fU1BBQ0UgPSA0O1xuXG5leHBvcnQgY29uc3QgVEhZX09WRVJMQVBfQVZBVEFSX0lURU1fU1BBQ0UgPSAtODtcblxuZXhwb3J0IGNvbnN0IGVudW0gVGh5QXZhdGFyTGlzdE1vZGUge1xuICAgIG92ZXJsYXAgPSAnb3ZlcmxhcCcsXG4gICAgZGVmYXVsdCA9ICdkZWZhdWx0J1xufVxuLyoqXG4gKiDlpLTlg4/liJfooajnu4Tku7ZcbiAqIEBuYW1lIHRoeS1hdmF0YXItbGlzdFxuICogQG9yZGVyIDIwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWF2YXRhci1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogYC4vYXZhdGFyLWxpc3QuY29tcG9uZW50Lmh0bWxgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktYXZhdGFyLWxpc3QnLFxuICAgICAgICAnW3N0eWxlLm1hcmdpbi1sZWZ0LnB4XSc6ICdvdmVybGFwTW9kZSA/IC1hdmF0YXJPdmVybGFwU3BhY2UgOiAwJ1xuICAgIH0sXG4gICAgcHJvdmlkZXJzOiBbVXBkYXRlSG9zdENsYXNzU2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdGb3IsIE5nU3R5bGUsIFRoeUF2YXRhckNvbXBvbmVudCwgTmdJZiwgTmdDbGFzcywgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5QXZhdGFyTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1hdmF0YXItbGlzdC1vdmVybGFwJykgb3ZlcmxhcE1vZGUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBhdmF0YXJJdGVtczogVGh5QXZhdGFyQ29tcG9uZW50W10gPSBbXTtcblxuICAgIHB1YmxpYyBhdmF0YXJSZW5kZXJJdGVtczogVGh5QXZhdGFyQ29tcG9uZW50W10gPSBbXTtcblxuICAgIHB1YmxpYyBhdmF0YXJTcGFjZSA9IFRIWV9BVkFUQVJfSVRFTV9TUEFDRTtcblxuICAgIHB1YmxpYyBhdmF0YXJPdmVybGFwU3BhY2UgPSBUSFlfT1ZFUkxBUF9BVkFUQVJfSVRFTV9TUEFDRTtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog5bGV56S65pa55byPXG4gICAgICogQHR5cGUgIG92ZXJsYXAgfCBkZWZhdWx0XG4gICAgICogQGRlZmF1bHQgZGVmYXVsdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeU1vZGUodmFsdWU6IFRoeUF2YXRhckxpc3RNb2RlKSB7XG4gICAgICAgIHRoaXMub3ZlcmxhcE1vZGUgPSB2YWx1ZSA9PT0gVGh5QXZhdGFyTGlzdE1vZGUub3ZlcmxhcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlpLTlg4/lpKflsI9cbiAgICAgKiBAdHlwZSAyMiB8IDI0IHwgMjggfCAzMiB8IDM2IHwgNDQgfCA0OCB8IDY4IHwgMTEwIHwgMTYwIHwgeHhzKDIycHgpIHwgeHMoMjRweCkgfCBzbSgzMnB4KSB8IG1kKDM2cHgpIHwgbGcoNDhweClcbiAgICAgKiBAZGVmYXVsdCAzNlxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUF2YXRhclNpemU6IG51bWJlciB8IHN0cmluZyA9IERFRkFVTFRfU0laRTtcblxuICAgIC8qKlxuICAgICAqICBhcHBlbmQg6Ieq5a6a5LmJ5pON5L2cXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZCgnYXBwZW5kJywgeyBzdGF0aWM6IGZhbHNlIH0pIGFwcGVuZDogVGVtcGxhdGVSZWY8U2FmZUFueT47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5QXZhdGFyQ29tcG9uZW50KVxuICAgIHByaXZhdGUgc2V0IGF2YXRhckNvbXBvbmVudHModmFsdWU6IFF1ZXJ5TGlzdDxUaHlBdmF0YXJDb21wb25lbnQ+KSB7XG4gICAgICAgIHRoaXMuYXZhdGFySXRlbXMgPSB2YWx1ZS50b0FycmF5KCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnYXBwZW5kQ29udGVudCcpIGFwcGVuZENvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLnRoeUF2YXRhclNpemUgJiYgIWNoYW5nZXMudGh5QXZhdGFyU2l6ZS5maXJzdENoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRBdmF0YXJTaXplKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0QXZhdGFyU2l6ZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QXZhdGFyU2l6ZSgpIHtcbiAgICAgICAgdGhpcy5hdmF0YXJJdGVtcy5mb3JFYWNoKChhdmF0YXI6IFRoeUF2YXRhckNvbXBvbmVudCkgPT4ge1xuICAgICAgICAgICAgYXZhdGFyLnRoeVNpemUgPSB0aGlzLnRoeUF2YXRhclNpemU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cblxuPCEtLSAudGh5LWF2YXRhci1hcHBlbmQgdXNlZCB0byBoYW5kbGUgI2FwcGVuZENvbnRlbnQgc3R5bGUgLS0+XG48ZGl2ICNhcHBlbmRDb250ZW50ICpuZ0lmPVwiYXBwZW5kXCIgY2xhc3M9XCJ0aHktYXZhdGFyLWFwcGVuZFwiIFtuZ1N0eWxlXT1cInsgJ3BhZGRpbmctbGVmdC5weCc6IG92ZXJsYXBNb2RlICYmIGF2YXRhclNwYWNlIH1cIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhcHBlbmRcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F2YXRhci9hdmF0YXItbGlzdC9hdmF0YXItbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvYXZhdGFyL2F2YXRhci1saXN0L2F2YXRhci1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBRUgsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBR0wsU0FBUyxFQUVULFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRXZFLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQU9oRDs7OztHQUlHO0FBV0gsTUFBTSxPQUFPLHNCQUFzQjtJQVMvQjs7OztPQUlHO0lBQ0gsSUFDSSxPQUFPLENBQUMsS0FBd0I7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLDhDQUE4QixDQUFDO0lBQzNELENBQUM7SUFjRDs7T0FFRztJQUNILElBQ1ksZ0JBQWdCLENBQUMsS0FBb0M7UUFDN0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUlEO1FBeEM4QyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUUzRCxnQkFBVyxHQUF5QixFQUFFLENBQUM7UUFFdkMsc0JBQWlCLEdBQXlCLEVBQUUsQ0FBQztRQUU1QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFZN0M7Ozs7V0FJRztRQUNNLGtCQUFhLEdBQW9CLFlBQVksQ0FBQztJQWlCeEMsQ0FBQztJQUVoQixXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUU7WUFDN0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtZQUNwRCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDOzttSEE5RFEsc0JBQXNCO3VHQUF0QixzQkFBc0IsZ1BBSnBCLENBQUMsc0JBQXNCLENBQUMsOElBc0NsQixrQkFBa0Isa0tDL0V2Qyx5S0FLQSw0Q0RzQ2tELElBQUksNkZBQVcsZ0JBQWdCOzJGQUVwRSxzQkFBc0I7a0JBVmxDLFNBQVM7K0JBQ0ksaUJBQWlCLFFBRXJCO3dCQUNGLEtBQUssRUFBRSxpQkFBaUI7cUJBQzNCLGFBQ1UsQ0FBQyxzQkFBc0IsQ0FBQyxjQUN2QixJQUFJLFdBQ1AsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUM7MEVBR2hDLFdBQVc7c0JBQXhELFdBQVc7dUJBQUMsK0JBQStCO2dCQWN4QyxPQUFPO3NCQURWLEtBQUs7Z0JBVUcsYUFBYTtzQkFBckIsS0FBSztnQkFLcUMsTUFBTTtzQkFBaEQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU03QixnQkFBZ0I7c0JBRDNCLGVBQWU7dUJBQUMsa0JBQWtCO2dCQUtQLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1N0eWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXBkYXRlSG9zdENsYXNzU2VydmljZSB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnbmd4LXRldGh5cy90eXBlcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBERUZBVUxUX1NJWkUsIFRoeUF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uL2F2YXRhci5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgVEhZX0FWQVRBUl9JVEVNX1NQQUNFID0gNDtcblxuZXhwb3J0IGNvbnN0IFRIWV9PVkVSTEFQX0FWQVRBUl9JVEVNX1NQQUNFID0gLTg7XG5cbmV4cG9ydCBjb25zdCBlbnVtIFRoeUF2YXRhckxpc3RNb2RlIHtcbiAgICBvdmVybGFwID0gJ292ZXJsYXAnLFxuICAgIGRlZmF1bHQgPSAnZGVmYXVsdCdcbn1cblxuLyoqXG4gKiDlpLTlg4/liJfooajnu4Tku7ZcbiAqIEBuYW1lIHRoeS1hdmF0YXItbGlzdFxuICogQG9yZGVyIDIwXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWF2YXRhci1saXN0JyxcbiAgICB0ZW1wbGF0ZVVybDogYC4vYXZhdGFyLWxpc3QuY29tcG9uZW50Lmh0bWxgLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aHktYXZhdGFyLWxpc3QnXG4gICAgfSxcbiAgICBwcm92aWRlcnM6IFtVcGRhdGVIb3N0Q2xhc3NTZXJ2aWNlXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0ZvciwgTmdTdHlsZSwgVGh5QXZhdGFyQ29tcG9uZW50LCBOZ0lmLCBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBUaHlBdmF0YXJMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWF2YXRhci1saXN0LW92ZXJsYXAnKSBvdmVybGFwTW9kZSA9IGZhbHNlO1xuXG4gICAgcHVibGljIGF2YXRhckl0ZW1zOiBUaHlBdmF0YXJDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgcHVibGljIGF2YXRhclJlbmRlckl0ZW1zOiBUaHlBdmF0YXJDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDlsZXnpLrmlrnlvI9cbiAgICAgKiBAdHlwZSAgb3ZlcmxhcCB8IGRlZmF1bHRcbiAgICAgKiBAZGVmYXVsdCBkZWZhdWx0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TW9kZSh2YWx1ZTogVGh5QXZhdGFyTGlzdE1vZGUpIHtcbiAgICAgICAgdGhpcy5vdmVybGFwTW9kZSA9IHZhbHVlID09PSBUaHlBdmF0YXJMaXN0TW9kZS5vdmVybGFwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWktOWDj+Wkp+Wwj1xuICAgICAqIEB0eXBlIDE2IHwgMjIgfCAyNCB8IDI4IHwgMzIgfCAzNiB8IDQ0IHwgNDggfCA2OCB8IDExMCB8IDE2MCB8IHh4cygyMnB4KSB8IHhzKDI0cHgpIHwgc20oMzJweCkgfCBtZCgzNnB4KSB8IGxnKDQ4cHgpXG4gICAgICogQGRlZmF1bHQgMzZcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlBdmF0YXJTaXplOiBudW1iZXIgfCBzdHJpbmcgPSBERUZBVUxUX1NJWkU7XG5cbiAgICAvKipcbiAgICAgKiAgYXBwZW5kIOiHquWumuS5ieaTjeS9nFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoJ2FwcGVuZCcsIHsgc3RhdGljOiBmYWxzZSB9KSBhcHBlbmQ6IFRlbXBsYXRlUmVmPFNhZmVBbnk+O1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRoeUF2YXRhckNvbXBvbmVudClcbiAgICBwcml2YXRlIHNldCBhdmF0YXJDb21wb25lbnRzKHZhbHVlOiBRdWVyeUxpc3Q8VGh5QXZhdGFyQ29tcG9uZW50Pikge1xuICAgICAgICB0aGlzLmF2YXRhckl0ZW1zID0gdmFsdWUudG9BcnJheSgpO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2FwcGVuZENvbnRlbnQnKSBhcHBlbmRDb250ZW50OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy50aHlBdmF0YXJTaXplICYmICFjaGFuZ2VzLnRoeUF2YXRhclNpemUuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QXZhdGFyU2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnNldEF2YXRhclNpemUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEF2YXRhclNpemUoKSB7XG4gICAgICAgIHRoaXMuYXZhdGFySXRlbXMuZm9yRWFjaCgoYXZhdGFyOiBUaHlBdmF0YXJDb21wb25lbnQpID0+IHtcbiAgICAgICAgICAgIGF2YXRhci50aHlTaXplID0gdGhpcy50aHlBdmF0YXJTaXplO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxkaXYgI2FwcGVuZENvbnRlbnQgKm5nSWY9XCJhcHBlbmRcIiBjbGFzcz1cInRoeS1hdmF0YXItYXBwZW5kXCI+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYXBwZW5kXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
@@ -75,26 +75,17 @@ export class ThyAvatarComponent {
75
75
  }
76
76
  this.hostRenderer.updateClass([`thy-avatar-${this._size}`]);
77
77
  }
78
- findClosestSize(sizes, value) {
79
- let left = 0, right = sizes.length - 1, middle, result;
80
- while (left <= right) {
81
- middle = Math.floor((left + right) / 2);
82
- if (right - left <= 1) {
83
- result = sizes[right];
84
- break;
85
- }
86
- result = sizes[middle];
87
- if (result === value) {
88
- return value;
89
- }
90
- else if (result > value) {
91
- right = middle;
92
- }
93
- else {
94
- left = middle;
78
+ findClosestSize(sizeArray, currentSize) {
79
+ let closestValue = sizeArray[0];
80
+ let closestDifference = Math.abs(closestValue - currentSize);
81
+ for (let i = 1; i < sizeArray.length; i++) {
82
+ const currentDifference = Math.abs(sizeArray[i] - currentSize);
83
+ if (currentDifference <= closestDifference) {
84
+ closestValue = sizeArray[i];
85
+ closestDifference = currentDifference;
95
86
  }
96
87
  }
97
- return value - sizes[left] < sizes[right] - value ? sizes[left] : sizes[right];
88
+ return closestValue;
98
89
  }
99
90
  _setAvatarSrc(src) {
100
91
  if (src && this.thyAvatarService.ignoreAvatarSrcPaths.indexOf(src) < 0) {
@@ -201,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
201
192
  }], thyFetchPriority: [{
202
193
  type: Input
203
194
  }] } });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFL0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixHQUFHLEVBQUUsRUFBRTtJQUNQLEVBQUUsRUFBRSxFQUFFO0lBQ04s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LFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBpc1N0cmluZyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5pbXBvcnQgeyB1c2VIb3N0UmVuZGVyZXIgfSBmcm9tICdAdGV0aHlzL2Nkay9kb20nO1xuaW1wb3J0IHsgVGh5QXZhdGFyU2VydmljZSB9IGZyb20gJy4vYXZhdGFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXZhdGFyU2hvcnROYW1lUGlwZSwgQXZhdGFyQmdDb2xvclBpcGUsIEF2YXRhclNyY1BpcGUgfSBmcm9tICcuL2F2YXRhci5waXBlJztcbmltcG9ydCB7IFRoeUljb25Db21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgTmdJZiwgTmdDbGFzcywgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuXG5jb25zdCBzaXplQXJyYXkgPSBbMTYsIDIyLCAyNCwgMjgsIDMyLCAzNiwgNDQsIDQ4LCA2OCwgMTEwLCAxNjBdO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TSVpFID0gMzY7XG5cbmV4cG9ydCBjb25zdCB0aHlBdmF0YXJTaXplTWFwID0ge1xuICAgIHh4czogMjIsXG4gICAgeHM6IDI0LFxuICAgIHNtOiAzMixcbiAgICBtZDogMzYsXG4gICAgbGc6IDQ4XG59O1xuXG4vKiogaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZW1iZWRkZWQtY29udGVudC5odG1sI2F0dHItaW1nLWxvYWRpbmcgKi9cbmV4cG9ydCB0eXBlIFRoeUF2YXRhckxvYWRpbmcgPSAnZWFnZXInIHwgJ2xhenknO1xuXG4vKiogaHR0cHM6Ly93aWNnLmdpdGh1Yi5pby9wcmlvcml0eS1oaW50cy8jaWRsLWluZGV4ICovXG5leHBvcnQgdHlwZSBUaHlBdmF0YXJGZXRjaFByaW9yaXR5ID0gJ2hpZ2gnIHwgJ2xvdycgfCAnYXV0byc7XG5cbi8qKlxuICog5aS05YOP57uE5Lu2XG4gKiBAbmFtZSB0aHktYXZhdGFyXG4gKiBAb3JkZXIgMTBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktYXZhdGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLCBUaHlJY29uQ29tcG9uZW50LCBBdmF0YXJTaG9ydE5hbWVQaXBlLCBBdmF0YXJCZ0NvbG9yUGlwZSwgQXZhdGFyU3JjUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgVGh5QXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBfc3JjOiBzdHJpbmc7XG4gICAgX25hbWU6IHN0cmluZztcbiAgICBfc2l6ZTogbnVtYmVyO1xuICAgIF9zaG93UmVtb3ZlID0gZmFsc2U7XG5cbiAgICBwdWJsaWMgYXZhdGFyU3JjOiBzdHJpbmc7XG4gICAgcHVibGljIGF2YXRhck5hbWU/OiBzdHJpbmc7XG4gICAgcHVibGljIGF2YXRhck5hbWVTYWZlSHRtbD86IFNhZmVIdG1sO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktYXZhdGFyJykgX2lzQXZhdGFyID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICog5bey5bqf5byD77yM6K+35L2/55SoIHRoeVJlbW92ZVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeU9uUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogIOenu+mZpOaMiemSrueahOS6i+S7tiwg5b2TIHRoeVJlbW92YWJsZSDkuLogdHJ1ZSDml7botbfkvZznlKhcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5UmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgLyoqXG4gICAgICogIOWktOWDjyBpbWcg5Yqg6L29IGVycm9yIOaXtuinpuWPkVxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlFcnJvcjogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrkurrlkZjlkI3np7BcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlTaG93TmFtZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWktOWDj+i3r+W+hOWcsOWdgCwg6buY6K6k5Li65YWo6Lev5b6E77yM5aaC5p6c5LiN5piv5YWo6Lev5b6E77yM5Y+v5Lul6YCa6L+H6Ieq5a6a5LmJ5pyN5YqhIFRoeUF2YXRhclNlcnZpY2XvvIzph43lhpkgc3JjVHJhbnNmb3JtIOaWueazleWunueOsOi9rOaNolxuICAgICAqXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5U3JjKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc2V0QXZhdGFyU3JjKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDkurrlkZjlkI3np7DvvIjlj6/orr7nva7oh6rlrprkuYnlkI3np7DvvIzpnIDpgJrov4foh6rlrprkuYnmnI3liqEgVGh5QXZhdGFyU2VydmljZe+8jOmHjeWGmSBuYW1lVHJhbnNmb3JtIOaWueazleWOu+WunueOsOi9rOaNou+8iVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeU5hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICAvLyB0aGlzLl9uYW1lID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3NldEF2YXRhck5hbWUodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWktOWDj+Wkp+Wwj1xuICAgICAqIEB0eXBlIDE2IHwgMjIgfCAyNCB8IDI4IHwgMzIgfCAzNiB8IDQ0IHwgNDggfCA2OCB8IDExMCB8IDE2MCB8IHh4cygyMnB4KSB8IHhzKDI0cHgpIHwgc20oMzJweCkgfCBtZCgzNnB4KSB8IGxnKDQ4cHgpXG4gICAgICogQGRlZmF1bHQgbWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlTaXplKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoeUF2YXRhclNpemVNYXBbdmFsdWVdKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRBdmF0YXJTaXplKHRoeUF2YXRhclNpemVNYXBbdmFsdWVdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEF2YXRhclNpemUoKHZhbHVlIGFzIG51bWJlcikgKiAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOW3suW6n+W8g++8jOivt+S9v+eUqCB0aHlSZW1vdmFibGVcbiAgICAgKiBAZGVwcmVjYXRlZFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgdGh5U2hvd1JlbW92ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93UmVtb3ZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblsZXnpLrnp7vpmaTmjInpkq5cbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgc2V0IHRoeVJlbW92YWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93UmVtb3ZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlm77niYfoh6rlrprkuYnnsbtcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlJbWdDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm56aB55SoXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiDlm77niYfliqDovb3nrZbnlaVcbiAgICAgKiBAdHlwZSBlYWdlcijnq4vljbPliqDovb0pIHwgbGF6eSjlu7bov5/liqDovb0pXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5TG9hZGluZz86IFRoeUF2YXRhckxvYWRpbmc7XG5cbiAgICAvKipcbiAgICAgKiDlm77niYfliqDovb3kvJjlhYjnuqdcbiAgICAgKiBAdHlwZSBhdXRvKOm7mOiupCkgfCBoaWdoKOmrmCkgfCBsb3co5L2OKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUZldGNoUHJpb3JpdHk/OiBUaHlBdmF0YXJGZXRjaFByaW9yaXR5O1xuXG4gICAgcHJpdmF0ZSBfc2V0QXZhdGFyU2l6ZShzaXplOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHNpemVBcnJheS5pbmRleE9mKHNpemUpID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NpemUgPSBzaXplO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2l6ZSA9IHRoaXMuZmluZENsb3Nlc3RTaXplKHNpemVBcnJheSwgc2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3MoW2B0aHktYXZhdGFyLSR7dGhpcy5fc2l6ZX1gXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQ2xvc2VzdFNpemUoc2l6ZXM6IG51bWJlcltdLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGxlZnQgPSAwLFxuICAgICAgICAgICAgcmlnaHQgPSBzaXplcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgbWlkZGxlOiBudW1iZXIsXG4gICAgICAgICAgICByZXN1bHQ6IG51bWJlcjtcblxuICAgICAgICB3aGlsZSAobGVmdCA8PSByaWdodCkge1xuICAgICAgICAgICAgbWlkZGxlID0gTWF0aC5mbG9vcigobGVmdCArIHJpZ2h0KSAvIDIpO1xuICAgICAgICAgICAgaWYgKHJpZ2h0IC0gbGVmdCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2l6ZXNbcmlnaHRdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ID0gc2l6ZXNbbWlkZGxlXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJpZ2h0ID0gbWlkZGxlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbWlkZGxlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZSAtIHNpemVzW2xlZnRdIDwgc2l6ZXNbcmlnaHRdIC0gdmFsdWUgPyBzaXplc1tsZWZ0XSA6IHNpemVzW3JpZ2h0XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRBdmF0YXJTcmMoc3JjOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHNyYyAmJiB0aGlzLnRoeUF2YXRhclNlcnZpY2UuaWdub3JlQXZhdGFyU3JjUGF0aHMuaW5kZXhPZihzcmMpIDwgMCkge1xuICAgICAgICAgICAgdGhpcy5fc3JjID0gc3JjO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3JjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEF2YXRhck5hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy50aHlBdmF0YXJTZXJ2aWNlLm5hbWVUcmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICBpZiAoaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXZhdGFyTmFtZSA9IG5hbWUgYXMgc3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hdmF0YXJOYW1lID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmF2YXRhck5hbWVTYWZlSHRtbCA9IG5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0aHlBdmF0YXJTZXJ2aWNlOiBUaHlBdmF0YXJTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5fc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0QXZhdGFyU2l6ZShERUZBVUxUX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnVwZGF0ZUNsYXNzKFtgdGh5LWF2YXRhci0ke3RoaXMuX3NpemV9YF0pO1xuICAgIH1cblxuICAgIHJlbW92ZSgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5T25SZW1vdmUuZW1pdCgkZXZlbnQpO1xuICAgICAgICB0aGlzLnRoeVJlbW92ZS5lbWl0KCRldmVudCk7XG4gICAgfVxuXG4gICAgYXZhdGFySW1nRXJyb3IoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLl9zZXRBdmF0YXJTcmMobnVsbCk7XG4gICAgICAgIHRoaXMudGh5RXJyb3IuZW1pdCgkZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxpbWdcbiAgKm5nSWY9XCJfc3JjOyBlbHNlIG5vU3JjXCJcbiAgW3NyY109XCJfc3JjIHwgdGh5QXZhdGFyU3JjOiBfc2l6ZVwiXG4gIGNsYXNzPVwiYXZhdGFyLWF2YXRhclwiXG4gIFtuZ0NsYXNzXT1cInRoeUltZ0NsYXNzXCJcbiAgYWx0PVwie3sgYXZhdGFyTmFtZSB8fCAnJyB9fVwiXG4gIFthdHRyLmxvYWRpbmddPVwidGh5TG9hZGluZ1wiXG4gIFthdHRyLmZldGNocHJpb3JpdHldPVwidGh5RmV0Y2hQcmlvcml0eVwiXG4gIChlcnJvcik9XCJhdmF0YXJJbWdFcnJvcigkZXZlbnQpXCJcbi8+XG5cbjxuZy10ZW1wbGF0ZSAjbm9TcmM+XG4gIDxzcGFuIGNsYXNzPVwiYXZhdGFyLWRlZmF1bHRcIiBbbmdTdHlsZV09XCJhdmF0YXJOYW1lIHwgYXZhdGFyQmdDb2xvclwiPlxuICAgIDxkaXY+e3sgYXZhdGFyTmFtZSB8IGF2YXRhclNob3J0TmFtZSB9fTwvZGl2PlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwidGh5U2hvd05hbWVcIj5cbiAgPGRpdiAqbmdJZj1cImF2YXRhck5hbWVTYWZlSHRtbDsgZWxzZSBub0F2YXRhck5hbWVTYWZlSHRtbFwiIGNsYXNzPVwiYXZhdGFyLW5hbWVcIiBbaW5uZXJIdG1sXT1cImF2YXRhck5hbWVTYWZlSHRtbFwiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI25vQXZhdGFyTmFtZVNhZmVIdG1sPlxuICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItbmFtZVwiPnt7IGF2YXRhck5hbWUgfX08L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxhICpuZ0lmPVwiX3Nob3dSZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlKCRldmVudClcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJyZW1vdmUtbGluayBhdmF0YXItcmVtb3ZlXCI+XG4gIDx0aHktaWNvbiBjbGFzcz1cInJlbW92ZS1saW5rLWljb25cIiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIj48L3RoeS1pY29uPlxuPC9hPlxuPGRpdiAqbmdJZj1cInRoeURpc2FibGVkXCIgY2xhc3M9XCJ0aHktYXZhdGFyLWRpc2FibGVkXCI+XG4gIDx0aHktaWNvbiBjbGFzcz1cInRoeS1hdmF0YXItZGlzYWJsZWQtaWNvblwiIHRoeUljb25OYW1lPVwiYmFuXCI+PC90aHktaWNvbj5cbjwvZGl2PlxuIl19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFL0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUUvQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM1QixHQUFHLEVBQUUsRUFBRTtJQUNQLEVBQUUsRUFBRSxFQUFFO0lBQ04s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bUNBOEJBLDRDRFFjLElBQUksNkZBQUUsT0FBTyxvRkFBRSxPQUFPLDJFQUFFLGdCQUFnQixpTUFBRSxtQkFBbUIsbURBQUUsaUJBQWlCLGlEQUFFLGFBQWE7QUFrQ3pHO0lBQVUsWUFBWSxFQUFFOzt1REFBc0I7QUF1QzlDO0lBQ0MsWUFBWSxFQUFFOzs7dURBR2Q7QUFNRDtJQUNDLFlBQVksRUFBRTs7O3NEQUdkO0FBV0Q7SUFBVSxZQUFZLEVBQUU7O3VEQUFzQjsyRkFoR3JDLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxZQUFZLG1CQUVMLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxDQUFDO3VHQVl6RSxTQUFTO3NCQUF6QyxXQUFXO3VCQUFDLGtCQUFrQjtnQkFNckIsV0FBVztzQkFBcEIsTUFBTTtnQkFLRyxTQUFTO3NCQUFsQixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBTWtCLFdBQVc7c0JBQW5DLEtBQUs7Z0JBT0YsTUFBTTtzQkFEVCxLQUFLO2dCQVNGLE9BQU87c0JBRFYsS0FBSztnQkFZRixPQUFPO3NCQURWLEtBQUs7Z0JBZ0JGLGFBQWE7c0JBRmhCLEtBQUs7Z0JBWUYsWUFBWTtzQkFGZixLQUFLO2dCQVNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTW1CLFdBQVc7c0JBQW5DLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGlzU3RyaW5nIH0gZnJvbSAnbmd4LXRldGh5cy91dGlsJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5pbXBvcnQgeyBUaHlBdmF0YXJTZXJ2aWNlIH0gZnJvbSAnLi9hdmF0YXIuc2VydmljZSc7XG5pbXBvcnQgeyBBdmF0YXJTaG9ydE5hbWVQaXBlLCBBdmF0YXJCZ0NvbG9yUGlwZSwgQXZhdGFyU3JjUGlwZSB9IGZyb20gJy4vYXZhdGFyLnBpcGUnO1xuaW1wb3J0IHsgVGh5SWNvbkNvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvaWNvbic7XG5pbXBvcnQgeyBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5cbmNvbnN0IHNpemVBcnJheSA9IFsxNiwgMjIsIDI0LCAyOCwgMzIsIDM2LCA0NCwgNDgsIDY4LCAxMTAsIDE2MF07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NJWkUgPSAzNjtcblxuZXhwb3J0IGNvbnN0IHRoeUF2YXRhclNpemVNYXAgPSB7XG4gICAgeHhzOiAyMixcbiAgICB4czogMjQsXG4gICAgc206IDMyLFxuICAgIG1kOiAzNixcbiAgICBsZzogNDhcbn07XG5cbi8qKiBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9lbWJlZGRlZC1jb250ZW50Lmh0bWwjYXR0ci1pbWctbG9hZGluZyAqL1xuZXhwb3J0IHR5cGUgVGh5QXZhdGFyTG9hZGluZyA9ICdlYWdlcicgfCAnbGF6eSc7XG5cbi8qKiBodHRwczovL3dpY2cuZ2l0aHViLmlvL3ByaW9yaXR5LWhpbnRzLyNpZGwtaW5kZXggKi9cbmV4cG9ydCB0eXBlIFRoeUF2YXRhckZldGNoUHJpb3JpdHkgPSAnaGlnaCcgfCAnbG93JyB8ICdhdXRvJztcblxuLyoqXG4gKiDlpLTlg4/nu4Tku7ZcbiAqIEBuYW1lIHRoeS1hdmF0YXJcbiAqIEBvcmRlciAxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1hdmF0YXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIE5nQ2xhc3MsIE5nU3R5bGUsIFRoeUljb25Db21wb25lbnQsIEF2YXRhclNob3J0TmFtZVBpcGUsIEF2YXRhckJnQ29sb3JQaXBlLCBBdmF0YXJTcmNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBUaHlBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIF9zcmM6IHN0cmluZztcbiAgICBfbmFtZTogc3RyaW5nO1xuICAgIF9zaXplOiBudW1iZXI7XG4gICAgX3Nob3dSZW1vdmUgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBhdmF0YXJTcmM6IHN0cmluZztcbiAgICBwdWJsaWMgYXZhdGFyTmFtZT86IHN0cmluZztcbiAgICBwdWJsaWMgYXZhdGFyTmFtZVNhZmVIdG1sPzogU2FmZUh0bWw7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1hdmF0YXInKSBfaXNBdmF0YXIgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogKiDlt7Llup/lvIPvvIzor7fkvb/nlKggdGh5UmVtb3ZlXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdGh5T25SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiAg56e76Zmk5oyJ6ZKu55qE5LqL5Lu2LCDlvZMgdGh5UmVtb3ZhYmxlIOS4uiB0cnVlIOaXtui1t+S9nOeUqFxuICAgICAqL1xuICAgIEBPdXRwdXQoKSB0aHlSZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiAg5aS05YOPIGltZyDliqDovb0gZXJyb3Ig5pe26Kem5Y+RXG4gICAgICovXG4gICAgQE91dHB1dCgpIHRoeUVycm9yOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuS6uuWRmOWQjeensFxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeVNob3dOYW1lOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICog5aS05YOP6Lev5b6E5Zyw5Z2ALCDpu5jorqTkuLrlhajot6/lvoTvvIzlpoLmnpzkuI3mmK/lhajot6/lvoTvvIzlj6/ku6XpgJrov4foh6rlrprkuYnmnI3liqEgVGh5QXZhdGFyU2VydmljZe+8jOmHjeWGmSBzcmNUcmFuc2Zvcm0g5pa55rOV5a6e546w6L2s5o2iXG4gICAgICpcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlTcmModmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zZXRBdmF0YXJTcmModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS6uuWRmOWQjeensO+8iOWPr+iuvue9ruiHquWumuS5ieWQjeensO+8jOmcgOmAmui/h+iHquWumuS5ieacjeWKoSBUaHlBdmF0YXJTZXJ2aWNl77yM6YeN5YaZIG5hbWVUcmFuc2Zvcm0g5pa55rOV5Y675a6e546w6L2s5o2i77yJXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5TmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIC8vIHRoaXMuX25hbWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fc2V0QXZhdGFyTmFtZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5aS05YOP5aSn5bCPXG4gICAgICogQHR5cGUgMTYgfCAyMiB8IDI0IHwgMjggfCAzMiB8IDM2IHwgNDQgfCA0OCB8IDY4IHwgMTEwIHwgMTYwIHwgeHhzKDIycHgpIHwgeHMoMjRweCkgfCBzbSgzMnB4KSB8IG1kKDM2cHgpIHwgbGcoNDhweClcbiAgICAgKiBAZGVmYXVsdCBtZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeVNpemUodmFsdWU6IG51bWJlciB8IHN0cmluZykge1xuICAgICAgICBpZiAodGh5QXZhdGFyU2l6ZU1hcFt2YWx1ZV0pIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEF2YXRhclNpemUodGh5QXZhdGFyU2l6ZU1hcFt2YWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0QXZhdGFyU2l6ZSgodmFsdWUgYXMgbnVtYmVyKSAqIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5bey5bqf5byD77yM6K+35L2/55SoIHRoeVJlbW92YWJsZVxuICAgICAqIEBkZXByZWNhdGVkXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCB0aHlTaG93UmVtb3ZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dSZW1vdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWxleekuuenu+mZpOaMiemSrlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgdGh5UmVtb3ZhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Nob3dSZW1vdmUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWbvueJh+iHquWumuS5ieexu1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUltZ0NsYXNzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbnpoHnlKhcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlEaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIOWbvueJh+WKoOi9veetlueVpVxuICAgICAqIEB0eXBlIGVhZ2VyKOeri+WNs+WKoOi9vSkgfCBsYXp5KOW7tui/n+WKoOi9vSlcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlMb2FkaW5nPzogVGh5QXZhdGFyTG9hZGluZztcblxuICAgIC8qKlxuICAgICAqIOWbvueJh+WKoOi9veS8mOWFiOe6p1xuICAgICAqIEB0eXBlIGF1dG8o6buY6K6kKSB8IGhpZ2go6auYKSB8IGxvdyjkvY4pXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RmV0Y2hQcmlvcml0eT86IFRoeUF2YXRhckZldGNoUHJpb3JpdHk7XG5cbiAgICBwcml2YXRlIF9zZXRBdmF0YXJTaXplKHNpemU6IG51bWJlcikge1xuICAgICAgICBpZiAoc2l6ZUFycmF5LmluZGV4T2Yoc2l6ZSkgPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaXplID0gdGhpcy5maW5kQ2xvc2VzdFNpemUoc2l6ZUFycmF5LCBzaXplKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhvc3RSZW5kZXJlci51cGRhdGVDbGFzcyhbYHRoeS1hdmF0YXItJHt0aGlzLl9zaXplfWBdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbmRDbG9zZXN0U2l6ZShzaXplQXJyYXk6IG51bWJlcltdLCBjdXJyZW50U2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IGNsb3Nlc3RWYWx1ZSA9IHNpemVBcnJheVswXTtcbiAgICAgICAgbGV0IGNsb3Nlc3REaWZmZXJlbmNlID0gTWF0aC5hYnMoY2xvc2VzdFZhbHVlIC0gY3VycmVudFNpemUpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc2l6ZUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGlmZmVyZW5jZSA9IE1hdGguYWJzKHNpemVBcnJheVtpXSAtIGN1cnJlbnRTaXplKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RGlmZmVyZW5jZSA8PSBjbG9zZXN0RGlmZmVyZW5jZSkge1xuICAgICAgICAgICAgICAgIGNsb3Nlc3RWYWx1ZSA9IHNpemVBcnJheVtpXTtcbiAgICAgICAgICAgICAgICBjbG9zZXN0RGlmZmVyZW5jZSA9IGN1cnJlbnREaWZmZXJlbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNsb3Nlc3RWYWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zZXRBdmF0YXJTcmMoc3JjOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHNyYyAmJiB0aGlzLnRoeUF2YXRhclNlcnZpY2UuaWdub3JlQXZhdGFyU3JjUGF0aHMuaW5kZXhPZihzcmMpIDwgMCkge1xuICAgICAgICAgICAgdGhpcy5fc3JjID0gc3JjO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc3JjID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3NldEF2YXRhck5hbWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBjb25zdCBuYW1lID0gdGhpcy50aHlBdmF0YXJTZXJ2aWNlLm5hbWVUcmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICBpZiAoaXNTdHJpbmcobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuYXZhdGFyTmFtZSA9IG5hbWUgYXMgc3RyaW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hdmF0YXJOYW1lID0gdmFsdWU7XG4gICAgICAgICAgICB0aGlzLmF2YXRhck5hbWVTYWZlSHRtbCA9IG5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhvc3RSZW5kZXJlciA9IHVzZUhvc3RSZW5kZXJlcigpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0aHlBdmF0YXJTZXJ2aWNlOiBUaHlBdmF0YXJTZXJ2aWNlKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5fc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0QXZhdGFyU2l6ZShERUZBVUxUX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaG9zdFJlbmRlcmVyLnVwZGF0ZUNsYXNzKFtgdGh5LWF2YXRhci0ke3RoaXMuX3NpemV9YF0pO1xuICAgIH1cblxuICAgIHJlbW92ZSgkZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIHRoaXMudGh5T25SZW1vdmUuZW1pdCgkZXZlbnQpO1xuICAgICAgICB0aGlzLnRoeVJlbW92ZS5lbWl0KCRldmVudCk7XG4gICAgfVxuXG4gICAgYXZhdGFySW1nRXJyb3IoJGV2ZW50OiBFdmVudCkge1xuICAgICAgICB0aGlzLl9zZXRBdmF0YXJTcmMobnVsbCk7XG4gICAgICAgIHRoaXMudGh5RXJyb3IuZW1pdCgkZXZlbnQpO1xuICAgIH1cbn1cbiIsIjxpbWdcbiAgKm5nSWY9XCJfc3JjOyBlbHNlIG5vU3JjXCJcbiAgW3NyY109XCJfc3JjIHwgdGh5QXZhdGFyU3JjOiBfc2l6ZVwiXG4gIGNsYXNzPVwiYXZhdGFyLWF2YXRhclwiXG4gIFtuZ0NsYXNzXT1cInRoeUltZ0NsYXNzXCJcbiAgYWx0PVwie3sgYXZhdGFyTmFtZSB8fCAnJyB9fVwiXG4gIFthdHRyLmxvYWRpbmddPVwidGh5TG9hZGluZ1wiXG4gIFthdHRyLmZldGNocHJpb3JpdHldPVwidGh5RmV0Y2hQcmlvcml0eVwiXG4gIChlcnJvcik9XCJhdmF0YXJJbWdFcnJvcigkZXZlbnQpXCJcbi8+XG5cbjxuZy10ZW1wbGF0ZSAjbm9TcmM+XG4gIDxzcGFuIGNsYXNzPVwiYXZhdGFyLWRlZmF1bHRcIiBbbmdTdHlsZV09XCJhdmF0YXJOYW1lIHwgYXZhdGFyQmdDb2xvclwiPlxuICAgIDxkaXY+e3sgYXZhdGFyTmFtZSB8IGF2YXRhclNob3J0TmFtZSB9fTwvZGl2PlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgW25nSWZdPVwidGh5U2hvd05hbWVcIj5cbiAgPGRpdiAqbmdJZj1cImF2YXRhck5hbWVTYWZlSHRtbDsgZWxzZSBub0F2YXRhck5hbWVTYWZlSHRtbFwiIGNsYXNzPVwiYXZhdGFyLW5hbWVcIiBbaW5uZXJIdG1sXT1cImF2YXRhck5hbWVTYWZlSHRtbFwiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI25vQXZhdGFyTmFtZVNhZmVIdG1sPlxuICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItbmFtZVwiPnt7IGF2YXRhck5hbWUgfX08L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxhICpuZ0lmPVwiX3Nob3dSZW1vdmVcIiAoY2xpY2spPVwicmVtb3ZlKCRldmVudClcIiBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJyZW1vdmUtbGluayBhdmF0YXItcmVtb3ZlXCI+XG4gIDx0aHktaWNvbiBjbGFzcz1cInJlbW92ZS1saW5rLWljb25cIiB0aHlJY29uTmFtZT1cImNsb3NlLWNpcmNsZS1ib2xkLWZpbGxcIj48L3RoeS1pY29uPlxuPC9hPlxuPGRpdiAqbmdJZj1cInRoeURpc2FibGVkXCIgY2xhc3M9XCJ0aHktYXZhdGFyLWRpc2FibGVkXCI+XG4gIDx0aHktaWNvbiBjbGFzcz1cInRoeS1hdmF0YXItZGlzYWJsZWQtaWNvblwiIHRoeUljb25OYW1lPVwiYmFuXCI+PC90aHktaWNvbj5cbjwvZGl2PlxuIl19