@agnos-ui/angular-bootstrap 0.4.4 → 0.5.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.
- package/README.md +2 -2
- package/agnos-ui-angular.module.d.ts +2 -1
- package/components/accordion/accordion.component.d.ts +40 -18
- package/components/accordion/accordion.gen.d.ts +37 -9
- package/components/alert/alert.component.d.ts +29 -17
- package/components/alert/alert.gen.d.ts +21 -2
- package/components/collapse/collapse.component.d.ts +79 -0
- package/components/collapse/collapse.gen.d.ts +146 -0
- package/components/collapse/index.d.ts +2 -0
- package/components/modal/modal.component.d.ts +13 -19
- package/components/modal/modal.gen.d.ts +35 -18
- package/components/modal/modal.service.d.ts +5 -1
- package/components/pagination/pagination.component.d.ts +20 -15
- package/components/pagination/pagination.gen.d.ts +49 -29
- package/components/progressbar/progressbar.component.d.ts +32 -16
- package/components/progressbar/progressbar.gen.d.ts +21 -4
- package/components/rating/rating.component.d.ts +11 -4
- package/components/rating/rating.gen.d.ts +25 -17
- package/components/select/select.component.d.ts +24 -4
- package/components/select/select.gen.d.ts +41 -25
- package/components/slider/slider.component.d.ts +32 -23
- package/components/slider/slider.gen.d.ts +54 -33
- package/components/toast/toast.component.d.ts +29 -17
- package/components/toast/toast.gen.d.ts +22 -2
- package/config.d.ts +16 -5
- package/config.gen.d.ts +5 -0
- package/esm2022/agnos-ui-angular.module.mjs +12 -5
- package/esm2022/components/accordion/accordion.component.mjs +165 -134
- package/esm2022/components/accordion/accordion.gen.mjs +1 -1
- package/esm2022/components/alert/alert.component.mjs +90 -65
- package/esm2022/components/alert/alert.gen.mjs +1 -1
- package/esm2022/components/collapse/collapse.component.mjs +89 -0
- package/esm2022/components/collapse/collapse.gen.mjs +15 -0
- package/esm2022/components/collapse/index.mjs +3 -0
- package/esm2022/components/modal/modal.component.mjs +111 -99
- package/esm2022/components/modal/modal.gen.mjs +1 -1
- package/esm2022/components/modal/modal.service.mjs +7 -5
- package/esm2022/components/pagination/pagination.component.mjs +138 -123
- package/esm2022/components/pagination/pagination.gen.mjs +1 -1
- package/esm2022/components/progressbar/progressbar.component.mjs +94 -55
- package/esm2022/components/progressbar/progressbar.gen.mjs +1 -1
- package/esm2022/components/rating/rating.component.mjs +41 -35
- package/esm2022/components/rating/rating.gen.mjs +1 -1
- package/esm2022/components/select/select.component.mjs +103 -118
- package/esm2022/components/select/select.gen.mjs +1 -1
- package/esm2022/components/slider/slider.component.mjs +126 -111
- package/esm2022/components/slider/slider.gen.mjs +1 -1
- package/esm2022/components/toast/toast.component.mjs +106 -81
- package/esm2022/components/toast/toast.gen.mjs +1 -1
- package/esm2022/config.gen.mjs +1 -1
- package/esm2022/config.mjs +17 -1
- package/esm2022/index.mjs +2 -1
- package/fesm2022/agnos-ui-angular-bootstrap.mjs +1085 -806
- package/fesm2022/agnos-ui-angular-bootstrap.mjs.map +1 -1
- package/index.d.ts +8 -7
- package/package.json +9 -8
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { BaseWidgetDirective, ComponentTemplate, SlotDirective, UseDirective, auBooleanAttribute, auNumberAttribute, useDirectiveForHost, } from '@agnos-ui/angular-headless';
|
|
2
|
-
import {
|
|
3
|
-
import { ChangeDetectionStrategy, Component, ContentChild, Directive, EventEmitter, Input, NgZone, Output, TemplateRef, ViewChild, ViewEncapsulation, forwardRef, inject, } from '@angular/core';
|
|
2
|
+
import { ChangeDetectionStrategy, Component, ContentChild, Directive, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewEncapsulation, forwardRef, inject, } from '@angular/core';
|
|
4
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
|
-
import { take } from 'rxjs';
|
|
6
4
|
import { callWidgetFactory } from '../../config';
|
|
7
5
|
import { createSlider } from './slider.gen';
|
|
8
6
|
import * as i0 from "@angular/core";
|
|
@@ -14,22 +12,22 @@ function SliderDefaultHandleSlotComponent_ng_template_0_Template(rf, ctx) { if (
|
|
|
14
12
|
i0.ɵɵtext(1, "\u00A0");
|
|
15
13
|
i0.ɵɵelementEnd();
|
|
16
14
|
} if (rf & 2) {
|
|
17
|
-
const
|
|
15
|
+
const directives_r1 = ctx.directives;
|
|
18
16
|
const item_r2 = ctx.item;
|
|
19
|
-
i0.ɵɵproperty("auUse", i0.ɵɵpureFunction2(3, _c2,
|
|
17
|
+
i0.ɵɵproperty("auUse", i0.ɵɵpureFunction2(3, _c2, directives_r1.handleDirective, i0.ɵɵpureFunction1(1, _c1, item_r2)));
|
|
20
18
|
} }
|
|
21
19
|
const _c3 = ["structure"];
|
|
22
20
|
const _forTrack0 = ($index, $item) => $item.id;
|
|
23
21
|
const _c4 = a0 => ({ option: a0 });
|
|
24
|
-
const _c5 = (a0, a1, a2) => ({ state: a0,
|
|
25
|
-
const _c6 = (a0, a1, a2) => ({ state: a0,
|
|
22
|
+
const _c5 = (a0, a1, a2, a3) => ({ state: a0, api: a1, directives: a2, value: a3 });
|
|
23
|
+
const _c6 = (a0, a1, a2, a3) => ({ state: a0, api: a1, directives: a2, item: a3 });
|
|
26
24
|
const _c7 = a0 => ({ index: a0 });
|
|
27
25
|
function SliderDefaultStructureSlotComponent_ng_template_0_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
28
26
|
i0.ɵɵelement(0, "div", 2);
|
|
29
27
|
} if (rf & 2) {
|
|
30
28
|
const option_r1 = ctx.$implicit;
|
|
31
|
-
const
|
|
32
|
-
i0.ɵɵproperty("auUse", i0.ɵɵpureFunction2(3, _c2,
|
|
29
|
+
const directives_r2 = i0.ɵɵnextContext().directives;
|
|
30
|
+
i0.ɵɵproperty("auUse", i0.ɵɵpureFunction2(3, _c2, directives_r2.progressDisplayDirective, i0.ɵɵpureFunction1(1, _c4, option_r1)));
|
|
33
31
|
} }
|
|
34
32
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_3_ng_template_1_Template(rf, ctx) { }
|
|
35
33
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_3_ng_template_3_Template(rf, ctx) { }
|
|
@@ -43,14 +41,15 @@ function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_3_Templat
|
|
|
43
41
|
} if (rf & 2) {
|
|
44
42
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
45
43
|
const state_r4 = ctx_r2.state;
|
|
46
|
-
const
|
|
47
|
-
|
|
44
|
+
const directives_r2 = ctx_r2.directives;
|
|
45
|
+
const api_r5 = ctx_r2.api;
|
|
46
|
+
i0.ɵɵproperty("auUse", directives_r2.minLabelDirective);
|
|
48
47
|
i0.ɵɵadvance();
|
|
49
|
-
i0.ɵɵproperty("auSlot", state_r4.label)("auSlotProps", i0.ɵɵ
|
|
48
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(6, _c5, state_r4, api_r5, directives_r2, state_r4.min()));
|
|
50
49
|
i0.ɵɵadvance();
|
|
51
|
-
i0.ɵɵproperty("auUse",
|
|
50
|
+
i0.ɵɵproperty("auUse", directives_r2.maxLabelDirective);
|
|
52
51
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵproperty("auSlot", state_r4.label)("auSlotProps", i0.ɵɵ
|
|
52
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(11, _c5, state_r4, api_r5, directives_r2, state_r4.max()));
|
|
54
53
|
} }
|
|
55
54
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_1_ng_template_0_Template(rf, ctx) { }
|
|
56
55
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_1_ng_template_2_Template(rf, ctx) { }
|
|
@@ -61,10 +60,11 @@ function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditi
|
|
|
61
60
|
} if (rf & 2) {
|
|
62
61
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
63
62
|
const state_r4 = ctx_r2.state;
|
|
64
|
-
const
|
|
65
|
-
|
|
63
|
+
const directives_r2 = ctx_r2.directives;
|
|
64
|
+
const api_r5 = ctx_r2.api;
|
|
65
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(4, _c5, state_r4, api_r5, directives_r2, state_r4.sortedValues()[1]));
|
|
66
66
|
i0.ɵɵadvance(2);
|
|
67
|
-
i0.ɵɵproperty("auSlot", state_r4.label)("auSlotProps", i0.ɵɵ
|
|
67
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(9, _c5, state_r4, api_r5, directives_r2, state_r4.sortedValues()[0]));
|
|
68
68
|
} }
|
|
69
69
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_2_ng_template_0_Template(rf, ctx) { }
|
|
70
70
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_2_ng_template_2_Template(rf, ctx) { }
|
|
@@ -75,22 +75,23 @@ function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditi
|
|
|
75
75
|
} if (rf & 2) {
|
|
76
76
|
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
77
77
|
const state_r4 = ctx_r2.state;
|
|
78
|
-
const
|
|
79
|
-
|
|
78
|
+
const directives_r2 = ctx_r2.directives;
|
|
79
|
+
const api_r5 = ctx_r2.api;
|
|
80
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(4, _c5, state_r4, api_r5, directives_r2, state_r4.sortedValues()[0]));
|
|
80
81
|
i0.ɵɵadvance(2);
|
|
81
|
-
i0.ɵɵproperty("auSlot", state_r4.label)("auSlotProps", i0.ɵɵ
|
|
82
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(9, _c5, state_r4, api_r5, directives_r2, state_r4.sortedValues()[1]));
|
|
82
83
|
} }
|
|
83
84
|
function SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
84
85
|
i0.ɵɵelementStart(0, "div", 2);
|
|
85
|
-
i0.ɵɵtemplate(1, SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_1_Template, 3,
|
|
86
|
+
i0.ɵɵtemplate(1, SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_1_Template, 3, 14)(2, SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Conditional_2_Template, 3, 14);
|
|
86
87
|
i0.ɵɵelementEnd();
|
|
87
88
|
} if (rf & 2) {
|
|
88
89
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
89
90
|
const state_r4 = ctx_r2.state;
|
|
90
|
-
const
|
|
91
|
-
i0.ɵɵproperty("auUse",
|
|
91
|
+
const directives_r2 = ctx_r2.directives;
|
|
92
|
+
i0.ɵɵproperty("auUse", directives_r2.combinedHandleLabelDisplayDirective);
|
|
92
93
|
i0.ɵɵadvance();
|
|
93
|
-
i0.ɵɵconditional(state_r4.rtl ? 1 : 2);
|
|
94
|
+
i0.ɵɵconditional(state_r4.rtl() ? 1 : 2);
|
|
94
95
|
} }
|
|
95
96
|
function SliderDefaultStructureSlotComponent_ng_template_0_For_6_ng_template_0_Template(rf, ctx) { }
|
|
96
97
|
function SliderDefaultStructureSlotComponent_ng_template_0_For_6_Conditional_1_ng_template_1_Template(rf, ctx) { }
|
|
@@ -99,46 +100,53 @@ function SliderDefaultStructureSlotComponent_ng_template_0_For_6_Conditional_1_T
|
|
|
99
100
|
i0.ɵɵtemplate(1, SliderDefaultStructureSlotComponent_ng_template_0_For_6_Conditional_1_ng_template_1_Template, 0, 0, "ng-template", 3);
|
|
100
101
|
i0.ɵɵelementEnd();
|
|
101
102
|
} if (rf & 2) {
|
|
102
|
-
const ɵ$
|
|
103
|
+
const ɵ$index_32_r6 = i0.ɵɵnextContext().$index;
|
|
103
104
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
104
105
|
const state_r4 = ctx_r2.state;
|
|
105
|
-
const
|
|
106
|
-
|
|
106
|
+
const directives_r2 = ctx_r2.directives;
|
|
107
|
+
const api_r5 = ctx_r2.api;
|
|
108
|
+
i0.ɵɵproperty("auUse", i0.ɵɵpureFunction2(5, _c2, directives_r2.handleLabelDisplayDirective, i0.ɵɵpureFunction1(3, _c7, ɵ$index_32_r6)));
|
|
107
109
|
i0.ɵɵadvance();
|
|
108
|
-
i0.ɵɵproperty("auSlot", state_r4.label)("auSlotProps", i0.ɵɵ
|
|
110
|
+
i0.ɵɵproperty("auSlot", state_r4.label())("auSlotProps", i0.ɵɵpureFunction4(8, _c5, state_r4, api_r5, directives_r2, state_r4.values()[ɵ$index_32_r6]));
|
|
109
111
|
} }
|
|
110
112
|
function SliderDefaultStructureSlotComponent_ng_template_0_For_6_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
-
i0.ɵɵtemplate(0, SliderDefaultStructureSlotComponent_ng_template_0_For_6_ng_template_0_Template, 0, 0, "ng-template", 3)(1, SliderDefaultStructureSlotComponent_ng_template_0_For_6_Conditional_1_Template, 2,
|
|
113
|
+
i0.ɵɵtemplate(0, SliderDefaultStructureSlotComponent_ng_template_0_For_6_ng_template_0_Template, 0, 0, "ng-template", 3)(1, SliderDefaultStructureSlotComponent_ng_template_0_For_6_Conditional_1_Template, 2, 13, "div", 2);
|
|
112
114
|
} if (rf & 2) {
|
|
113
|
-
const
|
|
115
|
+
const item_r7 = ctx.$implicit;
|
|
114
116
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
115
117
|
const state_r4 = ctx_r2.state;
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
+
const directives_r2 = ctx_r2.directives;
|
|
119
|
+
const api_r5 = ctx_r2.api;
|
|
120
|
+
i0.ɵɵproperty("auSlot", state_r4.handle())("auSlotProps", i0.ɵɵpureFunction4(3, _c6, state_r4, api_r5, directives_r2, item_r7));
|
|
118
121
|
i0.ɵɵadvance();
|
|
119
|
-
i0.ɵɵconditional(state_r4.showValueLabels && !state_r4.combinedLabelDisplay ? 1 : -1);
|
|
122
|
+
i0.ɵɵconditional(state_r4.showValueLabels() && !state_r4.combinedLabelDisplay() ? 1 : -1);
|
|
120
123
|
} }
|
|
121
124
|
function SliderDefaultStructureSlotComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
|
|
122
125
|
i0.ɵɵrepeaterCreate(0, SliderDefaultStructureSlotComponent_ng_template_0_For_1_Template, 1, 6, "div", 2, i0.ɵɵrepeaterTrackByIdentity);
|
|
123
126
|
i0.ɵɵelement(2, "div", 2);
|
|
124
|
-
i0.ɵɵtemplate(3, SliderDefaultStructureSlotComponent_ng_template_0_Conditional_3_Template, 4,
|
|
125
|
-
i0.ɵɵrepeaterCreate(5, SliderDefaultStructureSlotComponent_ng_template_0_For_6_Template, 2,
|
|
127
|
+
i0.ɵɵtemplate(3, SliderDefaultStructureSlotComponent_ng_template_0_Conditional_3_Template, 4, 16)(4, SliderDefaultStructureSlotComponent_ng_template_0_Conditional_4_Template, 3, 2, "div", 2);
|
|
128
|
+
i0.ɵɵrepeaterCreate(5, SliderDefaultStructureSlotComponent_ng_template_0_For_6_Template, 2, 8, null, null, _forTrack0);
|
|
126
129
|
} if (rf & 2) {
|
|
127
130
|
const state_r4 = ctx.state;
|
|
128
|
-
const
|
|
129
|
-
i0.ɵɵrepeater(state_r4.progressDisplayOptions);
|
|
131
|
+
const directives_r2 = ctx.directives;
|
|
132
|
+
i0.ɵɵrepeater(state_r4.progressDisplayOptions());
|
|
130
133
|
i0.ɵɵadvance(2);
|
|
131
|
-
i0.ɵɵproperty("auUse",
|
|
134
|
+
i0.ɵɵproperty("auUse", directives_r2.clickableAreaDirective);
|
|
132
135
|
i0.ɵɵadvance();
|
|
133
|
-
i0.ɵɵconditional(state_r4.showMinMaxLabels ? 3 : -1);
|
|
136
|
+
i0.ɵɵconditional(state_r4.showMinMaxLabels() ? 3 : -1);
|
|
134
137
|
i0.ɵɵadvance();
|
|
135
|
-
i0.ɵɵconditional(state_r4.showValueLabels && state_r4.combinedLabelDisplay ? 4 : -1);
|
|
138
|
+
i0.ɵɵconditional(state_r4.showValueLabels() && state_r4.combinedLabelDisplay() ? 4 : -1);
|
|
136
139
|
i0.ɵɵadvance();
|
|
137
|
-
i0.ɵɵrepeater(state_r4.sortedHandles);
|
|
140
|
+
i0.ɵɵrepeater(state_r4.sortedHandles());
|
|
138
141
|
} }
|
|
139
142
|
const _c8 = ["auSlider", ""];
|
|
140
|
-
const _c9 = (a0, a1) => ({ state: a0,
|
|
143
|
+
const _c9 = (a0, a1, a2) => ({ state: a0, api: a1, directives: a2 });
|
|
141
144
|
function SliderComponent_ng_template_0_Template(rf, ctx) { }
|
|
145
|
+
/**
|
|
146
|
+
* Directive to provide a template reference for slider labels.
|
|
147
|
+
*
|
|
148
|
+
* This directive uses a template reference to render the {@link SliderSlotLabelContext}.
|
|
149
|
+
*/
|
|
142
150
|
export class SliderLabelDirective {
|
|
143
151
|
constructor() {
|
|
144
152
|
this.templateRef = inject((TemplateRef));
|
|
@@ -146,13 +154,18 @@ export class SliderLabelDirective {
|
|
|
146
154
|
static ngTemplateContextGuard(_dir, context) {
|
|
147
155
|
return true;
|
|
148
156
|
}
|
|
149
|
-
static { this.ɵfac = function SliderLabelDirective_Factory(
|
|
157
|
+
static { this.ɵfac = function SliderLabelDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SliderLabelDirective)(); }; }
|
|
150
158
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SliderLabelDirective, selectors: [["ng-template", "auSliderLabel", ""]], standalone: true }); }
|
|
151
159
|
}
|
|
152
160
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderLabelDirective, [{
|
|
153
161
|
type: Directive,
|
|
154
162
|
args: [{ selector: 'ng-template[auSliderLabel]', standalone: true }]
|
|
155
163
|
}], null, null); })();
|
|
164
|
+
/**
|
|
165
|
+
* Directive representing a handle for a slider component.
|
|
166
|
+
*
|
|
167
|
+
* This directive uses a template reference to render the {@link SliderSlotLabelContext}.
|
|
168
|
+
*/
|
|
156
169
|
export class SliderHandleDirective {
|
|
157
170
|
constructor() {
|
|
158
171
|
this.templateRef = inject((TemplateRef));
|
|
@@ -160,24 +173,15 @@ export class SliderHandleDirective {
|
|
|
160
173
|
static ngTemplateContextGuard(_dir, context) {
|
|
161
174
|
return true;
|
|
162
175
|
}
|
|
163
|
-
static { this.ɵfac = function SliderHandleDirective_Factory(
|
|
176
|
+
static { this.ɵfac = function SliderHandleDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SliderHandleDirective)(); }; }
|
|
164
177
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SliderHandleDirective, selectors: [["ng-template", "auSliderHandle", ""]], standalone: true }); }
|
|
165
178
|
}
|
|
166
179
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderHandleDirective, [{
|
|
167
180
|
type: Directive,
|
|
168
181
|
args: [{ selector: 'ng-template[auSliderHandle]', standalone: true }]
|
|
169
182
|
}], null, null); })();
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
this._zone = inject(NgZone);
|
|
173
|
-
}
|
|
174
|
-
onKeyDown(event, handleId, widgetOnKeyDownFn) {
|
|
175
|
-
widgetOnKeyDownFn(event, handleId);
|
|
176
|
-
this._zone.onStable.pipe(take(1)).subscribe(() => {
|
|
177
|
-
event.target.focus();
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
static { this.ɵfac = function SliderDefaultHandleSlotComponent_Factory(t) { return new (t || SliderDefaultHandleSlotComponent)(); }; }
|
|
183
|
+
class SliderDefaultHandleSlotComponent {
|
|
184
|
+
static { this.ɵfac = function SliderDefaultHandleSlotComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SliderDefaultHandleSlotComponent)(); }; }
|
|
181
185
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SliderDefaultHandleSlotComponent, selectors: [["ng-component"]], viewQuery: function SliderDefaultHandleSlotComponent_Query(rf, ctx) { if (rf & 1) {
|
|
182
186
|
i0.ɵɵviewQuery(_c0, 7);
|
|
183
187
|
} if (rf & 2) {
|
|
@@ -194,8 +198,8 @@ export class SliderDefaultHandleSlotComponent {
|
|
|
194
198
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
195
199
|
imports: [UseDirective, SliderHandleDirective],
|
|
196
200
|
template: `
|
|
197
|
-
<ng-template auSliderHandle #handle let-state="state" let-
|
|
198
|
-
<button [auUse]="[
|
|
201
|
+
<ng-template auSliderHandle #handle let-state="state" let-directives="directives" let-item="item">
|
|
202
|
+
<button [auUse]="[directives.handleDirective, {item}]"> </button>
|
|
199
203
|
</ng-template>
|
|
200
204
|
`,
|
|
201
205
|
}]
|
|
@@ -203,8 +207,16 @@ export class SliderDefaultHandleSlotComponent {
|
|
|
203
207
|
type: ViewChild,
|
|
204
208
|
args: ['handle', { static: true }]
|
|
205
209
|
}] }); })();
|
|
206
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SliderDefaultHandleSlotComponent, { className: "SliderDefaultHandleSlotComponent", filePath: "components/slider/slider.component.ts", lineNumber:
|
|
210
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SliderDefaultHandleSlotComponent, { className: "SliderDefaultHandleSlotComponent", filePath: "components/slider/slider.component.ts", lineNumber: 65 }); })();
|
|
211
|
+
/**
|
|
212
|
+
* A constant representing the default slot handle for the slider component.
|
|
213
|
+
*/
|
|
207
214
|
export const sliderDefaultSlotHandle = new ComponentTemplate(SliderDefaultHandleSlotComponent, 'handle');
|
|
215
|
+
/**
|
|
216
|
+
* Directive that provides structure for the slider component.
|
|
217
|
+
*
|
|
218
|
+
* This directive uses a `TemplateRef` to handle the context of the slider slot.
|
|
219
|
+
*/
|
|
208
220
|
export class SliderStructureDirective {
|
|
209
221
|
constructor() {
|
|
210
222
|
this.templateRef = inject((TemplateRef));
|
|
@@ -212,15 +224,15 @@ export class SliderStructureDirective {
|
|
|
212
224
|
static ngTemplateContextGuard(_dir, context) {
|
|
213
225
|
return true;
|
|
214
226
|
}
|
|
215
|
-
static { this.ɵfac = function SliderStructureDirective_Factory(
|
|
227
|
+
static { this.ɵfac = function SliderStructureDirective_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SliderStructureDirective)(); }; }
|
|
216
228
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SliderStructureDirective, selectors: [["ng-template", "auSliderStructure", ""]], standalone: true }); }
|
|
217
229
|
}
|
|
218
230
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderStructureDirective, [{
|
|
219
231
|
type: Directive,
|
|
220
232
|
args: [{ selector: 'ng-template[auSliderStructure]', standalone: true }]
|
|
221
233
|
}], null, null); })();
|
|
222
|
-
|
|
223
|
-
static { this.ɵfac = function SliderDefaultStructureSlotComponent_Factory(
|
|
234
|
+
class SliderDefaultStructureSlotComponent {
|
|
235
|
+
static { this.ɵfac = function SliderDefaultStructureSlotComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SliderDefaultStructureSlotComponent)(); }; }
|
|
224
236
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SliderDefaultStructureSlotComponent, selectors: [["ng-component"]], viewQuery: function SliderDefaultStructureSlotComponent_Query(rf, ctx) { if (rf & 1) {
|
|
225
237
|
i0.ɵɵviewQuery(_c3, 7);
|
|
226
238
|
} if (rf & 2) {
|
|
@@ -237,35 +249,35 @@ export class SliderDefaultStructureSlotComponent {
|
|
|
237
249
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
238
250
|
imports: [SlotDirective, SliderStructureDirective, UseDirective],
|
|
239
251
|
template: `
|
|
240
|
-
<ng-template auSliderStructure #structure let-state="state" let-
|
|
241
|
-
@for (option of state.progressDisplayOptions; track option) {
|
|
242
|
-
<div [auUse]="[
|
|
252
|
+
<ng-template auSliderStructure #structure let-state="state" let-directives="directives" let-api="api">
|
|
253
|
+
@for (option of state.progressDisplayOptions(); track option) {
|
|
254
|
+
<div [auUse]="[directives.progressDisplayDirective, {option}]"></div>
|
|
243
255
|
}
|
|
244
|
-
<div [auUse]="
|
|
245
|
-
@if (state.showMinMaxLabels) {
|
|
246
|
-
<div [auUse]="
|
|
247
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
256
|
+
<div [auUse]="directives.clickableAreaDirective"></div>
|
|
257
|
+
@if (state.showMinMaxLabels()) {
|
|
258
|
+
<div [auUse]="directives.minLabelDirective">
|
|
259
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.min()}"></ng-template>
|
|
248
260
|
</div>
|
|
249
|
-
<div [auUse]="
|
|
250
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
261
|
+
<div [auUse]="directives.maxLabelDirective">
|
|
262
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.max()}"></ng-template>
|
|
251
263
|
</div>
|
|
252
264
|
}
|
|
253
|
-
@if (state.showValueLabels && state.combinedLabelDisplay) {
|
|
254
|
-
<div [auUse]="
|
|
255
|
-
@if (state.rtl) {
|
|
256
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
257
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
265
|
+
@if (state.showValueLabels() && state.combinedLabelDisplay()) {
|
|
266
|
+
<div [auUse]="directives.combinedHandleLabelDisplayDirective">
|
|
267
|
+
@if (state.rtl()) {
|
|
268
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.sortedValues()[1]}"></ng-template> -
|
|
269
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.sortedValues()[0]}"></ng-template>
|
|
258
270
|
} @else {
|
|
259
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
260
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
271
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.sortedValues()[0]}"></ng-template> -
|
|
272
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.sortedValues()[1]}"></ng-template>
|
|
261
273
|
}
|
|
262
274
|
</div>
|
|
263
275
|
}
|
|
264
|
-
@for (item of state.sortedHandles; track item.id; let i = $index) {
|
|
265
|
-
<ng-template [auSlot]="state.handle" [auSlotProps]="{state,
|
|
266
|
-
@if (state.showValueLabels && !state.combinedLabelDisplay) {
|
|
267
|
-
<div [auUse]="[
|
|
268
|
-
<ng-template [auSlot]="state.label" [auSlotProps]="{state,
|
|
276
|
+
@for (item of state.sortedHandles(); track item.id; let i = $index) {
|
|
277
|
+
<ng-template [auSlot]="state.handle()" [auSlotProps]="{state, api, directives, item}"></ng-template>
|
|
278
|
+
@if (state.showValueLabels() && !state.combinedLabelDisplay()) {
|
|
279
|
+
<div [auUse]="[directives.handleLabelDisplayDirective, {index: i}]">
|
|
280
|
+
<ng-template [auSlot]="state.label()" [auSlotProps]="{state, api, directives, value: state.values()[i]}"></ng-template>
|
|
269
281
|
</div>
|
|
270
282
|
}
|
|
271
283
|
}
|
|
@@ -276,20 +288,25 @@ export class SliderDefaultStructureSlotComponent {
|
|
|
276
288
|
type: ViewChild,
|
|
277
289
|
args: ['structure', { static: true }]
|
|
278
290
|
}] }); })();
|
|
279
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SliderDefaultStructureSlotComponent, { className: "SliderDefaultStructureSlotComponent", filePath: "components/slider/slider.component.ts", lineNumber:
|
|
291
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SliderDefaultStructureSlotComponent, { className: "SliderDefaultStructureSlotComponent", filePath: "components/slider/slider.component.ts", lineNumber: 127 }); })();
|
|
292
|
+
/**
|
|
293
|
+
* Represents the default slot structure for the slider component.
|
|
294
|
+
*/
|
|
280
295
|
export const sliderDefaultSlotStructure = new ComponentTemplate(SliderDefaultStructureSlotComponent, 'structure');
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
296
|
+
/**
|
|
297
|
+
* SliderComponent is an Angular component that extends the BaseWidgetDirective
|
|
298
|
+
* to provide a customizable slider widget. This component allows for various
|
|
299
|
+
* configurations and customizations through its inputs and outputs.
|
|
300
|
+
*/
|
|
285
301
|
export class SliderComponent extends BaseWidgetDirective {
|
|
286
302
|
constructor() {
|
|
287
|
-
super(
|
|
288
|
-
this.defaultSlots = writable(defaultConfig);
|
|
289
|
-
this._widget = callWidgetFactory({
|
|
303
|
+
super(callWidgetFactory({
|
|
290
304
|
factory: createSlider,
|
|
291
305
|
widgetName: 'slider',
|
|
292
|
-
defaultConfig:
|
|
306
|
+
defaultConfig: {
|
|
307
|
+
structure: sliderDefaultSlotStructure,
|
|
308
|
+
handle: sliderDefaultSlotHandle,
|
|
309
|
+
},
|
|
293
310
|
events: {
|
|
294
311
|
onValuesChange: (event) => {
|
|
295
312
|
this.onChange(event);
|
|
@@ -297,10 +314,15 @@ export class SliderComponent extends BaseWidgetDirective {
|
|
|
297
314
|
this.valuesChange.emit(event);
|
|
298
315
|
},
|
|
299
316
|
},
|
|
300
|
-
afterInit: () => {
|
|
301
|
-
useDirectiveForHost(
|
|
317
|
+
afterInit: (widget) => {
|
|
318
|
+
useDirectiveForHost(widget.directives.sliderDirective);
|
|
302
319
|
},
|
|
303
|
-
|
|
320
|
+
slotTemplates: () => ({
|
|
321
|
+
structure: this.slotStructureFromContent?.templateRef,
|
|
322
|
+
handle: this.slotHandleFromContent?.templateRef,
|
|
323
|
+
label: this.slotLabelFromContent?.templateRef,
|
|
324
|
+
}),
|
|
325
|
+
}));
|
|
304
326
|
/**
|
|
305
327
|
* An event emitted when slider values are changed
|
|
306
328
|
*
|
|
@@ -326,32 +348,25 @@ export class SliderComponent extends BaseWidgetDirective {
|
|
|
326
348
|
}
|
|
327
349
|
writeValue(value) {
|
|
328
350
|
if (Array.isArray(value)) {
|
|
329
|
-
this
|
|
351
|
+
this['_widget'].patch({
|
|
330
352
|
values: value,
|
|
331
353
|
});
|
|
332
354
|
}
|
|
333
355
|
else {
|
|
334
|
-
this
|
|
356
|
+
this['_widget'].patch({
|
|
335
357
|
values: [value],
|
|
336
358
|
});
|
|
337
359
|
}
|
|
338
360
|
}
|
|
339
361
|
setDisabledState(isDisabled) {
|
|
340
|
-
this
|
|
362
|
+
this['_widget'].patch({
|
|
341
363
|
disabled: isDisabled,
|
|
342
364
|
});
|
|
343
365
|
}
|
|
344
366
|
handleBlur() {
|
|
345
367
|
this.onTouched();
|
|
346
368
|
}
|
|
347
|
-
|
|
348
|
-
this._widget.patchSlots({
|
|
349
|
-
structure: this.slotStructureFromContent?.templateRef,
|
|
350
|
-
handle: this.slotHandleFromContent?.templateRef,
|
|
351
|
-
label: this.slotLabelFromContent?.templateRef,
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵSliderComponent_BaseFactory; return function SliderComponent_Factory(t) { return (ɵSliderComponent_BaseFactory || (ɵSliderComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SliderComponent)))(t || SliderComponent); }; })(); }
|
|
369
|
+
static { this.ɵfac = function SliderComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SliderComponent)(); }; }
|
|
355
370
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SliderComponent, selectors: [["", "auSlider", ""]], contentQueries: function SliderComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
356
371
|
i0.ɵɵcontentQuery(dirIndex, SliderLabelDirective, 5);
|
|
357
372
|
i0.ɵɵcontentQuery(dirIndex, SliderStructureDirective, 5);
|
|
@@ -363,10 +378,10 @@ export class SliderComponent extends BaseWidgetDirective {
|
|
|
363
378
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.slotHandleFromContent = _t.first);
|
|
364
379
|
} }, hostBindings: function SliderComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
365
380
|
i0.ɵɵlistener("blur", function SliderComponent_blur_HostBindingHandler() { return ctx.handleBlur(); });
|
|
366
|
-
} }, inputs: { className: [0, "auClassName", "className"], min: [2, "auMin", "min", auNumberAttribute], max: [2, "auMax", "max", auNumberAttribute], stepSize: [2, "auStepSize", "stepSize", auNumberAttribute], values: [0, "auValues", "values"], rtl: [2, "auRtl", "rtl", auBooleanAttribute], showValueLabels: [2, "auShowValueLabels", "showValueLabels", auBooleanAttribute], showMinMaxLabels: [2, "auShowMinMaxLabels", "showMinMaxLabels", auBooleanAttribute], ariaLabelHandle: [0, "auAriaLabelHandle", "ariaLabelHandle"], ariaValueText: [0, "auAriaValueText", "ariaValueText"], readonly: [2, "auReadonly", "readonly", auBooleanAttribute], disabled: [2, "auDisabled", "disabled", auBooleanAttribute], vertical: [2, "auVertical", "vertical", auBooleanAttribute], label: [0, "auLabel", "label"], structure: [0, "auStructure", "structure"], handle: [0, "auHandle", "handle"] }, outputs: { valuesChange: "auValuesChange" }, standalone: true, features: [i0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], attrs: _c8, decls: 1, vars:
|
|
381
|
+
} }, inputs: { className: [0, "auClassName", "className"], min: [2, "auMin", "min", auNumberAttribute], max: [2, "auMax", "max", auNumberAttribute], stepSize: [2, "auStepSize", "stepSize", auNumberAttribute], values: [0, "auValues", "values"], rtl: [2, "auRtl", "rtl", auBooleanAttribute], showValueLabels: [2, "auShowValueLabels", "showValueLabels", auBooleanAttribute], showMinMaxLabels: [2, "auShowMinMaxLabels", "showMinMaxLabels", auBooleanAttribute], ariaLabelHandle: [0, "auAriaLabelHandle", "ariaLabelHandle"], ariaValueText: [0, "auAriaValueText", "ariaValueText"], readonly: [2, "auReadonly", "readonly", auBooleanAttribute], disabled: [2, "auDisabled", "disabled", auBooleanAttribute], vertical: [2, "auVertical", "vertical", auBooleanAttribute], label: [0, "auLabel", "label"], structure: [0, "auStructure", "structure"], handle: [0, "auHandle", "handle"] }, outputs: { valuesChange: "auValuesChange" }, standalone: true, features: [i0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SliderComponent), multi: true }]), i0.ɵɵInputTransformsFeature, i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], attrs: _c8, decls: 1, vars: 6, consts: [[3, "auSlot", "auSlotProps"]], template: function SliderComponent_Template(rf, ctx) { if (rf & 1) {
|
|
367
382
|
i0.ɵɵtemplate(0, SliderComponent_ng_template_0_Template, 0, 0, "ng-template", 0);
|
|
368
383
|
} if (rf & 2) {
|
|
369
|
-
i0.ɵɵproperty("auSlot", ctx.state
|
|
384
|
+
i0.ɵɵproperty("auSlot", ctx.state.structure())("auSlotProps", i0.ɵɵpureFunction3(2, _c9, ctx.state, ctx.api, ctx.directives));
|
|
370
385
|
} }, dependencies: [SlotDirective], encapsulation: 2, changeDetection: 0 }); }
|
|
371
386
|
}
|
|
372
387
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SliderComponent, [{
|
|
@@ -381,9 +396,9 @@ export class SliderComponent extends BaseWidgetDirective {
|
|
|
381
396
|
host: {
|
|
382
397
|
'(blur)': 'handleBlur()',
|
|
383
398
|
},
|
|
384
|
-
template: ` <ng-template [auSlot]="state()
|
|
399
|
+
template: ` <ng-template [auSlot]="state.structure()" [auSlotProps]="{state, api, directives}"></ng-template> `,
|
|
385
400
|
}]
|
|
386
|
-
}],
|
|
401
|
+
}], () => [], { className: [{
|
|
387
402
|
type: Input,
|
|
388
403
|
args: ['auClassName']
|
|
389
404
|
}], min: [{
|
|
@@ -444,5 +459,5 @@ export class SliderComponent extends BaseWidgetDirective {
|
|
|
444
459
|
type: ContentChild,
|
|
445
460
|
args: [SliderHandleDirective, { static: false }]
|
|
446
461
|
}] }); })();
|
|
447
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SliderComponent, { className: "SliderComponent", filePath: "components/slider/slider.component.ts", lineNumber:
|
|
448
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRXRFLE9BQU8sRUFDTix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFL0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7O0lBd0J2QyxpQ0FBOEQ7SUFBQSxzQkFBTTtJQUFBLGlCQUFTOzs7O0lBQXJFLDZIQUFxRDs7Ozs7Ozs7O0lBa0M1RCx5QkFBNEU7Ozs7SUFBdkUsd0lBQWdFOzs7OztJQUlyRSw4QkFBbUQ7SUFDbEQsZ0lBQXNGO0lBQ3ZGLGlCQUFNO0lBQ04sOEJBQW1EO0lBQ2xELGdJQUFzRjtJQUN2RixpQkFBTTs7Ozs7SUFMRCw4REFBNkM7SUFDcEMsY0FBc0I7SUFBQyxBQUF2Qix1Q0FBc0IsOEVBQWtEO0lBRWpGLGNBQTZDO0lBQTdDLDhEQUE2QztJ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QUFwRixLQUFLO21CQUFDLEVBQUMsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBQztZQWF2QyxlQUFlO2tCQUExQyxLQUFLO21CQUFDLG1CQUFtQjtZQWFBLGFBQWE7a0JBQXRDLEtBQUs7bUJBQUMsaUJBQWlCO1lBUXhCLFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFDO1lBUzNELFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFDO1lBUzNELFFBQVE7a0JBRFAsS0FBSzttQkFBQyxFQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFDO1lBYzNELFlBQVk7a0JBRFgsTUFBTTttQkFBQyxnQkFBZ0I7WUFXTixLQUFLO2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFDcUMsb0JBQW9CO2tCQUF4RSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztZQUs3QixTQUFTO2tCQUE5QixLQUFLO21CQUFDLGFBQWE7WUFDcUMsd0JBQXdCO2tCQUFoRixZQUFZO21CQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztZQUtwQyxNQUFNO2tCQUF4QixLQUFLO21CQUFDLFVBQVU7WUFDcUMscUJBQXFCO2tCQUExRSxZQUFZO21CQUFDLHFCQUFxQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQzs7a0ZBcEt4QyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Nsb3RDb250ZW50fSBmcm9tICdAYWdub3MtdWkvYW5ndWxhci1oZWFkbGVzcyc7XG5pbXBvcnQge1xuXHRCYXNlV2lkZ2V0RGlyZWN0aXZlLFxuXHRDb21wb25lbnRUZW1wbGF0ZSxcblx0U2xvdERpcmVjdGl2ZSxcblx0VXNlRGlyZWN0aXZlLFxuXHRhdUJvb2xlYW5BdHRyaWJ1dGUsXG5cdGF1TnVtYmVyQXR0cmlidXRlLFxuXHR1c2VEaXJlY3RpdmVGb3JIb3N0LFxufSBmcm9tICdAYWdub3MtdWkvYW5ndWxhci1oZWFkbGVzcyc7XG5pbXBvcnQge3R5cGUgV3JpdGFibGVTaWduYWwsIHdyaXRhYmxlfSBmcm9tICdAYW1hZGV1cy1pdC1ncm91cC90YW5zdSc7XG5pbXBvcnQgdHlwZSB7QWZ0ZXJDb250ZW50Q2hlY2tlZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERpcmVjdGl2ZSxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0Tmdab25lLFxuXHRPdXRwdXQsXG5cdFRlbXBsYXRlUmVmLFxuXHRWaWV3Q2hpbGQsXG5cdFZpZXdFbmNhcHN1bGF0aW9uLFxuXHRmb3J3YXJkUmVmLFxuXHRpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHt0YWtlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Y2FsbFdpZGdldEZhY3Rvcnl9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgdHlwZSB7U2xpZGVyQ29udGV4dCwgU2xpZGVyUHJvcHMsIFNsaWRlclNsb3RIYW5kbGVDb250ZXh0LCBTbGlkZXJTbG90TGFiZWxDb250ZXh0LCBTbGlkZXJXaWRnZXR9IGZyb20gJy4vc2xpZGVyLmdlbic7XG5pbXBvcnQge2NyZWF0ZVNsaWRlcn0gZnJvbSAnLi9zbGlkZXIuZ2VuJztcblxuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVthdVNsaWRlckxhYmVsXScsIHN0YW5kYWxvbmU6IHRydWV9KVxuZXhwb3J0IGNsYXNzIFNsaWRlckxhYmVsRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFNsaWRlclNsb3RMYWJlbENvbnRleHQ+KTtcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoX2RpcjogU2xpZGVyTGFiZWxEaXJlY3RpdmUsIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIFNsaWRlclNsb3RMYWJlbENvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVTbGlkZXJIYW5kbGVdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgU2xpZGVySGFuZGxlRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFNsaWRlclNsb3RMYWJlbENvbnRleHQ+KTtcblx0c3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQoX2RpcjogU2xpZGVySGFuZGxlRGlyZWN0aXZlLCBjb250ZXh0OiB1bmtub3duKTogY29udGV4dCBpcyBTbGlkZXJTbG90SGFuZGxlQ29udGV4dCB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuQENvbXBvbmVudCh7XG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuXHRpbXBvcnRzOiBbVXNlRGlyZWN0aXZlLCBTbGlkZXJIYW5kbGVEaXJlY3RpdmVdLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZy10ZW1wbGF0ZSBhdVNsaWRlckhhbmRsZSAjaGFuZGxlIGxldC1zdGF0ZT1cInN0YXRlXCIgbGV0LXdpZGdldD1cIndpZGdldFwiIGxldC1pdGVtPVwiaXRlbVwiPlxuXHRcdFx0PGJ1dHRvbiBbYXVVc2VdPVwiW3dpZGdldC5kaXJlY3RpdmVzLmhhbmRsZURpcmVjdGl2ZSwge2l0ZW19XVwiPiZuYnNwOzwvYnV0dG9uPlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdGAsXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlckRlZmF1bHRIYW5kbGVTbG90Q29tcG9uZW50IHtcblx0cHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG5cdEBWaWV3Q2hpbGQoJ2hhbmRsZScsIHtzdGF0aWM6IHRydWV9KSByZWFkb25seSBoYW5kbGUhOiBUZW1wbGF0ZVJlZjxTbGlkZXJTbG90SGFuZGxlQ29udGV4dD47XG5cblx0b25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBoYW5kbGVJZDogbnVtYmVyLCB3aWRnZXRPbktleURvd25GbjogKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBoYW5kbGVJZDogbnVtYmVyKSA9PiB2b2lkKSB7XG5cdFx0d2lkZ2V0T25LZXlEb3duRm4oZXZlbnQsIGhhbmRsZUlkKTtcblx0XHR0aGlzLl96b25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG5cdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IGNvbnN0IHNsaWRlckRlZmF1bHRTbG90SGFuZGxlID0gbmV3IENvbXBvbmVudFRlbXBsYXRlKFNsaWRlckRlZmF1bHRIYW5kbGVTbG90Q29tcG9uZW50LCAnaGFuZGxlJyk7XG5cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVTbGlkZXJTdHJ1Y3R1cmVdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgU2xpZGVyU3RydWN0dXJlRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFNsaWRlclNsb3RIYW5kbGVDb250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFNsaWRlclN0cnVjdHVyZURpcmVjdGl2ZSwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgU2xpZGVyU2xvdEhhbmRsZUNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW1Nsb3REaXJlY3RpdmUsIFNsaWRlclN0cnVjdHVyZURpcmVjdGl2ZSwgVXNlRGlyZWN0aXZlXSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctdGVtcGxhdGUgYXVTbGlkZXJTdHJ1Y3R1cmUgI3N0cnVjdHVyZSBsZXQtc3RhdGU9XCJzdGF0ZVwiIGxldC13aWRnZXQ9XCJ3aWRnZXRcIj5cblx0XHRcdEBmb3IgKG9wdGlvbiBvZiBzdGF0ZS5wcm9ncmVzc0Rpc3BsYXlPcHRpb25zOyB0cmFjayBvcHRpb24pIHtcblx0XHRcdFx0PGRpdiBbYXVVc2VdPVwiW3dpZGdldC5kaXJlY3RpdmVzLnByb2dyZXNzRGlzcGxheURpcmVjdGl2ZSwge29wdGlvbn1dXCI+PC9kaXY+XG5cdFx0XHR9XG5cdFx0XHQ8ZGl2IFthdVVzZV09XCJ3aWRnZXQuZGlyZWN0aXZlcy5jbGlja2FibGVBcmVhRGlyZWN0aXZlXCI+PC9kaXY+XG5cdFx0XHRAaWYgKHN0YXRlLnNob3dNaW5NYXhMYWJlbHMpIHtcblx0XHRcdFx0PGRpdiBbYXVVc2VdPVwid2lkZ2V0LmRpcmVjdGl2ZXMubWluTGFiZWxEaXJlY3RpdmVcIj5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5sYWJlbFwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldCwgdmFsdWU6IHN0YXRlLm1pbn1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdiBbYXVVc2VdPVwid2lkZ2V0LmRpcmVjdGl2ZXMubWF4TGFiZWxEaXJlY3RpdmVcIj5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5sYWJlbFwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldCwgdmFsdWU6IHN0YXRlLm1heH1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdH1cblx0XHRcdEBpZiAoc3RhdGUuc2hvd1ZhbHVlTGFiZWxzICYmIHN0YXRlLmNvbWJpbmVkTGFiZWxEaXNwbGF5KSB7XG5cdFx0XHRcdDxkaXYgW2F1VXNlXT1cIndpZGdldC5kaXJlY3RpdmVzLmNvbWJpbmVkSGFuZGxlTGFiZWxEaXNwbGF5RGlyZWN0aXZlXCI+XG5cdFx0XHRcdFx0QGlmIChzdGF0ZS5ydGwpIHtcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLmxhYmVsXCIgW2F1U2xvdFByb3BzXT1cIntzdGF0ZSwgd2lkZ2V0LCB2YWx1ZTogc3RhdGUuc29ydGVkVmFsdWVzWzFdfVwiPjwvbmctdGVtcGxhdGU+IC1cblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLmxhYmVsXCIgW2F1U2xvdFByb3BzXT1cIntzdGF0ZSwgd2lkZ2V0LCB2YWx1ZTogc3RhdGUuc29ydGVkVmFsdWVzWzBdfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5sYWJlbFwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldCwgdmFsdWU6IHN0YXRlLnNvcnRlZFZhbHVlc1swXX1cIj48L25nLXRlbXBsYXRlPiAtXG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5sYWJlbFwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldCwgdmFsdWU6IHN0YXRlLnNvcnRlZFZhbHVlc1sxXX1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHR9XG5cdFx0XHRAZm9yIChpdGVtIG9mIHN0YXRlLnNvcnRlZEhhbmRsZXM7IHRyYWNrIGl0ZW0uaWQ7IGxldCBpID0gJGluZGV4KSB7XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLmhhbmRsZVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIHdpZGdldCwgaXRlbX1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRAaWYgKHN0YXRlLnNob3dWYWx1ZUxhYmVscyAmJiAhc3RhdGUuY29tYmluZWRMYWJlbERpc3BsYXkpIHtcblx0XHRcdFx0XHQ8ZGl2IFthdVVzZV09XCJbd2lkZ2V0LmRpcmVjdGl2ZXMuaGFuZGxlTGFiZWxEaXNwbGF5RGlyZWN0aXZlLCB7aW5kZXg6IGl9XVwiPlxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUubGFiZWxcIiBbYXVTbG90UHJvcHNdPVwie3N0YXRlLCB3aWRnZXQsIHZhbHVlOiBzdGF0ZS52YWx1ZXNbaV19XCI+PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdGAsXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlckRlZmF1bHRTdHJ1Y3R1cmVTbG90Q29tcG9uZW50IHtcblx0QFZpZXdDaGlsZCgnc3RydWN0dXJlJywge3N0YXRpYzogdHJ1ZX0pIHN0cnVjdHVyZSE6IFRlbXBsYXRlUmVmPFNsaWRlckNvbnRleHQ+O1xufVxuXG5leHBvcnQgY29uc3Qgc2xpZGVyRGVmYXVsdFNsb3RTdHJ1Y3R1cmUgPSBuZXcgQ29tcG9uZW50VGVtcGxhdGUoU2xpZGVyRGVmYXVsdFN0cnVjdHVyZVNsb3RDb21wb25lbnQsICdzdHJ1Y3R1cmUnKTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbFNsaWRlclByb3BzID0gUGFydGlhbDxTbGlkZXJQcm9wcz47XG5jb25zdCBkZWZhdWx0Q29uZmlnOiBQYXJ0aWFsU2xpZGVyUHJvcHMgPSB7XG5cdHN0cnVjdHVyZTogc2xpZGVyRGVmYXVsdFNsb3RTdHJ1Y3R1cmUsXG5cdGhhbmRsZTogc2xpZGVyRGVmYXVsdFNsb3RIYW5kbGUsXG59O1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdbYXVTbGlkZXJdJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG5cdHByb3ZpZGVyczogW3twcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2xpZGVyQ29tcG9uZW50KSwgbXVsdGk6IHRydWV9XSxcblx0aW1wb3J0czogW1Nsb3REaXJlY3RpdmVdLFxuXHRob3N0OiB7XG5cdFx0JyhibHVyKSc6ICdoYW5kbGVCbHVyKCknLFxuXHR9LFxuXHR0ZW1wbGF0ZTogYCA8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZSgpLnN0cnVjdHVyZVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGU6IHN0YXRlKCksIHdpZGdldH1cIj48L25nLXRlbXBsYXRlPiBgLFxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlV2lkZ2V0RGlyZWN0aXZlPFNsaWRlcldpZGdldD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRDaGVja2VkIHtcblx0cmVhZG9ubHkgZGVmYXVsdFNsb3RzOiBXcml0YWJsZVNpZ25hbDxQYXJ0aWFsU2xpZGVyUHJvcHM+ID0gd3JpdGFibGUoZGVmYXVsdENvbmZpZyk7XG5cblx0cmVhZG9ubHkgX3dpZGdldCA9IGNhbGxXaWRnZXRGYWN0b3J5KHtcblx0XHRmYWN0b3J5OiBjcmVhdGVTbGlkZXIsXG5cdFx0d2lkZ2V0TmFtZTogJ3NsaWRlcicsXG5cdFx0ZGVmYXVsdENvbmZpZzogdGhpcy5kZWZhdWx0U2xvdHMsXG5cdFx0ZXZlbnRzOiB7XG5cdFx0XHRvblZhbHVlc0NoYW5nZTogKGV2ZW50KSA9PiB7XG5cdFx0XHRcdHRoaXMub25DaGFuZ2UoZXZlbnQpO1xuXHRcdFx0XHR0aGlzLm9uVG91Y2hlZCgpO1xuXHRcdFx0XHR0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KGV2ZW50KTtcblx0XHRcdH0sXG5cdFx0fSxcblx0XHRhZnRlckluaXQ6ICgpID0+IHtcblx0XHRcdHVzZURpcmVjdGl2ZUZvckhvc3QodGhpcy5fd2lkZ2V0LmRpcmVjdGl2ZXMuc2xpZGVyRGlyZWN0aXZlKTtcblx0XHR9LFxuXHR9KTtcblxuXHQvKipcblx0ICogQ1NTIGNsYXNzZXMgdG8gYmUgYXBwbGllZCBvbiB0aGUgd2lkZ2V0IG1haW4gY29udGFpbmVyXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYCcnYFxuXHQgKi9cblx0QElucHV0KCdhdUNsYXNzTmFtZScpIGNsYXNzTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBNaW5pbXVtIHZhbHVlIHRoYXQgY2FuIGJlIGFzc2lnbmVkIHRvIHRoZSBzbGlkZXJcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgMGBcblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdU1pbicsIHRyYW5zZm9ybTogYXVOdW1iZXJBdHRyaWJ1dGV9KVxuXHRtaW46IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogTWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSBhc3NpZ25lZCB0byB0aGUgc2xpZGVyXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYDEwMGBcblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdU1heCcsIHRyYW5zZm9ybTogYXVOdW1iZXJBdHRyaWJ1dGV9KVxuXHRtYXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogVW5pdCB2YWx1ZSBiZXR3ZWVuIHNsaWRlciBzdGVwc1xuXHQgKlxuXHQgKiBAZGVmYXVsdFZhbHVlIGAxYFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1U3RlcFNpemUnLCB0cmFuc2Zvcm06IGF1TnVtYmVyQXR0cmlidXRlfSlcblx0c3RlcFNpemU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogQ3VycmVudCBzbGlkZXIgdmFsdWVzXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYFswXWBcblx0ICovXG5cdEBJbnB1dCgnYXVWYWx1ZXMnKVxuXHR2YWx1ZXM6IG51bWJlcltdIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJdCBgdHJ1ZWAgc2xpZGVyIGRpc3BsYXkgaXMgaW52ZXJzZWRcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVSdGwnLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pXG5cdHJ0bDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSWYgYHRydWVgIHRoZSB2YWx1ZSBsYWJlbHMgYXJlIGRpc3BsYXllZCBvbiB0aGUgc2xpZGVyXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVTaG93VmFsdWVMYWJlbHMnLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pIHNob3dWYWx1ZUxhYmVsczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSWYgYHRydWVgIHRoZSBtaW4gYW5kIG1heCBsYWJlbHMgYXJlIGRpc3BsYXllZCBvbiB0aGUgc2xpZGVyXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYHRydWVgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVTaG93TWluTWF4TGFiZWxzJywgdHJhbnNmb3JtOiBhdUJvb2xlYW5BdHRyaWJ1dGV9KSBzaG93TWluTWF4TGFiZWxzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIHZhbHVlIGZvciB0aGUgJ2FyaWEtbGFiZWwnIGF0dHJpYnV0ZSBmb3IgdGhlIGhhbmRsZVxuXHQgKiBAcGFyYW0gdmFsdWUgLSB2YWx1ZSBvZiB0aGUgaGFuZGxlXG5cdCAqIEBwYXJhbSBzb3J0ZWRJbmRleCAtIGluZGV4IG9mIHRoZSBoYW5kbGUgaW4gdGhlIHNvcnRlZCBsaXN0XG5cdCAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSBoYW5kbGUgaW4gdGhlIG9yaWdpbmFsIGxpc3Rcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZVxuXHQgKiBgYGB0c1xuXHQgKiAodmFsdWU6IG51bWJlcikgPT4gJycgKyB2YWx1ZVxuXHQgKiBgYGBcblx0ICovXG5cdEBJbnB1dCgnYXVBcmlhTGFiZWxIYW5kbGUnKSBhcmlhTGFiZWxIYW5kbGU6ICgodmFsdWU6IG51bWJlciwgc29ydGVkSW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogUmV0dXJuIHRoZSB2YWx1ZSBmb3IgdGhlICdhcmlhLXZhbHVldGV4dCcgYXR0cmlidXRlIGZvciB0aGUgaGFuZGxlXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIG9mIHRoZSBoYW5kbGVcblx0ICogQHBhcmFtIHNvcnRlZEluZGV4IC0gaW5kZXggb2YgdGhlIGhhbmRsZSBpbiB0aGUgc29ydGVkIGxpc3Rcblx0ICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIGhhbmRsZSBpbiB0aGUgb3JpZ2luYWwgbGlzdFxuXHQgKlxuXHQgKiBAZGVmYXVsdFZhbHVlXG5cdCAqIGBgYHRzXG5cdCAqICh2YWx1ZTogbnVtYmVyKSA9PiAnJyArIHZhbHVlXG5cdCAqIGBgYFxuXHQgKi9cblx0QElucHV0KCdhdUFyaWFWYWx1ZVRleHQnKSBhcmlhVmFsdWVUZXh0OiAoKHZhbHVlOiBudW1iZXIsIHNvcnRlZEluZGV4OiBudW1iZXIsIGluZGV4OiBudW1iZXIpID0+IHN0cmluZykgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCBzbGlkZXIgdmFsdWUgY2Fubm90IGJlIGNoYW5nZWQgYnV0IHRoZSBzbGlkZXIgaXMgc3RpbGwgZm9jdXNhYmxlXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYGZhbHNlYFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1UmVhZG9ubHknLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pXG5cdHJlYWRvbmx5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBgdHJ1ZWAgc2xpZGVyIHZhbHVlIGNhbm5vdCBiZSBjaGFuZ2VkIGFuZCB0aGUgc2xpZGVyIGNhbm5vdCBiZSBmb2N1c2VkXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYGZhbHNlYFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1RGlzYWJsZWQnLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pXG5cdGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBgdHJ1ZWAgaXMgdmVydGljYWxseSBwb3NpdGlvbmVkIG90aGVyd2lzZSBpdCBpcyBob3Jpem9udGFsXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYGZhbHNlYFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1VmVydGljYWwnLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pXG5cdHZlcnRpY2FsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBBbiBldmVudCBlbWl0dGVkIHdoZW4gc2xpZGVyIHZhbHVlcyBhcmUgY2hhbmdlZFxuXHQgKlxuXHQgKiBFdmVudCBwYXlsb2FkIGVxdWFscyB0byB0aGUgdXBkYXRlZCBzbGlkZXIgdmFsdWVzXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWVcblx0ICogYGBgdHNcblx0ICogKCkgPT4ge31cblx0ICogYGBgXG5cdCAqL1xuXHRAT3V0cHV0KCdhdVZhbHVlc0NoYW5nZScpXG5cdHZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyW10+KCk7XG5cblx0LyoqXG5cdCAqIFNsb3QgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IGxhYmVscyBvZiB0aGUgc2xpZGVyXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWVcblx0ICogYGBgdHNcblx0ICogKHt2YWx1ZX06IFNsaWRlclNsb3RMYWJlbENvbnRleHQpID0+ICcnICsgdmFsdWVcblx0ICogYGBgXG5cdCAqL1xuXHRASW5wdXQoJ2F1TGFiZWwnKSBsYWJlbDogU2xvdENvbnRlbnQ8U2xpZGVyU2xvdExhYmVsQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoU2xpZGVyTGFiZWxEaXJlY3RpdmUsIHtzdGF0aWM6IGZhbHNlfSkgc2xvdExhYmVsRnJvbUNvbnRlbnQ6IFNsaWRlckxhYmVsRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBTbG90IHRvIGNoYW5nZSB0aGUgZGVmYXVsdCBkaXNwbGF5IG9mIHRoZSBzbGlkZXJcblx0ICovXG5cdEBJbnB1dCgnYXVTdHJ1Y3R1cmUnKSBzdHJ1Y3R1cmU6IFNsb3RDb250ZW50PFNsaWRlckNvbnRleHQ+O1xuXHRAQ29udGVudENoaWxkKFNsaWRlclN0cnVjdHVyZURpcmVjdGl2ZSwge3N0YXRpYzogZmFsc2V9KSBzbG90U3RydWN0dXJlRnJvbUNvbnRlbnQ6IFNsaWRlclN0cnVjdHVyZURpcmVjdGl2ZSB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogU2xvdCB0byBjaGFuZ2UgdGhlIGhhbmRsZXJzXG5cdCAqL1xuXHRASW5wdXQoJ2F1SGFuZGxlJykgaGFuZGxlOiBTbG90Q29udGVudDxTbGlkZXJTbG90SGFuZGxlQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoU2xpZGVySGFuZGxlRGlyZWN0aXZlLCB7c3RhdGljOiBmYWxzZX0pIHNsb3RIYW5kbGVGcm9tQ29udGVudDogU2xpZGVySGFuZGxlRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBDb250cm9sIHZhbHVlIGFjY2Vzc29yIG1ldGhvZHNcblx0ICovXG5cdG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cblx0b25Ub3VjaGVkID0gKCkgPT4ge307XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQge1xuXHRcdHRoaXMub25DaGFuZ2UgPSBmbjtcblx0fVxuXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLm9uVG91Y2hlZCA9IGZuO1xuXHR9XG5cblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR0aGlzLl93aWRnZXQucGF0Y2goe1xuXHRcdFx0XHR2YWx1ZXM6IHZhbHVlLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX3dpZGdldC5wYXRjaCh7XG5cdFx0XHRcdHZhbHVlczogW3ZhbHVlXSxcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdHRoaXMuX3dpZGdldC5wYXRjaCh7XG5cdFx0XHRkaXNhYmxlZDogaXNEaXNhYmxlZCxcblx0XHR9KTtcblx0fVxuXG5cdGhhbmRsZUJsdXIoKSB7XG5cdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0fVxuXG5cdG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcblx0XHR0aGlzLl93aWRnZXQucGF0Y2hTbG90cyh7XG5cdFx0XHRzdHJ1Y3R1cmU6IHRoaXMuc2xvdFN0cnVjdHVyZUZyb21Db250ZW50Py50ZW1wbGF0ZVJlZixcblx0XHRcdGhhbmRsZTogdGhpcy5zbG90SGFuZGxlRnJvbUNvbnRlbnQ/LnRlbXBsYXRlUmVmLFxuXHRcdFx0bGFiZWw6IHRoaXMuc2xvdExhYmVsRnJvbUNvbnRlbnQ/LnRlbXBsYXRlUmVmLFxuXHRcdH0pO1xuXHR9XG59XG4iXX0=
|
|
462
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SliderComponent, { className: "SliderComponent", filePath: "components/slider/slider.component.ts", lineNumber: 153 }); })();
|
|
463
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTixtQkFBbUIsRUFDbkIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ04sdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFVBQVUsRUFDVixNQUFNLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRS9DLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxjQUFjLENBQUM7Ozs7OztJQWlDdkMsaUNBQXVEO0lBQUEsc0JBQU07SUFBQSxpQkFBUzs7OztJQUE5RCxzSEFBOEM7Ozs7Ozs7OztJQWlDckQseUJBQXFFOzs7O0lBQWhFLGlJQUF5RDs7Ozs7SUFJOUQsOEJBQTRDO0lBQzNDLGdJQUFtRztJQUNwRyxpQkFBTTtJQUNOLDhCQUE0QztJQUMzQyxnSUFBbUc7SUFDcEcsaUJBQU07Ozs7OztJQUxELHVEQUFzQztJQUM3QixjQUF3QjtJQUFDLEFBQXpCLHlDQUF3Qiw0RkFBNkQ7SUFFOUYsY0FBc0M7SUFBdEMsdURBQXNDO0lBQzdCLGNBQXdCO0lBQUMsQUFBekIseUNBQXdCLDZGQUE2RDs7Ozs7SUFNakcsOElBQStHO0lBQWUsbUJBQzlIO0lBQUEsOElBQStHOzs7Ozs7SUFEekUsQUFBekIs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O2tCQUF0QixLQUFLO21CQUFDLFNBQVM7WUFDcUMsb0JBQW9CO2tCQUF4RSxZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztZQUs3QixTQUFTO2tCQUE5QixLQUFLO21CQUFDLGFBQWE7WUFDcUMsd0JBQXdCO2tCQUFoRixZQUFZO21CQUFDLHdCQUF3QixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQztZQUtwQyxNQUFNO2tCQUF4QixLQUFLO21CQUFDLFVBQVU7WUFDcUMscUJBQXFCO2tCQUExRSxZQUFZO21CQUFDLHFCQUFxQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQzs7a0ZBbEp4QyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1Nsb3RDb250ZW50fSBmcm9tICdAYWdub3MtdWkvYW5ndWxhci1oZWFkbGVzcyc7XG5pbXBvcnQge1xuXHRCYXNlV2lkZ2V0RGlyZWN0aXZlLFxuXHRDb21wb25lbnRUZW1wbGF0ZSxcblx0U2xvdERpcmVjdGl2ZSxcblx0VXNlRGlyZWN0aXZlLFxuXHRhdUJvb2xlYW5BdHRyaWJ1dGUsXG5cdGF1TnVtYmVyQXR0cmlidXRlLFxuXHR1c2VEaXJlY3RpdmVGb3JIb3N0LFxufSBmcm9tICdAYWdub3MtdWkvYW5ndWxhci1oZWFkbGVzcyc7XG5pbXBvcnQge1xuXHRDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcblx0Q29tcG9uZW50LFxuXHRDb250ZW50Q2hpbGQsXG5cdERpcmVjdGl2ZSxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRUZW1wbGF0ZVJlZixcblx0Vmlld0NoaWxkLFxuXHRWaWV3RW5jYXBzdWxhdGlvbixcblx0Zm9yd2FyZFJlZixcblx0aW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7Y2FsbFdpZGdldEZhY3Rvcnl9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgdHlwZSB7U2xpZGVyQ29udGV4dCwgU2xpZGVyU2xvdEhhbmRsZUNvbnRleHQsIFNsaWRlclNsb3RMYWJlbENvbnRleHQsIFNsaWRlcldpZGdldH0gZnJvbSAnLi9zbGlkZXIuZ2VuJztcbmltcG9ydCB7Y3JlYXRlU2xpZGVyfSBmcm9tICcuL3NsaWRlci5nZW4nO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBwcm92aWRlIGEgdGVtcGxhdGUgcmVmZXJlbmNlIGZvciBzbGlkZXIgbGFiZWxzLlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHVzZXMgYSB0ZW1wbGF0ZSByZWZlcmVuY2UgdG8gcmVuZGVyIHRoZSB7QGxpbmsgU2xpZGVyU2xvdExhYmVsQ29udGV4dH0uXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVTbGlkZXJMYWJlbF0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJMYWJlbERpcmVjdGl2ZSB7XG5cdHB1YmxpYyB0ZW1wbGF0ZVJlZiA9IGluamVjdChUZW1wbGF0ZVJlZjxTbGlkZXJTbG90TGFiZWxDb250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFNsaWRlckxhYmVsRGlyZWN0aXZlLCBjb250ZXh0OiB1bmtub3duKTogY29udGV4dCBpcyBTbGlkZXJTbG90TGFiZWxDb250ZXh0IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuLyoqXG4gKiBEaXJlY3RpdmUgcmVwcmVzZW50aW5nIGEgaGFuZGxlIGZvciBhIHNsaWRlciBjb21wb25lbnQuXG4gKlxuICogVGhpcyBkaXJlY3RpdmUgdXNlcyBhIHRlbXBsYXRlIHJlZmVyZW5jZSB0byByZW5kZXIgdGhlIHtAbGluayBTbGlkZXJTbG90TGFiZWxDb250ZXh0fS5cbiAqL1xuQERpcmVjdGl2ZSh7c2VsZWN0b3I6ICduZy10ZW1wbGF0ZVthdVNsaWRlckhhbmRsZV0nLCBzdGFuZGFsb25lOiB0cnVlfSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJIYW5kbGVEaXJlY3RpdmUge1xuXHRwdWJsaWMgdGVtcGxhdGVSZWYgPSBpbmplY3QoVGVtcGxhdGVSZWY8U2xpZGVyU2xvdExhYmVsQ29udGV4dD4pO1xuXHRzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfZGlyOiBTbGlkZXJIYW5kbGVEaXJlY3RpdmUsIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIFNsaWRlclNsb3RIYW5kbGVDb250ZXh0IHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0Y2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG5cdGltcG9ydHM6IFtVc2VEaXJlY3RpdmUsIFNsaWRlckhhbmRsZURpcmVjdGl2ZV0sXG5cdHRlbXBsYXRlOiBgXG5cdFx0PG5nLXRlbXBsYXRlIGF1U2xpZGVySGFuZGxlICNoYW5kbGUgbGV0LXN0YXRlPVwic3RhdGVcIiBsZXQtZGlyZWN0aXZlcz1cImRpcmVjdGl2ZXNcIiBsZXQtaXRlbT1cIml0ZW1cIj5cblx0XHRcdDxidXR0b24gW2F1VXNlXT1cIltkaXJlY3RpdmVzLmhhbmRsZURpcmVjdGl2ZSwge2l0ZW19XVwiPiZuYnNwOzwvYnV0dG9uPlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdGAsXG59KVxuY2xhc3MgU2xpZGVyRGVmYXVsdEhhbmRsZVNsb3RDb21wb25lbnQge1xuXHRAVmlld0NoaWxkKCdoYW5kbGUnLCB7c3RhdGljOiB0cnVlfSkgcmVhZG9ubHkgaGFuZGxlITogVGVtcGxhdGVSZWY8U2xpZGVyU2xvdEhhbmRsZUNvbnRleHQ+O1xufVxuXG4vKipcbiAqIEEgY29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSBkZWZhdWx0IHNsb3QgaGFuZGxlIGZvciB0aGUgc2xpZGVyIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IHNsaWRlckRlZmF1bHRTbG90SGFuZGxlOiBTbG90Q29udGVudDxTbGlkZXJTbG90SGFuZGxlQ29udGV4dD4gPSBuZXcgQ29tcG9uZW50VGVtcGxhdGUoU2xpZGVyRGVmYXVsdEhhbmRsZVNsb3RDb21wb25lbnQsICdoYW5kbGUnKTtcblxuLyoqXG4gKiBEaXJlY3RpdmUgdGhhdCBwcm92aWRlcyBzdHJ1Y3R1cmUgZm9yIHRoZSBzbGlkZXIgY29tcG9uZW50LlxuICpcbiAqIFRoaXMgZGlyZWN0aXZlIHVzZXMgYSBgVGVtcGxhdGVSZWZgIHRvIGhhbmRsZSB0aGUgY29udGV4dCBvZiB0aGUgc2xpZGVyIHNsb3QuXG4gKi9cbkBEaXJlY3RpdmUoe3NlbGVjdG9yOiAnbmctdGVtcGxhdGVbYXVTbGlkZXJTdHJ1Y3R1cmVdJywgc3RhbmRhbG9uZTogdHJ1ZX0pXG5leHBvcnQgY2xhc3MgU2xpZGVyU3RydWN0dXJlRGlyZWN0aXZlIHtcblx0cHVibGljIHRlbXBsYXRlUmVmID0gaW5qZWN0KFRlbXBsYXRlUmVmPFNsaWRlclNsb3RIYW5kbGVDb250ZXh0Pik7XG5cdHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXI6IFNsaWRlclN0cnVjdHVyZURpcmVjdGl2ZSwgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgU2xpZGVyU2xvdEhhbmRsZUNvbnRleHQge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG59XG5cbkBDb21wb25lbnQoe1xuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0aW1wb3J0czogW1Nsb3REaXJlY3RpdmUsIFNsaWRlclN0cnVjdHVyZURpcmVjdGl2ZSwgVXNlRGlyZWN0aXZlXSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctdGVtcGxhdGUgYXVTbGlkZXJTdHJ1Y3R1cmUgI3N0cnVjdHVyZSBsZXQtc3RhdGU9XCJzdGF0ZVwiIGxldC1kaXJlY3RpdmVzPVwiZGlyZWN0aXZlc1wiIGxldC1hcGk9XCJhcGlcIj5cblx0XHRcdEBmb3IgKG9wdGlvbiBvZiBzdGF0ZS5wcm9ncmVzc0Rpc3BsYXlPcHRpb25zKCk7IHRyYWNrIG9wdGlvbikge1xuXHRcdFx0XHQ8ZGl2IFthdVVzZV09XCJbZGlyZWN0aXZlcy5wcm9ncmVzc0Rpc3BsYXlEaXJlY3RpdmUsIHtvcHRpb259XVwiPjwvZGl2PlxuXHRcdFx0fVxuXHRcdFx0PGRpdiBbYXVVc2VdPVwiZGlyZWN0aXZlcy5jbGlja2FibGVBcmVhRGlyZWN0aXZlXCI+PC9kaXY+XG5cdFx0XHRAaWYgKHN0YXRlLnNob3dNaW5NYXhMYWJlbHMoKSkge1xuXHRcdFx0XHQ8ZGl2IFthdVVzZV09XCJkaXJlY3RpdmVzLm1pbkxhYmVsRGlyZWN0aXZlXCI+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUubGFiZWwoKVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIGFwaSwgZGlyZWN0aXZlcywgdmFsdWU6IHN0YXRlLm1pbigpfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IFthdVVzZV09XCJkaXJlY3RpdmVzLm1heExhYmVsRGlyZWN0aXZlXCI+XG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUubGFiZWwoKVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIGFwaSwgZGlyZWN0aXZlcywgdmFsdWU6IHN0YXRlLm1heCgpfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0fVxuXHRcdFx0QGlmIChzdGF0ZS5zaG93VmFsdWVMYWJlbHMoKSAmJiBzdGF0ZS5jb21iaW5lZExhYmVsRGlzcGxheSgpKSB7XG5cdFx0XHRcdDxkaXYgW2F1VXNlXT1cImRpcmVjdGl2ZXMuY29tYmluZWRIYW5kbGVMYWJlbERpc3BsYXlEaXJlY3RpdmVcIj5cblx0XHRcdFx0XHRAaWYgKHN0YXRlLnJ0bCgpKSB7XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5sYWJlbCgpXCIgW2F1U2xvdFByb3BzXT1cIntzdGF0ZSwgYXBpLCBkaXJlY3RpdmVzLCB2YWx1ZTogc3RhdGUuc29ydGVkVmFsdWVzKClbMV19XCI+PC9uZy10ZW1wbGF0ZT4gLVxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUubGFiZWwoKVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIGFwaSwgZGlyZWN0aXZlcywgdmFsdWU6IHN0YXRlLnNvcnRlZFZhbHVlcygpWzBdfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0fSBAZWxzZSB7XG5cdFx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5sYWJlbCgpXCIgW2F1U2xvdFByb3BzXT1cIntzdGF0ZSwgYXBpLCBkaXJlY3RpdmVzLCB2YWx1ZTogc3RhdGUuc29ydGVkVmFsdWVzKClbMF19XCI+PC9uZy10ZW1wbGF0ZT4gLVxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUubGFiZWwoKVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIGFwaSwgZGlyZWN0aXZlcywgdmFsdWU6IHN0YXRlLnNvcnRlZFZhbHVlcygpWzFdfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdH1cblx0XHRcdEBmb3IgKGl0ZW0gb2Ygc3RhdGUuc29ydGVkSGFuZGxlcygpOyB0cmFjayBpdGVtLmlkOyBsZXQgaSA9ICRpbmRleCkge1xuXHRcdFx0XHQ8bmctdGVtcGxhdGUgW2F1U2xvdF09XCJzdGF0ZS5oYW5kbGUoKVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIGFwaSwgZGlyZWN0aXZlcywgaXRlbX1cIj48L25nLXRlbXBsYXRlPlxuXHRcdFx0XHRAaWYgKHN0YXRlLnNob3dWYWx1ZUxhYmVscygpICYmICFzdGF0ZS5jb21iaW5lZExhYmVsRGlzcGxheSgpKSB7XG5cdFx0XHRcdFx0PGRpdiBbYXVVc2VdPVwiW2RpcmVjdGl2ZXMuaGFuZGxlTGFiZWxEaXNwbGF5RGlyZWN0aXZlLCB7aW5kZXg6IGl9XVwiPlxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIFthdVNsb3RdPVwic3RhdGUubGFiZWwoKVwiIFthdVNsb3RQcm9wc109XCJ7c3RhdGUsIGFwaSwgZGlyZWN0aXZlcywgdmFsdWU6IHN0YXRlLnZhbHVlcygpW2ldfVwiPjwvbmctdGVtcGxhdGU+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQ8L25nLXRlbXBsYXRlPlxuXHRgLFxufSlcbmNsYXNzIFNsaWRlckRlZmF1bHRTdHJ1Y3R1cmVTbG90Q29tcG9uZW50IHtcblx0QFZpZXdDaGlsZCgnc3RydWN0dXJlJywge3N0YXRpYzogdHJ1ZX0pIHN0cnVjdHVyZSE6IFRlbXBsYXRlUmVmPFNsaWRlckNvbnRleHQ+O1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGRlZmF1bHQgc2xvdCBzdHJ1Y3R1cmUgZm9yIHRoZSBzbGlkZXIgY29tcG9uZW50LlxuICovXG5leHBvcnQgY29uc3Qgc2xpZGVyRGVmYXVsdFNsb3RTdHJ1Y3R1cmU6IFNsb3RDb250ZW50PFNsaWRlckNvbnRleHQ+ID0gbmV3IENvbXBvbmVudFRlbXBsYXRlKFNsaWRlckRlZmF1bHRTdHJ1Y3R1cmVTbG90Q29tcG9uZW50LCAnc3RydWN0dXJlJyk7XG5cbi8qKlxuICogU2xpZGVyQ29tcG9uZW50IGlzIGFuIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgZXh0ZW5kcyB0aGUgQmFzZVdpZGdldERpcmVjdGl2ZVxuICogdG8gcHJvdmlkZSBhIGN1c3RvbWl6YWJsZSBzbGlkZXIgd2lkZ2V0LiBUaGlzIGNvbXBvbmVudCBhbGxvd3MgZm9yIHZhcmlvdXNcbiAqIGNvbmZpZ3VyYXRpb25zIGFuZCBjdXN0b21pemF0aW9ucyB0aHJvdWdoIGl0cyBpbnB1dHMgYW5kIG91dHB1dHMuXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ1thdVNsaWRlcl0nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcblx0ZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcblx0cHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTbGlkZXJDb21wb25lbnQpLCBtdWx0aTogdHJ1ZX1dLFxuXHRpbXBvcnRzOiBbU2xvdERpcmVjdGl2ZV0sXG5cdGhvc3Q6IHtcblx0XHQnKGJsdXIpJzogJ2hhbmRsZUJsdXIoKScsXG5cdH0sXG5cdHRlbXBsYXRlOiBgIDxuZy10ZW1wbGF0ZSBbYXVTbG90XT1cInN0YXRlLnN0cnVjdHVyZSgpXCIgW2F1U2xvdFByb3BzXT1cIntzdGF0ZSwgYXBpLCBkaXJlY3RpdmVzfVwiPjwvbmctdGVtcGxhdGU+IGAsXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlckNvbXBvbmVudCBleHRlbmRzIEJhc2VXaWRnZXREaXJlY3RpdmU8U2xpZGVyV2lkZ2V0PiB7XG5cdC8qKlxuXHQgKiBDU1MgY2xhc3NlcyB0byBiZSBhcHBsaWVkIG9uIHRoZSB3aWRnZXQgbWFpbiBjb250YWluZXJcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgJydgXG5cdCAqL1xuXHRASW5wdXQoJ2F1Q2xhc3NOYW1lJykgY2xhc3NOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIE1pbmltdW0gdmFsdWUgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gdGhlIHNsaWRlclxuXHQgKlxuXHQgKiBAZGVmYXVsdFZhbHVlIGAwYFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1TWluJywgdHJhbnNmb3JtOiBhdU51bWJlckF0dHJpYnV0ZX0pXG5cdG1pbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBNYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIGFzc2lnbmVkIHRvIHRoZSBzbGlkZXJcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgMTAwYFxuXHQgKi9cblx0QElucHV0KHthbGlhczogJ2F1TWF4JywgdHJhbnNmb3JtOiBhdU51bWJlckF0dHJpYnV0ZX0pXG5cdG1heDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBVbml0IHZhbHVlIGJldHdlZW4gc2xpZGVyIHN0ZXBzXG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWUgYDFgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVTdGVwU2l6ZScsIHRyYW5zZm9ybTogYXVOdW1iZXJBdHRyaWJ1dGV9KVxuXHRzdGVwU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBDdXJyZW50IHNsaWRlciB2YWx1ZXNcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgWzBdYFxuXHQgKi9cblx0QElucHV0KCdhdVZhbHVlcycpXG5cdHZhbHVlczogbnVtYmVyW10gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEl0IGB0cnVlYCBzbGlkZXIgZGlzcGxheSBpcyBpbnZlcnNlZFxuXHQgKlxuXHQgKiBAZGVmYXVsdFZhbHVlIGBmYWxzZWBcblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdVJ0bCcsIHRyYW5zZm9ybTogYXVCb29sZWFuQXR0cmlidXRlfSlcblx0cnRsOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBgdHJ1ZWAgdGhlIHZhbHVlIGxhYmVscyBhcmUgZGlzcGxheWVkIG9uIHRoZSBzbGlkZXJcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdVNob3dWYWx1ZUxhYmVscycsIHRyYW5zZm9ybTogYXVCb29sZWFuQXR0cmlidXRlfSkgc2hvd1ZhbHVlTGFiZWxzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBJZiBgdHJ1ZWAgdGhlIG1pbiBhbmQgbWF4IGxhYmVscyBhcmUgZGlzcGxheWVkIG9uIHRoZSBzbGlkZXJcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgdHJ1ZWBcblx0ICovXG5cdEBJbnB1dCh7YWxpYXM6ICdhdVNob3dNaW5NYXhMYWJlbHMnLCB0cmFuc2Zvcm06IGF1Qm9vbGVhbkF0dHJpYnV0ZX0pIHNob3dNaW5NYXhMYWJlbHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFJldHVybiB0aGUgdmFsdWUgZm9yIHRoZSAnYXJpYS1sYWJlbCcgYXR0cmlidXRlIGZvciB0aGUgaGFuZGxlXG5cdCAqIEBwYXJhbSB2YWx1ZSAtIHZhbHVlIG9mIHRoZSBoYW5kbGVcblx0ICogQHBhcmFtIHNvcnRlZEluZGV4IC0gaW5kZXggb2YgdGhlIGhhbmRsZSBpbiB0aGUgc29ydGVkIGxpc3Rcblx0ICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIGhhbmRsZSBpbiB0aGUgb3JpZ2luYWwgbGlzdFxuXHQgKlxuXHQgKiBAZGVmYXVsdFZhbHVlXG5cdCAqIGBgYHRzXG5cdCAqICh2YWx1ZTogbnVtYmVyKSA9PiAnJyArIHZhbHVlXG5cdCAqIGBgYFxuXHQgKi9cblx0QElucHV0KCdhdUFyaWFMYWJlbEhhbmRsZScpIGFyaWFMYWJlbEhhbmRsZTogKCh2YWx1ZTogbnVtYmVyLCBzb3J0ZWRJbmRleDogbnVtYmVyLCBpbmRleDogbnVtYmVyKSA9PiBzdHJpbmcpIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIHZhbHVlIGZvciB0aGUgJ2FyaWEtdmFsdWV0ZXh0JyBhdHRyaWJ1dGUgZm9yIHRoZSBoYW5kbGVcblx0ICogQHBhcmFtIHZhbHVlIC0gdmFsdWUgb2YgdGhlIGhhbmRsZVxuXHQgKiBAcGFyYW0gc29ydGVkSW5kZXggLSBpbmRleCBvZiB0aGUgaGFuZGxlIGluIHRoZSBzb3J0ZWQgbGlzdFxuXHQgKiBAcGFyYW0gaW5kZXggLSBpbmRleCBvZiB0aGUgaGFuZGxlIGluIHRoZSBvcmlnaW5hbCBsaXN0XG5cdCAqXG5cdCAqIEBkZWZhdWx0VmFsdWVcblx0ICogYGBgdHNcblx0ICogKHZhbHVlOiBudW1iZXIpID0+ICcnICsgdmFsdWVcblx0ICogYGBgXG5cdCAqL1xuXHRASW5wdXQoJ2F1QXJpYVZhbHVlVGV4dCcpIGFyaWFWYWx1ZVRleHQ6ICgodmFsdWU6IG51bWJlciwgc29ydGVkSW5kZXg6IG51bWJlciwgaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nKSB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogSWYgYHRydWVgIHNsaWRlciB2YWx1ZSBjYW5ub3QgYmUgY2hhbmdlZCBidXQgdGhlIHNsaWRlciBpcyBzdGlsbCBmb2N1c2FibGVcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVSZWFkb25seScsIHRyYW5zZm9ybTogYXVCb29sZWFuQXR0cmlidXRlfSlcblx0cmVhZG9ubHk6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCBzbGlkZXIgdmFsdWUgY2Fubm90IGJlIGNoYW5nZWQgYW5kIHRoZSBzbGlkZXIgY2Fubm90IGJlIGZvY3VzZWRcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVEaXNhYmxlZCcsIHRyYW5zZm9ybTogYXVCb29sZWFuQXR0cmlidXRlfSlcblx0ZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIElmIGB0cnVlYCBpcyB2ZXJ0aWNhbGx5IHBvc2l0aW9uZWQgb3RoZXJ3aXNlIGl0IGlzIGhvcml6b250YWxcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZSBgZmFsc2VgXG5cdCAqL1xuXHRASW5wdXQoe2FsaWFzOiAnYXVWZXJ0aWNhbCcsIHRyYW5zZm9ybTogYXVCb29sZWFuQXR0cmlidXRlfSlcblx0dmVydGljYWw6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEFuIGV2ZW50IGVtaXR0ZWQgd2hlbiBzbGlkZXIgdmFsdWVzIGFyZSBjaGFuZ2VkXG5cdCAqXG5cdCAqIEV2ZW50IHBheWxvYWQgZXF1YWxzIHRvIHRoZSB1cGRhdGVkIHNsaWRlciB2YWx1ZXNcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZVxuXHQgKiBgYGB0c1xuXHQgKiAoKSA9PiB7fVxuXHQgKiBgYGBcblx0ICovXG5cdEBPdXRwdXQoJ2F1VmFsdWVzQ2hhbmdlJylcblx0dmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXJbXT4oKTtcblxuXHQvKipcblx0ICogU2xvdCB0byBjaGFuZ2UgdGhlIGRlZmF1bHQgbGFiZWxzIG9mIHRoZSBzbGlkZXJcblx0ICpcblx0ICogQGRlZmF1bHRWYWx1ZVxuXHQgKiBgYGB0c1xuXHQgKiAoe3ZhbHVlfTogU2xpZGVyU2xvdExhYmVsQ29udGV4dCkgPT4gJycgKyB2YWx1ZVxuXHQgKiBgYGBcblx0ICovXG5cdEBJbnB1dCgnYXVMYWJlbCcpIGxhYmVsOiBTbG90Q29udGVudDxTbGlkZXJTbG90TGFiZWxDb250ZXh0Pjtcblx0QENvbnRlbnRDaGlsZChTbGlkZXJMYWJlbERpcmVjdGl2ZSwge3N0YXRpYzogZmFsc2V9KSBzbG90TGFiZWxGcm9tQ29udGVudDogU2xpZGVyTGFiZWxEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIFNsb3QgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IGRpc3BsYXkgb2YgdGhlIHNsaWRlclxuXHQgKi9cblx0QElucHV0KCdhdVN0cnVjdHVyZScpIHN0cnVjdHVyZTogU2xvdENvbnRlbnQ8U2xpZGVyQ29udGV4dD47XG5cdEBDb250ZW50Q2hpbGQoU2xpZGVyU3RydWN0dXJlRGlyZWN0aXZlLCB7c3RhdGljOiBmYWxzZX0pIHNsb3RTdHJ1Y3R1cmVGcm9tQ29udGVudDogU2xpZGVyU3RydWN0dXJlRGlyZWN0aXZlIHwgdW5kZWZpbmVkO1xuXG5cdC8qKlxuXHQgKiBTbG90IHRvIGNoYW5nZSB0aGUgaGFuZGxlcnNcblx0ICovXG5cdEBJbnB1dCgnYXVIYW5kbGUnKSBoYW5kbGU6IFNsb3RDb250ZW50PFNsaWRlclNsb3RIYW5kbGVDb250ZXh0Pjtcblx0QENvbnRlbnRDaGlsZChTbGlkZXJIYW5kbGVEaXJlY3RpdmUsIHtzdGF0aWM6IGZhbHNlfSkgc2xvdEhhbmRsZUZyb21Db250ZW50OiBTbGlkZXJIYW5kbGVEaXJlY3RpdmUgfCB1bmRlZmluZWQ7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoXG5cdFx0XHRjYWxsV2lkZ2V0RmFjdG9yeSh7XG5cdFx0XHRcdGZhY3Rvcnk6IGNyZWF0ZVNsaWRlcixcblx0XHRcdFx0d2lkZ2V0TmFtZTogJ3NsaWRlcicsXG5cdFx0XHRcdGRlZmF1bHRDb25maWc6IHtcblx0XHRcdFx0XHRzdHJ1Y3R1cmU6IHNsaWRlckRlZmF1bHRTbG90U3RydWN0dXJlLFxuXHRcdFx0XHRcdGhhbmRsZTogc2xpZGVyRGVmYXVsdFNsb3RIYW5kbGUsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdG9uVmFsdWVzQ2hhbmdlOiAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMub25DaGFuZ2UoZXZlbnQpO1xuXHRcdFx0XHRcdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0XHRcdFx0XHRcdHRoaXMudmFsdWVzQ2hhbmdlLmVtaXQoZXZlbnQpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGFmdGVySW5pdDogKHdpZGdldCkgPT4ge1xuXHRcdFx0XHRcdHVzZURpcmVjdGl2ZUZvckhvc3Qod2lkZ2V0LmRpcmVjdGl2ZXMuc2xpZGVyRGlyZWN0aXZlKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0c2xvdFRlbXBsYXRlczogKCkgPT4gKHtcblx0XHRcdFx0XHRzdHJ1Y3R1cmU6IHRoaXMuc2xvdFN0cnVjdHVyZUZyb21Db250ZW50Py50ZW1wbGF0ZVJlZixcblx0XHRcdFx0XHRoYW5kbGU6IHRoaXMuc2xvdEhhbmRsZUZyb21Db250ZW50Py50ZW1wbGF0ZVJlZixcblx0XHRcdFx0XHRsYWJlbDogdGhpcy5zbG90TGFiZWxGcm9tQ29udGVudD8udGVtcGxhdGVSZWYsXG5cdFx0XHRcdH0pLFxuXHRcdFx0fSksXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb250cm9sIHZhbHVlIGFjY2Vzc29yIG1ldGhvZHNcblx0ICovXG5cdG9uQ2hhbmdlID0gKF86IGFueSkgPT4ge307XG5cblx0b25Ub3VjaGVkID0gKCkgPT4ge307XG5cblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IGFueSk6IHZvaWQge1xuXHRcdHRoaXMub25DaGFuZ2UgPSBmbjtcblx0fVxuXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiBhbnkpOiB2b2lkIHtcblx0XHR0aGlzLm9uVG91Y2hlZCA9IGZuO1xuXHR9XG5cblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR0aGlzWydfd2lkZ2V0J10ucGF0Y2goe1xuXHRcdFx0XHR2YWx1ZXM6IHZhbHVlLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXNbJ193aWRnZXQnXS5wYXRjaCh7XG5cdFx0XHRcdHZhbHVlczogW3ZhbHVlXSxcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xuXHRcdHRoaXNbJ193aWRnZXQnXS5wYXRjaCh7XG5cdFx0XHRkaXNhYmxlZDogaXNEaXNhYmxlZCxcblx0XHR9KTtcblx0fVxuXG5cdGhhbmRsZUJsdXIoKSB7XG5cdFx0dGhpcy5vblRvdWNoZWQoKTtcblx0fVxufVxuIl19
|