pdm-ui-kit 0.1.11 → 0.1.13

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.
@@ -6,20 +6,25 @@ export class PdmDrawerComponent {
6
6
  this.open = false;
7
7
  this.variant = 'drawer';
8
8
  this.className = '';
9
- this.title = 'Move Goal';
10
- this.description = 'Set your daily activity goal.';
11
- this.value = 350;
12
- this.unit = 'CALORIES/DAY';
13
- this.profileTitle = 'Edit profile';
14
- this.profileDescription = 'Make changes to your profile here. Click save when you\'re done.';
9
+ this.title = '';
10
+ this.description = '';
11
+ this.value = '';
12
+ this.unit = '';
13
+ this.decrementLabel = '-';
14
+ this.incrementLabel = '+';
15
+ this.primaryLabel = '';
16
+ this.secondaryLabel = '';
17
+ this.profileTitle = '';
18
+ this.profileDescription = '';
15
19
  this.nameLabel = 'Name';
16
- this.nameValue = 'Pedro Duarte';
20
+ this.nameValue = '';
17
21
  this.usernameLabel = 'Username';
18
- this.usernameValue = '@peduarte';
22
+ this.usernameValue = '';
23
+ this.responsivePrimaryLabel = '';
19
24
  this.openChange = new EventEmitter();
20
25
  this.primaryAction = new EventEmitter();
21
26
  this.secondaryAction = new EventEmitter();
22
- this.bars = [72, 54, 58, 49, 60, 65, 44, 53, 61, 52, 63, 48, 66];
27
+ this.bars = [];
23
28
  }
24
29
  close() {
25
30
  this.openChange.emit(false);
@@ -32,10 +37,10 @@ export class PdmDrawerComponent {
32
37
  }
33
38
  }
34
39
  PdmDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
35
- PdmDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDrawerComponent, selector: "pdm-drawer", inputs: { open: "open", variant: "variant", className: "className", title: "title", description: "description", value: "value", unit: "unit", profileTitle: "profileTitle", profileDescription: "profileDescription", nameLabel: "nameLabel", nameValue: "nameValue", usernameLabel: "usernameLabel", usernameValue: "usernameValue" }, outputs: { openChange: "openChange", primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\" [ngClass]=\"className\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"close()\"></div>\n\n <section\n *ngIf=\"variant === 'drawer'; else responsiveDialog\"\n class=\"absolute inset-x-0 bottom-0 mx-auto w-full max-w-6xl rounded-t-lg border border-border bg-background p-6 shadow-lg\"\n >\n <div class=\"mx-auto mb-4 h-1 w-10 rounded-full bg-border\"></div>\n\n <div class=\"mx-auto flex max-w-sm flex-col items-center\">\n <h3 class=\"m-0 text-sm font-semibold text-foreground\">{{ title }}</h3>\n <p class=\"m-0 mt-1 text-xs text-muted-foreground\">{{ description }}</p>\n\n <div class=\"mt-3 flex w-full items-center justify-center gap-4\">\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">-</button>\n <div class=\"text-center\">\n <div class=\"text-5xl font-semibold leading-none text-foreground\">{{ value }}</div>\n <div class=\"mt-1 text-xs tracking-wide text-muted-foreground\">{{ unit }}</div>\n </div>\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">+</button>\n </div>\n\n <div class=\"mt-3 flex h-14 w-full items-end gap-1\">\n <div *ngFor=\"let bar of bars\" class=\"flex-1 bg-foreground\" [style.height.px]=\"bar\"></div>\n </div>\n\n <button type=\"button\" class=\"mt-3 h-9 w-full rounded-md bg-primary text-sm font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">Submit</button>\n <button type=\"button\" class=\"mt-2 h-9 w-full rounded-md border border-input bg-background text-sm font-medium text-foreground\" (click)=\"onSecondaryAction()\">Cancel</button>\n </div>\n </section>\n\n <ng-template #responsiveDialog>\n <section class=\"absolute left-1/2 top-1/2 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-lg border border-border bg-background p-6 shadow-lg\">\n <div class=\"flex items-start justify-between\">\n <div>\n <h3 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ profileTitle }}</h3>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ profileDescription }}</p>\n </div>\n <button type=\"button\" class=\"h-5 w-5 text-muted-foreground\" (click)=\"close()\">\u00D7</button>\n </div>\n\n <div class=\"mt-3 flex flex-col gap-3\">\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ nameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ nameValue }}</div>\n </div>\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ usernameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ usernameValue }}</div>\n </div>\n </div>\n\n <button type=\"button\" class=\"mt-3 h-8 w-full rounded-md bg-primary text-xs font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">Save changes</button>\n </section>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
40
+ PdmDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PdmDrawerComponent, selector: "pdm-drawer", inputs: { open: "open", variant: "variant", className: "className", title: "title", description: "description", value: "value", unit: "unit", decrementLabel: "decrementLabel", incrementLabel: "incrementLabel", primaryLabel: "primaryLabel", secondaryLabel: "secondaryLabel", profileTitle: "profileTitle", profileDescription: "profileDescription", nameLabel: "nameLabel", nameValue: "nameValue", usernameLabel: "usernameLabel", usernameValue: "usernameValue", responsivePrimaryLabel: "responsivePrimaryLabel", bars: "bars" }, outputs: { openChange: "openChange", primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\" [ngClass]=\"className\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"close()\"></div>\n\n <section\n *ngIf=\"variant === 'drawer'; else responsiveDialog\"\n class=\"absolute inset-x-0 bottom-0 mx-auto w-full max-w-6xl rounded-t-lg border border-border bg-background p-6 shadow-lg\"\n >\n <div class=\"mx-auto mb-4 h-1 w-10 rounded-full bg-border\"></div>\n\n <div class=\"mx-auto flex max-w-sm flex-col items-center\">\n <h3 class=\"m-0 text-sm font-semibold text-foreground\">{{ title }}</h3>\n <p class=\"m-0 mt-1 text-xs text-muted-foreground\">{{ description }}</p>\n\n <div class=\"mt-3 flex w-full items-center justify-center gap-4\">\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">{{ decrementLabel }}</button>\n <div class=\"text-center\">\n <div class=\"text-5xl font-semibold leading-none text-foreground\">{{ value }}</div>\n <div class=\"mt-1 text-xs tracking-wide text-muted-foreground\">{{ unit }}</div>\n </div>\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">{{ incrementLabel }}</button>\n </div>\n\n <div *ngIf=\"bars.length\" class=\"mt-3 flex h-14 w-full items-end gap-1\">\n <div *ngFor=\"let bar of bars\" class=\"flex-1 bg-foreground\" [style.height.px]=\"bar\"></div>\n </div>\n\n <button *ngIf=\"primaryLabel\" type=\"button\" class=\"mt-3 h-9 w-full rounded-md bg-primary text-sm font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ primaryLabel }}</button>\n <button *ngIf=\"secondaryLabel\" type=\"button\" class=\"mt-2 h-9 w-full rounded-md border border-input bg-background text-sm font-medium text-foreground\" (click)=\"onSecondaryAction()\">{{ secondaryLabel }}</button>\n </div>\n </section>\n\n <ng-template #responsiveDialog>\n <section class=\"absolute left-1/2 top-1/2 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-lg border border-border bg-background p-6 shadow-lg\">\n <div class=\"flex items-start justify-between\">\n <div>\n <h3 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ profileTitle }}</h3>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ profileDescription }}</p>\n </div>\n <button type=\"button\" class=\"h-5 w-5 text-muted-foreground\" (click)=\"close()\">\u00D7</button>\n </div>\n\n <div class=\"mt-3 flex flex-col gap-3\">\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ nameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ nameValue }}</div>\n </div>\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ usernameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ usernameValue }}</div>\n </div>\n </div>\n\n <button *ngIf=\"responsivePrimaryLabel\" type=\"button\" class=\"mt-3 h-8 w-full rounded-md bg-primary text-xs font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ responsivePrimaryLabel }}</button>\n </section>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
36
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PdmDrawerComponent, decorators: [{
37
42
  type: Component,
38
- args: [{ selector: 'pdm-drawer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\" [ngClass]=\"className\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"close()\"></div>\n\n <section\n *ngIf=\"variant === 'drawer'; else responsiveDialog\"\n class=\"absolute inset-x-0 bottom-0 mx-auto w-full max-w-6xl rounded-t-lg border border-border bg-background p-6 shadow-lg\"\n >\n <div class=\"mx-auto mb-4 h-1 w-10 rounded-full bg-border\"></div>\n\n <div class=\"mx-auto flex max-w-sm flex-col items-center\">\n <h3 class=\"m-0 text-sm font-semibold text-foreground\">{{ title }}</h3>\n <p class=\"m-0 mt-1 text-xs text-muted-foreground\">{{ description }}</p>\n\n <div class=\"mt-3 flex w-full items-center justify-center gap-4\">\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">-</button>\n <div class=\"text-center\">\n <div class=\"text-5xl font-semibold leading-none text-foreground\">{{ value }}</div>\n <div class=\"mt-1 text-xs tracking-wide text-muted-foreground\">{{ unit }}</div>\n </div>\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">+</button>\n </div>\n\n <div class=\"mt-3 flex h-14 w-full items-end gap-1\">\n <div *ngFor=\"let bar of bars\" class=\"flex-1 bg-foreground\" [style.height.px]=\"bar\"></div>\n </div>\n\n <button type=\"button\" class=\"mt-3 h-9 w-full rounded-md bg-primary text-sm font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">Submit</button>\n <button type=\"button\" class=\"mt-2 h-9 w-full rounded-md border border-input bg-background text-sm font-medium text-foreground\" (click)=\"onSecondaryAction()\">Cancel</button>\n </div>\n </section>\n\n <ng-template #responsiveDialog>\n <section class=\"absolute left-1/2 top-1/2 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-lg border border-border bg-background p-6 shadow-lg\">\n <div class=\"flex items-start justify-between\">\n <div>\n <h3 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ profileTitle }}</h3>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ profileDescription }}</p>\n </div>\n <button type=\"button\" class=\"h-5 w-5 text-muted-foreground\" (click)=\"close()\">\u00D7</button>\n </div>\n\n <div class=\"mt-3 flex flex-col gap-3\">\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ nameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ nameValue }}</div>\n </div>\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ usernameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ usernameValue }}</div>\n </div>\n </div>\n\n <button type=\"button\" class=\"mt-3 h-8 w-full rounded-md bg-primary text-xs font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">Save changes</button>\n </section>\n </ng-template>\n</div>\n" }]
43
+ args: [{ selector: 'pdm-drawer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"open\" class=\"fixed inset-0 z-50\" [ngClass]=\"className\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"close()\"></div>\n\n <section\n *ngIf=\"variant === 'drawer'; else responsiveDialog\"\n class=\"absolute inset-x-0 bottom-0 mx-auto w-full max-w-6xl rounded-t-lg border border-border bg-background p-6 shadow-lg\"\n >\n <div class=\"mx-auto mb-4 h-1 w-10 rounded-full bg-border\"></div>\n\n <div class=\"mx-auto flex max-w-sm flex-col items-center\">\n <h3 class=\"m-0 text-sm font-semibold text-foreground\">{{ title }}</h3>\n <p class=\"m-0 mt-1 text-xs text-muted-foreground\">{{ description }}</p>\n\n <div class=\"mt-3 flex w-full items-center justify-center gap-4\">\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">{{ decrementLabel }}</button>\n <div class=\"text-center\">\n <div class=\"text-5xl font-semibold leading-none text-foreground\">{{ value }}</div>\n <div class=\"mt-1 text-xs tracking-wide text-muted-foreground\">{{ unit }}</div>\n </div>\n <button type=\"button\" class=\"inline-flex h-6 w-6 items-center justify-center rounded-full border border-border text-muted-foreground\">{{ incrementLabel }}</button>\n </div>\n\n <div *ngIf=\"bars.length\" class=\"mt-3 flex h-14 w-full items-end gap-1\">\n <div *ngFor=\"let bar of bars\" class=\"flex-1 bg-foreground\" [style.height.px]=\"bar\"></div>\n </div>\n\n <button *ngIf=\"primaryLabel\" type=\"button\" class=\"mt-3 h-9 w-full rounded-md bg-primary text-sm font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ primaryLabel }}</button>\n <button *ngIf=\"secondaryLabel\" type=\"button\" class=\"mt-2 h-9 w-full rounded-md border border-input bg-background text-sm font-medium text-foreground\" (click)=\"onSecondaryAction()\">{{ secondaryLabel }}</button>\n </div>\n </section>\n\n <ng-template #responsiveDialog>\n <section class=\"absolute left-1/2 top-1/2 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-lg border border-border bg-background p-6 shadow-lg\">\n <div class=\"flex items-start justify-between\">\n <div>\n <h3 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ profileTitle }}</h3>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ profileDescription }}</p>\n </div>\n <button type=\"button\" class=\"h-5 w-5 text-muted-foreground\" (click)=\"close()\">\u00D7</button>\n </div>\n\n <div class=\"mt-3 flex flex-col gap-3\">\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ nameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ nameValue }}</div>\n </div>\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ usernameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ usernameValue }}</div>\n </div>\n </div>\n\n <button *ngIf=\"responsivePrimaryLabel\" type=\"button\" class=\"mt-3 h-8 w-full rounded-md bg-primary text-xs font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ responsivePrimaryLabel }}</button>\n </section>\n </ng-template>\n</div>\n" }]
39
44
  }], propDecorators: { open: [{
40
45
  type: Input
41
46
  }], variant: [{
@@ -50,6 +55,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
50
55
  type: Input
51
56
  }], unit: [{
52
57
  type: Input
58
+ }], decrementLabel: [{
59
+ type: Input
60
+ }], incrementLabel: [{
61
+ type: Input
62
+ }], primaryLabel: [{
63
+ type: Input
64
+ }], secondaryLabel: [{
65
+ type: Input
53
66
  }], profileTitle: [{
54
67
  type: Input
55
68
  }], profileDescription: [{
@@ -62,11 +75,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
62
75
  type: Input
63
76
  }], usernameValue: [{
64
77
  type: Input
78
+ }], responsivePrimaryLabel: [{
79
+ type: Input
65
80
  }], openChange: [{
66
81
  type: Output
67
82
  }], primaryAction: [{
68
83
  type: Output
69
84
  }], secondaryAction: [{
70
85
  type: Output
86
+ }], bars: [{
87
+ type: Input
71
88
  }] } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVNoRyxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBTVcsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFlBQU8sR0FBcUIsUUFBUSxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixVQUFLLEdBQUcsV0FBVyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsK0JBQStCLENBQUM7UUFDOUMsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFNBQUksR0FBRyxjQUFjLENBQUM7UUFFdEIsaUJBQVksR0FBRyxjQUFjLENBQUM7UUFDOUIsdUJBQWtCLEdBQUcsa0VBQWtFLENBQUM7UUFDeEYsY0FBUyxHQUFHLE1BQU0sQ0FBQztRQUNuQixjQUFTLEdBQUcsY0FBYyxDQUFDO1FBQzNCLGtCQUFhLEdBQUcsVUFBVSxDQUFDO1FBQzNCLGtCQUFhLEdBQUcsV0FBVyxDQUFDO1FBRTNCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFFNUMsU0FBSSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FhdEU7SUFYQyxLQUFLO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7OytHQWhDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixxZUNUL0IsOHVHQXdEQTsyRkQvQ2Esa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1EcmF3ZXJWYXJpYW50ID0gJ2RyYXdlcicgfCAncmVzcG9uc2l2ZS1kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tZHJhd2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbURyYXdlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdmFyaWFudDogUGRtRHJhd2VyVmFyaWFudCA9ICdkcmF3ZXInO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgdGl0bGUgPSAnTW92ZSBHb2FsJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnU2V0IHlvdXIgZGFpbHkgYWN0aXZpdHkgZ29hbC4nO1xuICBASW5wdXQoKSB2YWx1ZSA9IDM1MDtcbiAgQElucHV0KCkgdW5pdCA9ICdDQUxPUklFUy9EQVknO1xuXG4gIEBJbnB1dCgpIHByb2ZpbGVUaXRsZSA9ICdFZGl0IHByb2ZpbGUnO1xuICBASW5wdXQoKSBwcm9maWxlRGVzY3JpcHRpb24gPSAnTWFrZSBjaGFuZ2VzIHRvIHlvdXIgcHJvZmlsZSBoZXJlLiBDbGljayBzYXZlIHdoZW4geW91XFwncmUgZG9uZS4nO1xuICBASW5wdXQoKSBuYW1lTGFiZWwgPSAnTmFtZSc7XG4gIEBJbnB1dCgpIG5hbWVWYWx1ZSA9ICdQZWRybyBEdWFydGUnO1xuICBASW5wdXQoKSB1c2VybmFtZUxhYmVsID0gJ1VzZXJuYW1lJztcbiAgQElucHV0KCkgdXNlcm5hbWVWYWx1ZSA9ICdAcGVkdWFydGUnO1xuXG4gIEBPdXRwdXQoKSBvcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHJpbWFyeUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHNlY29uZGFyeUFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICByZWFkb25seSBiYXJzID0gWzcyLCA1NCwgNTgsIDQ5LCA2MCwgNjUsIDQ0LCA1MywgNjEsIDUyLCA2MywgNDgsIDY2XTtcblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gIH1cblxuICBvblByaW1hcnlBY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5wcmltYXJ5QWN0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2Vjb25kYXJ5QWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2Vjb25kYXJ5QWN0aW9uLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIm9wZW5cIiBjbGFzcz1cImZpeGVkIGluc2V0LTAgei01MFwiIFtuZ0NsYXNzXT1cImNsYXNzTmFtZVwiPlxuICA8ZGl2IGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1mb3JlZ3JvdW5kLzMwXCIgKGNsaWNrKT1cImNsb3NlKClcIj48L2Rpdj5cblxuICA8c2VjdGlvblxuICAgICpuZ0lmPVwidmFyaWFudCA9PT0gJ2RyYXdlcic7IGVsc2UgcmVzcG9uc2l2ZURpYWxvZ1wiXG4gICAgY2xhc3M9XCJhYnNvbHV0ZSBpbnNldC14LTAgYm90dG9tLTAgbXgtYXV0byB3LWZ1bGwgbWF4LXctNnhsIHJvdW5kZWQtdC1sZyBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHAtNiBzaGFkb3ctbGdcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gbWItNCBoLTEgdy0xMCByb3VuZGVkLWZ1bGwgYmctYm9yZGVyXCI+PC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibXgtYXV0byBmbGV4IG1heC13LXNtIGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGgzIGNsYXNzPVwibS0wIHRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LWZvcmVncm91bmRcIj57eyB0aXRsZSB9fTwvaDM+XG4gICAgICA8cCBjbGFzcz1cIm0tMCBtdC0xIHRleHQteHMgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e3sgZGVzY3JpcHRpb24gfX08L3A+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtNFwiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImlubGluZS1mbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj4tPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LTV4bCBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0ZXh0LWZvcmVncm91bmRcIj57eyB2YWx1ZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xIHRleHQteHMgdHJhY2tpbmctd2lkZSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj57eyB1bml0IH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImlubGluZS1mbGV4IGgtNiB3LTYgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWJvcmRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj4rPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm10LTMgZmxleCBoLTE0IHctZnVsbCBpdGVtcy1lbmQgZ2FwLTFcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYmFyIG9mIGJhcnNcIiBjbGFzcz1cImZsZXgtMSBiZy1mb3JlZ3JvdW5kXCIgW3N0eWxlLmhlaWdodC5weF09XCJiYXJcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm10LTMgaC05IHctZnVsbCByb3VuZGVkLW1kIGJnLXByaW1hcnkgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiIChjbGljayk9XCJvblByaW1hcnlBY3Rpb24oKVwiPlN1Ym1pdDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtdC0yIGgtOSB3LWZ1bGwgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LWZvcmVncm91bmRcIiAoY2xpY2spPVwib25TZWNvbmRhcnlBY3Rpb24oKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPG5nLXRlbXBsYXRlICNyZXNwb25zaXZlRGlhbG9nPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiB3LWZ1bGwgbWF4LXctbGcgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJtLTAgdGV4dC1sZyBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodCB0ZXh0LWZvcmVncm91bmRcIj57eyBwcm9maWxlVGl0bGUgfX08L2gzPlxuICAgICAgICAgIDxwIGNsYXNzPVwibS0wIG10LTEgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj57eyBwcm9maWxlRGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImgtNSB3LTUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgKGNsaWNrKT1cImNsb3NlKClcIj7DlzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtYi0xIGJsb2NrIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kXCI+e3sgbmFtZUxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC04IHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBweC0yIHB5LTEgdGV4dC14cyB0ZXh0LWZvcmVncm91bmRcIj57eyBuYW1lVmFsdWUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItMSBibG9jayB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZFwiPnt7IHVzZXJuYW1lTGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTggcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHB4LTIgcHktMSB0ZXh0LXhzIHRleHQtZm9yZWdyb3VuZFwiPnt7IHVzZXJuYW1lVmFsdWUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtdC0zIGgtOCB3LWZ1bGwgcm91bmRlZC1tZCBiZy1wcmltYXJ5IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIiAoY2xpY2spPVwib25QcmltYXJ5QWN0aW9uKClcIj5TYXZlIGNoYW5nZXM8L2J1dHRvbj5cbiAgICA8L3NlY3Rpb24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhd2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kcmF3ZXIvZHJhd2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVNoRyxNQUFNLE9BQU8sa0JBQWtCO0lBTC9CO1FBTVcsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUNiLFlBQU8sR0FBcUIsUUFBUSxDQUFDO1FBQ3JDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsVUFBSyxHQUFvQixFQUFFLENBQUM7UUFDNUIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLG1CQUFjLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBRXBCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUN4QixjQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ25CLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixrQkFBYSxHQUFHLFVBQVUsQ0FBQztRQUMzQixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQiwyQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFFM0IsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDekMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3pDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUU1QyxTQUFJLEdBQWEsRUFBRSxDQUFDO0tBYTlCO0lBWEMsS0FBSztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOzsrR0FyQ1Usa0JBQWtCO21HQUFsQixrQkFBa0IseXFCQ1QvQixxNkdBd0RBOzJGRC9DYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsWUFBWSxtQkFFTCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVFLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBQZG1EcmF3ZXJWYXJpYW50ID0gJ2RyYXdlcicgfCAncmVzcG9uc2l2ZS1kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwZG0tZHJhd2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RyYXdlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBkbURyYXdlckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdmFyaWFudDogUGRtRHJhd2VyVmFyaWFudCA9ICdkcmF3ZXInO1xuICBASW5wdXQoKSBjbGFzc05hbWUgPSAnJztcbiAgQElucHV0KCkgdGl0bGUgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb24gPSAnJztcbiAgQElucHV0KCkgdmFsdWU6IG51bWJlciB8IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSB1bml0ID0gJyc7XG4gIEBJbnB1dCgpIGRlY3JlbWVudExhYmVsID0gJy0nO1xuICBASW5wdXQoKSBpbmNyZW1lbnRMYWJlbCA9ICcrJztcbiAgQElucHV0KCkgcHJpbWFyeUxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIHNlY29uZGFyeUxhYmVsID0gJyc7XG5cbiAgQElucHV0KCkgcHJvZmlsZVRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHByb2ZpbGVEZXNjcmlwdGlvbiA9ICcnO1xuICBASW5wdXQoKSBuYW1lTGFiZWwgPSAnTmFtZSc7XG4gIEBJbnB1dCgpIG5hbWVWYWx1ZSA9ICcnO1xuICBASW5wdXQoKSB1c2VybmFtZUxhYmVsID0gJ1VzZXJuYW1lJztcbiAgQElucHV0KCkgdXNlcm5hbWVWYWx1ZSA9ICcnO1xuICBASW5wdXQoKSByZXNwb25zaXZlUHJpbWFyeUxhYmVsID0gJyc7XG5cbiAgQE91dHB1dCgpIG9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwcmltYXJ5QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgc2Vjb25kYXJ5QWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBJbnB1dCgpIGJhcnM6IG51bWJlcltdID0gW107XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgb25QcmltYXJ5QWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucHJpbWFyeUFjdGlvbi5lbWl0KCk7XG4gIH1cblxuICBvblNlY29uZGFyeUFjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnNlY29uZGFyeUFjdGlvbi5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJvcGVuXCIgY2xhc3M9XCJmaXhlZCBpbnNldC0wIHotNTBcIiBbbmdDbGFzc109XCJjbGFzc05hbWVcIj5cbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIGluc2V0LTAgYmctZm9yZWdyb3VuZC8zMFwiIChjbGljayk9XCJjbG9zZSgpXCI+PC9kaXY+XG5cbiAgPHNlY3Rpb25cbiAgICAqbmdJZj1cInZhcmlhbnQgPT09ICdkcmF3ZXInOyBlbHNlIHJlc3BvbnNpdmVEaWFsb2dcIlxuICAgIGNsYXNzPVwiYWJzb2x1dGUgaW5zZXQteC0wIGJvdHRvbS0wIG14LWF1dG8gdy1mdWxsIG1heC13LTZ4bCByb3VuZGVkLXQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJteC1hdXRvIG1iLTQgaC0xIHctMTAgcm91bmRlZC1mdWxsIGJnLWJvcmRlclwiPjwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm14LWF1dG8gZmxleCBtYXgtdy1zbSBmbGV4LWNvbCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxoMyBjbGFzcz1cIm0tMCB0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1mb3JlZ3JvdW5kXCI+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgPHAgY2xhc3M9XCJtLTAgbXQtMSB0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGRlc2NyaXB0aW9uIH19PC9wPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMyBmbGV4IHctZnVsbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTRcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJpbmxpbmUtZmxleCBoLTYgdy02IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1ib3JkZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCI+e3sgZGVjcmVtZW50TGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtNXhsIGZvbnQtc2VtaWJvbGQgbGVhZGluZy1ub25lIHRleHQtZm9yZWdyb3VuZFwiPnt7IHZhbHVlIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTEgdGV4dC14cyB0cmFja2luZy13aWRlIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IHVuaXQgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiaW5saW5lLWZsZXggaC02IHctNiBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItYm9yZGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZFwiPnt7IGluY3JlbWVudExhYmVsIH19PC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdJZj1cImJhcnMubGVuZ3RoXCIgY2xhc3M9XCJtdC0zIGZsZXggaC0xNCB3LWZ1bGwgaXRlbXMtZW5kIGdhcC0xXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGJhciBvZiBiYXJzXCIgY2xhc3M9XCJmbGV4LTEgYmctZm9yZWdyb3VuZFwiIFtzdHlsZS5oZWlnaHQucHhdPVwiYmFyXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInByaW1hcnlMYWJlbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm10LTMgaC05IHctZnVsbCByb3VuZGVkLW1kIGJnLXByaW1hcnkgdGV4dC1zbSBmb250LW1lZGl1bSB0ZXh0LXByaW1hcnktZm9yZWdyb3VuZFwiIChjbGljayk9XCJvblByaW1hcnlBY3Rpb24oKVwiPnt7IHByaW1hcnlMYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlY29uZGFyeUxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibXQtMiBoLTkgdy1mdWxsIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHRleHQtc20gZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kXCIgKGNsaWNrKT1cIm9uU2Vjb25kYXJ5QWN0aW9uKClcIj57eyBzZWNvbmRhcnlMYWJlbCB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPG5nLXRlbXBsYXRlICNyZXNwb25zaXZlRGlhbG9nPlxuICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJzb2x1dGUgbGVmdC0xLzIgdG9wLTEvMiB3LWZ1bGwgbWF4LXctbGcgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHJvdW5kZWQtbGcgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBwLTYgc2hhZG93LWxnXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJtLTAgdGV4dC1sZyBmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodCB0ZXh0LWZvcmVncm91bmRcIj57eyBwcm9maWxlVGl0bGUgfX08L2gzPlxuICAgICAgICAgIDxwIGNsYXNzPVwibS0wIG10LTEgdGV4dC1zbSB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj57eyBwcm9maWxlRGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImgtNSB3LTUgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kXCIgKGNsaWNrKT1cImNsb3NlKClcIj7DlzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJtdC0zIGZsZXggZmxleC1jb2wgZ2FwLTNcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJtYi0xIGJsb2NrIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1mb3JlZ3JvdW5kXCI+e3sgbmFtZUxhYmVsIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC04IHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZCBweC0yIHB5LTEgdGV4dC14cyB0ZXh0LWZvcmVncm91bmRcIj57eyBuYW1lVmFsdWUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItMSBibG9jayB0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZFwiPnt7IHVzZXJuYW1lTGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLTggcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1iYWNrZ3JvdW5kIHB4LTIgcHktMSB0ZXh0LXhzIHRleHQtZm9yZWdyb3VuZFwiPnt7IHVzZXJuYW1lVmFsdWUgfX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInJlc3BvbnNpdmVQcmltYXJ5TGFiZWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtdC0zIGgtOCB3LWZ1bGwgcm91bmRlZC1tZCBiZy1wcmltYXJ5IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1wcmltYXJ5LWZvcmVncm91bmRcIiAoY2xpY2spPVwib25QcmltYXJ5QWN0aW9uKClcIj57eyByZXNwb25zaXZlUHJpbWFyeUxhYmVsIH19PC9idXR0b24+XG4gICAgPC9zZWN0aW9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=